diff --git a/Blocks/Stairs_to_E001.tscn b/Blocks/Stairs_to_E001.tscn deleted file mode 100644 index 2421d316..00000000 --- a/Blocks/Stairs_to_E001.tscn +++ /dev/null @@ -1,19 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://db73ys0cw3b2i"] - -[ext_resource type="Material" uid="uid://pdqqtb1s8g6n" path="res://Materials/stairs1.tres" id="1_igkxi"] - -[sub_resource type="PrismMesh" id="PrismMesh_7xabc"] -material = ExtResource("1_igkxi") -left_to_right = 1.0 - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_7isgt"] -points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5) - -[node name="StairsToE001" type="StaticBody3D" groups=["navigation_mesh_source_group"]] -disable_mode = 1 - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -mesh = SubResource("PrismMesh_7xabc") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("ConvexPolygonShape3D_7isgt") diff --git a/Blocks/Stairs_to_S001.tscn b/Blocks/Stairs_to_S001.tscn deleted file mode 100644 index 41ecb62c..00000000 --- a/Blocks/Stairs_to_S001.tscn +++ /dev/null @@ -1,20 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://dotb8dsoarufo"] - -[ext_resource type="Material" uid="uid://pdqqtb1s8g6n" path="res://Materials/stairs1.tres" id="1_g3bt7"] - -[sub_resource type="PrismMesh" id="PrismMesh_7xabc"] -material = ExtResource("1_g3bt7") -left_to_right = 1.0 - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_7isgt"] -points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5) - -[node name="StairsToS001" type="StaticBody3D" groups=["navigation_mesh_source_group"]] -transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, 0, 0, 0) -disable_mode = 1 - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -mesh = SubResource("PrismMesh_7xabc") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("ConvexPolygonShape3D_7isgt") diff --git a/Blocks/Stairs_to_W001.tscn b/Blocks/Stairs_to_W001.tscn deleted file mode 100644 index 02918c5e..00000000 --- a/Blocks/Stairs_to_W001.tscn +++ /dev/null @@ -1,20 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://h2antxtbvel4"] - -[ext_resource type="Material" uid="uid://pdqqtb1s8g6n" path="res://Materials/stairs1.tres" id="1_f8gkw"] - -[sub_resource type="PrismMesh" id="PrismMesh_7xabc"] -material = ExtResource("1_f8gkw") -left_to_right = 1.0 - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_7isgt"] -points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5) - -[node name="StairsToW001" type="StaticBody3D" groups=["navigation_mesh_source_group"]] -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) -disable_mode = 1 - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -mesh = SubResource("PrismMesh_7xabc") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("ConvexPolygonShape3D_7isgt") diff --git a/Blocks/concrete_wall001.tscn b/Blocks/concrete_wall001.tscn deleted file mode 100644 index 4922bcbd..00000000 --- a/Blocks/concrete_wall001.tscn +++ /dev/null @@ -1,18 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://b5b2f24f6emf3"] - -[ext_resource type="Material" uid="uid://biuyl58gd7g7v" path="res://Materials/wall1.tres" id="1_88dl0"] - -[sub_resource type="BoxMesh" id="BoxMesh_j05ve"] -material = ExtResource("1_88dl0") - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_gyg2o"] -points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5) - -[node name="Concrete001" type="StaticBody3D" groups=["navigation_mesh_source_group"]] -disable_mode = 1 - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -mesh = SubResource("BoxMesh_j05ve") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("ConvexPolygonShape3D_gyg2o") diff --git a/Blocks/concrete_wall002.tscn b/Blocks/concrete_wall002.tscn deleted file mode 100644 index 40ecf58b..00000000 --- a/Blocks/concrete_wall002.tscn +++ /dev/null @@ -1,18 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://cmjjw8pjtidpj"] - -[ext_resource type="Material" uid="uid://biuyl58gd7g7v" path="res://Materials/wall1.tres" id="1_fgupy"] - -[sub_resource type="BoxMesh" id="BoxMesh_j05ve"] -material = ExtResource("1_fgupy") - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_gyg2o"] -points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5) - -[node name="Concrete001" type="StaticBody3D" groups=["navigation_mesh_source_group"]] -disable_mode = 1 - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -mesh = SubResource("BoxMesh_j05ve") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("ConvexPolygonShape3D_gyg2o") diff --git a/Materials/floor1.tres b/Defaults/Blocks/Materials/floor1.tres similarity index 80% rename from Materials/floor1.tres rename to Defaults/Blocks/Materials/floor1.tres index 0fad24ad..293480c5 100644 --- a/Materials/floor1.tres +++ b/Defaults/Blocks/Materials/floor1.tres @@ -1,6 +1,6 @@ [gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://buj4ukj1oh4pq"] -[ext_resource type="Texture2D" uid="uid://bu00lw1luehxr" path="res://Textures/Tiles/Actual textures/1.png" id="1_a2cuf"] +[ext_resource type="Texture2D" uid="uid://bu00lw1luehxr" path="res://Defaults/Sprites/1.png" id="1_a2cuf"] [resource] albedo_texture = ExtResource("1_a2cuf") diff --git a/Materials/stairs1.tres b/Defaults/Blocks/Materials/stairs1.tres similarity index 81% rename from Materials/stairs1.tres rename to Defaults/Blocks/Materials/stairs1.tres index 956348fd..1b4be316 100644 --- a/Materials/stairs1.tres +++ b/Defaults/Blocks/Materials/stairs1.tres @@ -1,6 +1,6 @@ [gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://pdqqtb1s8g6n"] -[ext_resource type="Texture2D" uid="uid://cyy4j5vso6khu" path="res://Textures/Tiles/Actual textures/4.png" id="1_rgn6b"] +[ext_resource type="Texture2D" uid="uid://cyy4j5vso6khu" path="res://Defaults/Sprites/4.png" id="1_rgn6b"] [resource] shading_mode = 0 diff --git a/Blocks/grass_001.gd b/Defaults/Blocks/default_block.gd similarity index 57% rename from Blocks/grass_001.gd rename to Defaults/Blocks/default_block.gd index eeed8586..b71cc759 100644 --- a/Blocks/grass_001.gd +++ b/Defaults/Blocks/default_block.gd @@ -1,6 +1,10 @@ extends StaticBody3D +var id: String = "" func update_texture(material: BaseMaterial3D) -> void: $MeshInstance3D.mesh = BoxMesh.new() $MeshInstance3D.mesh.surface_set_material(0, material) + +func get_texture_string() -> String: + return $MeshInstance3D.mesh.material.albedo_texture.resource_path diff --git a/Blocks/grass_001.tscn b/Defaults/Blocks/default_block.tscn similarity index 71% rename from Blocks/grass_001.tscn rename to Defaults/Blocks/default_block.tscn index ea906bb5..7002c396 100644 --- a/Blocks/grass_001.tscn +++ b/Defaults/Blocks/default_block.tscn @@ -1,17 +1,18 @@ [gd_scene load_steps=5 format=3 uid="uid://cpaa3ui52a23c"] -[ext_resource type="Material" uid="uid://buj4ukj1oh4pq" path="res://Materials/floor1.tres" id="1_tldl5"] -[ext_resource type="Script" path="res://Blocks/grass_001.gd" id="1_yge5h"] +[ext_resource type="Script" path="res://Defaults/Blocks/default_block.gd" id="1_s3i5a"] +[ext_resource type="Material" uid="uid://buj4ukj1oh4pq" path="res://Defaults/Blocks/Materials/floor1.tres" id="2_ukdu8"] [sub_resource type="BoxMesh" id="BoxMesh_j05ve"] -material = ExtResource("1_tldl5") +material = ExtResource("2_ukdu8") [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_gyg2o"] points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5) [node name="Grass001" type="StaticBody3D" groups=["navigation_mesh_source_group"]] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0) disable_mode = 1 -script = ExtResource("1_yge5h") +script = ExtResource("1_s3i5a") [node name="MeshInstance3D" type="MeshInstance3D" parent="."] mesh = SubResource("BoxMesh_j05ve") diff --git a/Defaults/Blocks/default_slope.gd b/Defaults/Blocks/default_slope.gd new file mode 100644 index 00000000..782a2d0d --- /dev/null +++ b/Defaults/Blocks/default_slope.gd @@ -0,0 +1,14 @@ +extends StaticBody3D + +var id: String = "" + +func update_texture(material: BaseMaterial3D) -> void: + var prism_mesh = PrismMesh.new() + prism_mesh.left_to_right = 1 + prism_mesh.surface_set_material(0, material) + + $MeshInstance3D.mesh = prism_mesh # Assign the new PrismMesh to the MeshInstance3D + + +func get_texture_string() -> String: + return $MeshInstance3D.mesh.material.albedo_texture.resource_path diff --git a/Blocks/Stairs_to_N001.tscn b/Defaults/Blocks/default_slope.tscn similarity index 70% rename from Blocks/Stairs_to_N001.tscn rename to Defaults/Blocks/default_slope.tscn index 63dfce1c..288f8b6c 100644 --- a/Blocks/Stairs_to_N001.tscn +++ b/Defaults/Blocks/default_slope.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=4 format=3 uid="uid://dnsl5rk6de7na"] +[gd_scene load_steps=5 format=3 uid="uid://dnsl5rk6de7na"] -[ext_resource type="Material" uid="uid://pdqqtb1s8g6n" path="res://Materials/stairs1.tres" id="1_r8jiw"] +[ext_resource type="Script" path="res://Defaults/Blocks/default_slope.gd" id="1_x2ar8"] +[ext_resource type="Material" uid="uid://pdqqtb1s8g6n" path="res://Defaults/Blocks/Materials/stairs1.tres" id="2_qnimx"] [sub_resource type="PrismMesh" id="PrismMesh_7xabc"] -material = ExtResource("1_r8jiw") +lightmap_size_hint = Vector2i(14, 21) +material = ExtResource("2_qnimx") left_to_right = 1.0 [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_7isgt"] @@ -12,6 +14,7 @@ points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, 0.5, [node name="StairsToN001" type="StaticBody3D" groups=["navigation_mesh_source_group"]] transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0) disable_mode = 1 +script = ExtResource("1_x2ar8") [node name="MeshInstance3D" type="MeshInstance3D" parent="."] mesh = SubResource("PrismMesh_7xabc") diff --git a/Defaults/Furniture/FurniturePhysics.tscn b/Defaults/Furniture/FurniturePhysics.tscn new file mode 100644 index 00000000..b7a9e611 --- /dev/null +++ b/Defaults/Furniture/FurniturePhysics.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=5 format=3 uid="uid://cpmwu7v1r8cg8"] + +[ext_resource type="Script" path="res://Scripts/FurniturePhysics.gd" id="1_klkkl"] +[ext_resource type="Texture2D" uid="uid://cqfqxgp12asw1" path="res://Mods/Core/Furniture/table_64.png" id="1_q67ig"] +[ext_resource type="PackedScene" uid="uid://mu6nbyuq02o5" path="res://Defaults/Mobs/mob_corpse.tscn" id="2_jy8nl"] + +[sub_resource type="SphereShape3D" id="SphereShape3D_vweei"] +radius = 0.2 + +[node name="FurniturePhysics" type="RigidBody3D"] +collision_layer = 4 +collision_mask = 7 +axis_lock_angular_x = true +axis_lock_angular_z = true +linear_damp = 59.0 +angular_damp = 59.0 +script = ExtResource("1_klkkl") +corpse_scene = ExtResource("2_jy8nl") + +[node name="Sprite3D" type="Sprite3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) +texture = ExtResource("1_q67ig") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("SphereShape3D_vweei") diff --git a/Defaults/Furniture/FurnitureStatic.tscn b/Defaults/Furniture/FurnitureStatic.tscn new file mode 100644 index 00000000..da98f666 --- /dev/null +++ b/Defaults/Furniture/FurnitureStatic.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=5 format=3 uid="uid://cm4n8cljiij4w"] + +[ext_resource type="Script" path="res://Scripts/FurnitureStatic.gd" id="1_wituf"] +[ext_resource type="PackedScene" uid="uid://mu6nbyuq02o5" path="res://Defaults/Mobs/mob_corpse.tscn" id="2_ln6uk"] +[ext_resource type="Texture2D" uid="uid://cqfqxgp12asw1" path="res://Mods/Core/Furniture/table_64.png" id="2_nt0ji"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_23dag"] +size = Vector3(0.4, 0.5, 0.4) + +[node name="FurnitureStatic" type="StaticBody3D"] +axis_lock_angular_x = true +axis_lock_angular_z = true +script = ExtResource("1_wituf") +corpse_scene = ExtResource("2_ln6uk") + +[node name="Sprite3D" type="Sprite3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) +texture = ExtResource("2_nt0ji") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("BoxShape3D_23dag") diff --git a/Defaults/Maps/Generichouse.png b/Defaults/Maps/Generichouse.png new file mode 100644 index 00000000..ee85ef2b Binary files /dev/null and b/Defaults/Maps/Generichouse.png differ diff --git a/Defaults/Maps/Generichouse.png.import b/Defaults/Maps/Generichouse.png.import new file mode 100644 index 00000000..450e820c --- /dev/null +++ b/Defaults/Maps/Generichouse.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://sqi8fd2vi8jr" +path="res://.godot/imported/Generichouse.png-54cdc2d9e4775bcd5290036badaeb324.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Defaults/Maps/Generichouse.png" +dest_files=["res://.godot/imported/Generichouse.png-54cdc2d9e4775bcd5290036badaeb324.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/Defaults/Mobs/mob.tscn b/Defaults/Mobs/mob.tscn new file mode 100644 index 00000000..96ca93a0 --- /dev/null +++ b/Defaults/Mobs/mob.tscn @@ -0,0 +1,114 @@ +[gd_scene load_steps=14 format=3 uid="uid://b2r6nh12wv41k"] + +[ext_resource type="Script" path="res://Scripts/Mob.gd" id="1_ajqy0"] +[ext_resource type="PackedScene" uid="uid://mu6nbyuq02o5" path="res://Defaults/Mobs/mob_corpse.tscn" id="2_eldwl"] +[ext_resource type="Script" path="res://Scripts/StateMachine.gd" id="3_qfjv5"] +[ext_resource type="Script" path="res://Scripts/MobAttack.gd" id="4_fqxd2"] +[ext_resource type="Script" path="res://Scripts/MobIdle.gd" id="5_qf6ud"] +[ext_resource type="Script" path="res://Scripts/MobFollow.gd" id="6_va33k"] +[ext_resource type="Script" path="res://Scripts/Detection.gd" id="8_ugi6q"] +[ext_resource type="Texture2D" uid="uid://cy56wx4qynp3m" path="res://Textures/enemy.png" id="9_vd6sy"] +[ext_resource type="Shader" path="res://transparent_lighting.gdshader" id="10_qbt4f"] + +[sub_resource type="SphereShape3D" id="SphereShape3D_uyii8"] +radius = 0.357674 + +[sub_resource type="BoxShape3D" id="BoxShape3D_kv6xp"] +size = Vector3(0.35, 0.35, 0.35) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_vr552"] +render_priority = 0 +shader = ExtResource("10_qbt4f") +shader_parameter/color = Color(1, 0.266667, 0.0509804, 1) +shader_parameter/energy = 1.0 +shader_parameter/tex = ExtResource("9_vd6sy") + +[sub_resource type="QuadMesh" id="QuadMesh_bbnvr"] +lightmap_size_hint = Vector2i(7, 7) +material = SubResource("ShaderMaterial_vr552") +size = Vector2(0.5, 0.5) +orientation = 1 + +[node name="Mob" type="CharacterBody3D" groups=["Enemies"]] +collision_layer = 2 +collision_mask = 3 +wall_min_slide_angle = 0.0 +floor_constant_speed = true +script = ExtResource("1_ajqy0") +corpse_scene = ExtResource("2_eldwl") + +[node name="NavigationAgent3D" type="NavigationAgent3D" parent="."] +path_desired_distance = 0.5 +target_desired_distance = 0.5 +path_max_distance = 0.51 +avoidance_enabled = true +debug_enabled = true + +[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("initial_state")] +script = ExtResource("3_qfjv5") +initial_state = NodePath("MobIdle") + +[node name="MobAttack" type="Node3D" parent="StateMachine" node_paths=PackedStringArray("attack_timer", "mob")] +script = ExtResource("4_fqxd2") +attack_timer = NodePath("AttackCooldown") +mob = NodePath("../..") + +[node name="AttackCooldown" type="Timer" parent="StateMachine/MobAttack"] + +[node name="MobIdle" type="Node3D" parent="StateMachine" node_paths=PackedStringArray("nav_agent", "mob", "moving_timer")] +script = ExtResource("5_qf6ud") +nav_agent = NodePath("../../NavigationAgent3D") +mob = NodePath("../..") +move_distance = 50.0 +moving_timer = NodePath("MovingCooldown") + +[node name="MovingCooldown" type="Timer" parent="StateMachine/MobIdle"] +wait_time = 4.0 + +[node name="MobFollow" type="Node3D" parent="StateMachine" node_paths=PackedStringArray("nav_agent", "mob", "pathfinding_timer")] +script = ExtResource("6_va33k") +nav_agent = NodePath("../../NavigationAgent3D") +mob = NodePath("../..") +mobCol = NodePath("../../CollisionShape3D") +pathfinding_timer = NodePath("Timer") + +[node name="Timer" type="Timer" parent="StateMachine/MobFollow"] +wait_time = 0.2 +autostart = true + +[node name="Detection" type="Node3D" parent="." node_paths=PackedStringArray("mob")] +script = ExtResource("8_ugi6q") +mob = NodePath("..") + +[node name="Sprite3D" type="Sprite3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0275174, 0) +visible = false +layers = 16 +gi_mode = 0 +pixel_size = 0.05 +billboard = 1 +shaded = true +double_sided = false +texture = ExtResource("9_vd6sy") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +visible = false +shape = SubResource("SphereShape3D_uyii8") +disabled = true + +[node name="CollisionShape3D2" type="CollisionShape3D" parent="."] +shape = SubResource("BoxShape3D_kv6xp") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.20019, 0) +layers = 16 +cast_shadow = 0 +gi_mode = 0 +mesh = SubResource("QuadMesh_bbnvr") + +[connection signal="timeout" from="StateMachine/MobAttack/AttackCooldown" to="StateMachine/MobAttack" method="_on_attack_cooldown_timeout"] +[connection signal="timeout" from="StateMachine/MobIdle/MovingCooldown" to="StateMachine/MobIdle" method="_on_moving_cooldown_timeout"] +[connection signal="timeout" from="StateMachine/MobFollow/Timer" to="StateMachine/MobFollow" method="_on_timer_timeout"] +[connection signal="player_spotted" from="Detection" to="StateMachine/MobAttack" method="_on_detection_player_spotted"] +[connection signal="player_spotted" from="Detection" to="StateMachine/MobIdle" method="_on_detection_player_spotted"] +[connection signal="player_spotted" from="Detection" to="StateMachine/MobFollow" method="_on_detection_player_spotted"] diff --git a/enemy_corpse.tscn b/Defaults/Mobs/mob_corpse.tscn similarity index 77% rename from enemy_corpse.tscn rename to Defaults/Mobs/mob_corpse.tscn index 8a40bdac..96f52a25 100644 --- a/enemy_corpse.tscn +++ b/Defaults/Mobs/mob_corpse.tscn @@ -1,19 +1,20 @@ [gd_scene load_steps=6 format=3 uid="uid://mu6nbyuq02o5"] [ext_resource type="Script" path="res://Scripts/container.gd" id="1_4celg"] +[ext_resource type="Script" path="res://addons/gloot/core/inventory_stacked.gd" id="2_3htey"] [ext_resource type="Texture2D" uid="uid://cy56wx4qynp3m" path="res://Textures/enemy.png" id="2_pvjek"] -[ext_resource type="Script" path="res://addons/gloot/core/inventory_grid_stacked.gd" id="3_131gg"] -[ext_resource type="Resource" uid="uid://bvrl0obu5ejqq" path="res://ItemProtosets.tres" id="4_ehn4b"] +[ext_resource type="Resource" uid="uid://b1tngttyk4w2s" path="res://ItemProtosets.tres" id="4_ehn4b"] [sub_resource type="SphereShape3D" id="SphereShape3D_0pnwx"] radius = 0.2 [node name="Node3D" type="Node3D" groups=["Containers"]] script = ExtResource("1_4celg") -inventory = NodePath("InventoryGridStacked") +inventory = NodePath("InventoryStacked") -[node name="InventoryGridStacked" type="Node" parent="."] -script = ExtResource("3_131gg") +[node name="InventoryStacked" type="Node" parent="."] +script = ExtResource("2_3htey") +capacity = 1000.0 item_protoset = ExtResource("4_ehn4b") [node name="Sprite3D" type="Sprite3D" parent="."] diff --git a/Defaults/Player/player_300.png b/Defaults/Player/player_300.png new file mode 100644 index 00000000..8c74dc1a Binary files /dev/null and b/Defaults/Player/player_300.png differ diff --git a/Defaults/Player/player_300.png.import b/Defaults/Player/player_300.png.import new file mode 100644 index 00000000..0343c7b7 --- /dev/null +++ b/Defaults/Player/player_300.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://db0xwhrm0sliq" +path.s3tc="res://.godot/imported/player_300.png-a00e9cfa286016869f973cd324026833.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://Defaults/Player/player_300.png" +dest_files=["res://.godot/imported/player_300.png-a00e9cfa286016869f973cd324026833.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Textures/Tiles/Actual textures/1.png b/Defaults/Sprites/1.png similarity index 100% rename from Textures/Tiles/Actual textures/1.png rename to Defaults/Sprites/1.png diff --git a/Textures/Tiles/Actual textures/1.png.import b/Defaults/Sprites/1.png.import similarity index 72% rename from Textures/Tiles/Actual textures/1.png.import rename to Defaults/Sprites/1.png.import index 9ff7f407..3d2924ac 100644 --- a/Textures/Tiles/Actual textures/1.png.import +++ b/Defaults/Sprites/1.png.import @@ -3,7 +3,7 @@ importer="texture" type="CompressedTexture2D" uid="uid://bu00lw1luehxr" -path.s3tc="res://.godot/imported/1.png-97878b150c8cfea86d5ee12c89d61658.s3tc.ctex" +path.s3tc="res://.godot/imported/1.png-0a2a220d5dbae2055345f2757451ae49.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,8 +11,8 @@ metadata={ [deps] -source_file="res://Textures/Tiles/Actual textures/1.png" -dest_files=["res://.godot/imported/1.png-97878b150c8cfea86d5ee12c89d61658.s3tc.ctex"] +source_file="res://Defaults/Sprites/1.png" +dest_files=["res://.godot/imported/1.png-0a2a220d5dbae2055345f2757451ae49.s3tc.ctex"] [params] diff --git a/Textures/Tiles/Actual textures/2.png b/Defaults/Sprites/2.png similarity index 100% rename from Textures/Tiles/Actual textures/2.png rename to Defaults/Sprites/2.png diff --git a/Textures/Tiles/Actual textures/2.png.import b/Defaults/Sprites/2.png.import similarity index 72% rename from Textures/Tiles/Actual textures/2.png.import rename to Defaults/Sprites/2.png.import index 61e88dab..6e57d14b 100644 --- a/Textures/Tiles/Actual textures/2.png.import +++ b/Defaults/Sprites/2.png.import @@ -3,7 +3,7 @@ importer="texture" type="CompressedTexture2D" uid="uid://c31w0wuk8qabw" -path.s3tc="res://.godot/imported/2.png-054b4df51feed804de7ba33365535c1c.s3tc.ctex" +path.s3tc="res://.godot/imported/2.png-064a12f2e68879b8011ec8d7535f90a6.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,8 +11,8 @@ metadata={ [deps] -source_file="res://Textures/Tiles/Actual textures/2.png" -dest_files=["res://.godot/imported/2.png-054b4df51feed804de7ba33365535c1c.s3tc.ctex"] +source_file="res://Defaults/Sprites/2.png" +dest_files=["res://.godot/imported/2.png-064a12f2e68879b8011ec8d7535f90a6.s3tc.ctex"] [params] diff --git a/Textures/Tiles/Actual textures/3.png b/Defaults/Sprites/3.png similarity index 100% rename from Textures/Tiles/Actual textures/3.png rename to Defaults/Sprites/3.png diff --git a/Textures/Tiles/Actual textures/3.png.import b/Defaults/Sprites/3.png.import similarity index 72% rename from Textures/Tiles/Actual textures/3.png.import rename to Defaults/Sprites/3.png.import index fe01cf40..0d1d57d3 100644 --- a/Textures/Tiles/Actual textures/3.png.import +++ b/Defaults/Sprites/3.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://de2iuxymc150j" -path="res://.godot/imported/3.png-2dbb42ad8059ec922c0ddf7474487a19.ctex" +path="res://.godot/imported/3.png-40368a6c144874d275a6652f0533c5a8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Textures/Tiles/Actual textures/3.png" -dest_files=["res://.godot/imported/3.png-2dbb42ad8059ec922c0ddf7474487a19.ctex"] +source_file="res://Defaults/Sprites/3.png" +dest_files=["res://.godot/imported/3.png-40368a6c144874d275a6652f0533c5a8.ctex"] [params] diff --git a/Textures/Tiles/Actual textures/4.png b/Defaults/Sprites/4.png similarity index 100% rename from Textures/Tiles/Actual textures/4.png rename to Defaults/Sprites/4.png diff --git a/Textures/Tiles/Actual textures/4.png.import b/Defaults/Sprites/4.png.import similarity index 72% rename from Textures/Tiles/Actual textures/4.png.import rename to Defaults/Sprites/4.png.import index 60c8991f..3d50dc22 100644 --- a/Textures/Tiles/Actual textures/4.png.import +++ b/Defaults/Sprites/4.png.import @@ -3,7 +3,7 @@ importer="texture" type="CompressedTexture2D" uid="uid://cyy4j5vso6khu" -path.s3tc="res://.godot/imported/4.png-0676a15659dda490d02720917344243e.s3tc.ctex" +path.s3tc="res://.godot/imported/4.png-94aa6fc10b65fd9d208a71417586b52a.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,8 +11,8 @@ metadata={ [deps] -source_file="res://Textures/Tiles/Actual textures/4.png" -dest_files=["res://.godot/imported/4.png-0676a15659dda490d02720917344243e.s3tc.ctex"] +source_file="res://Defaults/Sprites/4.png" +dest_files=["res://.godot/imported/4.png-94aa6fc10b65fd9d208a71417586b52a.s3tc.ctex"] [params] diff --git a/Images/Icons/IconArrowDownChecked.png b/Images/Icons/IconArrowDownChecked.png new file mode 100644 index 00000000..ea409e01 Binary files /dev/null and b/Images/Icons/IconArrowDownChecked.png differ diff --git a/Images/Icons/IconArrowDownChecked.png.import b/Images/Icons/IconArrowDownChecked.png.import new file mode 100644 index 00000000..fcff022d --- /dev/null +++ b/Images/Icons/IconArrowDownChecked.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://kjsnbbs2o68u" +path="res://.godot/imported/IconArrowDownChecked.png-a0fb98fe9f4489d648155a119bab7e92.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconArrowDownChecked.png" +dest_files=["res://.godot/imported/IconArrowDownChecked.png-a0fb98fe9f4489d648155a119bab7e92.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/Images/Icons/IconArrowDownUnchecked.png b/Images/Icons/IconArrowDownUnchecked.png new file mode 100644 index 00000000..da290245 Binary files /dev/null and b/Images/Icons/IconArrowDownUnchecked.png differ diff --git a/Images/Icons/IconArrowDownUnchecked.png.import b/Images/Icons/IconArrowDownUnchecked.png.import new file mode 100644 index 00000000..a2e82da9 --- /dev/null +++ b/Images/Icons/IconArrowDownUnchecked.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsxgq272ca2kw" +path="res://.godot/imported/IconArrowDownUnchecked.png-08f1debc5dbe632816528ee82ae23de5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconArrowDownUnchecked.png" +dest_files=["res://.godot/imported/IconArrowDownUnchecked.png-08f1debc5dbe632816528ee82ae23de5.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/Images/Icons/IconArrowUpChecked.png b/Images/Icons/IconArrowUpChecked.png new file mode 100644 index 00000000..697f6491 Binary files /dev/null and b/Images/Icons/IconArrowUpChecked.png differ diff --git a/Images/Icons/IconArrowUpChecked.png.import b/Images/Icons/IconArrowUpChecked.png.import new file mode 100644 index 00000000..f6aa8b66 --- /dev/null +++ b/Images/Icons/IconArrowUpChecked.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dk8cdxff84idk" +path="res://.godot/imported/IconArrowUpChecked.png-2daff76cbd86b523e4eb19104a7f04da.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconArrowUpChecked.png" +dest_files=["res://.godot/imported/IconArrowUpChecked.png-2daff76cbd86b523e4eb19104a7f04da.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/Images/Icons/IconArrowUpUnchecked.png b/Images/Icons/IconArrowUpUnchecked.png new file mode 100644 index 00000000..8677a17a Binary files /dev/null and b/Images/Icons/IconArrowUpUnchecked.png differ diff --git a/Images/Icons/IconArrowUpUnchecked.png.import b/Images/Icons/IconArrowUpUnchecked.png.import new file mode 100644 index 00000000..80662cdc --- /dev/null +++ b/Images/Icons/IconArrowUpUnchecked.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://biircfcjvj7lp" +path="res://.godot/imported/IconArrowUpUnchecked.png-503a97f947128645c0e7f0da8f0a6b1a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconArrowUpUnchecked.png" +dest_files=["res://.godot/imported/IconArrowUpUnchecked.png-503a97f947128645c0e7f0da8f0a6b1a.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/Images/Icons/IconCameraUnchecked.png b/Images/Icons/IconCameraUnchecked.png new file mode 100644 index 00000000..d06808da Binary files /dev/null and b/Images/Icons/IconCameraUnchecked.png differ diff --git a/Images/Icons/IconCameraUnchecked.png.import b/Images/Icons/IconCameraUnchecked.png.import new file mode 100644 index 00000000..a4253305 --- /dev/null +++ b/Images/Icons/IconCameraUnchecked.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dd700uhgg8oly" +path="res://.godot/imported/IconCameraUnchecked.png-37aa470dd8dfc2340ab5b83a51e9bcda.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconCameraUnchecked.png" +dest_files=["res://.godot/imported/IconCameraUnchecked.png-37aa470dd8dfc2340ab5b83a51e9bcda.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/Images/Icons/IconEraserChecked.png b/Images/Icons/IconEraserChecked.png new file mode 100644 index 00000000..af9ba040 Binary files /dev/null and b/Images/Icons/IconEraserChecked.png differ diff --git a/Images/Icons/IconEraserChecked.png.import b/Images/Icons/IconEraserChecked.png.import new file mode 100644 index 00000000..7eeeffee --- /dev/null +++ b/Images/Icons/IconEraserChecked.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7pbgyyv6lna1" +path="res://.godot/imported/IconEraserChecked.png-ebf0d5f79f06bb0e1dc4c215cb24639c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconEraserChecked.png" +dest_files=["res://.godot/imported/IconEraserChecked.png-ebf0d5f79f06bb0e1dc4c215cb24639c.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/Images/Icons/IconEraserUnchecked.png b/Images/Icons/IconEraserUnchecked.png new file mode 100644 index 00000000..a4ecd02d Binary files /dev/null and b/Images/Icons/IconEraserUnchecked.png differ diff --git a/Images/Icons/IconEraserUnchecked.png.import b/Images/Icons/IconEraserUnchecked.png.import new file mode 100644 index 00000000..dacb719b --- /dev/null +++ b/Images/Icons/IconEraserUnchecked.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hik7bkdfc51t" +path="res://.godot/imported/IconEraserUnchecked.png-9663af8211b301c6fcb28205f1327f90.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconEraserUnchecked.png" +dest_files=["res://.godot/imported/IconEraserUnchecked.png-9663af8211b301c6fcb28205f1327f90.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/Images/Icons/IconRectangleChecked.png b/Images/Icons/IconRectangleChecked.png new file mode 100644 index 00000000..7701b52d Binary files /dev/null and b/Images/Icons/IconRectangleChecked.png differ diff --git a/Images/Icons/IconRectangleChecked.png.import b/Images/Icons/IconRectangleChecked.png.import new file mode 100644 index 00000000..5754f033 --- /dev/null +++ b/Images/Icons/IconRectangleChecked.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5fsf8rh6w0pb" +path="res://.godot/imported/IconRectangleChecked.png-8f4b7115c4f48ca32612672ad26ba3fd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconRectangleChecked.png" +dest_files=["res://.godot/imported/IconRectangleChecked.png-8f4b7115c4f48ca32612672ad26ba3fd.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/Images/Icons/IconRectangleUnchecked.png b/Images/Icons/IconRectangleUnchecked.png new file mode 100644 index 00000000..5826eb86 Binary files /dev/null and b/Images/Icons/IconRectangleUnchecked.png differ diff --git a/Images/Icons/IconRectangleUnchecked.png.import b/Images/Icons/IconRectangleUnchecked.png.import new file mode 100644 index 00000000..d269d15f --- /dev/null +++ b/Images/Icons/IconRectangleUnchecked.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxhp6hye2ufp2" +path="res://.godot/imported/IconRectangleUnchecked.png-ca0b9493135439774e217d9c1d78b281.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconRectangleUnchecked.png" +dest_files=["res://.godot/imported/IconRectangleUnchecked.png-ca0b9493135439774e217d9c1d78b281.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/Images/Icons/IconRotateLeft.png b/Images/Icons/IconRotateLeft.png new file mode 100644 index 00000000..bc66908e Binary files /dev/null and b/Images/Icons/IconRotateLeft.png differ diff --git a/Mods/Core/Tiles/Grassrampeast.png.import b/Images/Icons/IconRotateLeft.png.import similarity index 67% rename from Mods/Core/Tiles/Grassrampeast.png.import rename to Images/Icons/IconRotateLeft.png.import index bd37723e..f99410cd 100644 --- a/Mods/Core/Tiles/Grassrampeast.png.import +++ b/Images/Icons/IconRotateLeft.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bwjpj6wtbq3e6" -path="res://.godot/imported/Grassrampeast.png-0c2899a224cdfe14f464f8eb3a673d45.ctex" +uid="uid://dbn2hdr3osli1" +path="res://.godot/imported/IconRotateLeft.png-dd4dfff7c52d0292765c62faa8dee120.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Mods/Core/Tiles/Grassrampeast.png" -dest_files=["res://.godot/imported/Grassrampeast.png-0c2899a224cdfe14f464f8eb3a673d45.ctex"] +source_file="res://Images/Icons/IconRotateLeft.png" +dest_files=["res://.godot/imported/IconRotateLeft.png-dd4dfff7c52d0292765c62faa8dee120.ctex"] [params] diff --git a/Images/Icons/IconRotateLeftDark.png b/Images/Icons/IconRotateLeftDark.png new file mode 100644 index 00000000..c2d0cee3 Binary files /dev/null and b/Images/Icons/IconRotateLeftDark.png differ diff --git a/Images/Icons/IconRotateLeftDark.png.import b/Images/Icons/IconRotateLeftDark.png.import new file mode 100644 index 00000000..d307a17e --- /dev/null +++ b/Images/Icons/IconRotateLeftDark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxhulwq5dpo2l" +path="res://.godot/imported/IconRotateLeftDark.png-74d7c0d8c1ff1231559690faa9eb2c7b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconRotateLeftDark.png" +dest_files=["res://.godot/imported/IconRotateLeftDark.png-74d7c0d8c1ff1231559690faa9eb2c7b.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/Images/Icons/IconRotateRight.png b/Images/Icons/IconRotateRight.png new file mode 100644 index 00000000..c336d555 Binary files /dev/null and b/Images/Icons/IconRotateRight.png differ diff --git a/Images/Icons/IconRotateRight.png.import b/Images/Icons/IconRotateRight.png.import new file mode 100644 index 00000000..82fd3b4d --- /dev/null +++ b/Images/Icons/IconRotateRight.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dixj0spya5p0y" +path="res://.godot/imported/IconRotateRight.png-dc8e2845f1ed0b218ed9451c1795c11a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconRotateRight.png" +dest_files=["res://.godot/imported/IconRotateRight.png-dc8e2845f1ed0b218ed9451c1795c11a.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/Images/Icons/IconRotateRightDark.png b/Images/Icons/IconRotateRightDark.png new file mode 100644 index 00000000..7bdbf52b Binary files /dev/null and b/Images/Icons/IconRotateRightDark.png differ diff --git a/Images/Icons/IconRotateRightDark.png.import b/Images/Icons/IconRotateRightDark.png.import new file mode 100644 index 00000000..f4b9c0f9 --- /dev/null +++ b/Images/Icons/IconRotateRightDark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6m2bbbpmsyik" +path="res://.godot/imported/IconRotateRightDark.png-09c560aa093dad870786dd7345d14eba.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Images/Icons/IconRotateRightDark.png" +dest_files=["res://.godot/imported/IconRotateRightDark.png-09c560aa093dad870786dd7345d14eba.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/ItemProtosets.tres b/ItemProtosets.tres index 079ccf6f..7cf63aa9 100644 --- a/ItemProtosets.tres +++ b/ItemProtosets.tres @@ -1,69 +1,122 @@ -[gd_resource type="Resource" script_class="ItemProtoset" load_steps=2 format=3 uid="uid://bvrl0obu5ejqq"] +[gd_resource type="Resource" script_class="ItemProtoset" load_steps=2 format=3 uid="uid://b1tngttyk4w2s"] [ext_resource type="Script" path="res://addons/gloot/core/item_protoset.gd" id="1_o35lu"] [resource] script = ExtResource("1_o35lu") json_data = "[ - { - \"name\": \"Steel scrap\", - \"assigned_id\": 0, - \"id\": \"steel_scrap\", - \"height\": 2, - \"width\": 2, - \"weight\": 0.25, - \"stack_size\": 2, - \"description\": \"Test steel scrap test\", - \"image\": \"res://Textures/steel_scrap.png\", - \"flags\": [] - }, - { - \"name\": \"Plank\", - \"assigned_id\": 0, - \"id\": \"plank\", - \"height\": 2, - \"width\": 4, - \"weight\": 2, - \"stack_size\": 3, - \"max_stack_size\": 3, - \"description\": \"Test plank test\", - \"image\": \"res://Textures/plank.png\", - \"flags\": [] - }, - { - \"name\": \"Bullet: 9mm\", - \"assigned_id\": 0, - \"id\": \"9mm\", - \"height\": 1, - \"width\": 1, - \"weight\": 0.01, - \"stack_size\": 100, - \"description\": \"Test 9mm test\", - \"image\": \"res://Textures/9mm.png\", - \"flags\": [\"ammunition\"] - }, - { - \"name\": \"Bandages\", - \"assigned_id\": 0, - \"id\": \"bandages\", - \"height\": 1, - \"width\": 1, - \"weight\": 0.05, - \"stack_size\": 1, - \"max_stack_size\": 20, - \"description\": \"Basic bandages for stopping bleeding.\", - \"flags\": [\"healing\"] - }, - { - \"name\": \"Pistol magazine\", - \"assigned_id\": 0, - \"id\": \"pistol_magazine\", - \"height\": 1, - \"width\": 1, - \"weight\": 0.25, - \"description\": \"Test pistol magazine test\", - \"image\": \"res://Textures/pistol_magazine.png\", - \"current_ammo\": 0, - \"flags\": [\"magazine\"] - } + { + \"description\": \"A wooden plank that could be used for all kinds of crafting and construction\", + \"height\": \"2\", + \"iamge\": \"res://Textures/plank.png\", + \"id\": \"plank_2x4\", + \"image\": \"./Mods/Core/Items/plank.png\", + \"max_stack_size\": \"3\", + \"name\": \"Plank 2x4\", + \"sprite\": \"plank.png\", + \"stack_size\": \"1\", + \"two_handed\": false, + \"volume\": \"300\", + \"weight\": \"2\", + \"width\": \"4\" + }, + { + \"description\": \"Some metal bits and pieces. Useful for something, right?\", + \"height\": \"2\", + \"id\": \"steel_scrap\", + \"image\": \"./Mods/Core/Items/steel_scrap.png\", + \"max_stack_size\": \"100\", + \"name\": \"Steel scrap\", + \"sprite\": \"steel_scrap.png\", + \"stack_size\": \"2\", + \"two_handed\": false, + \"volume\": \"15\", + \"weight\": \"0.25\", + \"width\": \"2\" + }, + { + \"Ammo\": { + \"damage\": \"25\" + }, + \"description\": \"Standard type of ammunition. Very common.\", + \"height\": \"1\", + \"id\": \"bullet_9mm\", + \"image\": \"./Mods/Core/Items/9mm.png\", + \"max_stack_size\": \"100\", + \"name\": \"bullet 9mm\", + \"sprite\": \"9mm.png\", + \"stack_size\": \"20\", + \"two_handed\": false, + \"volume\": \"0.1\", + \"weight\": \"0.01\", + \"width\": \"1\" + }, + { + \"Magazine\": { + \"max_ammo\": \"20\", + \"used_ammo\": \"9mm\" + }, + \"description\": \"In order for your pistol to fire a bullet, it needs to have a magazine loaded with bullets\", + \"height\": \"1\", + \"id\": \"pistol_magazine\", + \"image\": \"./Mods/Core/Items/pistol_magazine.png\", + \"max_stack_size\": \"1\", + \"name\": \"Pistol magazine\", + \"sprite\": \"pistol_magazine.png\", + \"stack_size\": \"1\", + \"two_handed\": false, + \"volume\": \"10\", + \"weight\": \"0.25\", + \"width\": \"1\" + }, + { + \"Ranged\": { + \"firing_speed\": \"0.25\", + \"range\": \"1000\", + \"recoil\": \"20\", + \"reload_speed\": \"2.5\", + \"spread\": \"5\", + \"sway\": \"5\", + \"used_ammo\": \"9mm\", + \"used_magazine\": \"pistol_magazine\", + \"used_skill\": \"short_guns\" + }, + \"description\": \"A standard issue pistol that uses 9mm ammunition\", + \"height\": \"2\", + \"id\": \"pistol_9mm\", + \"image\": \"./Mods/Core/Items/pistol_32.png\", + \"max_stack_size\": \"1\", + \"name\": \"Pistol 9mm\", + \"sprite\": \"pistol_32.png\", + \"stack_size\": \"1\", + \"two_handed\": false, + \"volume\": \"150\", + \"weight\": \"2\", + \"width\": \"2\" + }, + { + \"Ranged\": { + \"firing_speed\": \"0.1\", + \"range\": \"1000\", + \"recoil\": \"15\", + \"reload_speed\": \"2.5\", + \"spread\": \"8\", + \"sway\": \"5\", + \"used_ammo\": \"9mm\", + \"used_magazine\": \"pistol_magazine\", + \"used_skill\": \"short_guns\" + }, + \"description\": \"A standard issue rifle that uses 9mm ammunition\", + \"height\": \"2\", + \"id\": \"rifle_m4a1\", + \"image\": \"./Mods/Core/Items/rifle_64_32.png\", + \"max_stack_size\": \"1\", + \"name\": \"M4a1 rifle\", + \"sprite\": \"rifle_64_32.png\", + \"stack_size\": \"1\", + \"two_handed\": true, + \"volume\": \"300\", + \"weight\": \"4\", + \"width\": \"4\" + } ]" diff --git a/LevelGenerator.gd b/LevelGenerator.gd index 77b9006e..f5206a75 100644 --- a/LevelGenerator.gd +++ b/LevelGenerator.gd @@ -1,132 +1,353 @@ extends Node3D -var level_name - - var level_json_as_text - var level_levels : Array +var map_save_folder: String var level_width : int = 32 var level_height : int = 32 -@onready var defaultBlock: PackedScene = preload("res://Blocks/grass_001.tscn") +@onready var defaultBlock: PackedScene = preload("res://Defaults/Blocks/default_block.tscn") +@onready var defaultSlope: PackedScene = preload("res://Defaults/Blocks/default_slope.tscn") +@export var defaultMob: PackedScene +@export var defaultItem: PackedScene +@export var defaultFurniturePhysics: PackedScene +@export var defaultFurnitureStatic: PackedScene @export var level_manager : Node3D -@export var block_scenes : Array[PackedScene] @export_file var default_level_json -var tile_materials = {} # Create an empty dictionary to store materials # Called when the node enters the scene tree for the first time. func _ready(): - level_name = Helper.current_level_name - load_tiles_material() - generate_level() + generate_map() $"../NavigationRegion3D".bake_navigation_mesh() -func generate_level(): - - var textureName: String = "" - if level_name == "": - get_level_json() +func generate_map(): + map_save_folder = Helper.save_helper.get_saved_map_folder(Helper.current_level_pos) + generate_tactical_map() + # These tree functions apply only to maps thet were previously saved in a save game + generate_mobs() + generate_items() + generate_furniture() + +# We generate a tactical map, which is made up of x by y maps of 32x32 blocks +# If we can find a saved map on the current coordinate, we load that +# Otherwise, we load the mapdata from the game data and make a brand new one +func generate_tactical_map(): + var tacticalMapJSON: Dictionary = {} + var level_name: String = Helper.current_level_name + map_save_folder = Helper.save_helper.get_saved_map_folder(Helper.current_level_pos) + # Load the default map from json + # Unless the map_save_folder is set + # In which case we load tha map instead + if map_save_folder == "": + tacticalMapJSON = Helper.json_helper.load_json_dictionary_file(\ + Gamedata.data.tacticalmaps.dataPath + level_name) + var i: int = 0 + for z in range(tacticalMapJSON.mapheight): + for x in range(tacticalMapJSON.mapwidth): + generate_tactical_map_level_segment(x, z,tacticalMapJSON.maps[i]) + i+=1 else: - get_custom_level_json("user://levels/" + level_name) - - + tacticalMapJSON = Helper.json_helper.load_json_dictionary_file(\ + map_save_folder + "/map.json") + generate_saved_level(tacticalMapJSON) + +func generate_tactical_map_level_segment(segment_x: int, segment_z: int, mapsegment: Dictionary): + var offset_x = segment_x * level_width + var offset_z = segment_z * level_height + #This contains the data of one segment, loaded from maps.data, for example generichouse.json + var mapsegmentData: Dictionary = Helper.json_helper.load_json_dictionary_file(\ + Gamedata.data.maps.dataPath + mapsegment.id) + var tileJSON: Dictionary = {} + var level_number = 0 - #we need to generate level layer by layer starting from the bottom - for level in level_levels: + for level in mapsegmentData.levels: if level != []: var level_node = Node3D.new() level_manager.add_child(level_node) - level_node.global_position.y = level_number-10 - - + level_node.add_to_group("maplevels") + level_node.global_position.y = level_number - 10 + level_node.global_position.x = offset_x + level_node.global_position.z = offset_z + var current_block = 0 + for h in range(level_height): + for w in range(level_width): + if level[current_block]: + tileJSON = level[current_block] + if tileJSON.has("id") and tileJSON.id != "": + var block = create_block_with_id(tileJSON.id) + level_node.add_child(block) + block.position.x = w + block.position.z = h + apply_block_rotation(tileJSON, block) + add_block_mob(tileJSON, block) + add_furniture_to_block(tileJSON, block) + current_block += 1 + if !len(level_node.get_children()) > 0: + level_node.remove_from_group("maplevels") + level_node.queue_free() + level_number += 1 + +# Called when the map is generated +# Only applicable if a save is loaded +func generate_mobs() -> void: + if map_save_folder == "": + return + var mobsArray = Helper.json_helper.load_json_array_file(map_save_folder + "/mobs.json") + for mob: Dictionary in mobsArray: + add_mob_to_map.call_deferred(mob) + +# Called by generate_mobs function when a save is loaded +func add_mob_to_map(mob: Dictionary) -> void: + var newMob: CharacterBody3D = defaultMob.instantiate() + newMob.add_to_group("mobs") + get_tree().get_root().add_child(newMob) + newMob.global_position.x = mob.global_position_x + newMob.global_position.y = mob.global_position_y + newMob.global_position.z = mob.global_position_z + # Check if rotation data is available and apply it + if mob.has("rotation"): + newMob.rotation_degrees.y = mob.rotation + newMob.apply_stats_from_json(mob) + +# Called when the map is generated +# Only applicable if a save is loaded +func generate_items() -> void: + if map_save_folder == "": + return + var itemsArray = Helper.json_helper.load_json_array_file(map_save_folder + "/items.json") + for item: Dictionary in itemsArray: + add_item_to_map.call_deferred(item) + +# Called by generate_items function when a save is loaded +func add_item_to_map(item: Dictionary): + var newItem: Node3D = defaultItem.instantiate() + newItem.add_to_group("mapitems") + get_tree().get_root().add_child(newItem) + newItem.global_position.x = item.global_position_x + newItem.global_position.y = item.global_position_y + newItem.global_position.z = item.global_position_z + # Check if rotation data is available and apply it + if item.has("rotation"): + newItem.rotation_degrees.y = item.rotation + newItem.get_node(newItem.inventory).deserialize(item.inventory) + +# Called when the map is generated +# Only applicable if a save is loaded +func generate_furniture() -> void: + if map_save_folder == "": + return + var furnitureArray = Helper.json_helper.load_json_array_file(map_save_folder + "/furniture.json") + for furnitureData: Dictionary in furnitureArray: + add_furniture_to_map.call_deferred(furnitureData) + +# Called by generate_furniture function when a save is loaded +func add_furniture_to_map(furnitureData: Dictionary) -> void: + var newFurniture: Node3D + var isMoveable = furnitureData.has("moveable") and furnitureData.moveable + if isMoveable: + newFurniture = defaultFurniturePhysics.instantiate() + else: + newFurniture = defaultFurnitureStatic.instantiate() + newFurniture.add_to_group("furniture") + newFurniture.set_sprite(Gamedata.get_sprite_by_id(Gamedata.data.furniture, furnitureData.id)) + get_tree().get_root().add_child(newFurniture) + newFurniture.global_position.x = furnitureData.global_position_x + newFurniture.global_position.y = furnitureData.global_position_y + newFurniture.global_position.z = furnitureData.global_position_z + # Check if rotation data is available and apply it + if furnitureData.has("rotation"): + if isMoveable: + newFurniture.rotation_degrees.y = furnitureData.rotation + else: + newFurniture.set_new_rotation(furnitureData.rotation) + + # Check if sprite rotation data is available and apply it + if furnitureData.has("sprite_rotation") and isMoveable: + newFurniture.set_new_rotation(furnitureData.sprite_rotation) + newFurniture.id = furnitureData.id + +# Generate the map layer by layer +# For each layer, add all the blocks with proper rotation +# If a block has an mob, add it too +func generate_saved_level(tacticalMapJSON: Dictionary) -> void: + var tileJSON: Dictionary = {} + var currentBlocks: Array = [] + #we need to generate level layer by layer starting from the bottom + for level: Dictionary in tacticalMapJSON.maplevels: + if level != {}: + var level_node = Node3D.new() + level_node.add_to_group("maplevels") + level_manager.add_child(level_node) + level_node.global_position.y = level.map_y + level_node.global_position.x = level.map_x + level_node.global_position.z = level.map_z + currentBlocks = level.blocks + var current_block = 0 # we will generate number equal to "layer_height" of horizontal rows of blocks for h in level_height: # this loop will generate blocks from West to East based on the tile number # in json file - - for w in level_width: - # checking if we have tile from json in our block array containing packedscenes # of blocks that we need to instantiate. # If yes, then instantiate - -# if block_scenes[level["data"][current_block]-1]: - if level[current_block]: - textureName = level[current_block].texture - if textureName != "": -# var block : StaticBody3D -## block = block_scenes[0].instantiate() -# block = create_block_with_material(textureName) - - var block: StaticBody3D = defaultBlock.instantiate() - if textureName in tile_materials: - var material = tile_materials[textureName] - block.update_texture(material) - # block = block_scenes[layer["data"][current_block]-1].instantiate() - level_node.add_child(block) - - block.global_position.x = w - #block.global_position.y = layer_number - block.global_position.z = h + if currentBlocks[current_block]: + tileJSON = currentBlocks[current_block] + if tileJSON.has("id"): + if tileJSON.id != "": + var block: StaticBody3D = create_block_with_id(tileJSON.id) + level_node.add_child(block) + # Because the level node already has a x and y position, + # We only set the local position relative to the parent + block.position.x = w + block.position.z = h + apply_block_rotation(tileJSON, block) + add_block_mob(tileJSON, block) + add_furniture_to_block(tileJSON, block) current_block += 1 - - level_number += 1 + +func add_furniture_to_block(tileJSON: Dictionary, block: StaticBody3D): + if tileJSON.has("furniture"): + var newFurniture: Node3D + var furnitureJSON: Dictionary = Gamedata.get_data_by_id(\ + Gamedata.data.furniture, tileJSON.furniture.id) + var furnitureSprite: Texture = Gamedata.data.furniture.sprites[furnitureJSON.sprite] + + # Calculate the size of the furniture based on the sprite dimensions + var spriteWidth = furnitureSprite.get_width() / 100.0 # Convert pixels to meters (assuming 100 pixels per meter) + var spriteDepth = furnitureSprite.get_height() / 100.0 # Convert pixels to meters + + var edgeSnappingDirection = furnitureJSON.get("edgesnapping", "None") + var rotation = tileJSON.furniture.get("rotation", 0) + + if furnitureJSON.has("moveable") and furnitureJSON.moveable: + newFurniture = defaultFurniturePhysics.instantiate() + else: + newFurniture = defaultFurnitureStatic.instantiate() + + newFurniture.add_to_group("furniture") + + # Set the sprite and adjust the collision shape + newFurniture.set_sprite(furnitureSprite) + + get_tree().get_root().add_child(newFurniture) + + # Position furniture at the center of the block by default + var furniturePosition = block.global_position + furniturePosition.y += 0.5 # Slightly above the block + + # Apply edge snapping if necessary + if edgeSnappingDirection != "None": + furniturePosition = apply_edge_snapping(furniturePosition, edgeSnappingDirection, spriteWidth, spriteDepth, rotation, block) + newFurniture.global_position = furniturePosition + + if tileJSON.furniture.has("rotation"): + newFurniture.set_new_rotation(tileJSON.furniture.rotation) + else: + newFurniture.set_new_rotation(0) + + newFurniture.id = furnitureJSON.id + +func apply_edge_snapping(position, direction, width, depth, rotation, block): + # Block size, assuming a block is 1x1 meters + var blockSize = Vector3(1.0, 1.0, 1.0) + + # Adjust position based on edgesnapping direction and rotation + match direction: + "North": + position.z -= blockSize.z / 2 - depth / 2 + "South": + position.z += blockSize.z / 2 - depth / 2 + "East": + position.x += blockSize.x / 2 - width / 2 + "West": + position.x -= blockSize.x / 2 - width / 2 + # Add more cases if needed + # Consider rotation if necessary + position = rotate_position_around_block_center(position, rotation, block.global_position) + + return position +func rotate_position_around_block_center(position, rotation, block_center): + # Convert rotation to radians for trigonometric functions + var radians = deg_to_rad(rotation) - # YEAH I KNOW THAT SHOULD BE ONE FUNCTION, BUT IT'S 2:30 AM and... I'm TIRED LOL -func get_level_json(): - var file = default_level_json - level_json_as_text = FileAccess.get_file_as_string(file) - var json_as_dict: Dictionary = JSON.parse_string(level_json_as_text) - level_levels = json_as_dict["levels"] - level_width = json_as_dict["mapwidth"] - level_width = json_as_dict["mapheight"] - -func get_custom_level_json(level_path): - var file = level_path - level_json_as_text = FileAccess.get_file_as_string(file) - var json_as_dict = JSON.parse_string(level_json_as_text) - level_levels = json_as_dict["levels"] - - -#This function takes a filename and create a new instance of block_scenes[0] which is a StaticBody3D. It will then take the material from the material dictionary based on the provided filename and apply it to the instance of StaticBody3D. Lastly it will return the StaticBody3D. -func create_block_with_material(filename: String) -> StaticBody3D: - var block: StaticBody3D = defaultBlock.instantiate() - if filename in tile_materials: - var material = tile_materials[filename] - block.update_texture(material) - return block + # Calculate the offset from the block center + var offset = position - block_center + + # Apply rotation matrix transformation + var rotated_offset = Vector3( + offset.x * cos(radians) - offset.z * sin(radians), + offset.y, + offset.x * sin(radians) + offset.z * cos(radians) + ) + + # Return the new position + return block_center + rotated_offset + +func apply_block_rotation(tileJSON: Dictionary, block: StaticBody3D): + if tileJSON.has("rotation"): + if tileJSON.rotation != 0: + # We subtract 90 so we know that north is + # on the top of the screen + # The default block has a y rotation of 90 + # So it is already pointing north (0 = 90) + # 90 = 0 - points east + # 180 (we add 90 instead of subtract) = 270 = south + # 270 = 180 - points west + var myRotation: int = tileJSON.rotation + if myRotation == 180: + block.rotation_degrees = Vector3(0,myRotation+90,0) + else: + block.rotation_degrees = Vector3(0,myRotation-90,0) +func add_block_mob(tileJSON: Dictionary, block: StaticBody3D): + if tileJSON.has("mob"): + var newMob: CharacterBody3D = defaultMob.instantiate() + newMob.add_to_group("mobs") + get_tree().get_root().add_child(newMob) + newMob.global_position.x = block.global_position.x + newMob.global_position.y = block.global_position.y + 0.5 + newMob.global_position.z = block.global_position.z + #if tileJSON.mob.has("rotation"): + #newMob.rotation_degrees.y = tileJSON.mob.rotation + newMob.apply_stats_from_json(Gamedata.get_data_by_id(\ + Gamedata.data.mobs, tileJSON.mob.id)) -# This function reads all the files in "res://Mods/Core/Tiles/". It will check if the file is a .png file. If the file is a .png file, it will create a new material with that .png image as the texture. It will put all of the created materials in a dictionary with the name of the file as the key and the material as the value. -func load_tiles_material(): - var tilesDir = "res://Mods/Core/Tiles/" - var dir = DirAccess.open(tilesDir) - if dir: - dir.list_dir_begin() - var file_name = dir.get_next() - while file_name != "": - var extension = file_name.get_extension() - - if !dir.current_is_dir(): - if extension == "png": - var texture := load("res://Mods/Core/Tiles/" + file_name) # Load the .png file as a texture - var material := StandardMaterial3D.new() - material.albedo_texture = texture # Set the texture of the material - tile_materials[file_name] = material # Add the material to the dictionary - file_name = dir.get_next() +# This function takes a tile id and creates a new instance of either a block +# or a slope which is a StaticBody3D. Look up the sprite property that is specified in +# the json associated with the id. It will then take the sprite from the +# sprite dictionary based on the provided spritename and apply it +# to the instance of StaticBody3D. Lastly it will return the StaticBody3D. +func create_block_with_id(id: String) -> StaticBody3D: + var block: StaticBody3D + var tileJSONData = Gamedata.data.tiles + var tileJSON = tileJSONData.data[Gamedata.get_array_index_by_id(tileJSONData,id)] + if tileJSON.has("shape"): + if tileJSON.shape == "slope": + block = defaultSlope.instantiate() + else: + block = defaultBlock.instantiate() else: - print_debug("An error occurred when trying to access the path.") - dir.list_dir_end() + block = defaultBlock.instantiate() + # Remmeber the id for save and load purposes + block.id = id + + + #tileJSON.sprite is the 'sprite' key in the json that was found for this tile + #If the sprite is found in the tile sprites, we assign it. + if tileJSON.sprite in Gamedata.data.tiles.sprites: + var material = Gamedata.data.tiles.sprites[tileJSON.sprite] + block.update_texture(material) + return block + diff --git a/LevelManager.gd b/LevelManager.gd index f8a298c4..11e6d7f1 100644 --- a/LevelManager.gd +++ b/LevelManager.gd @@ -1,15 +1,26 @@ extends Node3D - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass - + # Initialize with a value that's unlikely to be a valid starting Y-level +var last_player_y_level: float = -1 # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta): + var player = get_tree().get_first_node_in_group("Players") + if player: + var current_player_y = player.global_position.y + + # Check if the player's Y-level has changed + if current_player_y != last_player_y_level: + update_visibility(current_player_y) + last_player_y_level = current_player_y + +func update_visibility(player_y: float): + # Update level visibility for level in get_children(): - if level.global_position.y > get_tree().get_first_node_in_group("Players").global_position.y: - level.visible = false - else: - level.visible = true + var is_above_player = level.global_position.y > player_y + level.visible = not is_above_player + + # Update furniture visibility + for furniture in get_tree().get_nodes_in_group("furniture"): + var is_above_player = furniture.global_position.y > player_y + furniture.visible = not is_above_player diff --git a/Materials/wall1.tres b/Materials/wall1.tres index 9242610c..36cb06e3 100644 --- a/Materials/wall1.tres +++ b/Materials/wall1.tres @@ -1,6 +1,6 @@ [gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://biuyl58gd7g7v"] -[ext_resource type="Texture2D" uid="uid://c31w0wuk8qabw" path="res://Textures/Tiles/Actual textures/2.png" id="1_r0v77"] +[ext_resource type="Texture2D" uid="uid://c31w0wuk8qabw" path="res://Defaults/Sprites/2.png" id="1_r0v77"] [resource] shading_mode = 0 diff --git a/MeshLibraries/test.tres b/MeshLibraries/test.tres index 3d555da5..32d409fc 100644 --- a/MeshLibraries/test.tres +++ b/MeshLibraries/test.tres @@ -1,6 +1,6 @@ [gd_resource type="MeshLibrary" load_steps=5 format=3 uid="uid://b8il3gb2idxf4"] -[ext_resource type="Material" uid="uid://buj4ukj1oh4pq" path="res://Materials/floor1.tres" id="1_yx5kh"] +[ext_resource type="Material" uid="uid://buj4ukj1oh4pq" path="res://Defaults/Blocks/Materials/floor1.tres" id="1_yx5kh"] [sub_resource type="BoxMesh" id="BoxMesh_ywr7x"] material = ExtResource("1_yx5kh") diff --git a/Mods/Core/Furniture/Furniture.json b/Mods/Core/Furniture/Furniture.json new file mode 100644 index 00000000..c2805987 --- /dev/null +++ b/Mods/Core/Furniture/Furniture.json @@ -0,0 +1,68 @@ +[ + { + "categories": [ + "Urban", + "Livingroom" + ], + "description": "A round wooden table. This weathered relic from a bygone era stands as a testament to a simpler time, a stark contrast to the harsh reality surrounding it.\nThe table's surface bears the scars a history as a dining spot.", + "id": "table_round_wood", + "moveable": true, + "name": "Round wooden table", + "sprite": "table_64.png" + }, + { + "categories": [ + "Urban", + "Livingroom" + ], + "description": "A simple wooden chair, its construction is basic yet sturdy, a testament to durability in the face of decay. \nWith a rough-hewn seat and a backrest that bears the marks of time, this chair offers a momentary respite from the unforgiving environment.", + "edgesnapping": "None", + "id": "chair_wood", + "moveable": true, + "name": "Wooden chair", + "sprite": "chair_32.png" + }, + { + "categories": [ + "Urban", + "Kitchen", + "Indoor" + ], + "description": "One of the central pieces of fruniture that make up a kitchen", + "edgesnapping": "North", + "id": "countertop_wood", + "moveable": false, + "name": "Wooden countertop", + "sprite": "countertop_100_52.png" + }, + { + "categories": [ + "Nature" + ], + "description": "A common tree", + "id": "Tree_00", + "moveable": false, + "name": "Tree", + "sprite": "Tree_100.png" + }, + { + "categories": [ + "Nature" + ], + "description": "A common pine tree", + "id": "PineTree_00", + "moveable": false, + "name": "Pine tree", + "sprite": "PineTree_100.png" + }, + { + "categories": [ + "Nature" + ], + "description": "A common willow tree", + "id": "WillowTree_00", + "moveable": false, + "name": "Willow tree", + "sprite": "WillowTree_100.png" + } +] \ No newline at end of file diff --git a/Mods/Core/Furniture/PineTree_100.png b/Mods/Core/Furniture/PineTree_100.png new file mode 100644 index 00000000..90c0e0d9 Binary files /dev/null and b/Mods/Core/Furniture/PineTree_100.png differ diff --git a/Mods/Core/Furniture/PineTree_100.png.import b/Mods/Core/Furniture/PineTree_100.png.import new file mode 100644 index 00000000..cc744e07 --- /dev/null +++ b/Mods/Core/Furniture/PineTree_100.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpkfudhpobkjy" +path="res://.godot/imported/PineTree_100.png-03621d872154e5e5556368b5dc8326f5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Furniture/PineTree_100.png" +dest_files=["res://.godot/imported/PineTree_100.png-03621d872154e5e5556368b5dc8326f5.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/Mods/Core/Furniture/Tree_100.png b/Mods/Core/Furniture/Tree_100.png new file mode 100644 index 00000000..a8cc96b3 Binary files /dev/null and b/Mods/Core/Furniture/Tree_100.png differ diff --git a/Mods/Core/Furniture/Tree_100.png.import b/Mods/Core/Furniture/Tree_100.png.import new file mode 100644 index 00000000..e23b6a4f --- /dev/null +++ b/Mods/Core/Furniture/Tree_100.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1vlen4jitypn" +path="res://.godot/imported/Tree_100.png-0f2017c5b1fdf0b82b4ff621fba44187.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Furniture/Tree_100.png" +dest_files=["res://.godot/imported/Tree_100.png-0f2017c5b1fdf0b82b4ff621fba44187.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/Mods/Core/Furniture/WillowTree_100.png b/Mods/Core/Furniture/WillowTree_100.png new file mode 100644 index 00000000..d8d8979a Binary files /dev/null and b/Mods/Core/Furniture/WillowTree_100.png differ diff --git a/Mods/Core/Tiles/dirtrampsouth.png.import b/Mods/Core/Furniture/WillowTree_100.png.import similarity index 74% rename from Mods/Core/Tiles/dirtrampsouth.png.import rename to Mods/Core/Furniture/WillowTree_100.png.import index 46f28755..3ae389b7 100644 --- a/Mods/Core/Tiles/dirtrampsouth.png.import +++ b/Mods/Core/Furniture/WillowTree_100.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://d28d3jov4884w" -path="res://.godot/imported/dirtrampsouth.png-3025d64cbdf6c77258417fbdc2649f04.ctex" +uid="uid://cw2o0o2e3188d" +path="res://.godot/imported/WillowTree_100.png-a4cd46623486f1f85779d199d0573b16.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Mods/Core/Tiles/dirtrampsouth.png" -dest_files=["res://.godot/imported/dirtrampsouth.png-3025d64cbdf6c77258417fbdc2649f04.ctex"] +source_file="res://Mods/Core/Furniture/WillowTree_100.png" +dest_files=["res://.godot/imported/WillowTree_100.png-a4cd46623486f1f85779d199d0573b16.ctex"] [params] diff --git a/Mods/Core/Furniture/chair_32.png b/Mods/Core/Furniture/chair_32.png new file mode 100644 index 00000000..d21017c5 Binary files /dev/null and b/Mods/Core/Furniture/chair_32.png differ diff --git a/Mods/Core/Furniture/chair_32.png.import b/Mods/Core/Furniture/chair_32.png.import new file mode 100644 index 00000000..1acfaf68 --- /dev/null +++ b/Mods/Core/Furniture/chair_32.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cd6qkw2b1gu6g" +path="res://.godot/imported/chair_32.png-1dd6d4d4c3d7476cf856d93fd3b41d64.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Furniture/chair_32.png" +dest_files=["res://.godot/imported/chair_32.png-1dd6d4d4c3d7476cf856d93fd3b41d64.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/Mods/Core/Furniture/countertop_100_52.png b/Mods/Core/Furniture/countertop_100_52.png new file mode 100644 index 00000000..1ee1bb49 Binary files /dev/null and b/Mods/Core/Furniture/countertop_100_52.png differ diff --git a/Mods/Core/Furniture/countertop_100_52.png.import b/Mods/Core/Furniture/countertop_100_52.png.import new file mode 100644 index 00000000..bea65ef2 --- /dev/null +++ b/Mods/Core/Furniture/countertop_100_52.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ggjyl5rafav" +path="res://.godot/imported/countertop_100_52.png-d6074e65a1149d3afc3dca25b2afe393.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Furniture/countertop_100_52.png" +dest_files=["res://.godot/imported/countertop_100_52.png-d6074e65a1149d3afc3dca25b2afe393.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/Mods/Core/Furniture/table_64.png b/Mods/Core/Furniture/table_64.png new file mode 100644 index 00000000..cf9fa076 Binary files /dev/null and b/Mods/Core/Furniture/table_64.png differ diff --git a/Mods/Core/Furniture/table_64.png.import b/Mods/Core/Furniture/table_64.png.import new file mode 100644 index 00000000..c3595c22 --- /dev/null +++ b/Mods/Core/Furniture/table_64.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqfqxgp12asw1" +path.s3tc="res://.godot/imported/table_64.png-2a25967c15d24af83aad9c2836306f55.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://Mods/Core/Furniture/table_64.png" +dest_files=["res://.godot/imported/table_64.png-2a25967c15d24af83aad9c2836306f55.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Mods/Core/Items/9mm.png b/Mods/Core/Items/9mm.png new file mode 100644 index 00000000..912edd04 Binary files /dev/null and b/Mods/Core/Items/9mm.png differ diff --git a/Mods/Core/Tiles/forestunderbrush3.png.import b/Mods/Core/Items/9mm.png.import similarity index 73% rename from Mods/Core/Tiles/forestunderbrush3.png.import rename to Mods/Core/Items/9mm.png.import index 5c7f4e0b..03570caf 100644 --- a/Mods/Core/Tiles/forestunderbrush3.png.import +++ b/Mods/Core/Items/9mm.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bxvtqdi0u3o6s" -path="res://.godot/imported/forestunderbrush3.png-2231030839b9f82151cdd73a008ab3b9.ctex" +uid="uid://dfmrlie57qrbo" +path="res://.godot/imported/9mm.png-3441f559393926783dc0d2e02461da36.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Mods/Core/Tiles/forestunderbrush3.png" -dest_files=["res://.godot/imported/forestunderbrush3.png-2231030839b9f82151cdd73a008ab3b9.ctex"] +source_file="res://Mods/Core/Items/9mm.png" +dest_files=["res://.godot/imported/9mm.png-3441f559393926783dc0d2e02461da36.ctex"] [params] diff --git a/Mods/Core/Items/Items.json b/Mods/Core/Items/Items.json new file mode 100644 index 00000000..fa581c83 --- /dev/null +++ b/Mods/Core/Items/Items.json @@ -0,0 +1,116 @@ +[ + { + "description": "A wooden plank that could be used for all kinds of crafting and construction", + "height": "2", + "iamge": "res://Textures/plank.png", + "id": "plank_2x4", + "image": "./Mods/Core/Items/plank.png", + "max_stack_size": "3", + "name": "Plank 2x4", + "sprite": "plank.png", + "stack_size": "1", + "two_handed": false, + "volume": "300", + "weight": "2", + "width": "4" + }, + { + "description": "Some metal bits and pieces. Useful for something, right?", + "height": "2", + "id": "steel_scrap", + "image": "./Mods/Core/Items/steel_scrap.png", + "max_stack_size": "100", + "name": "Steel scrap", + "sprite": "steel_scrap.png", + "stack_size": "2", + "two_handed": false, + "volume": "15", + "weight": "0.25", + "width": "2" + }, + { + "Ammo": { + "damage": "25" + }, + "description": "Standard type of ammunition. Very common.", + "height": "1", + "id": "bullet_9mm", + "image": "./Mods/Core/Items/9mm.png", + "max_stack_size": "100", + "name": "bullet 9mm", + "sprite": "9mm.png", + "stack_size": "20", + "two_handed": false, + "volume": "0.1", + "weight": "0.01", + "width": "1" + }, + { + "Magazine": { + "max_ammo": "20", + "used_ammo": "9mm" + }, + "description": "In order for your pistol to fire a bullet, it needs to have a magazine loaded with bullets", + "height": "1", + "id": "pistol_magazine", + "image": "./Mods/Core/Items/pistol_magazine.png", + "max_stack_size": "1", + "name": "Pistol magazine", + "sprite": "pistol_magazine.png", + "stack_size": "1", + "two_handed": false, + "volume": "10", + "weight": "0.25", + "width": "1" + }, + { + "Ranged": { + "firing_speed": "0.25", + "range": "1000", + "recoil": "20", + "reload_speed": "2.5", + "spread": "5", + "sway": "5", + "used_ammo": "9mm", + "used_magazine": "pistol_magazine", + "used_skill": "short_guns" + }, + "description": "A standard issue pistol that uses 9mm ammunition", + "height": "2", + "id": "pistol_9mm", + "image": "./Mods/Core/Items/pistol_32.png", + "max_stack_size": "1", + "name": "Pistol 9mm", + "sprite": "pistol_32.png", + "stack_size": "1", + "two_handed": false, + "volume": "150", + "weight": "2", + "width": "2" + }, + { + "Ranged": { + "firing_speed": "0.1", + "range": "1000", + "recoil": "15", + "reload_speed": "2.5", + "spread": "8", + "sway": "5", + "used_ammo": "9mm", + "used_magazine": "pistol_magazine", + "used_skill": "short_guns" + }, + "description": "A standard issue rifle that uses 9mm ammunition", + "height": "2", + "id": "rifle_m4a1", + "image": "./Mods/Core/Items/rifle_64_32.png", + "max_stack_size": "1", + "name": "M4a1 rifle", + "sprite": "rifle_64_32.png", + "stack_size": "1", + "two_handed": true, + "volume": "300", + "weight": "4", + "width": "4" + } +] \ No newline at end of file diff --git a/Mods/Core/Items/pistol_32.png b/Mods/Core/Items/pistol_32.png new file mode 100644 index 00000000..b42af269 Binary files /dev/null and b/Mods/Core/Items/pistol_32.png differ diff --git a/Mods/Core/Tiles/5.png.import b/Mods/Core/Items/pistol_32.png.import similarity index 68% rename from Mods/Core/Tiles/5.png.import rename to Mods/Core/Items/pistol_32.png.import index 251c46fc..7bc8e2d3 100644 --- a/Mods/Core/Tiles/5.png.import +++ b/Mods/Core/Items/pistol_32.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dxpgud82egyi2" -path="res://.godot/imported/5.png-892a542839c17a8b7ddebbb4bcef64fa.ctex" +uid="uid://jk28o4rmnbkx" +path="res://.godot/imported/pistol_32.png-21ecb4834f397de0a205dcb99066d31f.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Mods/Core/Tiles/5.png" -dest_files=["res://.godot/imported/5.png-892a542839c17a8b7ddebbb4bcef64fa.ctex"] +source_file="res://Mods/Core/Items/pistol_32.png" +dest_files=["res://.godot/imported/pistol_32.png-21ecb4834f397de0a205dcb99066d31f.ctex"] [params] diff --git a/Mods/Core/Items/pistol_magazine.png b/Mods/Core/Items/pistol_magazine.png new file mode 100644 index 00000000..a792d563 Binary files /dev/null and b/Mods/Core/Items/pistol_magazine.png differ diff --git a/Mods/Core/Items/pistol_magazine.png.import b/Mods/Core/Items/pistol_magazine.png.import new file mode 100644 index 00000000..de83fb97 --- /dev/null +++ b/Mods/Core/Items/pistol_magazine.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://depwabn88fw7e" +path="res://.godot/imported/pistol_magazine.png-783d83ffc3f9f3bb2653966ee1377c98.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Items/pistol_magazine.png" +dest_files=["res://.godot/imported/pistol_magazine.png-783d83ffc3f9f3bb2653966ee1377c98.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/Mods/Core/Items/plank.png b/Mods/Core/Items/plank.png new file mode 100644 index 00000000..a3327092 Binary files /dev/null and b/Mods/Core/Items/plank.png differ diff --git a/Textures/Tiles/doors.png.import b/Mods/Core/Items/plank.png.import similarity index 69% rename from Textures/Tiles/doors.png.import rename to Mods/Core/Items/plank.png.import index a4109556..871440ce 100644 --- a/Textures/Tiles/doors.png.import +++ b/Mods/Core/Items/plank.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://44igy8ss6sn7" -path="res://.godot/imported/doors.png-49ee19644b1f0fb50e05be043ce78e86.ctex" +uid="uid://cxe54kn0lplr3" +path="res://.godot/imported/plank.png-ece954c005eb0bfd75f7b4f798b69e7d.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Textures/Tiles/doors.png" -dest_files=["res://.godot/imported/doors.png-49ee19644b1f0fb50e05be043ce78e86.ctex"] +source_file="res://Mods/Core/Items/plank.png" +dest_files=["res://.godot/imported/plank.png-ece954c005eb0bfd75f7b4f798b69e7d.ctex"] [params] diff --git a/Mods/Core/Items/rifle_64_32.png b/Mods/Core/Items/rifle_64_32.png new file mode 100644 index 00000000..d052f826 Binary files /dev/null and b/Mods/Core/Items/rifle_64_32.png differ diff --git a/Mods/Core/Items/rifle_64_32.png.import b/Mods/Core/Items/rifle_64_32.png.import new file mode 100644 index 00000000..6de25927 --- /dev/null +++ b/Mods/Core/Items/rifle_64_32.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do1odv6x5ofqt" +path="res://.godot/imported/rifle_64_32.png-966a67e91063ddd5793980d3ae710b83.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Items/rifle_64_32.png" +dest_files=["res://.godot/imported/rifle_64_32.png-966a67e91063ddd5793980d3ae710b83.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/Mods/Core/Items/steel_scrap.png b/Mods/Core/Items/steel_scrap.png new file mode 100644 index 00000000..4fde92c0 Binary files /dev/null and b/Mods/Core/Items/steel_scrap.png differ diff --git a/Mods/Core/Items/steel_scrap.png.import b/Mods/Core/Items/steel_scrap.png.import new file mode 100644 index 00000000..9e07436c --- /dev/null +++ b/Mods/Core/Items/steel_scrap.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5tbuxmrli7e4" +path="res://.godot/imported/steel_scrap.png-945eecc671a66949a44a03816c3ce558.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Items/steel_scrap.png" +dest_files=["res://.godot/imported/steel_scrap.png-945eecc671a66949a44a03816c3ce558.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/Mods/Core/Maps/Generichouse.json b/Mods/Core/Maps/Generichouse.json index 8ac8356c..0b5123c4 100644 --- a/Mods/Core/Maps/Generichouse.json +++ b/Mods/Core/Maps/Generichouse.json @@ -1 +1,42085 @@ -{ "mapwidth": 32, "mapheight": 32, "levels": [[], [], [], [], [], [], [], [], [], [], [{ "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "woodboards6.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "dirt3.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }, { "texture": "basegrass1.png", "rotation": 0 }], [{ "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "beehive1.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "arcstones1.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "brickroad.png", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }], [{ "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }, { "texture": "", "rotation": 0 }], [], [], [], [], [], [], [], []] } \ No newline at end of file +{ + "levels": [ + [], + [], + [], + [], + [], + [], + [], + [], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + "furniture": { + "id": "chair_wood", + "rotation": 180 + }, + "id": "grass_plain_01", + "rotation": 90 + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "table_round_wood" + }, + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "countertop_wood" + }, + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "countertop_wood" + }, + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "countertop_wood" + }, + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "countertop_wood", + "rotation": 90 + }, + "id": "orange_carpet_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "chair_wood", + "rotation": 180 + }, + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "countertop_wood", + "rotation": 90 + }, + "id": "orange_carpet_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "chair_wood", + "rotation": 90 + }, + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "table_round_wood", + "rotation": 90 + }, + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "chair_wood", + "rotation": 270 + }, + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "countertop_wood", + "rotation": 90 + }, + "id": "orange_carpet_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01", + "mob": { + "id": "scrapwalker" + } + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "furniture": { + "id": "chair_wood" + }, + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01", + "mob": { + "id": "scrapwalker", + "rotation": 270 + } + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01", + "mob": { + "id": "scrapwalker", + "rotation": 90 + } + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01", + "mob": { + "id": "scrapwalker", + "rotation": 180 + } + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "orange_carpet_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "beehive_stones_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + } + ], + [ + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 90 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "wood_stairs", + "rotation": 90 + }, + { + "id": "brick_wall_00", + "rotation": 90 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "wood_stairs", + "rotation": 90 + }, + { + "id": "red_carpet_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + } + ], + [ + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 90 + }, + { + "id": "wood_stairs", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "wood_stairs", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "blue_carpet_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + } + ], + [ + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 90 + }, + { + "id": "wood_stairs", + "rotation": 270 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 90 + }, + { + "id": "beehive_stones_00", + "rotation": 90 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + } + ], + [ + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "wood_stairs", + "rotation": 180 + }, + { + "id": "beehive_stones_00", + "rotation": 90 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 180 + }, + { + "id": "brick_wall_00", + "rotation": 180 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + } + ], + [ + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 90 + }, + { + "id": "brick_wall_00", + "rotation": 90 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "wood_stairs", + "rotation": 90 + }, + { + "id": "brick_wall_00", + "rotation": 90 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + } + ], + [ + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "brick_wall_00", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "beehive_stones_00", + "rotation": 90 + }, + { + "id": "wood_stairs", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + } + ], + [ + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + } + ], + [ + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + }, + { + "id": "", + "rotation": 0 + } + ], + [], + [] + ], + "mapheight": 32, + "mapwidth": 32 +} \ No newline at end of file diff --git a/Mods/Core/Maps/Generichouse.png b/Mods/Core/Maps/Generichouse.png new file mode 100644 index 00000000..ee85ef2b Binary files /dev/null and b/Mods/Core/Maps/Generichouse.png differ diff --git a/Mods/Core/Tiles/dirtrampwest.png.import b/Mods/Core/Maps/Generichouse.png.import similarity index 67% rename from Mods/Core/Tiles/dirtrampwest.png.import rename to Mods/Core/Maps/Generichouse.png.import index b22f204c..a219a4bc 100644 --- a/Mods/Core/Tiles/dirtrampwest.png.import +++ b/Mods/Core/Maps/Generichouse.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bp2j1pa122rq" -path="res://.godot/imported/dirtrampwest.png-4718b11de8ea93b6c0fe5546c955acab.ctex" +uid="uid://bq1oiga41ewua" +path="res://.godot/imported/Generichouse.png-86ae7b36df394286470e1b8919df1575.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Mods/Core/Tiles/dirtrampwest.png" -dest_files=["res://.godot/imported/dirtrampwest.png-4718b11de8ea93b6c0fe5546c955acab.ctex"] +source_file="res://Mods/Core/Maps/Generichouse.png" +dest_files=["res://.godot/imported/Generichouse.png-86ae7b36df394286470e1b8919df1575.ctex"] [params] diff --git a/Mods/Core/Maps/RockyHill_NE.json b/Mods/Core/Maps/RockyHill_NE.json new file mode 100644 index 00000000..ffc7edbf --- /dev/null +++ b/Mods/Core/Maps/RockyHill_NE.json @@ -0,0 +1,27739 @@ +{ + "levels": [ + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [ + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_flowers_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_center_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "furniture": { + "id": "chair_wood" + }, + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [], + [] + ], + "mapheight": 32, + "mapwidth": 32 +} \ No newline at end of file diff --git a/Mods/Core/Maps/RockyHill_NE.png b/Mods/Core/Maps/RockyHill_NE.png new file mode 100644 index 00000000..bfe7790c Binary files /dev/null and b/Mods/Core/Maps/RockyHill_NE.png differ diff --git a/Mods/Core/Maps/RockyHill_NE.png.import b/Mods/Core/Maps/RockyHill_NE.png.import new file mode 100644 index 00000000..329a537b --- /dev/null +++ b/Mods/Core/Maps/RockyHill_NE.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbykj16k6h3t6" +path="res://.godot/imported/RockyHill_NE.png-560ac3e59648c230e460173fb1667a28.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Maps/RockyHill_NE.png" +dest_files=["res://.godot/imported/RockyHill_NE.png-560ac3e59648c230e460173fb1667a28.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/Mods/Core/Maps/RockyHill_NW.json b/Mods/Core/Maps/RockyHill_NW.json new file mode 100644 index 00000000..34848b46 --- /dev/null +++ b/Mods/Core/Maps/RockyHill_NW.json @@ -0,0 +1,27739 @@ +{ + "levels": [ + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [ + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain" + }, + { + "id": "grass_plain" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_plain" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 180 + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + } + ], + [], + [] + ], + "mapheight": 32, + "mapwidth": 32 +} \ No newline at end of file diff --git a/Mods/Core/Maps/RockyHill_NW.png b/Mods/Core/Maps/RockyHill_NW.png new file mode 100644 index 00000000..0486c2d7 Binary files /dev/null and b/Mods/Core/Maps/RockyHill_NW.png differ diff --git a/Mods/Core/Maps/RockyHill_NW.png.import b/Mods/Core/Maps/RockyHill_NW.png.import new file mode 100644 index 00000000..f3f3c4ec --- /dev/null +++ b/Mods/Core/Maps/RockyHill_NW.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bq548i1i2tgae" +path="res://.godot/imported/RockyHill_NW.png-8e45fb52ef18faf30191f731c1508d76.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Maps/RockyHill_NW.png" +dest_files=["res://.godot/imported/RockyHill_NW.png-8e45fb52ef18faf30191f731c1508d76.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/Mods/Core/Maps/RockyHill_SE.json b/Mods/Core/Maps/RockyHill_SE.json new file mode 100644 index 00000000..85d3092d --- /dev/null +++ b/Mods/Core/Maps/RockyHill_SE.json @@ -0,0 +1,27731 @@ +{ + "levels": [ + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [ + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_flowers_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_flowers_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_flowers_03" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_flowers_00" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + } + ], + [ + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02", + "mob": { + "id": "scrapwalker" + } + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_05" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_06" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_slope_00", + "rotation": 270 + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [], + [] + ], + "mapheight": 32, + "mapwidth": 32 +} \ No newline at end of file diff --git a/Mods/Core/Maps/RockyHill_SE.png b/Mods/Core/Maps/RockyHill_SE.png new file mode 100644 index 00000000..024562d0 Binary files /dev/null and b/Mods/Core/Maps/RockyHill_SE.png differ diff --git a/Mods/Core/Maps/RockyHill_SE.png.import b/Mods/Core/Maps/RockyHill_SE.png.import new file mode 100644 index 00000000..22a24bc4 --- /dev/null +++ b/Mods/Core/Maps/RockyHill_SE.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2fx3e776ellm" +path="res://.godot/imported/RockyHill_SE.png-ffe0c8446fe1466be3262e1db27c1825.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Maps/RockyHill_SE.png" +dest_files=["res://.godot/imported/RockyHill_SE.png-ffe0c8446fe1466be3262e1db27c1825.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/Mods/Core/Maps/RockyHill_SW.json b/Mods/Core/Maps/RockyHill_SW.json new file mode 100644 index 00000000..b8fc4d16 --- /dev/null +++ b/Mods/Core/Maps/RockyHill_SW.json @@ -0,0 +1,27773 @@ +{ + "levels": [ + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [ + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01", + "rotation": 90 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_dirt_01", + "rotation": 90 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01", + "rotation": 90 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01", + "rotation": 90 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01", + "rotation": 90 + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "forest_underbrush_03" + }, + { + "id": "forest_underbrush_03" + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_north_00", + "rotation": 90 + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "forest_underbrush_03" + }, + { + "id": "forest_underbrush_03" + }, + { + "id": "forest_underbrush_03" + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "forest_underbrush_03" + }, + { + "id": "forest_underbrush_03" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "forest_underbrush_03" + }, + { + "id": "forest_underbrush_03" + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_north_00", + "rotation": 90 + }, + { + "id": "forest_underbrush_03" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "forest_underbrush_03" + }, + { + "id": "forest_underbrush_03" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "forest_underbrush_03" + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "forest_underbrush_03" + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_medium_dirt_01", + "rotation": 90 + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "rocky_earth_00", + "rotation": 90 + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_01", + "rotation": 90 + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_01", + "rotation": 90 + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_north_00", + "rotation": 90 + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_01", + "rotation": 90 + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "rock_floor_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_flowers_00" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_02" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_04" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00", + "rotation": 90 + }, + { + "id": "rock_floor_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03", + "mob": { + "id": "scrapwalker", + "rotation": 90 + } + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_00" + }, + { + "id": "rock_floor_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [ + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_slope_00", + "rotation": 90 + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_floor_03" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + "id": "rock_floor_03" + }, + { + "id": "rock_slope_00" + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + }, + { + + } + ], + [], + [] + ], + "mapheight": 32, + "mapwidth": 32 +} \ No newline at end of file diff --git a/Mods/Core/Maps/RockyHill_SW.png b/Mods/Core/Maps/RockyHill_SW.png new file mode 100644 index 00000000..69d1101b Binary files /dev/null and b/Mods/Core/Maps/RockyHill_SW.png differ diff --git a/Mods/Core/Maps/RockyHill_SW.png.import b/Mods/Core/Maps/RockyHill_SW.png.import new file mode 100644 index 00000000..cf4f7e22 --- /dev/null +++ b/Mods/Core/Maps/RockyHill_SW.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7624ombl5bap" +path="res://.godot/imported/RockyHill_SW.png-4618588c4fc24b401406d5465730a46e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Maps/RockyHill_SW.png" +dest_files=["res://.godot/imported/RockyHill_SW.png-4618588c4fc24b401406d5465730a46e.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/Mods/Core/Maps/urbanroad.json b/Mods/Core/Maps/urbanroad.json new file mode 100644 index 00000000..c8ffc442 --- /dev/null +++ b/Mods/Core/Maps/urbanroad.json @@ -0,0 +1,3145 @@ +{ + "levels": [ + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [ + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_flowers_01" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_horizontal" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "road_asphalt_basic" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_dirt_00" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_03" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_flowers_00" + }, + { + "furniture": { + "id": "WillowTree_00" + }, + "id": "grass_flowers_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "furniture": { + "id": "Tree_00" + }, + "id": "grass_flowers_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "furniture": { + "id": "PineTree_00" + }, + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_02" + }, + { + "id": "grass_flowers_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_medium_dirt_02" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_dirt_00" + }, + { + "id": "grass_medium_dirt_00" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + }, + { + "id": "grass_plain_01" + } + ], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [] + ], + "mapheight": 32, + "mapwidth": 32 +} \ No newline at end of file diff --git a/Mods/Core/Maps/urbanroad.png b/Mods/Core/Maps/urbanroad.png new file mode 100644 index 00000000..4c8314c7 Binary files /dev/null and b/Mods/Core/Maps/urbanroad.png differ diff --git a/Mods/Core/Tiles/7.png.import b/Mods/Core/Maps/urbanroad.png.import similarity index 68% rename from Mods/Core/Tiles/7.png.import rename to Mods/Core/Maps/urbanroad.png.import index 539db0dd..d9e86f63 100644 --- a/Mods/Core/Tiles/7.png.import +++ b/Mods/Core/Maps/urbanroad.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://creglbgcpdfkg" -path="res://.godot/imported/7.png-7f620ec1220bbef0453ccb0c9cb379e9.ctex" +uid="uid://xx1jwwitqnyp" +path="res://.godot/imported/urbanroad.png-a627bc58d6f387047cc2b061013183f3.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Mods/Core/Tiles/7.png" -dest_files=["res://.godot/imported/7.png-7f620ec1220bbef0453ccb0c9cb379e9.ctex"] +source_file="res://Mods/Core/Maps/urbanroad.png" +dest_files=["res://.godot/imported/urbanroad.png-a627bc58d6f387047cc2b061013183f3.ctex"] [params] diff --git a/Mods/Core/Mobs/Mobs.json b/Mods/Core/Mobs/Mobs.json new file mode 100644 index 00000000..c7603af9 --- /dev/null +++ b/Mods/Core/Mobs/Mobs.json @@ -0,0 +1,30 @@ +[ + { + "description": "A small robot", + "health": "80", + "hearing_range": "1000", + "id": "scrapwalker", + "idle_move_speed": "0.5", + "melee_damage": "20", + "melee_range": "1.5", + "move_speed": "1.1", + "name": "Scrap walker", + "sense_range": "50", + "sight_range": "200", + "sprite": "scrapwalker64.png" + }, + { + "description": "A slightly more advanced robot but still considered a weaker enemy in the robot faction. The Rust Sentinel stands tall and imposing, with a sturdy build. Its design incorporates rusted and recycled metal parts, giving it a rugged, battle-worn appearance.\n\nThe Rust Sentinel features a broad, slightly dome-shaped head with glowing red eyes that serve as visual sensors. Its torso is bulkier, reinforced with scrap metal plates, and it has two powerful arms ending in claws. The legs are designed for stability and power rather than speed. Its color scheme is a mix of rusted orange, steel gray, and hints of worn-out blue paint, suggesting it was once part of a larger machinery or vehicle.\n\nThe Rust Sentinel moves with deliberate, heavy steps, making it slower but more resilient. It's equipped with basic tools and weaponry, which it uses to scavenges and patrol.", + "health": "120", + "hearing_range": "1000", + "id": "rust_sentinel", + "idle_move_speed": "0.4", + "melee_damage": "20", + "melee_range": "1.5", + "move_speed": "0.8", + "name": "Rust sentinel", + "sense_range": "50", + "sight_range": "200", + "sprite": "rust_sentinel_72.png" + } +] \ No newline at end of file diff --git a/Mods/Core/Mobs/rust_sentinel_72.png b/Mods/Core/Mobs/rust_sentinel_72.png new file mode 100644 index 00000000..52b4c2f1 Binary files /dev/null and b/Mods/Core/Mobs/rust_sentinel_72.png differ diff --git a/Mods/Core/Mobs/rust_sentinel_72.png.import b/Mods/Core/Mobs/rust_sentinel_72.png.import new file mode 100644 index 00000000..6a42ded9 --- /dev/null +++ b/Mods/Core/Mobs/rust_sentinel_72.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b51nqjd3iawap" +path="res://.godot/imported/rust_sentinel_72.png-1dc7caa0dc4fb18d9b1b07a0de34b249.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/Mobs/rust_sentinel_72.png" +dest_files=["res://.godot/imported/rust_sentinel_72.png-1dc7caa0dc4fb18d9b1b07a0de34b249.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/Mods/Core/Mobs/scrapwalker64.png b/Mods/Core/Mobs/scrapwalker64.png new file mode 100644 index 00000000..e1741077 Binary files /dev/null and b/Mods/Core/Mobs/scrapwalker64.png differ diff --git a/Mods/Core/Tiles/dirtrampeast.png.import b/Mods/Core/Mobs/scrapwalker64.png.import similarity index 67% rename from Mods/Core/Tiles/dirtrampeast.png.import rename to Mods/Core/Mobs/scrapwalker64.png.import index 4d4fda4a..aa33d910 100644 --- a/Mods/Core/Tiles/dirtrampeast.png.import +++ b/Mods/Core/Mobs/scrapwalker64.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://buwgr46j20m6d" -path="res://.godot/imported/dirtrampeast.png-b30e2f77904360d98bb54e697c4b7f2c.ctex" +uid="uid://up85gn8oxq4q" +path="res://.godot/imported/scrapwalker64.png-04b94deaac0c6a440b0f7db25c7d78a5.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Mods/Core/Tiles/dirtrampeast.png" -dest_files=["res://.godot/imported/dirtrampeast.png-b30e2f77904360d98bb54e697c4b7f2c.ctex"] +source_file="res://Mods/Core/Mobs/scrapwalker64.png" +dest_files=["res://.godot/imported/scrapwalker64.png-04b94deaac0c6a440b0f7db25c7d78a5.ctex"] [params] diff --git a/Mods/Core/OvermapTiles/1.png b/Mods/Core/OvermapTiles/1.png new file mode 100644 index 00000000..10aeec41 Binary files /dev/null and b/Mods/Core/OvermapTiles/1.png differ diff --git a/Mods/Core/Tiles/6.png.import b/Mods/Core/OvermapTiles/1.png.import similarity index 75% rename from Mods/Core/Tiles/6.png.import rename to Mods/Core/OvermapTiles/1.png.import index 4576d517..332e243f 100644 --- a/Mods/Core/Tiles/6.png.import +++ b/Mods/Core/OvermapTiles/1.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dbde2knd5knko" -path="res://.godot/imported/6.png-b93a556068129637c3ed0470ad61aff3.ctex" +uid="uid://b1rxkkr3qwoa1" +path="res://.godot/imported/1.png-113fc203e924f41987258f7bf69b8dab.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Mods/Core/Tiles/6.png" -dest_files=["res://.godot/imported/6.png-b93a556068129637c3ed0470ad61aff3.ctex"] +source_file="res://Mods/Core/OvermapTiles/1.png" +dest_files=["res://.godot/imported/1.png-113fc203e924f41987258f7bf69b8dab.ctex"] [params] diff --git a/Mods/Core/OvermapTiles/arcstones1.png b/Mods/Core/OvermapTiles/arcstones1.png new file mode 100644 index 00000000..a13068ea Binary files /dev/null and b/Mods/Core/OvermapTiles/arcstones1.png differ diff --git a/Mods/Core/OvermapTiles/arcstones1.png.import b/Mods/Core/OvermapTiles/arcstones1.png.import new file mode 100644 index 00000000..0dd2f1e2 --- /dev/null +++ b/Mods/Core/OvermapTiles/arcstones1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://br51vko5o7o6e" +path="res://.godot/imported/arcstones1.png-f1c80d77cdb940353593822e678fe7c8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/OvermapTiles/arcstones1.png" +dest_files=["res://.godot/imported/arcstones1.png-f1c80d77cdb940353593822e678fe7c8.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/Mods/Core/OvermapTiles/forestunderbrushscale5.png b/Mods/Core/OvermapTiles/forestunderbrushscale5.png new file mode 100644 index 00000000..79bb0e96 Binary files /dev/null and b/Mods/Core/OvermapTiles/forestunderbrushscale5.png differ diff --git a/Mods/Core/OvermapTiles/forestunderbrushscale5.png.import b/Mods/Core/OvermapTiles/forestunderbrushscale5.png.import new file mode 100644 index 00000000..efff7ba4 --- /dev/null +++ b/Mods/Core/OvermapTiles/forestunderbrushscale5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0gnamhtqsiv3" +path="res://.godot/imported/forestunderbrushscale5.png-9156c85412ee766dbe54fbf681864d15.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/OvermapTiles/forestunderbrushscale5.png" +dest_files=["res://.godot/imported/forestunderbrushscale5.png-9156c85412ee766dbe54fbf681864d15.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/Mods/Core/OvermapTiles/rockyfloor4.png b/Mods/Core/OvermapTiles/rockyfloor4.png new file mode 100644 index 00000000..45550738 Binary files /dev/null and b/Mods/Core/OvermapTiles/rockyfloor4.png differ diff --git a/Mods/Core/OvermapTiles/rockyfloor4.png.import b/Mods/Core/OvermapTiles/rockyfloor4.png.import new file mode 100644 index 00000000..42cfde53 --- /dev/null +++ b/Mods/Core/OvermapTiles/rockyfloor4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ivc6violj6vr" +path="res://.godot/imported/rockyfloor4.png-91f26024c21cf174dcff99a521b7fd55.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Mods/Core/OvermapTiles/rockyfloor4.png" +dest_files=["res://.godot/imported/rockyfloor4.png-91f26024c21cf174dcff99a521b7fd55.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/Mods/Core/TacticalMaps/DefaultTacticalMap.json b/Mods/Core/TacticalMaps/DefaultTacticalMap.json new file mode 100644 index 00000000..c3e3c4f4 --- /dev/null +++ b/Mods/Core/TacticalMaps/DefaultTacticalMap.json @@ -0,0 +1,42 @@ +{ + "mapheight": 3, + "maps": [ + { + "id": "Generichouse.json", + "rotation": 0 + }, + { + "id": "Generichouse.json", + "rotation": 0 + }, + { + "id": "Generichouse.json", + "rotation": 0 + }, + { + "id": "urbanroad.json", + "rotation": 0 + }, + { + "id": "urbanroad.json", + "rotation": 0 + }, + { + "id": "urbanroad.json", + "rotation": 0 + }, + { + "id": "Generichouse.json", + "rotation": 0 + }, + { + "id": "Generichouse.json", + "rotation": 0 + }, + { + "id": "Generichouse.json", + "rotation": 0 + } + ], + "mapwidth": 3 +} \ No newline at end of file diff --git a/Mods/Core/TacticalMaps/RockyHill_00.json b/Mods/Core/TacticalMaps/RockyHill_00.json new file mode 100644 index 00000000..05c6ca59 --- /dev/null +++ b/Mods/Core/TacticalMaps/RockyHill_00.json @@ -0,0 +1,22 @@ +{ + "mapheight": 2, + "maps": [ + { + "id": "RockyHill_NW.json", + "rotation": 0 + }, + { + "id": "RockyHill_NE.json", + "rotation": 0 + }, + { + "id": "RockyHill_SW.json", + "rotation": 0 + }, + { + "id": "RockyHill_SE.json", + "rotation": 0 + } + ], + "mapwidth": 2 +} \ No newline at end of file diff --git a/Mods/Core/Tiles/5.png b/Mods/Core/Tiles/5.png deleted file mode 100644 index 26791a77..00000000 Binary files a/Mods/Core/Tiles/5.png and /dev/null differ diff --git a/Mods/Core/Tiles/6.png b/Mods/Core/Tiles/6.png deleted file mode 100644 index 4f25ced3..00000000 Binary files a/Mods/Core/Tiles/6.png and /dev/null differ diff --git a/Mods/Core/Tiles/7.png b/Mods/Core/Tiles/7.png deleted file mode 100644 index 115b7794..00000000 Binary files a/Mods/Core/Tiles/7.png and /dev/null differ diff --git a/Mods/Core/Tiles/Grassrampeast.png b/Mods/Core/Tiles/Grassrampeast.png deleted file mode 100644 index 5401043e..00000000 Binary files a/Mods/Core/Tiles/Grassrampeast.png and /dev/null differ diff --git a/Mods/Core/Tiles/Grassrampsouth.png b/Mods/Core/Tiles/Grassrampsouth.png deleted file mode 100644 index d3e9e084..00000000 Binary files a/Mods/Core/Tiles/Grassrampsouth.png and /dev/null differ diff --git a/Mods/Core/Tiles/Grassrampsouth.png.import b/Mods/Core/Tiles/Grassrampsouth.png.import deleted file mode 100644 index a2732953..00000000 --- a/Mods/Core/Tiles/Grassrampsouth.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://diaababjulv45" -path="res://.godot/imported/Grassrampsouth.png-c86243ec6a562158b0975a4e9fa4958f.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/Grassrampsouth.png" -dest_files=["res://.godot/imported/Grassrampsouth.png-c86243ec6a562158b0975a4e9fa4958f.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/Mods/Core/Tiles/Grassrampwest.png b/Mods/Core/Tiles/Grassrampwest.png deleted file mode 100644 index d54894ad..00000000 Binary files a/Mods/Core/Tiles/Grassrampwest.png and /dev/null differ diff --git a/Mods/Core/Tiles/Grassrampwest.png.import b/Mods/Core/Tiles/Grassrampwest.png.import deleted file mode 100644 index d2a44eaf..00000000 --- a/Mods/Core/Tiles/Grassrampwest.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cgsyh5cfyonjl" -path="res://.godot/imported/Grassrampwest.png-63833bfdddc21ade1f62da98e600ccb2.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/Grassrampwest.png" -dest_files=["res://.godot/imported/Grassrampwest.png-63833bfdddc21ade1f62da98e600ccb2.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/Mods/Core/Tiles/Tiles.json b/Mods/Core/Tiles/Tiles.json new file mode 100644 index 00000000..a712ea82 --- /dev/null +++ b/Mods/Core/Tiles/Tiles.json @@ -0,0 +1,1208 @@ +[ + { + "categories": [ + "Ground" + ], + "description": "Field of grass", + "id": "grass_plain", + "name": "Plain grass", + "shape": "cube", + "sprite": "1.png" + }, + { + "categories": [ + "Floor" + ], + "description": "The floor is old and the boards are crooked", + "id": "floor_wood_shabby_00", + "name": "Low quality wood floor", + "shape": "cube", + "sprite": "woodboards.png" + }, + { + "categories": [ + "Floor" + ], + "description": "The floor is old and the boards are crooked", + "id": "floor_wood_shabby_01", + "name": "Low quality wood floor", + "sprite": "woodboards1.png" + }, + { + "categories": [ + "Floor" + ], + "description": "The floor is old and the boards are crooked", + "id": "floor_wood_shabby_02", + "name": "Low quality wood floor", + "sprite": "woodboards2.png" + }, + { + "categories": [ + "Floor" + ], + "description": "The floor is old and the boards are crooked", + "id": "floor_wood_shabby_dark_00", + "name": "Low quality wood floor", + "sprite": "woodboards3.png" + }, + { + "categories": [ + "Floor" + ], + "description": "The floor is old and the boards are crooked", + "id": "floor_wood_shabby_dark_01", + "name": "Low quality wood floor", + "sprite": "woodboards4.png" + }, + { + "categories": [ + "Floor" + ], + "description": "The floor is old and the boards are crooked", + "id": "floor_wood_shabby_dark_02", + "name": "Low quality wood floor", + "sprite": "woodboards5.png" + }, + { + "categories": [ + "Road" + ], + "description": "A smooth surface for vehicles to drive on", + "id": "road_asphalt_basic", + "name": "Basic asphalt road", + "sprite": "asphalt_basic.png" + }, + { + "categories": [ + "Road" + ], + "description": "A smooth surface for vehicles to drive on. It has diagonal markings", + "id": "road_asphalt_diagonal", + "name": "Asphalt road with diagonal markings", + "sprite": "asphalt_diag_middle.png" + }, + { + "categories": [ + "Road" + ], + "description": "A smooth surface for vehicles to drive on. It has markings indicating a north turn", + "id": "road_asphalt_turn_north", + "name": "Asphalt road with markings turning north", + "sprite": "asphalt_middle_downleft.png" + }, + { + "categories": [ + "Road" + ], + "description": "A smooth surface for vehicles to drive on. It has horizontal markings", + "id": "road_asphalt_horizontal", + "name": "Asphalt road with horizontal markings", + "sprite": "asphalt_middle_horizontal.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A stone floor wihere the stones are shaped like an arch. Used in an urban environement.", + "id": "arc_stones_floor", + "name": "Arc stones floor", + "sprite": "arcstones.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Field of grass", + "id": "grass_plain_01", + "name": "Plain grass", + "sprite": "basegrass1.png" + }, + { + "categories": [ + "Slopes", + "Urban" + ], + "description": "Wooden stairs that allow you to move up and down", + "id": "wood_stairs", + "name": "Wooden stairs", + "shape": "slope", + "sprite": "4.png" + }, + { + "categories": [ + "Urban", + "Wall" + ], + "description": "A solid wall made out of bricks", + "id": "brick_wall_00", + "name": "Brick wall", + "shape": "cube", + "sprite": "brickroad2.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A warm red carpet", + "id": "red_carpet_00", + "name": "Red carpet", + "shape": "cube", + "sprite": "redcarpet.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A warm blue carpet", + "id": "blue_carpet_00", + "name": "Blue carpet", + "shape": "cube", + "sprite": "bluecarpet.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A warm orange carpet", + "id": "orange_carpet_00", + "name": "Orange carpet", + "shape": "cube", + "sprite": "browncarpet.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A road made out of stones shaped like a beehive", + "id": "beehive_stones_00", + "name": "Beehive stones", + "shape": "cube", + "sprite": "beehive1.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "Simple wooden floor boards that may be laid in a decorative fasion", + "id": "floor_wood_boards_00", + "name": "Wooden floor boards", + "shape": "cube", + "sprite": "woodboards10.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "Simple wooden floor boards that may be laid in a decorative fasion", + "id": "floor_wood_boards_01", + "name": "Wooden floor boards", + "shape": "cube", + "sprite": "woodboards11.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "Simple wooden floor boards that may be laid in a decorative fasion", + "id": "floor_wood_boards_02", + "name": "Wooden floor boards", + "shape": "cube", + "sprite": "woodboards12.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "Simple wooden floor boards that may be laid in a decorative fasion", + "id": "floor_wood_boards_03", + "name": "Wooden floor boards", + "shape": "cube", + "sprite": "woodboards13.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "Simple wooden floor boards that may be laid in a decorative fasion", + "id": "floor_wood_boards_04", + "name": "Wooden floor boards", + "shape": "cube", + "sprite": "woodboards14.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "Simple wooden floor boards that may be laid in a decorative fasion", + "id": "floor_wood_boards_05", + "name": "Wooden floor boards", + "shape": "cube", + "sprite": "woodboards6.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "Simple wooden floor boards that may be laid in a decorative fasion", + "id": "floor_wood_boards_06", + "name": "Wooden floor boards", + "shape": "cube", + "sprite": "woodboards7.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "Simple wooden floor boards that may be laid in a decorative fasion", + "id": "floor_wood_boards_07", + "name": "Wooden floor boards", + "shape": "cube", + "sprite": "woodboards8.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "Simple wooden floor boards that may be laid in a decorative fasion", + "id": "floor_wood_boards_08", + "name": "Wooden floor boards", + "shape": "cube", + "sprite": "woodboards9.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A place devoid of life. All that remains is dust and cracks in the ground", + "id": "wasteland_00", + "name": "Wasteland\t", + "shape": "cube", + "sprite": "wasteland.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A place devoid of life. All that remains is dust and cracks in the ground", + "id": "wasteland_01", + "name": "Wasteland\t", + "shape": "cube", + "sprite": "wasteland11.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A place devoid of life. All that remains is dust and cracks in the ground", + "id": "wasteland_02", + "name": "Wasteland\t", + "shape": "cube", + "sprite": "wasteland2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A place devoid of life. All that remains is dust and cracks in the ground. By some miracle one or two plants have managed to survive.", + "id": "wasteland_03", + "name": "Wasteland\t", + "shape": "cube", + "sprite": "wastelandveg.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A place devoid of life. All that remains is dust and cracks in the ground. By some miracle one or two plants have managed to survive.", + "id": "wasteland_04", + "name": "Wasteland\t", + "shape": "cube", + "sprite": "wastelandveg1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A place devoid of life. All that remains is dust and cracks in the ground. By some miracle one or two plants have managed to survive.", + "id": "wasteland_05", + "name": "Wasteland\t", + "shape": "cube", + "sprite": "wastelandveg2.png" + }, + { + "categories": [ + "Hazards" + ], + "description": "Very dangerous! Some toxic waste was spilled here", + "id": "toxic_waste_00", + "name": "Toxic waste", + "shape": "cube", + "sprite": "toxicwaste.png" + }, + { + "categories": [ + "Hazards" + ], + "description": "Very dangerous! Some toxic waste was spilled here", + "id": "toxic_waste_01", + "name": "Toxic waste", + "shape": "cube", + "sprite": "toxicwaste1.png" + }, + { + "categories": [ + "Hazards" + ], + "description": "Very dangerous! Some toxic waste was spilled here", + "id": "toxic_waste_02", + "name": "Toxic waste", + "shape": "cube", + "sprite": "toxicwaste2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A blanket of snow covers the ground", + "id": "snow_00", + "name": "Snow", + "shape": "cube", + "sprite": "snow.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A blanket of snow covers the ground", + "id": "snow_01", + "name": "Snow", + "shape": "cube", + "sprite": "snow1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A blanket of snow covers the ground", + "id": "snow_02", + "name": "Snow", + "shape": "cube", + "sprite": "snow2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "There is only sand here", + "id": "sand_00", + "name": "Sand", + "shape": "cube", + "sprite": "sand.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The ground is covered in fine sand", + "id": "sand_fine_00", + "name": "Fine sand", + "shape": "cube", + "sprite": "fineand.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A hard suface with a dark color.", + "id": "rock_floor_00", + "name": "Rock floor", + "shape": "cube", + "sprite": "rockyfloor1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A hard suface with a dark color.", + "id": "rock_floor_01", + "name": "Rock floor", + "shape": "cube", + "sprite": "rockyfloor2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A hard suface with a dark color.", + "id": "rock_floor_02", + "name": "Rock floor", + "shape": "cube", + "sprite": "rockyfloor3.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A hard suface with a dark color.", + "id": "rock_floor_03", + "name": "Rock floor", + "shape": "cube", + "sprite": "rockfloor.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A hard suface with a dark color.", + "id": "rock_floor_04", + "name": "Rock floor", + "shape": "cube", + "sprite": "rockyfloor4.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A hard suface with a dark color.", + "id": "rock_floor_05", + "name": "Rock floor", + "shape": "cube", + "sprite": "rockyfloor5.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A hard suface with a dark color.", + "id": "rock_floor_06", + "name": "Rock floor", + "shape": "cube", + "sprite": "rockyfloor6.png" + }, + { + "categories": [ + "Slopes" + ], + "description": "A rocky surface allowing you to move up or down", + "id": "rock_slope_00", + "name": "Rock slope", + "shape": "slope", + "sprite": "rockyfloorrampnorth.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A rocky surface that doesn't leave any footprints", + "id": "rocky_earth_00", + "name": "Rock floor", + "shape": "cube", + "sprite": "rockyearth.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The terrain is made out of mud. Don't get stuck!", + "id": "mud_00", + "name": "Mud", + "shape": "cube", + "sprite": "mud.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The terrain is made out of mud. Don't get stuck!", + "id": "mud_01", + "name": "Mud", + "shape": "cube", + "sprite": "mud1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The terrain is made out of mud. Don't get stuck!", + "id": "mud_02", + "name": "Mud", + "shape": "cube", + "sprite": "mud2.png" + }, + { + "categories": [ + "Wall" + ], + "description": "A sturdy metal wall. The surface seems scratched and a bit worn.", + "id": "metal_wall_00", + "name": "Metal wall", + "shape": "cube", + "sprite": "metalwall1.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted yellow", + "id": "kitchen_tiles_yellow_00", + "name": "Kitchen tiles (yellow)", + "shape": "cube", + "sprite": "kitchentiles.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted yellow", + "id": "kitchen_tiles_yellow_01", + "name": "Kitchen tiles (yellow)", + "shape": "cube", + "sprite": "kitchentiles1.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted yellow", + "id": "kitchen_tiles_yellow_02", + "name": "Kitchen tiles (yellow)", + "shape": "cube", + "sprite": "Kitchentiles2.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted mint", + "id": "kitchen_tiles_mint_00", + "name": "Kitchen tiles (mint)", + "shape": "cube", + "sprite": "kitchentilesblue.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted mint", + "id": "kitchen_tiles_mint_01", + "name": "Kitchen tiles (mint)", + "shape": "cube", + "sprite": "kitchentilesblue1.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted mint", + "id": "kitchen_tiles_mint_02", + "name": "Kitchen tiles (mint)", + "shape": "cube", + "sprite": "kitchentilesblue2.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted mint", + "id": "kitchen_tiles_mint_03", + "name": "Kitchen tiles (mint)", + "shape": "cube", + "sprite": "kitchentilesblue3.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted green", + "id": "kitchen_tiles_green_00", + "name": "Kitchen tiles (green)", + "shape": "cube", + "sprite": "kitchentilesgreen.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted green", + "id": "kitchen_tiles_green_01", + "name": "Kitchen tiles (green)", + "shape": "cube", + "sprite": "kitchentilesgreen1.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted green", + "id": "kitchen_tiles_green_02", + "name": "Kitchen tiles (green)", + "shape": "cube", + "sprite": "kitchentilesgreen2.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted blue", + "id": "kitchen_tiles_blue_00", + "name": "Kitchen tiles (blue)", + "shape": "cube", + "sprite": "KitchentilesPurple.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted blue", + "id": "kitchen_tiles_blue_01", + "name": "Kitchen tiles (blue)", + "shape": "cube", + "sprite": "kitchentilespurple1.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted blue", + "id": "kitchen_tiles_blue_02", + "name": "Kitchen tiles (blue)", + "shape": "cube", + "sprite": "Kitchentilespurple2.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted purple", + "id": "kitchen_tiles_purple_00", + "name": "Kitchen tiles (purple)", + "shape": "cube", + "sprite": "kitchentilespurple3.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted purple", + "id": "kitchen_tiles_purple_01", + "name": "Kitchen tiles (purple)", + "shape": "cube", + "sprite": "kitchentilespurple4.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a kitchen. The tiles are painted purple", + "id": "kitchen_tiles_purple_02", + "name": "Kitchen tiles (purple)", + "shape": "cube", + "sprite": "kitchentilespurple5.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The ground is covered with small pebbles", + "id": "gravel_00", + "name": "Gravel", + "shape": "cube", + "sprite": "gravel.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The ground is covered with small pebbles", + "id": "gravel_01", + "name": "Gravel", + "shape": "cube", + "sprite": "gravel1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The ground is covered with small pebbles", + "id": "gravel_02", + "name": "Gravel", + "shape": "cube", + "sprite": "gravel2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Dirt is barely visible trough the carpet of grass", + "id": "grass_dirt_00", + "name": "Grass with dirt", + "shape": "cube", + "sprite": "grassdirt.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Dirt is barely visible trough the carpet of grass", + "id": "grass_dirt_01", + "name": "Grass with dirt", + "shape": "cube", + "sprite": "grassdirt1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Dirt is barely visible trough the carpet of grass", + "id": "grass_dirt_02", + "name": "Grass with dirt", + "shape": "cube", + "sprite": "grassdirt2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Dirt is visible trough the grass", + "id": "grass_medium_dirt_00", + "name": "Grass with dirt", + "shape": "cube", + "sprite": "grasssmalldirt.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Dirt is visible trough the grass", + "id": "grass_medium_dirt_01", + "name": "Grass with dirt", + "shape": "cube", + "sprite": "grasssmalldirt1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Dirt is visible trough the grass", + "id": "grass_medium_dirt_02", + "name": "Grass with dirt", + "shape": "cube", + "sprite": "grasssmalldirt2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "One side of the terrain is just dirt and no grass", + "id": "grass_dirt_north_00", + "name": "Grass with a patch of dirt", + "shape": "cube", + "sprite": "grassnorthdirt.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The center of the terrain is just dirt and no grass", + "id": "grass_dirt_center_00", + "name": "Grass with a patch of dirt", + "shape": "cube", + "sprite": "grasscenterdirt.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Some flowers are sprouting trough the grass", + "id": "grass_flowers_00", + "name": "Grass with flowers", + "shape": "cube", + "sprite": "grassflowers2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Some flowers are sprouting trough the grass", + "id": "grass_flowers_01", + "name": "Grass with flowers", + "shape": "cube", + "sprite": "grassflowers3.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Some flowers are sprouting trough the grass", + "id": "grass_flowers_02", + "name": "Grass with flowers", + "shape": "cube", + "sprite": "grassflowers4.png" + }, + { + "categories": [ + "Ground" + ], + "description": "Some flowers are sprouting trough the grass", + "id": "grass_flowers_03", + "name": "Grass with flowers", + "shape": "cube", + "sprite": "grasslowers.png" + }, + { + "categories": [ + "Slopes" + ], + "description": "This ramp is covered with grass. You can go up and down here", + "id": "grass_ramp_00", + "name": "Grass ramp", + "shape": "slope", + "sprite": "Grassrampnorth1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The ground is littered with twigs, leaves, sticks and all kinds of plant matter. Very tipical of a forest floor", + "id": "forest_underbrush_00", + "name": "Forest underbrush", + "shape": "cube", + "sprite": "forestunderbrushscale.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The ground is littered with twigs, leaves, sticks and all kinds of plant matter. Very tipical of a forest floor", + "id": "forest_underbrush_01", + "name": "Forest underbrush", + "shape": "cube", + "sprite": "forestunderbrushscale1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The ground is littered with twigs, leaves, sticks and all kinds of plant matter. Very tipical of a forest floor", + "id": "forest_underbrush_02", + "name": "Forest underbrush", + "shape": "cube", + "sprite": "forestunderbrushscale2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The ground is littered with twigs, leaves, sticks and all kinds of plant matter. Very tipical of a forest floor", + "id": "forest_underbrush_03", + "name": "Forest underbrush", + "shape": "cube", + "sprite": "forestunderbrushscale3.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The ground is littered with twigs, leaves, sticks and all kinds of plant matter. Very tipical of a forest floor", + "id": "forest_underbrush_04", + "name": "Forest underbrush", + "shape": "cube", + "sprite": "forestunderbrushscale4.png" + }, + { + "categories": [ + "Ground" + ], + "description": "The ground is littered with twigs, leaves, sticks and all kinds of plant matter. Very tipical of a forest floor", + "id": "forest_underbrush_05", + "name": "Forest underbrush", + "shape": "cube", + "sprite": "forestunderbrushscale5.png" + }, + { + "categories": [ + "Ground" + ], + "description": "There is just dirt here. It's color is pretty dark", + "id": "dirt_dark_00", + "name": "Dirt", + "shape": "cube", + "sprite": "dirt.png" + }, + { + "categories": [ + "Ground" + ], + "description": "There is just dirt here. It's color is pretty dark", + "id": "dirt_dark_01", + "name": "Dirt", + "shape": "cube", + "sprite": "dirt1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "There is just dirt here. It's color is pretty dark", + "id": "dirt_dark_02", + "name": "Dirt", + "shape": "cube", + "sprite": "dirt2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "There is just dirt here. It's color is light", + "id": "dirt_light_00", + "name": "Dirt", + "shape": "cube", + "sprite": "dirt3.png" + }, + { + "categories": [ + "Ground" + ], + "description": "There is just dirt here. It's color is light", + "id": "dirt_light_01", + "name": "Dirt", + "shape": "cube", + "sprite": "dirt4.png" + }, + { + "categories": [ + "Ground" + ], + "description": "There is just dirt here. It's color is light", + "id": "dirt_light_02", + "name": "Dirt", + "shape": "cube", + "sprite": "dirt5.png" + }, + { + "categories": [ + "Ground" + ], + "description": "There is dirt here. Part of it is covered with grass", + "id": "dirt_light_grass_north_00", + "name": "Dirt with grass", + "shape": "cube", + "sprite": "dirtgrass.png" + }, + { + "categories": [ + "Ground" + ], + "description": "There is dirt here. Part of it is covered with grass", + "id": "dirt_light_grass_north_01", + "name": "Dirt with grass", + "shape": "cube", + "sprite": "dirt_grass_north.png" + }, + { + "categories": [ + "Slopes" + ], + "description": "A dirt slope. You can go up and down here. Be careful not to slip", + "id": "dirt_light_ramp_00", + "name": "Dirt ramp", + "shape": "slope", + "sprite": "dirtrampnorth1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "This grass is dead and all that remains is dry straws", + "id": "grass_dead_00", + "name": "Dead grass", + "shape": "cube", + "sprite": "deadgrass.png" + }, + { + "categories": [ + "Ground" + ], + "description": "This grass is dead and all that remains is dry straws", + "id": "grass_dead_01", + "name": "Dead grass", + "shape": "cube", + "sprite": "deadgrass1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "This grass is dead and all that remains is dry straws", + "id": "grass_dead_02", + "name": "Dead grass", + "shape": "cube", + "sprite": "deadgrass2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "This grass is dead and all that remains is dry straws", + "id": "grass_dead_03", + "name": "Dead grass", + "shape": "cube", + "sprite": "deadgrassdirt.png" + }, + { + "categories": [ + "Ground" + ], + "description": "This grass is dead and all that remains is dry straws", + "id": "grass_dead_04", + "name": "Dead grass", + "shape": "cube", + "sprite": "deadgrassdirt1.png" + }, + { + "categories": [ + "Ground" + ], + "description": "This grass is dead and all that remains is dry straws", + "id": "grass_dead_05", + "name": "Dead grass", + "shape": "cube", + "sprite": "deadgrassdirt2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A tiled floor with colorful stones", + "id": "cobblestone_00", + "name": "Cobblestone", + "shape": "cube", + "sprite": "cobblestone.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A tiled floor with colorful stones", + "id": "cobblestone_01", + "name": "Cobblestone", + "shape": "cube", + "sprite": "cobblestone2.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A tiled floor with colorful stones", + "id": "cobblestone_02", + "name": "Cobblestone", + "shape": "cube", + "sprite": "cobblestone3.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A tiled floor with colorful stones", + "id": "cobblestone_03", + "name": "Cobblestone", + "shape": "cube", + "sprite": "cobblestone4.png" + }, + { + "categories": [ + "Ground" + ], + "description": "A tiled floor with brown stones laid in a beautiful pattern", + "id": "cobblestone_04", + "name": "Cobblestone", + "shape": "cube", + "sprite": "cobblestone1.png" + }, + { + "categories": [ + "Urban", + "Wall" + ], + "description": "A solid wall made out of bricks", + "id": "brick_wall_01", + "name": "Brick wall", + "shape": "cube", + "sprite": "brickroad.png" + }, + { + "categories": [ + "Urban", + "Wall" + ], + "description": "A solid wall made out of bricks", + "id": "brick_wall_02", + "name": "Brick wall", + "shape": "cube", + "sprite": "brickroad1.png" + }, + { + "categories": [ + "Urban", + "Wall" + ], + "description": "A solid wall made out of bricks", + "id": "brick_wall_03", + "name": "Brick wall", + "shape": "cube", + "sprite": "brickroad3.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A tiled floor you would find in a bathroom. The tiles are painted blue", + "id": "bathroom_tiles_blue_00", + "name": "Bathroom tiles (blue)", + "shape": "cube", + "sprite": "bathroomtiles.png" + }, + { + "categories": [ + "Floor", + "Urban" + ], + "description": "A stone floor wihere the stones are shaped like an arch. Used in an urban environement.", + "id": "arc_stones_floor_00", + "name": "Arc stones floor", + "shape": "cube", + "sprite": "arcstones1.png" + } +] \ No newline at end of file diff --git a/Mods/Core/Tiles/asphalt_horizontal_middle_downleft.png b/Mods/Core/Tiles/asphalt_horizontal_middle_downleft.png deleted file mode 100644 index c53336d8..00000000 Binary files a/Mods/Core/Tiles/asphalt_horizontal_middle_downleft.png and /dev/null differ diff --git a/Mods/Core/Tiles/asphalt_horizontal_middle_downleft.png.import b/Mods/Core/Tiles/asphalt_horizontal_middle_downleft.png.import deleted file mode 100644 index 12fc5594..00000000 --- a/Mods/Core/Tiles/asphalt_horizontal_middle_downleft.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d0cp55fo13nes" -path="res://.godot/imported/asphalt_horizontal_middle_downleft.png-78e8dac225da50c35dfa7c4775a242a3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/asphalt_horizontal_middle_downleft.png" -dest_files=["res://.godot/imported/asphalt_horizontal_middle_downleft.png-78e8dac225da50c35dfa7c4775a242a3.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/Mods/Core/Tiles/asphalt_horizontal_middle_upright.png b/Mods/Core/Tiles/asphalt_horizontal_middle_upright.png deleted file mode 100644 index 442b8580..00000000 Binary files a/Mods/Core/Tiles/asphalt_horizontal_middle_upright.png and /dev/null differ diff --git a/Mods/Core/Tiles/asphalt_horizontal_middle_upright.png.import b/Mods/Core/Tiles/asphalt_horizontal_middle_upright.png.import deleted file mode 100644 index 0bcc7ff0..00000000 --- a/Mods/Core/Tiles/asphalt_horizontal_middle_upright.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://isj5e03iu8oh" -path="res://.godot/imported/asphalt_horizontal_middle_upright.png-aac2573aa1e7d6ab5345673841f13699.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/asphalt_horizontal_middle_upright.png" -dest_files=["res://.godot/imported/asphalt_horizontal_middle_upright.png-aac2573aa1e7d6ab5345673841f13699.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/Mods/Core/Tiles/asphalt_middle.png b/Mods/Core/Tiles/asphalt_middle.png deleted file mode 100644 index 4abc755a..00000000 Binary files a/Mods/Core/Tiles/asphalt_middle.png and /dev/null differ diff --git a/Mods/Core/Tiles/asphalt_middle.png.import b/Mods/Core/Tiles/asphalt_middle.png.import deleted file mode 100644 index f6966c68..00000000 --- a/Mods/Core/Tiles/asphalt_middle.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cqlsjlth3jlm5" -path="res://.godot/imported/asphalt_middle.png-ea411751a4c72d4150662b9b2e955840.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/asphalt_middle.png" -dest_files=["res://.godot/imported/asphalt_middle.png-ea411751a4c72d4150662b9b2e955840.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/Mods/Core/Tiles/asphalt_middle_upright.png b/Mods/Core/Tiles/asphalt_middle_upright.png deleted file mode 100644 index 5d5f562a..00000000 Binary files a/Mods/Core/Tiles/asphalt_middle_upright.png and /dev/null differ diff --git a/Mods/Core/Tiles/asphalt_middle_upright.png.import b/Mods/Core/Tiles/asphalt_middle_upright.png.import deleted file mode 100644 index 5c8fb122..00000000 --- a/Mods/Core/Tiles/asphalt_middle_upright.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dqku07vvqbhc0" -path="res://.godot/imported/asphalt_middle_upright.png-baeaa48292ffb2e376d59ca5f7c73e10.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/asphalt_middle_upright.png" -dest_files=["res://.godot/imported/asphalt_middle_upright.png-baeaa48292ffb2e376d59ca5f7c73e10.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/Mods/Core/Tiles/dirtrampeast.png b/Mods/Core/Tiles/dirtrampeast.png deleted file mode 100644 index 9f2be334..00000000 Binary files a/Mods/Core/Tiles/dirtrampeast.png and /dev/null differ diff --git a/Mods/Core/Tiles/dirtrampsouth.png b/Mods/Core/Tiles/dirtrampsouth.png deleted file mode 100644 index 1278adda..00000000 Binary files a/Mods/Core/Tiles/dirtrampsouth.png and /dev/null differ diff --git a/Mods/Core/Tiles/dirtrampwest.png b/Mods/Core/Tiles/dirtrampwest.png deleted file mode 100644 index 371f445e..00000000 Binary files a/Mods/Core/Tiles/dirtrampwest.png and /dev/null differ diff --git a/Mods/Core/Tiles/forestunderbrush.png b/Mods/Core/Tiles/forestunderbrush.png deleted file mode 100644 index a518165a..00000000 Binary files a/Mods/Core/Tiles/forestunderbrush.png and /dev/null differ diff --git a/Mods/Core/Tiles/forestunderbrush.png.import b/Mods/Core/Tiles/forestunderbrush.png.import deleted file mode 100644 index f6bdd836..00000000 --- a/Mods/Core/Tiles/forestunderbrush.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cnsf3hxfqi3re" -path="res://.godot/imported/forestunderbrush.png-85e3281d606808e065a046d769ef4714.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/forestunderbrush.png" -dest_files=["res://.godot/imported/forestunderbrush.png-85e3281d606808e065a046d769ef4714.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/Mods/Core/Tiles/forestunderbrush1.png b/Mods/Core/Tiles/forestunderbrush1.png deleted file mode 100644 index fd9f28ef..00000000 Binary files a/Mods/Core/Tiles/forestunderbrush1.png and /dev/null differ diff --git a/Mods/Core/Tiles/forestunderbrush1.png.import b/Mods/Core/Tiles/forestunderbrush1.png.import deleted file mode 100644 index 2b0d759a..00000000 --- a/Mods/Core/Tiles/forestunderbrush1.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://1pg3ibp8uhwk" -path="res://.godot/imported/forestunderbrush1.png-6c20242d6543ebaf355753511119b5c1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/forestunderbrush1.png" -dest_files=["res://.godot/imported/forestunderbrush1.png-6c20242d6543ebaf355753511119b5c1.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/Mods/Core/Tiles/forestunderbrush2.png b/Mods/Core/Tiles/forestunderbrush2.png deleted file mode 100644 index 12fb54ee..00000000 Binary files a/Mods/Core/Tiles/forestunderbrush2.png and /dev/null differ diff --git a/Mods/Core/Tiles/forestunderbrush2.png.import b/Mods/Core/Tiles/forestunderbrush2.png.import deleted file mode 100644 index 199a2840..00000000 --- a/Mods/Core/Tiles/forestunderbrush2.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d2i7kj3odhbgr" -path="res://.godot/imported/forestunderbrush2.png-fd38928b9810fc55336175e33a5e0960.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/forestunderbrush2.png" -dest_files=["res://.godot/imported/forestunderbrush2.png-fd38928b9810fc55336175e33a5e0960.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/Mods/Core/Tiles/forestunderbrush3.png b/Mods/Core/Tiles/forestunderbrush3.png deleted file mode 100644 index 8f53d3c4..00000000 Binary files a/Mods/Core/Tiles/forestunderbrush3.png and /dev/null differ diff --git a/Mods/Core/Tiles/forestunderbrush4.png b/Mods/Core/Tiles/forestunderbrush4.png deleted file mode 100644 index a3b7210e..00000000 Binary files a/Mods/Core/Tiles/forestunderbrush4.png and /dev/null differ diff --git a/Mods/Core/Tiles/forestunderbrush4.png.import b/Mods/Core/Tiles/forestunderbrush4.png.import deleted file mode 100644 index da58c776..00000000 --- a/Mods/Core/Tiles/forestunderbrush4.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cl0dw7d42yxs8" -path="res://.godot/imported/forestunderbrush4.png-34872d2bff8059144690308d66fbf6ad.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/forestunderbrush4.png" -dest_files=["res://.godot/imported/forestunderbrush4.png-34872d2bff8059144690308d66fbf6ad.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/Mods/Core/Tiles/grasseastdirt.png b/Mods/Core/Tiles/grasseastdirt.png deleted file mode 100644 index 02146be4..00000000 Binary files a/Mods/Core/Tiles/grasseastdirt.png and /dev/null differ diff --git a/Mods/Core/Tiles/grasseastdirt.png.import b/Mods/Core/Tiles/grasseastdirt.png.import deleted file mode 100644 index e32d01ff..00000000 --- a/Mods/Core/Tiles/grasseastdirt.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://gdl1wodw13pc" -path="res://.godot/imported/grasseastdirt.png-6bf70657828e9b3907bdae7cdc1d246d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/grasseastdirt.png" -dest_files=["res://.godot/imported/grasseastdirt.png-6bf70657828e9b3907bdae7cdc1d246d.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/Mods/Core/Tiles/grasssouthdirt.png b/Mods/Core/Tiles/grasssouthdirt.png deleted file mode 100644 index bef338f1..00000000 Binary files a/Mods/Core/Tiles/grasssouthdirt.png and /dev/null differ diff --git a/Mods/Core/Tiles/grasssouthdirt.png.import b/Mods/Core/Tiles/grasssouthdirt.png.import deleted file mode 100644 index c879ac23..00000000 --- a/Mods/Core/Tiles/grasssouthdirt.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://0klc8fh8ale7" -path="res://.godot/imported/grasssouthdirt.png-5d19b1fdb64b86e2caf7af0258c63503.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/grasssouthdirt.png" -dest_files=["res://.godot/imported/grasssouthdirt.png-5d19b1fdb64b86e2caf7af0258c63503.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/Mods/Core/Tiles/grasswestdirt.png b/Mods/Core/Tiles/grasswestdirt.png deleted file mode 100644 index 2246c802..00000000 Binary files a/Mods/Core/Tiles/grasswestdirt.png and /dev/null differ diff --git a/Mods/Core/Tiles/grasswestdirt.png.import b/Mods/Core/Tiles/grasswestdirt.png.import deleted file mode 100644 index fd2a3b5f..00000000 --- a/Mods/Core/Tiles/grasswestdirt.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cd5ks4lgp524w" -path="res://.godot/imported/grasswestdirt.png-e6b019b695a27f8b98f6b51cb061918d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/grasswestdirt.png" -dest_files=["res://.godot/imported/grasswestdirt.png-e6b019b695a27f8b98f6b51cb061918d.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/Mods/Core/Tiles/rockyfloorrampeast.png b/Mods/Core/Tiles/rockyfloorrampeast.png deleted file mode 100644 index 7a1d7173..00000000 Binary files a/Mods/Core/Tiles/rockyfloorrampeast.png and /dev/null differ diff --git a/Mods/Core/Tiles/rockyfloorrampeast.png.import b/Mods/Core/Tiles/rockyfloorrampeast.png.import deleted file mode 100644 index 4ed8531f..00000000 --- a/Mods/Core/Tiles/rockyfloorrampeast.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bqaci7yrcnjum" -path="res://.godot/imported/rockyfloorrampeast.png-6cdf5361afb3e0f316b1cbe89a598e51.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/rockyfloorrampeast.png" -dest_files=["res://.godot/imported/rockyfloorrampeast.png-6cdf5361afb3e0f316b1cbe89a598e51.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/Mods/Core/Tiles/rockyfloorrampsouth.png b/Mods/Core/Tiles/rockyfloorrampsouth.png deleted file mode 100644 index 4f4a7adc..00000000 Binary files a/Mods/Core/Tiles/rockyfloorrampsouth.png and /dev/null differ diff --git a/Mods/Core/Tiles/rockyfloorrampsouth.png.import b/Mods/Core/Tiles/rockyfloorrampsouth.png.import deleted file mode 100644 index 76d49617..00000000 --- a/Mods/Core/Tiles/rockyfloorrampsouth.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cc7cddqnjf610" -path="res://.godot/imported/rockyfloorrampsouth.png-4a5616173e9da023a145bd8747a61ed9.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/rockyfloorrampsouth.png" -dest_files=["res://.godot/imported/rockyfloorrampsouth.png-4a5616173e9da023a145bd8747a61ed9.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/Mods/Core/Tiles/rockyfloorrampwest.png b/Mods/Core/Tiles/rockyfloorrampwest.png deleted file mode 100644 index 296281e5..00000000 Binary files a/Mods/Core/Tiles/rockyfloorrampwest.png and /dev/null differ diff --git a/Mods/Core/Tiles/rockyfloorrampwest.png.import b/Mods/Core/Tiles/rockyfloorrampwest.png.import deleted file mode 100644 index ec7b9d59..00000000 --- a/Mods/Core/Tiles/rockyfloorrampwest.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dfhxgwsr63ok0" -path="res://.godot/imported/rockyfloorrampwest.png-0006169a93943e9ba53d4e50f3905d8b.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Mods/Core/Tiles/rockyfloorrampwest.png" -dest_files=["res://.godot/imported/rockyfloorrampwest.png-0006169a93943e9ba53d4e50f3905d8b.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/Scenes/ContentManager/Custom_Editors/FurnitureEditor.tscn b/Scenes/ContentManager/Custom_Editors/FurnitureEditor.tscn new file mode 100644 index 00000000..e46b8703 --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/FurnitureEditor.tscn @@ -0,0 +1,161 @@ +[gd_scene load_steps=5 format=3 uid="uid://cng4m3os6smj8"] + +[ext_resource type="Texture2D" uid="uid://c8ragmxitca47" path="res://Scenes/ContentManager/Mapeditor/Images/emptyTile.png" id="1_gm4uu"] +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Editors/Scripts/FurnitureEditor.gd" id="1_wqqit"] +[ext_resource type="PackedScene" uid="uid://b8i6wfk3fngy4" path="res://Scenes/ContentManager/Custom_Widgets/Editable_Item_List.tscn" id="2_ekwf5"] +[ext_resource type="PackedScene" uid="uid://d1h1rpwt8f807" path="res://Scenes/ContentManager/Custom_Widgets/Sprite_Selector_Popup.tscn" id="3_o3k3a"] + +[node name="FurnitureEditor" type="Control" node_paths=PackedStringArray("furnitureImageDisplay", "IDTextLabel", "NameTextEdit", "DescriptionTextEdit", "CategoriesList", "furnitureSelector", "imageNameStringLabel", "moveableCheckboxButton", "edgeSnappingOptionButton")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_wqqit") +furnitureImageDisplay = NodePath("VBoxContainer/FormGrid/FurnitureImageDisplay") +IDTextLabel = NodePath("VBoxContainer/FormGrid/IDTextLabel") +NameTextEdit = NodePath("VBoxContainer/FormGrid/NameTextEdit") +DescriptionTextEdit = NodePath("VBoxContainer/FormGrid/DescriptionTextEdit") +CategoriesList = NodePath("VBoxContainer/FormGrid/Editable_Item_List") +furnitureSelector = NodePath("Sprite_selector") +imageNameStringLabel = NodePath("VBoxContainer/FormGrid/ImageNameStringLabel") +moveableCheckboxButton = NodePath("VBoxContainer/FormGrid/UnmoveableCheckBox") +edgeSnappingOptionButton = NodePath("VBoxContainer/FormGrid/SnappingOptionButton") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="CloseButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Close" + +[node name="SaveButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Save" + +[node name="FormGrid" type="GridContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +columns = 2 + +[node name="ImageLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Sprite:" + +[node name="FurnitureImageDisplay" type="TextureRect" parent="VBoxContainer/FormGrid"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_stretch_ratio = 0.4 +focus_next = NodePath("../NameTextEdit") +focus_previous = NodePath("../Editable_Item_List") +focus_mode = 2 +texture = ExtResource("1_gm4uu") +expand_mode = 3 + +[node name="ImageNameLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Sprite name:" + +[node name="ImageNameStringLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 + +[node name="IDLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "ID:" + +[node name="IDTextLabel" type="Label" parent="VBoxContainer/FormGrid"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 + +[node name="NameLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Name" + +[node name="NameTextEdit" type="TextEdit" parent="VBoxContainer/FormGrid"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 +focus_next = NodePath("../DescriptionTextEdit") +focus_previous = NodePath("../FurnitureImageDisplay") + +[node name="DescriptionLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Description" + +[node name="DescriptionTextEdit" type="TextEdit" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.9 +focus_next = NodePath("../Editable_Item_List") +focus_previous = NodePath("../NameTextEdit") +wrap_mode = 1 + +[node name="CategoriesLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Categories:" + +[node name="Editable_Item_List" parent="VBoxContainer/FormGrid" instance=ExtResource("2_ekwf5")] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +focus_next = NodePath("../FurnitureImageDisplay") +focus_previous = NodePath("../DescriptionTextEdit") +focus_mode = 2 +header = "Categories" + +[node name="MoveableLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Can move" + +[node name="UnmoveableCheckBox" type="CheckBox" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +tooltip_text = "Check this if the furniture should be moveable, like a chair. Leave this unchecked if the furniture should not move, like a fence" +text = "Moveable" + +[node name="SnappingLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Edge snapping" + +[node name="SnappingOptionButton" type="OptionButton" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +tooltip_text = "Snapping direction for the furniture. This +determines in what direction the furniture will +snap to the edge of a block. The 'back' of the +furniture determines the direction. +For example, if a fridge sprite has the back on the +north side, select north and the furniture will +snap to the north edge. Selecting none will center the sprite" +item_count = 5 +selected = 0 +popup/item_0/text = "None" +popup/item_0/id = 0 +popup/item_1/text = "North" +popup/item_1/id = 1 +popup/item_2/text = "East" +popup/item_2/id = 2 +popup/item_3/text = "South" +popup/item_3/id = 3 +popup/item_4/text = "West" +popup/item_4/id = 4 + +[node name="Sprite_selector" parent="." instance=ExtResource("3_o3k3a")] +visible = false + +[connection signal="button_up" from="VBoxContainer/HBoxContainer/CloseButton" to="." method="_on_close_button_button_up"] +[connection signal="button_up" from="VBoxContainer/HBoxContainer/SaveButton" to="." method="_on_save_button_button_up"] +[connection signal="gui_input" from="VBoxContainer/FormGrid/FurnitureImageDisplay" to="." method="_on_furniture_image_display_gui_input"] +[connection signal="sprite_selected_ok" from="Sprite_selector" to="." method="_on_sprite_selector_sprite_selected_ok"] diff --git a/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemAmmoEditor.tscn b/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemAmmoEditor.tscn new file mode 100644 index 00000000..f2cc5d5b --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemAmmoEditor.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=2 format=3 uid="uid://c2uiumyeepree"] + +[ext_resource type="Script" path="res://Scripts/ItemAmmoEditor.gd" id="1_5v06u"] + +[node name="ItemAmmoEditor" type="Control" node_paths=PackedStringArray("DamageNumberBox")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_5v06u") +DamageNumberBox = NodePath("Ammo/DamageNumber") + +[node name="Ammo" type="GridContainer" parent="."] +layout_mode = 0 +size_flags_vertical = 3 +columns = 2 + +[node name="DamageLabel" type="Label" parent="Ammo"] +layout_mode = 2 +text = "Damage" + +[node name="DamageNumber" type="SpinBox" parent="Ammo"] +layout_mode = 2 +tooltip_text = "The width of this item in the inventory. A larger number means it will take up more horizontal inventory slots" +value = 25.0 diff --git a/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemEditor.tscn b/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemEditor.tscn new file mode 100644 index 00000000..1945abe5 --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemEditor.tscn @@ -0,0 +1,256 @@ +[gd_scene load_steps=7 format=3 uid="uid://dmpomdwta1pgq"] + +[ext_resource type="Script" path="res://Scripts/ItemEditor.gd" id="1_ef3j7"] +[ext_resource type="Texture2D" uid="uid://c8ragmxitca47" path="res://Scenes/ContentManager/Mapeditor/Images/emptyTile.png" id="2_ghd7c"] +[ext_resource type="PackedScene" uid="uid://d1h1rpwt8f807" path="res://Scenes/ContentManager/Custom_Widgets/Sprite_Selector_Popup.tscn" id="3_qb68r"] +[ext_resource type="PackedScene" uid="uid://cbke1yb3m7dra" path="res://Scenes/ContentManager/Custom_Editors/ItemEditor/ItemRangedEditor.tscn" id="3_qqmud"] +[ext_resource type="PackedScene" uid="uid://27f4k2pq2odn" path="res://Scenes/ContentManager/Custom_Editors/ItemEditor/ItemMagazineEditor.tscn" id="4_x8xa3"] +[ext_resource type="PackedScene" uid="uid://c2uiumyeepree" path="res://Scenes/ContentManager/Custom_Editors/ItemEditor/ItemAmmoEditor.tscn" id="5_mr1dn"] + +[node name="ItemEditor" type="Control" node_paths=PackedStringArray("tabContainer", "itemImageDisplay", "IDTextLabel", "PathTextLabel", "NameTextEdit", "DescriptionTextEdit", "itemSelector", "VolumeNumberBox", "WeightNumberBox", "StackSizeNumberBox", "MaxStackSizeNumberBox", "typesContainer", "TwoHandedCheckBox")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ef3j7") +tabContainer = NodePath("VBoxContainer/TabContainer") +itemImageDisplay = NodePath("VBoxContainer/TabContainer/Basic/ItemImageDisplay") +IDTextLabel = NodePath("VBoxContainer/TabContainer/Basic/IDTextLabel") +PathTextLabel = NodePath("VBoxContainer/TabContainer/Basic/PathTextLabel") +NameTextEdit = NodePath("VBoxContainer/TabContainer/Basic/NameTextEdit") +DescriptionTextEdit = NodePath("VBoxContainer/TabContainer/Basic/DescriptionTextEdit") +itemSelector = NodePath("Sprite_selector") +VolumeNumberBox = NodePath("VBoxContainer/TabContainer/Basic/VolumeNumber") +WeightNumberBox = NodePath("VBoxContainer/TabContainer/Basic/WeightNumber") +StackSizeNumberBox = NodePath("VBoxContainer/TabContainer/Basic/StackSizeNumber") +MaxStackSizeNumberBox = NodePath("VBoxContainer/TabContainer/Basic/MaxStackSizeNumber") +typesContainer = NodePath("VBoxContainer/TabContainer/Basic/TypesContainer") +TwoHandedCheckBox = NodePath("VBoxContainer/TabContainer/Basic/TwoHandedCheckBox") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="CloseButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Close" + +[node name="SaveButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Save" + +[node name="TabContainer" type="TabContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Basic" type="GridContainer" parent="VBoxContainer/TabContainer"] +layout_mode = 2 +size_flags_vertical = 3 +columns = 2 + +[node name="ImageLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "Sprite:" + +[node name="ItemImageDisplay" type="TextureRect" parent="VBoxContainer/TabContainer/Basic"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_stretch_ratio = 0.4 +texture = ExtResource("2_ghd7c") +expand_mode = 3 + +[node name="PathLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "Sprite name" + +[node name="PathTextLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 + +[node name="IDLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "ID:" + +[node name="IDTextLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 + +[node name="NameLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "Name" + +[node name="NameTextEdit" type="TextEdit" parent="VBoxContainer/TabContainer/Basic"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 +focus_next = NodePath("../DescriptionTextEdit") +focus_previous = NodePath("../ItemImageDisplay") +placeholder_text = "Scorpion " + +[node name="DescriptionLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "Description" + +[node name="DescriptionTextEdit" type="TextEdit" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.9 +focus_previous = NodePath("../NameTextEdit") +placeholder_text = "A very dangerous land animal often found in dry climates" +wrap_mode = 1 + +[node name="VolumeLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "Volume" + +[node name="VolumeNumber" type="SpinBox" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +tooltip_text = "The volume of this item. For reference, a grain of sand is 0.01, a bullet is 0,1 and a rifle is 300" +min_value = 0.01 +max_value = 1000.0 +step = 0.01 +value = 1.0 + +[node name="WeightLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "Weight" + +[node name="WeightNumber" type="SpinBox" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +tooltip_text = "The weight of this item in kg" +min_value = 0.01 +max_value = 500.0 +step = 0.01 +value = 1.0 + +[node name="StackSizeLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "Stack size" + +[node name="StackSizeNumber" type="SpinBox" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +tooltip_text = "The amount of this item that will spawn in a stack by default" +min_value = 1.0 +value = 1.0 + +[node name="MaxStackSizeLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "Max stack size" + +[node name="MaxStackSizeNumber" type="SpinBox" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +tooltip_text = "The maximum number of this item that will fit in a stack" +min_value = 1.0 +value = 1.0 + +[node name="TwoHandedLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "Two handed" + +[node name="TwoHandedCheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +tooltip_text = "Enable this if the item weapon occupies both hands when held. Disable this if the item occupies one hand when held" +text = "Two handed" + +[node name="TypesLabel" type="Label" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 +text = "Type(s)" + +[node name="TypesContainer" type="HFlowContainer" parent="VBoxContainer/TabContainer/Basic"] +layout_mode = 2 + +[node name="RangedWeaponCheck" type="CheckBox" parent="VBoxContainer/TabContainer/Basic/TypesContainer"] +layout_mode = 2 +tooltip_text = "If this is checked, the item functions as a ranged weapon and the ranged properties tab will be visible. Otherwise, this item will not function as a ranged weapon and the ranged properties tab will not be visible" +text = "Ranged" + +[node name="MeleeCheck" type="CheckBox" parent="VBoxContainer/TabContainer/Basic/TypesContainer"] +layout_mode = 2 +tooltip_text = "If this is checked, the item functions as a melee weapon and the melee properties tab will be visible. Otherwise, this item will not function as a melee weapon and the melee properties tab will not be visible" +text = "Melee" + +[node name="MedicalCheck" type="CheckBox" parent="VBoxContainer/TabContainer/Basic/TypesContainer"] +layout_mode = 2 +tooltip_text = "If this is checked, the item functions as a medical item, for example to be used for healing and the medical properties tab will be visible. Otherwise, this item will not function as a medical item and the medical properties tab will not be visible" +text = "Medical" + +[node name="MagazineCheck" type="CheckBox" parent="VBoxContainer/TabContainer/Basic/TypesContainer"] +layout_mode = 2 +tooltip_text = "If this is checked, the item functions as a magazine for a gun or tool and the magazine properties tab will be visible. Otherwise, this item will not function as a magazine and the magazine properties tab will not be visible" +text = "Magazine" + +[node name="AmmunitionCheck" type="CheckBox" parent="VBoxContainer/TabContainer/Basic/TypesContainer"] +layout_mode = 2 +tooltip_text = "If this is checked, the item functions as ammo for a magazine and the ammo properties tab will be visible. Otherwise, this item will not function as ammo and the ammo properties tab will not be visible" +text = "Ammo" + +[node name="BookCheck" type="CheckBox" parent="VBoxContainer/TabContainer/Basic/TypesContainer"] +layout_mode = 2 +tooltip_text = "If this is checked, the item functions as a book and the book properties tab will be visible. Otherwise, this item will not function as a book and the book properties tab will not be visible" +text = "Book" + +[node name="CraftableCheck" type="CheckBox" parent="VBoxContainer/TabContainer/Basic/TypesContainer"] +layout_mode = 2 +tooltip_text = "If this is checked, the item can be crafted and recipe tab will be visible. Otherwise, this item cannot be crafted and the recipe tab will not be visible" +text = "Craft" + +[node name="DisassembleCheck" type="CheckBox" parent="VBoxContainer/TabContainer/Basic/TypesContainer"] +layout_mode = 2 +tooltip_text = "If this is checked, the item can be disassembled and disassembly tab will be visible. Otherwise, this item cannot be disassembled and the disassembly tab will not be visible" +text = "Disassemble" + +[node name="ClothingCheck" type="CheckBox" parent="VBoxContainer/TabContainer/Basic/TypesContainer"] +layout_mode = 2 +tooltip_text = "If this is checked, the item functions as clothing and the clothing properties tab will be visible. Otherwise, this item will not function as clothing and the clothing properties tab will not be visible" +text = "Clothing" + +[node name="Food" type="CheckBox" parent="VBoxContainer/TabContainer/Basic/TypesContainer"] +layout_mode = 2 +tooltip_text = "If this is checked, the item functions as food and the food properties tab will be visible. Otherwise, this item will not function as food and the food properties tab will not be visible" +text = "Food" + +[node name="Ranged" parent="VBoxContainer/TabContainer" instance=ExtResource("3_qqmud")] +visible = false +layout_mode = 2 + +[node name="Magazine" parent="VBoxContainer/TabContainer" instance=ExtResource("4_x8xa3")] +visible = false +layout_mode = 2 + +[node name="Ammo" parent="VBoxContainer/TabContainer" instance=ExtResource("5_mr1dn")] +visible = false +layout_mode = 2 + +[node name="Sprite_selector" parent="." instance=ExtResource("3_qb68r")] +visible = false + +[connection signal="button_up" from="VBoxContainer/HBoxContainer/CloseButton" to="." method="_on_close_button_button_up"] +[connection signal="button_up" from="VBoxContainer/HBoxContainer/SaveButton" to="." method="_on_save_button_button_up"] +[connection signal="gui_input" from="VBoxContainer/TabContainer/Basic/ItemImageDisplay" to="." method="_on_item_image_display_gui_input"] +[connection signal="button_up" from="VBoxContainer/TabContainer/Basic/TypesContainer/RangedWeaponCheck" to="." method="_on_type_check_button_up"] +[connection signal="button_up" from="VBoxContainer/TabContainer/Basic/TypesContainer/MeleeCheck" to="." method="_on_type_check_button_up"] +[connection signal="button_up" from="VBoxContainer/TabContainer/Basic/TypesContainer/MedicalCheck" to="." method="_on_type_check_button_up"] +[connection signal="button_up" from="VBoxContainer/TabContainer/Basic/TypesContainer/MagazineCheck" to="." method="_on_type_check_button_up"] +[connection signal="button_up" from="VBoxContainer/TabContainer/Basic/TypesContainer/AmmunitionCheck" to="." method="_on_type_check_button_up"] +[connection signal="button_up" from="VBoxContainer/TabContainer/Basic/TypesContainer/BookCheck" to="." method="_on_type_check_button_up"] +[connection signal="button_up" from="VBoxContainer/TabContainer/Basic/TypesContainer/CraftableCheck" to="." method="_on_type_check_button_up"] +[connection signal="button_up" from="VBoxContainer/TabContainer/Basic/TypesContainer/DisassembleCheck" to="." method="_on_type_check_button_up"] +[connection signal="button_up" from="VBoxContainer/TabContainer/Basic/TypesContainer/ClothingCheck" to="." method="_on_type_check_button_up"] +[connection signal="button_up" from="VBoxContainer/TabContainer/Basic/TypesContainer/Food" to="." method="_on_type_check_button_up"] +[connection signal="sprite_selected_ok" from="Sprite_selector" to="." method="_on_sprite_selector_sprite_selected_ok"] diff --git a/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemMagazineEditor.tscn b/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemMagazineEditor.tscn new file mode 100644 index 00000000..d1cffcaf --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemMagazineEditor.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=2 format=3 uid="uid://27f4k2pq2odn"] + +[ext_resource type="Script" path="res://Scripts/ItemMagazineEditor.gd" id="1_cgvqr"] + +[node name="ItemMagazineEditor" type="Control" node_paths=PackedStringArray("UsedAmmoTextEdit", "MaxAmmoNumberBox")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_cgvqr") +UsedAmmoTextEdit = NodePath("Magazine/UsedAmmoTextEdit") +MaxAmmoNumberBox = NodePath("Magazine/MaxAmmoNumber") + +[node name="Magazine" type="GridContainer" parent="."] +layout_mode = 0 +size_flags_vertical = 3 +columns = 2 + +[node name="UsedAmmoLabel" type="Label" parent="Magazine"] +layout_mode = 2 +text = "Ammo" + +[node name="UsedAmmoTextEdit" type="TextEdit" parent="Magazine"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 +placeholder_text = "9mm" + +[node name="MaxAmmoLabel" type="Label" parent="Magazine"] +layout_mode = 2 +text = "Max ammo" + +[node name="MaxAmmoNumber" type="SpinBox" parent="Magazine"] +layout_mode = 2 +tooltip_text = "The width of this item in the inventory. A larger number means it will take up more horizontal inventory slots" +value = 20.0 diff --git a/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemRangedEditor.tscn b/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemRangedEditor.tscn new file mode 100644 index 00000000..219f960d --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/ItemEditor/ItemRangedEditor.tscn @@ -0,0 +1,132 @@ +[gd_scene load_steps=2 format=3 uid="uid://cbke1yb3m7dra"] + +[ext_resource type="Script" path="res://Scripts/ItemRangedEditor.gd" id="1_my1v7"] + +[node name="ItemRangedEditor" type="Control" node_paths=PackedStringArray("UsedAmmoTextEdit", "UsedMagazineTextEdit", "RangeNumberBox", "SpreadNumberBox", "SwayNumberBox", "RecoilNumberBox", "UsedSkillTextEdit", "ReloadSpeedNumberBox", "FiringSpeedNumberBox")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_my1v7") +UsedAmmoTextEdit = NodePath("Ranged/UsedAmmoTextEdit") +UsedMagazineTextEdit = NodePath("Ranged/UsedMagazineTextEdit") +RangeNumberBox = NodePath("Ranged/RangeNumber") +SpreadNumberBox = NodePath("Ranged/SpreadNumber") +SwayNumberBox = NodePath("Ranged/SwayNumber") +RecoilNumberBox = NodePath("Ranged/RecoilNumber") +UsedSkillTextEdit = NodePath("Ranged/UsedSkillTextEdit") +ReloadSpeedNumberBox = NodePath("Ranged/ReloadSpeedNumber") +FiringSpeedNumberBox = NodePath("Ranged/FiringSpeedNumber") + +[node name="Ranged" type="GridContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +columns = 2 + +[node name="UsedAmmoLabel" type="Label" parent="Ranged"] +layout_mode = 2 +text = "Ammo" + +[node name="UsedAmmoTextEdit" type="TextEdit" parent="Ranged"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 +focus_next = NodePath("../UsedMagazineTextEdit") +placeholder_text = "9mm" + +[node name="UsedMagazineLabel" type="Label" parent="Ranged"] +layout_mode = 2 +text = "Magazine" + +[node name="UsedMagazineTextEdit" type="TextEdit" parent="Ranged"] +custom_minimum_size = Vector2(0, 28) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.9 +focus_previous = NodePath("../UsedAmmoTextEdit") +placeholder_text = "pistol_magazine" +wrap_mode = 1 + +[node name="RangeLabel" type="Label" parent="Ranged"] +layout_mode = 2 +text = "Range" + +[node name="RangeNumber" type="SpinBox" parent="Ranged"] +layout_mode = 2 +tooltip_text = "The width of this item in the inventory. A larger number means it will take up more horizontal inventory slots" +min_value = 100.0 +max_value = 10000.0 +step = 100.0 +value = 1000.0 + +[node name="SpreadLabel" type="Label" parent="Ranged"] +layout_mode = 2 +text = "Spread" + +[node name="SpreadNumber" type="SpinBox" parent="Ranged"] +layout_mode = 2 +tooltip_text = "The height of this item in the inventory. A larger number means it will take up more vertical inventory slots" +min_value = 1.0 +value = 5.0 + +[node name="SwayLabel" type="Label" parent="Ranged"] +layout_mode = 2 +text = "Sway" + +[node name="SwayNumber" type="SpinBox" parent="Ranged"] +layout_mode = 2 +tooltip_text = "The weight of this item in kg" +value = 5.0 + +[node name="RecoilLabel" type="Label" parent="Ranged"] +layout_mode = 2 +text = "Recoil" + +[node name="RecoilNumber" type="SpinBox" parent="Ranged"] +layout_mode = 2 +tooltip_text = "The amount of this item that will spawn in a stack by default" +min_value = 1.0 +value = 20.0 + +[node name="UsedSkillLabel" type="Label" parent="Ranged"] +layout_mode = 2 +text = "Skill" + +[node name="UsedSkillTextEdit" type="TextEdit" parent="Ranged"] +custom_minimum_size = Vector2(0, 28) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.9 +focus_previous = NodePath("../UsedAmmoTextEdit") +placeholder_text = "short_guns" +wrap_mode = 1 + +[node name="ReloadSpeedLabel" type="Label" parent="Ranged"] +layout_mode = 2 +text = "Reload speed" + +[node name="ReloadSpeedNumber" type="SpinBox" parent="Ranged"] +layout_mode = 2 +tooltip_text = "The maximum number of this item that will fit in a stack" +min_value = 0.1 +step = 0.1 +value = 2.5 + +[node name="FiringSpeedLabel" type="Label" parent="Ranged"] +layout_mode = 2 +text = "Firing speed" + +[node name="FiringSpeedNumber" type="SpinBox" parent="Ranged"] +layout_mode = 2 +tooltip_text = "The maximum number of this item that will fit in a stack" +min_value = 0.01 +step = 0.01 +value = 0.25 diff --git a/Scenes/ContentManager/Custom_Editors/MobEditor.tscn b/Scenes/ContentManager/Custom_Editors/MobEditor.tscn new file mode 100644 index 00000000..7885b457 --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/MobEditor.tscn @@ -0,0 +1,195 @@ +[gd_scene load_steps=4 format=3 uid="uid://drby7yfu8t38e"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Editors/Scripts/MobEditor.gd" id="1_ubw0i"] +[ext_resource type="Texture2D" uid="uid://c8ragmxitca47" path="res://Scenes/ContentManager/Mapeditor/Images/emptyTile.png" id="2_woy6i"] +[ext_resource type="PackedScene" uid="uid://d1h1rpwt8f807" path="res://Scenes/ContentManager/Custom_Widgets/Sprite_Selector_Popup.tscn" id="3_847a0"] + +[node name="MobEditor" type="Control" node_paths=PackedStringArray("mobImageDisplay", "IDTextLabel", "PathTextLabel", "NameTextEdit", "DescriptionTextEdit", "mobSelector", "melee_damage_numedit", "melee_range_numedit", "health_numedit", "moveSpeed_numedit", "idle_move_speed_numedit", "sightRange_numedit", "senseRange_numedit", "hearingRange_numedit")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ubw0i") +mobImageDisplay = NodePath("VBoxContainer/FormGrid/MobImageDisplay") +IDTextLabel = NodePath("VBoxContainer/FormGrid/IDTextLabel") +PathTextLabel = NodePath("VBoxContainer/FormGrid/PathTextLabel") +NameTextEdit = NodePath("VBoxContainer/FormGrid/NameTextEdit") +DescriptionTextEdit = NodePath("VBoxContainer/FormGrid/DescriptionTextEdit") +mobSelector = NodePath("Sprite_selector") +melee_damage_numedit = NodePath("VBoxContainer/FormGrid/MeleeDamageSpinBox") +melee_range_numedit = NodePath("VBoxContainer/FormGrid/MeleeRangeSpinbox") +health_numedit = NodePath("VBoxContainer/FormGrid/HealthSpinBox") +moveSpeed_numedit = NodePath("VBoxContainer/FormGrid/MoveSpeedSpinBox") +idle_move_speed_numedit = NodePath("VBoxContainer/FormGrid/IdleMoveSpeedSpinBox") +sightRange_numedit = NodePath("VBoxContainer/FormGrid/SightRangeSpinBox") +senseRange_numedit = NodePath("VBoxContainer/FormGrid/SenseRangeSpinbox") +hearingRange_numedit = NodePath("VBoxContainer/FormGrid/HearingRangeSpinbox") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="CloseButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Close" + +[node name="SaveButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Save" + +[node name="FormGrid" type="GridContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +columns = 2 + +[node name="ImageLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Sprite:" + +[node name="MobImageDisplay" type="TextureRect" parent="VBoxContainer/FormGrid"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_stretch_ratio = 0.4 +texture = ExtResource("2_woy6i") +expand_mode = 3 + +[node name="PathLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Sprite name" + +[node name="PathTextLabel" type="Label" parent="VBoxContainer/FormGrid"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 + +[node name="IDLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "ID:" + +[node name="IDTextLabel" type="Label" parent="VBoxContainer/FormGrid"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 + +[node name="NameLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Name" + +[node name="NameTextEdit" type="TextEdit" parent="VBoxContainer/FormGrid"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 +focus_next = NodePath("../DescriptionTextEdit") +focus_previous = NodePath("../MobImageDisplay") +placeholder_text = "Scorpion " + +[node name="DescriptionLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Description" + +[node name="DescriptionTextEdit" type="TextEdit" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.9 +focus_next = NodePath("../HealthSpinBox") +focus_previous = NodePath("../NameTextEdit") +placeholder_text = "A very dangerous land animal often found in dry climates" +wrap_mode = 1 + +[node name="HealthLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Health" + +[node name="HealthSpinBox" type="SpinBox" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +max_value = 1000.0 +value = 100.0 + +[node name="MeleeDamageLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Melee damage" + +[node name="MeleeDamageSpinBox" type="SpinBox" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +value = 20.0 + +[node name="MeleeRangeLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Melee range" + +[node name="MeleeRangeSpinbox" type="SpinBox" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +tooltip_text = "The maximum distance it can reach when attacking in melee" +step = 0.5 +value = 1.5 + +[node name="MoveSpeedLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Move speed" + +[node name="MoveSpeedSpinBox" type="SpinBox" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +tooltip_text = "The speed at which it moves" +step = 0.1 +value = 1.0 + +[node name="IdleMoveSpeedLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Idle move speed" + +[node name="IdleMoveSpeedSpinBox" type="SpinBox" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +tooltip_text = "The speed at which it moves when idle" +step = 0.1 +value = 0.5 + +[node name="SightRangeLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Sight range" + +[node name="SightRangeSpinBox" type="SpinBox" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +tooltip_text = "The maximum distance it can visually detect other entities" +max_value = 500.0 +value = 200.0 + +[node name="SenseRangeLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Sense range" + +[node name="SenseRangeSpinbox" type="SpinBox" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +tooltip_text = "The maximum distance at which it can detect entities with senses other then sight and hearing" +value = 50.0 + +[node name="HearingRangeLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Hearing range" + +[node name="HearingRangeSpinbox" type="SpinBox" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +tooltip_text = "The maximum distance at which it can detect entities trough hearing" +max_value = 5000.0 +value = 1000.0 + +[node name="Sprite_selector" parent="." instance=ExtResource("3_847a0")] +visible = false + +[connection signal="button_up" from="VBoxContainer/HBoxContainer/CloseButton" to="." method="_on_close_button_button_up"] +[connection signal="button_up" from="VBoxContainer/HBoxContainer/SaveButton" to="." method="_on_save_button_button_up"] +[connection signal="gui_input" from="VBoxContainer/FormGrid/MobImageDisplay" to="." method="_on_mob_image_display_gui_input"] +[connection signal="sprite_selected_ok" from="Sprite_selector" to="." method="_on_sprite_selector_sprite_selected_ok"] diff --git a/Scenes/ContentManager/Custom_Editors/Scripts/FurnitureEditor.gd b/Scenes/ContentManager/Custom_Editors/Scripts/FurnitureEditor.gd new file mode 100644 index 00000000..72b95ef4 --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/Scripts/FurnitureEditor.gd @@ -0,0 +1,108 @@ +extends Control + +#This scene is intended to be used inside the content editor +#It is supposed to edit exactly one piece of furniture +#It expects to save the data to a JSON file that contains all furniture data from a mod +#To load data, provide the name of the furniture data file and an ID + +@export var furnitureImageDisplay: TextureRect = null +@export var IDTextLabel: Label = null +@export var NameTextEdit: TextEdit = null +@export var DescriptionTextEdit: TextEdit = null +@export var CategoriesList: Control = null +@export var furnitureSelector: Popup = null +@export var imageNameStringLabel: Label = null +@export var moveableCheckboxButton: CheckBox = null +@export var edgeSnappingOptionButton: OptionButton = null +var control_elements: Array = [] + +# This signal will be emitted when the user presses the save button +# This signal should alert Gamedata that the furniture data array should be saved to disk +# The content editor has connected this signal to Gamedata already +signal data_changed() + +func _ready(): + control_elements = [furnitureImageDisplay,NameTextEdit,DescriptionTextEdit] + +# The data that represents this furniture +# The data is selected from the Gamedata.data.furniture.data array +# based on the ID that the user has selected in the content editor +var contentData: Dictionary = {}: + set(value): + contentData = value + load_furniture_data() + furnitureSelector.sprites_collection = Gamedata.data.furniture.sprites + +# This function updates the form based on the contentData that has been loaded +func load_furniture_data(): + if furnitureImageDisplay != null and contentData.has("sprite"): + furnitureImageDisplay.texture = Gamedata.data.furniture.sprites[contentData["sprite"]] + imageNameStringLabel.text = contentData["sprite"] + if IDTextLabel != null: + IDTextLabel.text = str(contentData["id"]) + if NameTextEdit != null and contentData.has("name"): + NameTextEdit.text = contentData["name"] + if DescriptionTextEdit != null and contentData.has("description"): + DescriptionTextEdit.text = contentData["description"] + if CategoriesList != null and contentData.has("categories"): + CategoriesList.clear_list() + for category in contentData["categories"]: + CategoriesList.add_item_to_list(category) + if moveableCheckboxButton != null and contentData.has("moveable"): + moveableCheckboxButton.button_pressed = contentData["moveable"] + if edgeSnappingOptionButton != null and contentData.has("edgesnapping"): + self.select_option_by_string(contentData["edgesnapping"]) + +#The editor is closed, destroy the instance +#TODO: Check for unsaved changes +func _on_close_button_button_up(): + queue_free() + + +# This function will select the option in the edgeSnappingOptionButton that matches the given string. +# If no match is found, it does nothing. +func select_option_by_string(option_string: String) -> void: + for i in range(edgeSnappingOptionButton.get_item_count()): + if edgeSnappingOptionButton.get_item_text(i) == option_string: + edgeSnappingOptionButton.selected = i + return + print_debug("No matching option found for the string: " + option_string) + + +# This function takes all data from the form elements stores them in the contentData +# Since contentData is a reference to an item in Gamedata.data.furniture.data +# the central array for furnituredata is updated with the changes as well +# The function will signal to Gamedata that the data has changed and needs to be saved +func _on_save_button_button_up(): + contentData["sprite"] = imageNameStringLabel.text + contentData["name"] = NameTextEdit.text + contentData["description"] = DescriptionTextEdit.text + contentData["categories"] = CategoriesList.get_items() + contentData["moveable"] = moveableCheckboxButton.button_pressed + contentData["edgesnapping"] = edgeSnappingOptionButton.get_item_text(edgeSnappingOptionButton.selected) + data_changed.emit() + +func _input(event): + if event.is_action_pressed("ui_focus_next"): + for myControl in control_elements: + if myControl.has_focus(): + if Input.is_key_pressed(KEY_SHIFT): # Check if Shift key + if !myControl.focus_previous.is_empty(): + myControl.get_node(myControl.focus_previous).grab_focus() + else: + if !myControl.focus_next.is_empty(): + myControl.get_node(myControl.focus_next).grab_focus() + break + get_viewport().set_input_as_handled() + +#When the furnitureImageDisplay is clicked, the user will be prompted to select an image from +# "res://Mods/Core/Furnitures/". The texture of the furnitureImageDisplay will change to the selected image +func _on_furniture_image_display_gui_input(event): + if event is InputEventMouseButton and event.pressed: + furnitureSelector.show() + +func _on_sprite_selector_sprite_selected_ok(clicked_sprite) -> void: + var furnitureTexture: Resource = clicked_sprite.get_texture() + furnitureImageDisplay.texture = furnitureTexture + imageNameStringLabel.text = furnitureTexture.resource_path.get_file() + diff --git a/Scenes/ContentManager/Custom_Editors/Scripts/MobEditor.gd b/Scenes/ContentManager/Custom_Editors/Scripts/MobEditor.gd new file mode 100644 index 00000000..9c8232a1 --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/Scripts/MobEditor.gd @@ -0,0 +1,98 @@ +extends Control + +#This scene is intended to be used inside the content editor +#It is supposed to edit exactly one mob (friend and foe) +#It expects to save the data to a JSON file that contains all data from a mod +#To load data, provide the name of the mob data file and an ID + +@export var mobImageDisplay: TextureRect = null +@export var IDTextLabel: Label = null +@export var PathTextLabel: Label = null +@export var NameTextEdit: TextEdit = null +@export var DescriptionTextEdit: TextEdit = null +@export var mobSelector: Popup = null +@export var melee_damage_numedit: SpinBox +@export var melee_range_numedit: SpinBox +@export var health_numedit: SpinBox +@export var moveSpeed_numedit: SpinBox +@export var idle_move_speed_numedit: SpinBox +@export var sightRange_numedit: SpinBox +@export var senseRange_numedit: SpinBox +@export var hearingRange_numedit: SpinBox +# This signal will be emitted when the user presses the save button +# This signal should alert Gamedata that the mob data array should be saved to disk +# The content editor has connected this signal to Gamedata already +signal data_changed() + +# The data that represents this mob +# The data is selected from the Gamedata.data.mobs.data array +# based on the ID that the user has selected in the content editor +var contentData: Dictionary = {}: + set(value): + contentData = value + load_mob_data() + mobSelector.sprites_collection = Gamedata.data.mobs.sprites + +#This function update the form based on the contentData that has been loaded +func load_mob_data() -> void: + if mobImageDisplay != null and contentData.has("sprite"): + mobImageDisplay.texture = Gamedata.data.mobs.sprites[contentData["sprite"]] + PathTextLabel.text = contentData["sprite"] + if IDTextLabel != null: + IDTextLabel.text = str(contentData["id"]) + if NameTextEdit != null and contentData.has("name"): + NameTextEdit.text = contentData["name"] + if DescriptionTextEdit != null and contentData.has("description"): + DescriptionTextEdit.text = contentData["description"] + if melee_damage_numedit != null and contentData.has("melee_damage"): + melee_damage_numedit.get_line_edit().text = contentData["melee_damage"] + if melee_range_numedit != null and contentData.has("melee_range"): + melee_range_numedit.get_line_edit().text = contentData["melee_range"] + if health_numedit != null and contentData.has("health"): + health_numedit.get_line_edit().text = contentData["health"] + if moveSpeed_numedit != null and contentData.has("move_speed"): + moveSpeed_numedit.get_line_edit().text = contentData["move_speed"] + if idle_move_speed_numedit != null and contentData.has("idle_move_speed"): + idle_move_speed_numedit.get_line_edit().text = contentData["idle_move_speed"] + if sightRange_numedit != null and contentData.has("sight_range"): + sightRange_numedit.get_line_edit().text = contentData["sight_range"] + if senseRange_numedit != null and contentData.has("sense_range"): + senseRange_numedit.get_line_edit().text = contentData["sense_range"] + if hearingRange_numedit != null and contentData.has("hearing_range"): + hearingRange_numedit.get_line_edit().text = contentData["hearing_range"] + + +#The editor is closed, destroy the instance +#TODO: Check for unsaved changes +func _on_close_button_button_up() -> void: + queue_free() + +# This function takes all data fro the form elements stores them in the contentData +# Since contentData is a reference to an item in Gamedata.data.mobs.data +# the central array for mobdata is updated with the changes as well +# The function will signal to Gamedata that the data has changed and needs to be saved +func _on_save_button_button_up() -> void: + contentData["sprite"] = PathTextLabel.text + contentData["name"] = NameTextEdit.text + contentData["description"] = DescriptionTextEdit.text + contentData["melee_damage"] = melee_damage_numedit.get_line_edit().text + contentData["melee_range"] = melee_range_numedit.get_line_edit().text + contentData["health"] = health_numedit.get_line_edit().text + contentData["move_speed"] = moveSpeed_numedit.get_line_edit().text + contentData["idle_move_speed"] = idle_move_speed_numedit.get_line_edit().text + contentData["sight_range"] = sightRange_numedit.get_line_edit().text + contentData["sense_range"] = senseRange_numedit.get_line_edit().text + contentData["hearing_range"] = hearingRange_numedit.get_line_edit().text + data_changed.emit() + +#When the mobImageDisplay is clicked, the user will be prompted to select an image from +# "res://Mods/Core/mobs/". The texture of the mobImageDisplay will change to the selected image +func _on_mob_image_display_gui_input(event) -> void: + if event is InputEventMouseButton and event.pressed: + mobSelector.show() + + +func _on_sprite_selector_sprite_selected_ok(clicked_sprite) -> void: + var mobTexture: Resource = clicked_sprite.get_texture() + mobImageDisplay.texture = mobTexture + PathTextLabel.text = mobTexture.resource_path.get_file() diff --git a/Scenes/ContentManager/Custom_Editors/Scripts/TerrainTileEditor.gd b/Scenes/ContentManager/Custom_Editors/Scripts/TerrainTileEditor.gd new file mode 100644 index 00000000..8fcb871d --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/Scripts/TerrainTileEditor.gd @@ -0,0 +1,124 @@ +extends Control + +#This scene is intended to be used inside the content editor +#It is supposed to edit exactly one tile +#It expects to save the data to a JSON file that contains all tile data from a mod +#To load data, provide the name of the tile data file and an ID + +@export var tileImageDisplay: TextureRect = null +@export var IDTextLabel: Label = null +@export var NameTextEdit: TextEdit = null +@export var DescriptionTextEdit: TextEdit = null +@export var CategoriesList: Control = null +@export var tileSelector: Popup = null +@export var imageNameStringLabel: Label = null +@export var cubeShapeCheckbox: Button = null +@export var slopeShapeCheckbox: Button = null +# This signal will be emitted when the user presses the save button +# This signal should alert Gamedata that the tile data array should be saved to disk +# The content editor has connected this signal to Gamedata already +signal data_changed() + +var control_elements: Array = [] +# The data that represents this tile +# The data is selected from the Gamedata.data.tiles.data array +# based on the ID that the user has selected in the content editor +var contentData: Dictionary = {}: + set(value): + contentData = value + load_tile_data() + tileSelector.sprites_collection = Gamedata.data.tiles.sprites + + +func _ready(): + control_elements = [ + tileImageDisplay, + NameTextEdit, + DescriptionTextEdit, + CategoriesList, + cubeShapeCheckbox, + slopeShapeCheckbox + ] + +func _input(event): + if event.is_action_pressed("ui_focus_next"): + for myControl in control_elements: + if myControl.has_focus(): + if Input.is_key_pressed(KEY_SHIFT): # Check if Shift key + if !myControl.focus_previous.is_empty(): + myControl.get_node(myControl.focus_previous).grab_focus() + else: + if !myControl.focus_next.is_empty(): + myControl.get_node(myControl.focus_next).grab_focus() + break + get_viewport().set_input_as_handled() + +# This function updates the form based on the contentData that has been loaded +func load_tile_data(): + if tileImageDisplay != null and contentData.has("sprite"): + var myTexture: Resource = Gamedata.data.tiles.sprites[contentData["sprite"]] + tileImageDisplay.texture = myTexture.albedo_texture + imageNameStringLabel.text = contentData["sprite"] + if IDTextLabel != null: + IDTextLabel.text = str(contentData["id"]) + if NameTextEdit != null and contentData.has("name"): + NameTextEdit.text = contentData["name"] + if DescriptionTextEdit != null and contentData.has("description"): + DescriptionTextEdit.text = contentData["description"] + if CategoriesList != null and contentData.has("categories"): + CategoriesList.clear_list() + for category in contentData["categories"]: + CategoriesList.add_item_to_list(category) + if cubeShapeCheckbox != null and contentData.has("shape"): + # By default the cubeShapeCheckbox is selected so we only account for slope + if contentData["shape"] == "slope": + cubeShapeCheckbox.button_pressed = false + slopeShapeCheckbox.button_pressed = true + +#The editor is closed, destroy the instance +#TODO: Check for unsaved changes +func _on_close_button_button_up(): + queue_free() + +# This function takes all data fro the form elements stores them in the contentData +# Since contentData is a reference to an item in Gamedata.data.tiles.data +# the central array for tiledata is updated with the changes as well +# The function will signal to Gamedata that the data has changed and needs to be saved +func _on_save_button_button_up(): + contentData["sprite"] = imageNameStringLabel.text + contentData["name"] = NameTextEdit.text + contentData["description"] = DescriptionTextEdit.text + contentData["categories"] = CategoriesList.get_items() + contentData["shape"] = "cube" + if slopeShapeCheckbox.button_pressed: + contentData["shape"] = "slope" + data_changed.emit() + +#When the tileImageDisplay is clicked, the user will be prompted to select an image from +# "res://Mods/Core/Tiles/". The texture of the tileImageDisplay will change to the selected image +func _on_tile_image_display_gui_input(event): + if event is InputEventMouseButton and event.pressed: + tileSelector.show() + +func _on_sprite_selector_sprite_selected_ok(clicked_sprite) -> void: + var tileTexture: Resource = clicked_sprite.get_texture() + tileImageDisplay.texture = tileTexture + imageNameStringLabel.text = tileTexture.resource_path.get_file() + +# The tile can only be shaped like either a cube or a slope +# If the user clicks the cube shape button then only the cube shape +# button should be selected and no other shape buttons +# Having all shape buttons deselected should not happen. +func _on_cube_shape_check_box_button_up(): + slopeShapeCheckbox.button_pressed = false + if !cubeShapeCheckbox.button_pressed: + cubeShapeCheckbox.button_pressed = true + +# The tile can only be shaped like either a cube or a slope +# If the user clicks the slope shape button then only the slope shape +# button should be selected and no other shape buttons. +# Having all shape buttons deselected should not happen. +func _on_slope_shape_check_box_button_up(): + cubeShapeCheckbox.button_pressed = false + if !slopeShapeCheckbox.button_pressed: + slopeShapeCheckbox.button_pressed = true diff --git a/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/EntitiesContainer.gd b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/EntitiesContainer.gd new file mode 100644 index 00000000..71bcacd5 --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/EntitiesContainer.gd @@ -0,0 +1,56 @@ +extends VBoxContainer + +@export var scrolling_Flow_Container: PackedScene = null +@export var tileBrush: PackedScene = null + +var instanced_brushes: Array[Node] = [] + +signal tile_brush_selection_change(tilebrush: Control) +var selected_brush: Control: + set(newBrush): + selected_brush = newBrush + tile_brush_selection_change.emit(selected_brush) + +func _ready(): + loadMaps() + + +# this function will read all files in Gamedata.data.tiles.data and creates tilebrushes for each tile in the list. It will make separate lists for each category that the tiles belong to. +func loadMaps(): + var mapsList: Array = Gamedata.data.maps.data + var newTilesList: Control = scrolling_Flow_Container.instantiate() + newTilesList.header = "maps" + add_child(newTilesList) + + for map in mapsList: + # Extract the base name without the extension + var base_name = map.get_basename() + # If the file has an image to represent it's content, load it + if Gamedata.data.maps.sprites.has(base_name + ".png"): + var mySprite: Resource = Gamedata.data.maps.sprites[base_name + ".png"] + if mySprite: + # Create a TextureRect node + var brushInstance = tileBrush.instantiate() + # Assign the texture to the TextureRect + brushInstance.set_tile_texture(mySprite) + # Since the map editor needs to knw what tile ID is used, + # We store the tile id in a variable in the brush + brushInstance.mapID = map + brushInstance.tilebrush_clicked.connect(tilebrush_clicked) + # Add the TextureRect as a child to the TilesList + newTilesList.add_content_item(brushInstance) + instanced_brushes.append(brushInstance) + +#Mark the clicked tilebrush as selected, but only after deselecting all other brushes +func tilebrush_clicked(tilebrush: Control) -> void: + deselect_all_brushes() + # If the clicked brush was not select it, we select it. Otherwise we deselect it + if selected_brush != tilebrush: + selected_brush = tilebrush + selected_brush.set_selected(true) + else: + selected_brush = null + +func deselect_all_brushes(): + for child in instanced_brushes: + child.set_selected(false) diff --git a/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditor.gd b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditor.gd new file mode 100644 index 00000000..1a564408 --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditor.gd @@ -0,0 +1,38 @@ +extends Control + + +@export var tileGrid: GridContainer = null +@export var mapwidthTextEdit: TextEdit = null +@export var mapheightTextEdit: TextEdit = null + +var tileSize: int = 128 +var mapHeight: int = 3 +var mapWidth: int = 3 +var contentSource: String = "": + set(newSource): + contentSource = newSource + tileGrid.load_tacticalmap_json_file() + +# In tacticalmapeditor.gd +func _ready() -> void: + # Connect the signal from TileGrid to this script + tileGrid.connect("map_dimensions_changed",_on_map_dimensions_changed) + +func _on_map_height_text_changed() -> void: + mapHeight = int(mapheightTextEdit.text) + tileGrid.resetGrid() + +func _on_map_width_text_changed() -> void: + mapWidth = int(mapwidthTextEdit.text) + tileGrid.resetGrid() + +#The editor is closed, destroy the instance +#TODO: Check for unsaved changes +func _on_close_button_button_up() -> void: + queue_free() + + +# Handler for the signal +func _on_map_dimensions_changed(new_map_width: int, new_map_height: int) -> void: + mapwidthTextEdit.text = str(new_map_width) + mapheightTextEdit.text = str(new_map_height) diff --git a/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditorTile.gd b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditorTile.gd new file mode 100644 index 00000000..2376adda --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditorTile.gd @@ -0,0 +1,60 @@ +extends Control + +#If a tile has no data, we save an empty object. Tiledata can have: +# id, rotation, mob +const defaultTileData: Dictionary = {} +const defaultTexture: String = "res://Scenes/ContentManager/Mapeditor/Images/emptyTile.png" +const aboveTexture: String = "res://Scenes/ContentManager/Mapeditor/Images/tileAbove.png" +var tileData: Dictionary = defaultTileData.duplicate(): + set(data): + tileData = data + if tileData.has("id") and tileData.id != "": + $TileSprite.texture = Gamedata.data.maps.sprites[tileData.id.replace("json", "png")] + if tileData.has("rotation"): + set_rotation_amount(tileData.rotation) + else: + $TileSprite.texture = load(defaultTexture) +signal tile_clicked(clicked_tile: Control) + +func _on_texture_rect_gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton: + match event.button_index: + MOUSE_BUTTON_LEFT: + if event.pressed: + tile_clicked.emit(self) + +func set_rotation_amount(amount: int) -> void: + $TileSprite.rotation_degrees = amount + tileData.rotation = amount + +func get_rotation_amount() -> int: + return $TileSprite.rotation_degrees + +func set_tile_id(id: String) -> void: + if id == "": + tileData.erase("id") + $TileSprite.texture = load(defaultTexture) + else: + tileData.id = id + $TileSprite.texture = Gamedata.data.maps.sprites[id.replace("json", "png")] + +func _on_texture_rect_mouse_entered() -> void: + if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): + tile_clicked.emit(self) + +func set_default() -> void: + tileData = defaultTileData.duplicate() + +func highlight() -> void: + $TileSprite.modulate = Color(0.227, 0.635, 0.757) + +func unhighlight() -> void: + $TileSprite.modulate = Color(1,1,1) + +func set_clickable(clickable: bool): + if !clickable: + mouse_filter = MOUSE_FILTER_IGNORE + $TileSprite.mouse_filter = MOUSE_FILTER_IGNORE + +func get_tile_texture(): + return $TileSprite.texture diff --git a/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditorTileBrush.gd b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditorTileBrush.gd new file mode 100644 index 00000000..0d22874c --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditorTileBrush.gd @@ -0,0 +1,25 @@ +extends Control + +signal tilebrush_clicked(clicked_tile: Control) +var mapID: String = "" +var selected: bool = false +var entityType: String = "tile" + +#When the event was a left mouse button press, adjust the modulate property of the $TileSprite to be 3aa2c1 +func _on_texture_rect_gui_input(event): + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + tilebrush_clicked.emit(self) + +func set_tile_texture(res: Resource) -> void: + $TileSprite.texture = res + +func get_texture() -> Resource: + return $TileSprite.texture + +#Mark the clicked tilebrush as selected +func set_selected(is_selected: bool) -> void: + selected = is_selected + if selected: + modulate = Color(0.227, 0.635, 0.757) + else: + modulate = Color(1,1,1) diff --git a/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TileGrid.gd b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TileGrid.gd new file mode 100644 index 00000000..4f3ef65e --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TileGrid.gd @@ -0,0 +1,130 @@ +extends GridContainer + +signal map_dimensions_changed(new_map_width, new_map_height) +@export var tileScene: PackedScene +#This is the index of the level we are on. 0 is ground level. can be -10 to +10 +var currentLevel: int = 10 +#Contains the data of every tile in the current level, the ground level or level 0 by default +var currentLevelData: Array = [] +@export var mapEditor: Control +@export var buttonRotateRight: Button +var selected_brush: Control + +var drawRectangle: bool = false +var erase: bool = false +var snapAmount: float +# Initialize new mapdata with a 3x3 empty map grid +var defaultMapData: Dictionary = {"mapwidth": 3, "mapheight": 3, "maps": [{},{},{},{},{},{},{},{},{}]} +var rotationAmount: int = 0 +#Contains map metadata like size as well as the data on all levels +var mapData: Dictionary = defaultMapData.duplicate(): + set(data): + if data.is_empty(): + mapData = defaultMapData.duplicate() + else: + mapData = data.duplicate() + loadLevel() + +func _ready(): + createTiles() + +# This function will fill fill this GridContainer with a grid of 3x3 instances of "res://Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditorTile.tscn" +func createTiles(): + columns = mapEditor.mapWidth + for x in range(mapEditor.mapWidth): + for y in range(mapEditor.mapHeight): + var tileInstance: Control = tileScene.instantiate() + add_child(tileInstance) + tileInstance.connect("tile_clicked",grid_tile_clicked) + +func resetGrid(): + # Clear the existing children + for child in get_children(): + child.queue_free() + + # Update mapData with new dimensions + mapData.mapwidth = mapEditor.mapWidth + mapData.mapheight = mapEditor.mapHeight + var newMapsArray = [] + for x in range(mapEditor.mapWidth): + for y in range(mapEditor.mapHeight): + newMapsArray.append({}) # Add an empty dictionary for each tile + + mapData.maps = newMapsArray + + # Recreate tiles + createTiles() + + + +#When one of the grid tiles is clicked, we paint the tile accordingly +func grid_tile_clicked(clicked_tile): + paint_single_tile(clicked_tile) + + +# We paint a single tile if draw rectangle is not selected +# Either erase the tile or paint it if a brush is selected. +func paint_single_tile(clicked_tile): + if drawRectangle or !clicked_tile: + return + if erase: + if selected_brush: + clicked_tile.set_tile_id("") + clicked_tile.set_rotation_amount(0) + else: + clicked_tile.set_default() + elif selected_brush: + clicked_tile.set_tile_id(selected_brush.mapID) + clicked_tile.set_rotation_amount(rotationAmount) + +#This function takes the mapData property and saves all of it as a json file. +func save_map_json_file(): + # Convert the TileGrid.mapData to a JSON string + storeLevelData() + var map_data_json = JSON.stringify(mapData.duplicate(), "\t") + Helper.json_helper.write_json_file(mapEditor.contentSource, map_data_json) + +#When this function is called, loop over all the TileGrid's children and get the tileData property. Store this data in the currentLevelData array +func storeLevelData(): + currentLevelData.clear() + for child in get_children(): + currentLevelData.append(child.tileData) + mapData.maps = currentLevelData.duplicate() + +func load_tacticalmap_json_file(): + var fileToLoad: String = mapEditor.contentSource + mapData = Helper.json_helper.load_json_dictionary_file(fileToLoad) + # Notify about the change in map dimensions + map_dimensions_changed.emit(mapData.mapwidth, mapData.mapheight) + +func loadLevel(): + if mapData.is_empty(): + print_debug("Tried to load data from an empty mapData dictionary") + return + + # Clear existing children + for child in get_children(): + child.queue_free() + + # Set the number of columns based on mapWidth + columns = mapData.mapwidth + + # Recreate the grid based on mapData dimensions + var newLevelData: Array = mapData.maps + var index: int = 0 + for x in range(mapData.mapwidth): + for y in range(mapData.mapheight): + var tileInstance: Control = tileScene.instantiate() + add_child(tileInstance) + tileInstance.connect("tile_clicked",grid_tile_clicked) + + # Load tile data if available, otherwise use default data + if index < newLevelData.size(): + tileInstance.tileData = newLevelData[index] + else: + tileInstance.set_default() + index += 1 + + +func _on_entities_container_tile_brush_selection_change(tilebrush): + selected_brush = tilebrush diff --git a/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditor.tscn b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditor.tscn new file mode 100644 index 00000000..3d992a9e --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditor.tscn @@ -0,0 +1,144 @@ +[gd_scene load_steps=16 format=3 uid="uid://0r8ni3u0dosg"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditor.gd" id="1_bfw3n"] +[ext_resource type="Texture2D" uid="uid://b6m2bbbpmsyik" path="res://Images/Icons/IconRotateRightDark.png" id="2_qcvqe"] +[ext_resource type="Texture2D" uid="uid://5fsf8rh6w0pb" path="res://Images/Icons/IconRectangleChecked.png" id="3_u7g7j"] +[ext_resource type="Texture2D" uid="uid://cxhp6hye2ufp2" path="res://Images/Icons/IconRectangleUnchecked.png" id="4_no6mb"] +[ext_resource type="Texture2D" uid="uid://7pbgyyv6lna1" path="res://Images/Icons/IconEraserChecked.png" id="5_142rt"] +[ext_resource type="Texture2D" uid="uid://hik7bkdfc51t" path="res://Images/Icons/IconEraserUnchecked.png" id="6_w0gff"] +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TileGrid.gd" id="7_ji7x2"] +[ext_resource type="PackedScene" uid="uid://f6kl6bo0wsmk" path="res://Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditorTile.tscn" id="8_pt28t"] +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/EntitiesContainer.gd" id="9_u8o0i"] +[ext_resource type="PackedScene" uid="uid://be62h2ytgw2kb" path="res://Scenes/ContentManager/Custom_Widgets/Scrolling_Flow_Container.tscn" id="10_lnsqy"] +[ext_resource type="PackedScene" uid="uid://c28vw5hmwvmlf" path="res://Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditorTileBrush.tscn" id="11_bh5ke"] + +[sub_resource type="Gradient" id="Gradient_x1sdl"] + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_rxahe"] +gradient = SubResource("Gradient_x1sdl") +width = 24 + +[sub_resource type="InputEventKey" id="InputEventKey_nrfa0"] +device = -1 +keycode = 82 +unicode = 114 + +[sub_resource type="Shortcut" id="Shortcut_hehp2"] +events = [SubResource("InputEventKey_nrfa0")] + +[node name="TacticalMapEditor" type="Control" node_paths=PackedStringArray("tileGrid", "mapwidthTextEdit", "mapheightTextEdit")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_bfw3n") +tileGrid = NodePath("HSplitContainer/MapeditorContainer/HBoxContainer/TileGrid") +mapwidthTextEdit = NodePath("HSplitContainer/MapeditorContainer/Toolbar/MapWidth") +mapheightTextEdit = NodePath("HSplitContainer/MapeditorContainer/Toolbar/MapHeight") + +[node name="HSplitContainer" type="HSplitContainer" parent="."] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_icons/grabber = SubResource("GradientTexture2D_rxahe") + +[node name="MapeditorContainer" type="VBoxContainer" parent="HSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.5 + +[node name="Toolbar" type="HBoxContainer" parent="HSplitContainer/MapeditorContainer"] +clip_contents = true +custom_minimum_size = Vector2(0, 24) +layout_mode = 2 +size_flags_stretch_ratio = 0.05 + +[node name="CloseButton" type="Button" parent="HSplitContainer/MapeditorContainer/Toolbar"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.15 +text = "Close" + +[node name="SaveButton" type="Button" parent="HSplitContainer/MapeditorContainer/Toolbar"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.15 +text = "Save" + +[node name="mapsizelabel" type="Label" parent="HSplitContainer/MapeditorContainer/Toolbar"] +layout_mode = 2 +text = "Size: W:" + +[node name="MapWidth" type="TextEdit" parent="HSplitContainer/MapeditorContainer/Toolbar"] +clip_contents = true +custom_minimum_size = Vector2(40, 22) +layout_mode = 2 +theme_override_constants/line_spacing = 0 +theme_override_font_sizes/font_size = 16 +text = "3" + +[node name="MapHeightLabel" type="Label" parent="HSplitContainer/MapeditorContainer/Toolbar"] +layout_mode = 2 +text = "H:" + +[node name="MapHeight" type="TextEdit" parent="HSplitContainer/MapeditorContainer/Toolbar"] +clip_contents = true +custom_minimum_size = Vector2(40, 22) +layout_mode = 2 +theme_override_constants/line_spacing = 0 +theme_override_font_sizes/font_size = 16 +text = "3" + +[node name="RotateRight" type="CheckBox" parent="HSplitContainer/MapeditorContainer/Toolbar"] +layout_mode = 2 +tooltip_text = "Rotate the brush to paint with rotation" +theme_override_icons/checked = ExtResource("2_qcvqe") +theme_override_icons/unchecked = ExtResource("2_qcvqe") +shortcut = SubResource("Shortcut_hehp2") +text = "0" + +[node name="DrawRectangle" type="CheckBox" parent="HSplitContainer/MapeditorContainer/Toolbar"] +layout_mode = 2 +tooltip_text = "Paint in a rectangle" +theme_override_icons/checked = ExtResource("3_u7g7j") +theme_override_icons/unchecked = ExtResource("4_no6mb") + +[node name="Erase" type="CheckBox" parent="HSplitContainer/MapeditorContainer/Toolbar"] +layout_mode = 2 +tooltip_text = "Erase tiles on the map" +theme_override_icons/checked = ExtResource("5_142rt") +theme_override_icons/unchecked = ExtResource("6_w0gff") + +[node name="HBoxContainer" type="HBoxContainer" parent="HSplitContainer/MapeditorContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="TileGrid" type="GridContainer" parent="HSplitContainer/MapeditorContainer/HBoxContainer" node_paths=PackedStringArray("mapEditor", "buttonRotateRight")] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/h_separation = 0 +theme_override_constants/v_separation = 0 +columns = 3 +script = ExtResource("7_ji7x2") +tileScene = ExtResource("8_pt28t") +mapEditor = NodePath("../../../..") +buttonRotateRight = NodePath("../../Toolbar/RotateRight") + +[node name="EntitiesContainer" type="VBoxContainer" parent="HSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.2 +script = ExtResource("9_u8o0i") +scrolling_Flow_Container = ExtResource("10_lnsqy") +tileBrush = ExtResource("11_bh5ke") + +[connection signal="button_up" from="HSplitContainer/MapeditorContainer/Toolbar/CloseButton" to="." method="_on_close_button_button_up"] +[connection signal="button_up" from="HSplitContainer/MapeditorContainer/Toolbar/SaveButton" to="HSplitContainer/MapeditorContainer/HBoxContainer/TileGrid" method="save_map_json_file"] +[connection signal="text_changed" from="HSplitContainer/MapeditorContainer/Toolbar/MapWidth" to="." method="_on_map_width_text_changed"] +[connection signal="text_changed" from="HSplitContainer/MapeditorContainer/Toolbar/MapHeight" to="." method="_on_map_height_text_changed"] +[connection signal="tile_brush_selection_change" from="HSplitContainer/EntitiesContainer" to="HSplitContainer/MapeditorContainer/HBoxContainer/TileGrid" method="_on_entities_container_tile_brush_selection_change"] diff --git a/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditorTile.tscn b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditorTile.tscn new file mode 100644 index 00000000..42711f48 --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditorTile.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=3 format=3 uid="uid://f6kl6bo0wsmk"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditorTile.gd" id="1_jobrn"] +[ext_resource type="Texture2D" uid="uid://c31w0wuk8qabw" path="res://Defaults/Sprites/2.png" id="2_gashh"] + +[node name="TacticalMapEditorTile" type="Control"] +custom_minimum_size = Vector2(16, 16) +layout_mode = 3 +anchors_preset = 0 +offset_right = 128.0 +offset_bottom = 128.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_jobrn") + +[node name="TileSprite" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("2_gashh") +expand_mode = 3 + +[connection signal="gui_input" from="TileSprite" to="." method="_on_texture_rect_gui_input"] diff --git a/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditorTileBrush.tscn b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditorTileBrush.tscn new file mode 100644 index 00000000..d57e586f --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditorTileBrush.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=3 uid="uid://c28vw5hmwvmlf"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/TacticalMapEditorTileBrush.gd" id="1_6xcxx"] +[ext_resource type="Texture2D" uid="uid://c31w0wuk8qabw" path="res://Defaults/Sprites/2.png" id="2_82c4q"] + +[node name="TacticalMapEditorTileBrush" type="Control"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_6xcxx") + +[node name="TileSprite" type="TextureRect" parent="."] +custom_minimum_size = Vector2(64, 64) +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("2_82c4q") +expand_mode = 3 + +[connection signal="gui_input" from="TileSprite" to="." method="_on_texture_rect_gui_input"] diff --git a/Scenes/ContentManager/Custom_Editors/TerrainTileEditor.tscn b/Scenes/ContentManager/Custom_Editors/TerrainTileEditor.tscn new file mode 100644 index 00000000..9e99e61c --- /dev/null +++ b/Scenes/ContentManager/Custom_Editors/TerrainTileEditor.tscn @@ -0,0 +1,143 @@ +[gd_scene load_steps=5 format=3 uid="uid://vfj2if40vf10"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Editors/Scripts/TerrainTileEditor.gd" id="1_wp6ou"] +[ext_resource type="PackedScene" uid="uid://b8i6wfk3fngy4" path="res://Scenes/ContentManager/Custom_Widgets/Editable_Item_List.tscn" id="2_erosr"] +[ext_resource type="Texture2D" uid="uid://c8ragmxitca47" path="res://Scenes/ContentManager/Mapeditor/Images/emptyTile.png" id="2_x7b0a"] +[ext_resource type="PackedScene" uid="uid://d1h1rpwt8f807" path="res://Scenes/ContentManager/Custom_Widgets/Sprite_Selector_Popup.tscn" id="5_5ngda"] + +[node name="TerrainTileEditor" type="Control" node_paths=PackedStringArray("tileImageDisplay", "IDTextLabel", "NameTextEdit", "DescriptionTextEdit", "CategoriesList", "tileSelector", "imageNameStringLabel", "cubeShapeCheckbox", "slopeShapeCheckbox")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_wp6ou") +tileImageDisplay = NodePath("VBoxContainer/FormGrid/TileImageDisplay") +IDTextLabel = NodePath("VBoxContainer/FormGrid/IDTextLabel") +NameTextEdit = NodePath("VBoxContainer/FormGrid/NameTextEdit") +DescriptionTextEdit = NodePath("VBoxContainer/FormGrid/DescriptionTextEdit") +CategoriesList = NodePath("VBoxContainer/FormGrid/Editable_Item_List") +tileSelector = NodePath("Sprite_selector") +imageNameStringLabel = NodePath("VBoxContainer/FormGrid/ImageNameStringLabel") +cubeShapeCheckbox = NodePath("VBoxContainer/FormGrid/ShapeButtonContainer/CubeShapeCheckBox") +slopeShapeCheckbox = NodePath("VBoxContainer/FormGrid/ShapeButtonContainer/SlopeShapeCheckBox") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="CloseButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Close" + +[node name="SaveButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Save" + +[node name="FormGrid" type="GridContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +columns = 2 + +[node name="ImageLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Sprite:" + +[node name="TileImageDisplay" type="TextureRect" parent="VBoxContainer/FormGrid"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_stretch_ratio = 0.4 +tooltip_text = "Select a sprite that will be used to visualize this terrain. You can add sprites by putting the image in /mods/core/Tiles." +texture = ExtResource("2_x7b0a") +expand_mode = 3 + +[node name="ImageNameLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Sprite name:" + +[node name="ImageNameStringLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 + +[node name="IDLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "ID:" + +[node name="IDTextLabel" type="Label" parent="VBoxContainer/FormGrid"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 + +[node name="NameLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Name" + +[node name="NameTextEdit" type="TextEdit" parent="VBoxContainer/FormGrid"] +custom_minimum_size = Vector2(0, 30) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.1 +tooltip_text = "Give a descriptive name that best describes this terrain" +focus_next = NodePath("../DescriptionTextEdit") +focus_previous = NodePath("../TileImageDisplay") + +[node name="DescriptionLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Description" + +[node name="DescriptionTextEdit" type="TextEdit" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.9 +tooltip_text = "This description helps users understand how this terrain is used" +focus_next = NodePath("../Editable_Item_List") +focus_previous = NodePath("../NameTextEdit") + +[node name="CategoriesLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Categories:" + +[node name="Editable_Item_List" parent="VBoxContainer/FormGrid" instance=ExtResource("2_erosr")] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +tooltip_text = "Categories used in the map editor to separate this terrain from terrain in other categories. For example Floor and Urban" +header = "Categories" + +[node name="ShapeLabel" type="Label" parent="VBoxContainer/FormGrid"] +layout_mode = 2 +text = "Shape:" + +[node name="ShapeButtonContainer" type="HBoxContainer" parent="VBoxContainer/FormGrid"] +layout_mode = 2 + +[node name="CubeShapeCheckBox" type="CheckBox" parent="VBoxContainer/FormGrid/ShapeButtonContainer"] +layout_mode = 2 +tooltip_text = "Select this if this terrain is represented by a cube. This allows for it to be either a wall or a floor. This is the default value" +button_pressed = true +text = "Cube" + +[node name="SlopeShapeCheckBox" type="CheckBox" parent="VBoxContainer/FormGrid/ShapeButtonContainer"] +layout_mode = 2 +tooltip_text = "Select this if this terrain should be represented by a slope. Tipically ised for stairs or ramps. The player can go one level up if approached from the right angle." +text = "Slope" + +[node name="Sprite_selector" parent="." instance=ExtResource("5_5ngda")] +visible = false + +[connection signal="button_up" from="VBoxContainer/HBoxContainer/CloseButton" to="." method="_on_close_button_button_up"] +[connection signal="button_up" from="VBoxContainer/HBoxContainer/SaveButton" to="." method="_on_save_button_button_up"] +[connection signal="gui_input" from="VBoxContainer/FormGrid/TileImageDisplay" to="." method="_on_tile_image_display_gui_input"] +[connection signal="button_up" from="VBoxContainer/FormGrid/ShapeButtonContainer/CubeShapeCheckBox" to="." method="_on_cube_shape_check_box_button_up"] +[connection signal="button_up" from="VBoxContainer/FormGrid/ShapeButtonContainer/SlopeShapeCheckBox" to="." method="_on_slope_shape_check_box_button_up"] +[connection signal="sprite_selected_ok" from="Sprite_selector" to="." method="_on_sprite_selector_sprite_selected_ok"] diff --git a/Scenes/ContentManager/Custom_Widgets/Editable_Item_List.tscn b/Scenes/ContentManager/Custom_Widgets/Editable_Item_List.tscn new file mode 100644 index 00000000..fb41e1c4 --- /dev/null +++ b/Scenes/ContentManager/Custom_Widgets/Editable_Item_List.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=2 format=3 uid="uid://b8i6wfk3fngy4"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Widgets/Scripts/Editable_Item_List.gd" id="1_nx0sy"] + +[node name="Editable_Item_List" type="Control" node_paths=PackedStringArray("contentItems", "collapseButton", "pupup_window", "popup_textedit")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_nx0sy") +contentItems = NodePath("ListControls/ContentItems") +collapseButton = NodePath("ListControls/HBoxContainer/CollapseButton") +pupup_window = NodePath("New_Input") +popup_textedit = NodePath("New_Input/VBoxContainer/InputStringTextEdit") + +[node name="ListControls" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="ListControls"] +layout_mode = 2 + +[node name="CollapseButton" type="Button" parent="ListControls/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +focus_next = NodePath("../AddButton") +text = "Items" + +[node name="AddButton" type="Button" parent="ListControls/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.15 +focus_next = NodePath("../RemoveButton") +focus_previous = NodePath("../CollapseButton") +theme_override_font_sizes/font_size = 16 +text = "+" + +[node name="RemoveButton" type="Button" parent="ListControls/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.15 +focus_next = NodePath("../../ContentItems") +focus_previous = NodePath("../AddButton") +theme_override_font_sizes/font_size = 16 +text = "-" + +[node name="ContentItems" type="ItemList" parent="ListControls"] +layout_mode = 2 +size_flags_vertical = 3 +focus_next = NodePath("../HBoxContainer/CollapseButton") +focus_previous = NodePath("../HBoxContainer/RemoveButton") + +[node name="New_Input" type="Popup" parent="."] +title = "Input ID" +initial_position = 2 +size = Vector2i(200, 150) +unresizable = false +borderless = false + +[node name="VBoxContainer" type="VBoxContainer" parent="New_Input"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="InputStringLabel" type="Label" parent="New_Input/VBoxContainer"] +layout_mode = 2 +text = "Input new item" + +[node name="InputStringTextEdit" type="TextEdit" parent="New_Input/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +scroll_fit_content_height = true + +[node name="OKCancelButtons" type="HBoxContainer" parent="New_Input/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="OK" type="Button" parent="New_Input/VBoxContainer/OKCancelButtons"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +text = "Ok" + +[node name="Cancel" type="Button" parent="New_Input/VBoxContainer/OKCancelButtons"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +text = "Cancel" + +[connection signal="button_up" from="ListControls/HBoxContainer/CollapseButton" to="." method="_on_collapse_button_button_up"] +[connection signal="button_up" from="ListControls/HBoxContainer/AddButton" to="." method="_on_add_button_button_up"] +[connection signal="button_up" from="ListControls/HBoxContainer/RemoveButton" to="." method="_on_delete_button_button_up"] +[connection signal="button_up" from="New_Input/VBoxContainer/OKCancelButtons/OK" to="." method="_on_ok_button_up"] +[connection signal="button_up" from="New_Input/VBoxContainer/OKCancelButtons/Cancel" to="." method="_on_cancel_button_up"] diff --git a/Scenes/ContentManager/Custom_Widgets/Scripts/Editable_Item_List.gd b/Scenes/ContentManager/Custom_Widgets/Scripts/Editable_Item_List.gd new file mode 100644 index 00000000..5335e6c8 --- /dev/null +++ b/Scenes/ContentManager/Custom_Widgets/Scripts/Editable_Item_List.gd @@ -0,0 +1,76 @@ +extends Control + +#This scene is a generic widget that allows users to add an item to the list +#It is intended to be used in the content editor +#After instantiating, set the header to indicate its contents +#Use the get_items function to get an array of items +#Emits signal "item_activated" when an item is doubleclicked + +@export var contentItems: ItemList = null +@export var collapseButton: Button = null +@export var pupup_window: Popup = null +@export var popup_textedit: TextEdit = null +signal item_activated(itemText: String) +var is_collapsed: bool = true +@export var header: String = "Items": + set(newName): + header = newName + collapseButton.text = header + +#This function will collapse and expand the $Content/ContentItems when the collapse button is pressed +func _on_collapse_button_button_up(): + contentItems.visible = is_collapsed + is_collapsed = !is_collapsed + +#This function will show a pop-up asking the user to input an ID +func _on_add_button_button_up(): + pupup_window.show() + +#Called after the user enters a string into the popup textbox and presses OK +func _on_ok_button_up(): + pupup_window.hide() + if popup_textedit.text == "": + return; + contentItems.add_item(popup_textedit.text) + +#Called after the users presses cancel on the popup asking for a string +func _on_cancel_button_up(): + pupup_window.hide() + +#Called when an item in the list is activated by doubleclick or enter +func _on_content_items_item_activated(index): + var strItemText: String = contentItems.get_item_text(index) + if strItemText: + item_activated.emit(strItemText) + else: + print_debug("Tried to signal that item with index (" + str(index) + ") was activated,\ + but the item has no text") + +func clear_list(): + contentItems.clear() + +#This function returns all items in contentItems as an array +func get_items(): + var myArray: Array = [] + for item in contentItems.item_count: + myArray.append(contentItems.get_item_text(item)) + return myArray + +func add_item_to_list(itemText: String) -> void: + contentItems.add_item(itemText) + + +func get_selected_item_text() -> String: + if !contentItems.is_anything_selected(): + return "" + return contentItems.get_item_text(contentItems.get_selected_items()[0]) + + +#This function requires that an item from the list is selected +#Once clicked, the selected item will be removed from contentItems +#It will also remove the item from the json file specified by source +func _on_delete_button_button_up(): + var selected_id: String = get_selected_item_text() + if selected_id == "": + return + contentItems.remove_item(contentItems.get_selected_items()[0]) diff --git a/Scenes/ContentManager/Custom_Widgets/Scripts/Scrolling_Flow_Container.gd b/Scenes/ContentManager/Custom_Widgets/Scripts/Scrolling_Flow_Container.gd new file mode 100644 index 00000000..80831bf1 --- /dev/null +++ b/Scenes/ContentManager/Custom_Widgets/Scripts/Scrolling_Flow_Container.gd @@ -0,0 +1,33 @@ +extends Control + +#This script belongs to the Scrolling_Flow_Container scene +#It shows a flowcontianer in a scrollcontainer and optionally a collapse button +#Once instanced, set the collapse button text to the text you want +#If you set the header as empty it will hide the collapse button + +@export var contentItems: FlowContainer = null +@export var collapseButton: Button = null +var is_collapsed: bool = false +@export var header: String = "Items": + set(newName): + header = newName + if newName == "": + collapseButton.hide() + else: + collapseButton.show() + collapseButton.text = header + +#This function will collapse and expand the $Content/ContentItems when the collapse button is pressed +func _on_collapse_button_button_up(): + contentItems.visible = is_collapsed + if is_collapsed: + size_flags_vertical = Control.SIZE_EXPAND_FILL + else: + size_flags_vertical = Control.SIZE_SHRINK_BEGIN + is_collapsed = !is_collapsed + +func add_content_item(item: Node): + contentItems.add_child(item) + +func get_content_items() -> Array[Node]: + return contentItems.get_children() diff --git a/Scenes/ContentManager/Custom_Widgets/Scripts/Selectable_Sprite_Widget.gd b/Scenes/ContentManager/Custom_Widgets/Scripts/Selectable_Sprite_Widget.gd new file mode 100644 index 00000000..6a65f81c --- /dev/null +++ b/Scenes/ContentManager/Custom_Widgets/Scripts/Selectable_Sprite_Widget.gd @@ -0,0 +1,47 @@ +extends Control + +signal selectableSprite_clicked(clicked_sprite: Control) +signal selectableSprite_double_clicked(clicked_sprite: Control) +var selected: bool = false + +# Store the time of the last mouse click +var last_click_time = 0.0 + +#When the event was a left mouse button press, adjust emit a signal that it was clicked +func _on_texture_rect_gui_input(event): + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT: + if event.pressed: + var current_time = Time.get_ticks_msec() / 1000.0 + if current_time - last_click_time < 0.3: # Check for double-click (300 ms threshold) + selectableSprite_double_clicked.emit(self) + else: + selectableSprite_clicked.emit(self) + last_click_time = current_time + +func set_sprite_texture(res: Resource) -> void: + var texture: Texture + if res is BaseMaterial3D: + texture = res.albedo_texture + else: + texture = res + + if texture: + $SpriteImage.texture = texture + # Set the minimum size of the widget based on the texture size + var texture_size = texture.get_size() + custom_minimum_size = Vector2(texture_size.x, texture_size.y) + else: + $SpriteImage.texture = null + custom_minimum_size = Vector2(0, custom_minimum_size.y) # Reset to no minimum width + +func get_texture() -> Resource: + return $SpriteImage.texture + +#Mark the clicked spritebrush as selected +func set_selected(is_selected: bool) -> void: + selected = is_selected + if selected: + modulate = Color(0.227, 0.635, 0.757) + else: + modulate = Color(1,1,1) + diff --git a/Scenes/ContentManager/Custom_Widgets/Scripts/Sprite_Selector_Popup.gd b/Scenes/ContentManager/Custom_Widgets/Scripts/Sprite_Selector_Popup.gd new file mode 100644 index 00000000..fbd312c3 --- /dev/null +++ b/Scenes/ContentManager/Custom_Widgets/Scripts/Sprite_Selector_Popup.gd @@ -0,0 +1,70 @@ +extends Popup + +# This script is intended to be used in the Sprite_Selector_Popup widget. +# The goal is to show the user a list of sprites that the user can select from +# The user selects a sprite and presses OK or Cancel to confirm the choice +# The parent interface will then receive the resource path of the selected sprite +# In order to use the Sprite_Selector_Popup, set the Sprite Dir property to the +# Directory where sprites should be loaded from. Each sprite will be represented +# By a Selectable_Sprite_Widget that handles selecting and click signals + +#This will be instanced many times to make up the sprite list +@export var selectable_Sprite_Widget: PackedScene +#Reference to the Scrolling_flow_container that holds the sprites +@export var spriteList: Control = null +#Keep a reference to all the sprites that were instanced +var instanced_sprites: Array[Node] = [] +# The parent control has to provide a dictionary. This dictionary +# contains a list of textures with the name of the texture as a key +var sprites_collection: Dictionary = {}: + set(value): + sprites_collection = value + populate_sprite_list() +# Reference to one of the selectable_Sprite_Widgets that the user has selected +var selectedSprite: Control = null +#Will be sent when the user has selected a tile and pressed OK +signal sprite_selected_ok(clicked_sprite: Control) + + +# For each item in Gamedata.data.x.sprites it will create a +# selectable_Sprite_Widget and assign the file as the texture of the selectable_Sprite_Widget. +# Then it will add the selectable_Sprite_Widget as a child to spriteList +func populate_sprite_list(): + for filename in sprites_collection.keys(): + var material = sprites_collection[filename] + var selectableSpriteInstance = selectable_Sprite_Widget.instantiate() + # Assign the texture to the TextureRect + selectableSpriteInstance.set_sprite_texture(material) + selectableSpriteInstance.selectableSprite_clicked.connect(sprite_clicked) + selectableSpriteInstance.selectableSprite_double_clicked.connect(\ + _on_sprite_double_clicked) + spriteList.add_content_item(selectableSpriteInstance) + instanced_sprites.append(selectableSpriteInstance) + +# Called after the user selects a tile in the popup textbox and presses OK +func _on_ok_button_up(): + _emit_sprite_selected_and_close() + +# Called after the users presses cancel on the popup asking for a tile +func _on_cancel_button_up(): + hide() + +func deselect_all_sprites(): + for child in instanced_sprites: + child.set_selected(false) + +# Mark the clicked selectedSprite as selected, but only after deselecting all other sprites +func sprite_clicked(spite_selected: Control) -> void: + deselect_all_sprites() + selectedSprite = spite_selected + # If the clicked brush was not select it, we select it. Otherwise we deselect it + spite_selected.set_selected(true) + +func _on_sprite_double_clicked(sprite_selected: Control): + selectedSprite = sprite_selected + _emit_sprite_selected_and_close() + +func _emit_sprite_selected_and_close(): + if selectedSprite: + sprite_selected_ok.emit(selectedSprite) + hide() diff --git a/Scenes/ContentManager/Custom_Widgets/Scrolling_Flow_Container.tscn b/Scenes/ContentManager/Custom_Widgets/Scrolling_Flow_Container.tscn new file mode 100644 index 00000000..619cb99f --- /dev/null +++ b/Scenes/ContentManager/Custom_Widgets/Scrolling_Flow_Container.tscn @@ -0,0 +1,41 @@ +[gd_scene load_steps=2 format=3 uid="uid://be62h2ytgw2kb"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Widgets/Scripts/Scrolling_Flow_Container.gd" id="1_4knl7"] + +[node name="Scrolling_Flow_Container" type="Control" node_paths=PackedStringArray("contentItems", "collapseButton")] +custom_minimum_size = Vector2(200, 35) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_4knl7") +contentItems = NodePath("VBoxContainer/ScrollContainer/FlowContainer") +collapseButton = NodePath("VBoxContainer/CollapseButton") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="CollapseButton" type="Button" parent="VBoxContainer"] +custom_minimum_size = Vector2(200, 30) +layout_mode = 2 +text = "Items" + +[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="FlowContainer" type="FlowContainer" parent="VBoxContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[connection signal="button_up" from="VBoxContainer/CollapseButton" to="." method="_on_collapse_button_button_up"] diff --git a/Scenes/ContentManager/Custom_Widgets/Selectable_Sprite_Widget.tscn b/Scenes/ContentManager/Custom_Widgets/Selectable_Sprite_Widget.tscn new file mode 100644 index 00000000..5082f8fc --- /dev/null +++ b/Scenes/ContentManager/Custom_Widgets/Selectable_Sprite_Widget.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=3 uid="uid://vc1hpsum7b2u"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Widgets/Scripts/Selectable_Sprite_Widget.gd" id="1_ix6u3"] +[ext_resource type="Texture2D" uid="uid://ttmfel3ylg0w" path="res://Mods/Core/Tiles/arcstones1.png" id="2_5qjrc"] + +[node name="SelectableSprite" type="Control"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ix6u3") + +[node name="SpriteImage" type="TextureRect" parent="."] +custom_minimum_size = Vector2(64, 64) +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("2_5qjrc") +stretch_mode = 2 + +[connection signal="gui_input" from="SpriteImage" to="." method="_on_texture_rect_gui_input"] diff --git a/Scenes/ContentManager/Custom_Widgets/Sprite_Selector_Popup.tscn b/Scenes/ContentManager/Custom_Widgets/Sprite_Selector_Popup.tscn new file mode 100644 index 00000000..720dc601 --- /dev/null +++ b/Scenes/ContentManager/Custom_Widgets/Sprite_Selector_Popup.tscn @@ -0,0 +1,52 @@ +[gd_scene load_steps=4 format=3 uid="uid://d1h1rpwt8f807"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Custom_Widgets/Scripts/Sprite_Selector_Popup.gd" id="1_rag8d"] +[ext_resource type="PackedScene" uid="uid://vc1hpsum7b2u" path="res://Scenes/ContentManager/Custom_Widgets/Selectable_Sprite_Widget.tscn" id="2_wjnk7"] +[ext_resource type="PackedScene" uid="uid://be62h2ytgw2kb" path="res://Scenes/ContentManager/Custom_Widgets/Scrolling_Flow_Container.tscn" id="3_nkgi6"] + +[node name="Sprite_selector" type="Popup" node_paths=PackedStringArray("spriteList")] +title = "Input ID" +initial_position = 2 +size = Vector2i(600, 400) +visible = true +unresizable = false +borderless = false +min_size = Vector2i(500, 400) +script = ExtResource("1_rag8d") +selectable_Sprite_Widget = ExtResource("2_wjnk7") +spriteList = NodePath("VBoxContainer/Scrolling_Flow_Container") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="VBoxContainer"] +layout_mode = 2 +text = "Select a sprite" + +[node name="Scrolling_Flow_Container" parent="VBoxContainer" instance=ExtResource("3_nkgi6")] +layout_mode = 2 +header = "" + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="OK" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +text = "Ok" + +[node name="Cancel" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +text = "Cancel" + +[connection signal="button_up" from="VBoxContainer/HBoxContainer/OK" to="." method="_on_ok_button_up"] +[connection signal="button_up" from="VBoxContainer/HBoxContainer/Cancel" to="." method="_on_cancel_button_up"] diff --git a/Scenes/ContentManager/Mapeditor/Scripts/GridContainer.gd b/Scenes/ContentManager/Mapeditor/Scripts/GridContainer.gd index f4f811e5..723e6012 100644 --- a/Scenes/ContentManager/Mapeditor/Scripts/GridContainer.gd +++ b/Scenes/ContentManager/Mapeditor/Scripts/GridContainer.gd @@ -1,13 +1,16 @@ extends GridContainer -@onready var tileScene: PackedScene = preload("res://Scenes/ContentManager/Mapeditor/mapeditortile.tscn") +@export var tileScene: PackedScene #This is the index of the level we are on. 0 is ground level. can be -10 to +10 var currentLevel: int = 10 #Contains the data of every tile in the current level, the ground level or level 0 by default -var currentLevelData: Array[Dictionary] = [] +var currentLevelData: Array = [] @export var mapEditor: Control @export var LevelScrollBar: VScrollBar @export var levelgrid_below: GridContainer @export var levelgrid_above: GridContainer +@export var mapScrollWindow: ScrollContainer +@export var brushPreviewTexture: TextureRect +@export var buttonRotateRight: Button var selected_brush: Control var drawRectangle: bool = false @@ -15,18 +18,19 @@ var erase: bool = false var showBelow: bool = false var showAbove: bool = false var snapAmount: float +var defaultMapData: Dictionary = {"mapwidth": 32, "mapheight": 32, "levels": [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]} +var rotationAmount: int = 0 #Contains map metadata like size as well as the data on all levels -var mapData: Dictionary = {"mapwidth": 32, "mapheight": 32, "levels": [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]}: +var mapData: Dictionary = defaultMapData.duplicate(): set(data): - mapData = data.duplicate() + if data.is_empty(): + mapData = defaultMapData.duplicate() + else: + mapData = data.duplicate() loadLevelData(currentLevel) signal zoom_level_changed(zoom_level: int) func _on_mapeditor_ready(): -# mapEditor = $"../../../../../../.." -# LevelScrollBar = $"../../../../Levelscroller/LevelScrollbar" -# levelgrid_below = $"../Level_Below" -# levelgrid_above = $"../Level_Above" columns = mapEditor.mapWidth levelgrid_below.columns = mapEditor.mapWidth levelgrid_above.columns = mapEditor.mapWidth @@ -34,7 +38,7 @@ func _on_mapeditor_ready(): snapAmount = 1.28*mapEditor.zoom_level levelgrid_below.hide() levelgrid_above.hide() - + _on_zoom_level_changed(mapEditor.zoom_level) # This function will fill fill this GridContainer with a grid of 32x32 instances of "res://Scenes/ContentManager/Mapeditor/mapeditortile.tscn" func createTiles(): @@ -50,15 +54,24 @@ func createTiles(): tileAbove.set_clickable(false) levelgrid_above.add_child(tileAbove) - var start_point = Vector2() var end_point = Vector2() var is_drawing = false -var mouse_button_pressed: bool = false var snapLevel: Vector2 = Vector2(snapAmount, snapAmount).round() #When the user presses and holds the middle mousebutton and moves the mouse, change the parent's scroll_horizontal and scroll_vertical properties appropriately func _input(event): + #The mapeditor may be invisible if the user selects another tab in the content editor + if !mapEditor.visible: + return + + # Convert the mouse position to MapScrollWindow's local coordinate system + var local_mouse_pos = mapScrollWindow.get_local_mouse_position() + var mapScrollWindowRect = mapScrollWindow.get_rect() + # Check if the mouse is within the MapScrollWindow's rect + if !mapScrollWindowRect.has_point(local_mouse_pos): + return + if event is InputEventMouseButton: match event.button_index: MOUSE_BUTTON_WHEEL_UP: @@ -76,53 +89,95 @@ func _input(event): if Input.is_key_pressed(KEY_CTRL) or Input.is_key_pressed(KEY_ALT): get_viewport().set_input_as_handled() MOUSE_BUTTON_LEFT: - if drawRectangle: - if event.is_pressed(): - start_point = event.global_position.snapped(snapLevel) - is_drawing = true - else: - end_point = event.global_position.snapped(snapLevel) - is_drawing = false - paint_in_rectangle() + if event.is_pressed(): + is_drawing = true + start_point = event.global_position.snapped(snapLevel) else: + end_point = event.global_position.snapped(snapLevel) + if is_drawing == true: + if drawRectangle: + paint_in_rectangle() + unhighlight_tiles() is_drawing = false - + #When the users presses and holds the mouse wheel, we scoll the grid if event is InputEventMouseMotion: + end_point = event.global_position if is_drawing: - end_point = event.global_position - update_rectangle() + if drawRectangle: + update_rectangle() + + # Calculate new position for the brush preview + var new_position = event.position + brushPreviewTexture.get_rect().size / 2 + # Get the boundaries of the mapScrollWindow + var scroll_global_pos = mapScrollWindow.get_global_position() + # Clamp the new position to the mapScrollWindow's boundaries + new_position.x = clamp(new_position.x, scroll_global_pos.x, scroll_global_pos.x + mapScrollWindowRect.size.x - brushPreviewTexture.get_rect().size.x) + new_position.y = clamp(new_position.y, scroll_global_pos.y, scroll_global_pos.y + mapScrollWindowRect.size.y - brushPreviewTexture.get_rect().size.y) + # Update the position of the brush preview + brushPreviewTexture.global_position = new_position -#Change the color to be red +# Highlight tiles that are in the rectangle that the user has drawn with the mouse func update_rectangle(): - if is_drawing: + if is_drawing and drawRectangle: highlight_tiles_in_rect() - else: - unhighlight_tiles() #When one of the grid tiles is clicked, we paint the tile accordingly func grid_tile_clicked(clicked_tile): - paint_single_tile(clicked_tile) - -#We paint a single tile if draw rectangle is not selected + if is_drawing: + paint_single_tile(clicked_tile) + +# We paint a single tile if draw rectangle is not selected # Either erase the tile or paint it if a brush is selected. func paint_single_tile(clicked_tile): - if drawRectangle: + if drawRectangle or !clicked_tile: return if erase: - clicked_tile.set_default() + if selected_brush: + if selected_brush.entityType == "mob": + clicked_tile.set_mob_id("") + elif selected_brush.entityType == "furniture": + clicked_tile.set_furniture_id("") + else: + clicked_tile.set_tile_id("") + clicked_tile.set_rotation_amount(0) + else: + clicked_tile.set_default() elif selected_brush: - clicked_tile.set_texture(selected_brush.get_texture()) - -#When this function is called, loop over all the TileGrid's children and get the tileData property. Store this data in the currentLevelData array + if selected_brush.entityType == "mob": + clicked_tile.set_mob_id(selected_brush.tileID) + clicked_tile.set_mob_rotation(rotationAmount) + elif selected_brush.entityType == "furniture": + clicked_tile.set_furniture_id(selected_brush.tileID) + clicked_tile.set_furniture_rotation(rotationAmount) + else: + clicked_tile.set_tile_id(selected_brush.tileID) + clicked_tile.set_rotation_amount(rotationAmount) + func storeLevelData(): currentLevelData.clear() + var has_significant_data = false + + # First pass: Check if any tile has significant data for child in get_children(): - currentLevelData.append(child.tileData) + if child.tileData and (child.tileData.has("id") or \ + child.tileData.has("mob") or child.tileData.has("furniture")): + has_significant_data = true + break + + # Second pass: Add all tiles to currentLevelData if any significant data is found + if has_significant_data: + for child in get_children(): + currentLevelData.append(child.tileData) + else: + # If no tile has significant data, consider adding a special marker or log + print_debug("No significant tile data found for the current level") + mapData.levels[currentLevel] = currentLevelData.duplicate() - -#Loads the leveldata from the mapdata -#If no data exists, use the default to create a new map + + +# Loads the leveldata from the mapdata +# If no data exists, use the default to create a new map func loadLevelData(newLevel: int): if newLevel > 0 and showBelow: levelgrid_below.show() @@ -137,8 +192,11 @@ func loadLevelData(newLevel: int): else: levelgrid_above.hide() loadLevel(newLevel, self) - + func loadLevel(level: int, grid: GridContainer): + if mapData.is_empty(): + print_debug("Tried to load data from an empty mapData dictionary") + return; var newLevelData: Array = mapData.levels[level] var i: int = 0 # If any data exists on this level, we load it @@ -165,26 +223,57 @@ func change_level(newlevel: int) -> void: # We need to add 10 since the scrollbar starts at -10 func _on_level_scrollbar_value_changed(value): change_level(10+0-value) - + #This function takes two coordinates representing a rectangle. It will check which of the TileGrid's children's position falls inside this rectangle. It returns all the child tiles that fall inside this rectangle +#func get_tiles_in_rectangle(rect_start: Vector2, rect_end: Vector2) -> Array: + #var tiles_in_rectangle: Array = [] + # + ## Normalize the rectangle coordinates + #var normalized_start = Vector2(min(rect_start.x, rect_end.x), min(rect_start.y, rect_end.y)) + #var normalized_end = Vector2(max(rect_start.x, rect_end.x), max(rect_start.y, rect_end.y)) + # + #for tile in get_children(): + #var tile_pos = tile.global_position + mapScrollWindow.global_position + #if tile_pos.x >= normalized_start.x and tile_pos.x <= normalized_end.x: + #if tile_pos.y >= normalized_start.y and tile_pos.y <= normalized_end.y: + #tiles_in_rectangle.append(tile) + #return tiles_in_rectangle + + +# This function takes two coordinates representing a rectangle and the current zoom level. +# It will check which of the TileGrid's children's positions fall inside this rectangle. +# It returns all the child tiles that fall inside this rectangle. func get_tiles_in_rectangle(rect_start: Vector2, rect_end: Vector2) -> Array: var tiles_in_rectangle: Array = [] + + # Normalize the rectangle coordinates + var normalized_start = Vector2(min(rect_start.x, rect_end.x), min(rect_start.y, rect_end.y)) + var normalized_end = Vector2(max(rect_start.x, rect_end.x), max(rect_start.y, rect_end.y)) + + # Adjust the rectangle coordinates based on the zoom level + normalized_start /= mapEditor.zoom_level + normalized_end /= mapEditor.zoom_level + for tile in get_children(): - if tile.global_position.x >= rect_start.x-(1*mapEditor.zoom_level) and tile.global_position.x <= rect_end.x: - if tile.global_position.y >= rect_start.y-(1*mapEditor.zoom_level) and tile.global_position.y <= rect_end.y: + # Calculate the position of the tile accounting for the zoom level + var tile_pos = tile.get_global_position() / mapEditor.zoom_level + # Check if the tile's position is within the normalized rectangle + if tile_pos.x >= normalized_start.x and tile_pos.x <= normalized_end.x: + if tile_pos.y >= normalized_start.y and tile_pos.y <= normalized_end.y: tiles_in_rectangle.append(tile) return tiles_in_rectangle - + + func unhighlight_tiles(): for tile in get_children(): tile.unhighlight() - + func highlight_tiles_in_rect(): unhighlight_tiles() var tiles: Array = get_tiles_in_rectangle(start_point, end_point) for tile in tiles: tile.highlight() - + #Paint every tile in the selected rectangle #We always erase if erase is selected, even if no brush is selected #Only paint if a brush is selected and erase is false @@ -192,10 +281,25 @@ func paint_in_rectangle(): var tiles: Array = get_tiles_in_rectangle(start_point, end_point) if erase: for tile in tiles: - tile.set_default() + if selected_brush: + if selected_brush.entityType == "mob": + tile.set_mob_id("") + elif selected_brush.entityType == "furniture": + tile.set_furniture_id("") + else: + tile.set_tile_id("") + tile.set_rotation_amount(0) + else: + tile.set_default() elif selected_brush: for tile in tiles: - tile.set_texture(selected_brush.get_texture()) + if selected_brush.entityType == "mob": + tile.set_mob_id(selected_brush.tileID) + elif selected_brush.entityType == "furniture": + tile.set_furniture_id(selected_brush.tileID) + else: + tile.set_tile_id(selected_brush.tileID) + tile.set_rotation_amount(rotationAmount) update_rectangle() #The user has pressed the erase toggle button in the editor @@ -207,49 +311,14 @@ func _on_draw_rectangle_toggled(button_pressed): func _on_tilebrush_list_tile_brush_selection_change(tilebrush): selected_brush = tilebrush - - - -#This function takes the TileGrid.mapData property and saves all of it as a json file. The user will get a prompt asking for a file location. -func _on_save_button_button_up(): - var folderName: String = "./Mods/Core" - var fileName: String = "Generichouse.json" - var saveLoc: String = folderName + "/Maps" + "/" + fileName - # Convert the TileGrid.mapData to a JSON string - storeLevelData() - var map_data_json = str(mapData.duplicate()) - - var dir = DirAccess.open(folderName) - dir.make_dir("Maps") - - # Save the JSON string to the selected file location - var file = FileAccess.open(saveLoc, FileAccess.WRITE) - if file: - file.store_string(map_data_json) - else: - print_debug("Unable to write file " + saveLoc) - -func _on_load_button_button_up(): - var folderName: String = "./Mods/Core" - var fileName: String = "Generichouse.json" - var loadLoc: String = folderName + "/Maps" + "/" + fileName - # Convert the tileGrid.mapData to a JSON string - storeLevelData() - - var dir = DirAccess.open(folderName) - dir.make_dir("Maps") - - # Save the JSON string to the selected file location - var file = FileAccess.open(loadLoc, FileAccess.READ) - if file: - var map_data_json: Dictionary - map_data_json = JSON.parse_string(file.get_as_text()) - mapData = map_data_json + update_preview_texture() +func update_preview_texture(): + if selected_brush: + brushPreviewTexture.texture = selected_brush.get_texture() + brushPreviewTexture.visible = true else: - print_debug("Unable to load file " + loadLoc) - - + brushPreviewTexture.visible = false func _on_show_below_toggled(button_pressed): showBelow = button_pressed @@ -258,10 +327,135 @@ func _on_show_below_toggled(button_pressed): else: levelgrid_below.hide() - func _on_show_above_toggled(button_pressed): showAbove = button_pressed if showAbove: levelgrid_above.show() else: levelgrid_above.hide() + +#This function takes the mapData property and saves all of it as a json file. +func save_map_json_file(): + # Convert the TileGrid.mapData to a JSON string + storeLevelData() + var map_data_json = JSON.stringify(mapData.duplicate(), "\t") + Helper.json_helper.write_json_file(mapEditor.contentSource, map_data_json) + +func load_map_json_file(): + var fileToLoad: String = mapEditor.contentSource + mapData = Helper.json_helper.load_json_dictionary_file(fileToLoad) + + +func _on_zoom_level_changed(zoom_level: int): + # Calculate the new scale based on zoom level + var scale_factor = zoom_level * 0.01 + brushPreviewTexture.scale = Vector2(scale_factor, scale_factor) + brushPreviewTexture.pivot_offset = brushPreviewTexture.size / 2 + for tile in get_children(): + tile.set_scale_amount(1.28*zoom_level) + for tile in levelgrid_below.get_children(): + tile.set_scale_amount(1.28*zoom_level) + for tile in levelgrid_above.get_children(): + tile.set_scale_amount(1.28*zoom_level) + + +# When the user releases the mouse button on the rotate right button +func _on_rotate_right_button_up(): + rotationAmount += 90 + rotationAmount = rotationAmount % 360 # Keep rotation within 0-359 degrees + buttonRotateRight.text = str(rotationAmount) + brushPreviewTexture.rotation_degrees = rotationAmount + brushPreviewTexture.pivot_offset = brushPreviewTexture.size / 2 + + +# Function to create a 128x128 miniature map of the current level +func create_miniature_map_image() -> Image: + var map_width = mapEditor.mapWidth + var map_height = mapEditor.mapHeight + var tile_width = int(128 / map_width) # Calculate tile width for the miniature map + var tile_height = int(128 / map_height) # Calculate tile height for the miniature map + + # Create a new Image with a size of 128x128 pixels + var image = Image.create(128, 128, false, Image.FORMAT_RGBA8) + + # Iterate through each tile in the current level and draw it into the image + for x in range(map_width): + for y in range(map_height): + var tile = get_child(y * map_width + x) + var tile_texture = tile.get_tile_texture() + var tile_image = tile_texture.get_image() + # Resize the tile image to fit the miniature map + tile_image.resize(tile_width, tile_height) + # Convert the tile image to the same format as the main image + tile_image.convert(Image.FORMAT_RGBA8) + # Draw the resized tile image onto the main image + image.blit_rect(tile_image, Rect2(Vector2(), \ + tile_image.get_size()), Vector2(x * tile_width, y * tile_height)) + return image + +# Function to create and save a 128x128 miniature map of the current level +func save_miniature_map_image(): + # Call the function to create the image texture + var image_texture = create_miniature_map_image() + var image = image_texture + # Save the image to a file + var file_name = mapEditor.contentSource.get_file().replace("json", "png") + var file_path = Gamedata.data.maps.spritePath + file_name + image.save_png(file_path) + +func _on_create_preview_image_button_button_up(): + save_miniature_map_image() + + +# This function will loop over all levels and rotate them if they contain tile data. +func rotate_map(): + # Store the data of the current level before rotating the map + storeLevelData() + + for i in range(mapData.levels.size()): + # Load each level's data into currentLevelData + currentLevelData = mapData.levels[i] + # Rotate the current level data + rotate_level_clockwise() + # Update the rotated data back into the mapData + mapData.levels[i] = currentLevelData.duplicate() + + # After rotation, reload the current level's data + loadLevelData(currentLevel) + + +# Rotates the current level 90 degrees clockwise. +func rotate_level_clockwise(): + # Check if currentLevelData has at least one item + if !currentLevelData.size() > 0: + return + var width = mapEditor.mapWidth + var height = mapEditor.mapHeight + var new_level_data: Array[Dictionary] = [] + + # Initialize new_level_data with empty dictionaries + for i in range(width * height): + new_level_data.append({}) + + # Rotate the tile data + for x in range(width): + for y in range(height): + var old_index = y * width + x + var new_x = width - y - 1 + var new_y = x + var new_index = new_y * width + new_x + new_level_data[new_index] = currentLevelData[old_index].duplicate() + + # Add rotation to the tile's data if it has an id + if new_level_data[new_index].has("id"): + var tile_rotation = int(new_level_data[new_index].get("rotation", 0)) + new_level_data[new_index]["rotation"] = (tile_rotation + 90) % 360 + + # Rotate furniture if present, initializing rotation to 0 if not set + if new_level_data[new_index].has("furniture"): + var furniture_rotation = int(new_level_data[new_index].get("furniture").get("rotation", 0)) + new_level_data[new_index]["furniture"]["rotation"] = (furniture_rotation + 90) % 360 + + + # Update the current level data + currentLevelData = new_level_data diff --git a/Scenes/ContentManager/Mapeditor/Scripts/TilebrushList.gd b/Scenes/ContentManager/Mapeditor/Scripts/TilebrushList.gd index 02513572..71d43cd2 100644 --- a/Scenes/ContentManager/Mapeditor/Scripts/TilebrushList.gd +++ b/Scenes/ContentManager/Mapeditor/Scripts/TilebrushList.gd @@ -1,6 +1,9 @@ -extends HFlowContainer +extends VBoxContainer -@onready var tileBrush: PackedScene = preload("res://Scenes/ContentManager/Mapeditor/tilebrush.tscn") +@export var scrolling_Flow_Container: PackedScene = null +@export var tileBrush: PackedScene = null + +var instanced_brushes: Array[Node] = [] signal tile_brush_selection_change(tilebrush: Control) var selected_brush: Control: @@ -9,37 +12,98 @@ var selected_brush: Control: tile_brush_selection_change.emit(selected_brush) func _ready(): + loadMobs() loadTiles() + loadFurniture() -# this function will read all files in "res://Mods/Core/Tiles/" and for each file it will create a texturerect and assign the file as the texture of the texturerect. Then it will add the texturerect as a child to $HSplitContainer/EntitiesContainer/TilesList +# this function will read all files in Gamedata.data.tiles.data and creates tilebrushes for each tile in the list. It will make separate lists for each category that the tiles belong to. +func loadMobs(): + var mobList: Array = Gamedata.data.mobs.data + var newMobsList: Control = scrolling_Flow_Container.instantiate() + newMobsList.header = "Mobs" + add_child(newMobsList) + for item in mobList: + if item.has("sprite"): + var imagefileName: String = item["sprite"] + imagefileName = imagefileName.get_file() + # Get the texture from gamedata + var texture: Resource = Gamedata.data.mobs.sprites[imagefileName] + # Create a TextureRect node + var brushInstance = tileBrush.instantiate() + # Assign the texture to the TextureRect + brushInstance.set_tile_texture(texture) + # Since the map editor needs to knw what tile ID is used, + # We store the tile id in a variable in the brush + brushInstance.tileID = item.id + brushInstance.tilebrush_clicked.connect(tilebrush_clicked) + brushInstance.entityType = "mob" + # Add the TextureRect as a child to the TilesList + newMobsList.add_content_item(brushInstance) + instanced_brushes.append(brushInstance) + +func loadFurniture(): + var furnitureList: Array = Gamedata.data.furniture.data + var newFurnitureList: Control = scrolling_Flow_Container.instantiate() + newFurnitureList.header = "Furniture" + add_child(newFurnitureList) + + for item in furnitureList: + if item.has("sprite"): + var imagefileName: String = item["sprite"] + imagefileName = imagefileName.get_file() + var texture: Resource = Gamedata.data.furniture.sprites[imagefileName] + var brushInstance = tileBrush.instantiate() + brushInstance.set_tile_texture(texture) + brushInstance.tileID = item.id + brushInstance.tilebrush_clicked.connect(tilebrush_clicked) + brushInstance.entityType = "furniture" + newFurnitureList.add_content_item(brushInstance) + instanced_brushes.append(brushInstance) + + +# this function will read all files in Gamedata.data.tiles.data and creates tilebrushes for each tile in the list. It will make separate lists for each category that the tiles belong to. func loadTiles(): - var tilesDir = "res://Mods/Core/Tiles/" + var tileList: Array = Gamedata.data.tiles.data + + for item in tileList: + if item.has("sprite"): + #We need to put the tiles the right catecory + #Each tile can have 0 or more categories + for category in item["categories"]: + #Check if the category was already added + var newTilesList: Control = find_list_by_category(category) + if !newTilesList: + newTilesList = scrolling_Flow_Container.instantiate() + newTilesList.header = category + add_child(newTilesList) + var imagefileName: String = item["sprite"] + imagefileName = imagefileName.get_file() + # Get the texture from gamedata + var texture: Resource = Gamedata.data.tiles.sprites[imagefileName].albedo_texture + # Create a TextureRect node + var brushInstance = tileBrush.instantiate() + # Assign the texture to the TextureRect + brushInstance.set_tile_texture(texture) + # Since the map editor needs to knw what tile ID is used, + # We store the tile id in a variable in the brush + brushInstance.tileID = item.id + brushInstance.tilebrush_clicked.connect(tilebrush_clicked) + + # Add the TextureRect as a child to the TilesList + newTilesList.add_content_item(brushInstance) + instanced_brushes.append(brushInstance) + +#Find the list associated with the category +func find_list_by_category(category: String) -> Control: + var currentCategories: Array[Node] = get_children() + var categoryFound: Control = null + #Check if the category was already added + for categoryList in currentCategories: + if categoryList.header == category: + categoryFound = categoryList + break + return categoryFound - var dir = DirAccess.open(tilesDir) - if dir: - dir.list_dir_begin() - var file_name = dir.get_next() - while file_name != "": - var extension = file_name.get_extension() - - if !dir.current_is_dir(): - if extension == "png": - # Create a TextureRect node - var brushInstance = tileBrush.instantiate() - - # Load the texture from file - var texture: Resource = load(tilesDir + file_name) - - # Assign the texture to the TextureRect - brushInstance.set_tile_texture(texture) - brushInstance.tilebrush_clicked.connect(tilebrush_clicked) - - # Add the TextureRect as a child to the TilesList - add_child(brushInstance) - file_name = dir.get_next() - else: - print_debug("An error occurred when trying to access the path.") - dir.list_dir_end() #Mark the clicked tilebrush as selected, but only after deselecting all other brushes func tilebrush_clicked(tilebrush: Control) -> void: @@ -47,11 +111,10 @@ func tilebrush_clicked(tilebrush: Control) -> void: # If the clicked brush was not select it, we select it. Otherwise we deselect it if selected_brush != tilebrush: selected_brush = tilebrush - selected_brush.modulate = Color(0.227, 0.635, 0.757) + selected_brush.set_selected(true) else: selected_brush = null func deselect_all_brushes(): - var children = get_children() - for child in children: - child.modulate = Color(1,1,1) + for child in instanced_brushes: + child.set_selected(false) diff --git a/Scenes/ContentManager/Mapeditor/Scripts/mapeditor.gd b/Scenes/ContentManager/Mapeditor/Scripts/mapeditor.gd index c644e359..88895f3a 100644 --- a/Scenes/ContentManager/Mapeditor/Scripts/mapeditor.gd +++ b/Scenes/ContentManager/Mapeditor/Scripts/mapeditor.gd @@ -1,23 +1,29 @@ extends Control +@export var panWindow: Control = null +@export var mapScrollWindow: ScrollContainer = null +@export var gridContainer: ColorRect = null +@export var tileGrid: GridContainer = null + signal zoom_level_changed(value: int) var tileSize: int = 128 var mapHeight: int = 32 var mapWidth: int = 32 +var contentSource: String = "": + set(newSource): + contentSource = newSource + tileGrid.load_map_json_file() -@export var panWindow: Control = null -@export var mapScrollWindow: ScrollContainer = null -@export var gridContainer: ColorRect = null var zoom_level: int = 20: set(val): zoom_level = val - adjust_scale(zoom_level) zoom_level_changed.emit(zoom_level) func _ready(): setPanWindowSize() + zoom_level = 20 func setPanWindowSize(): var panWindowWidth: float = 0.8*tileSize*mapWidth @@ -48,10 +54,6 @@ func _on_map_scroll_window_ready(): await get_tree().create_timer(0.5).timeout mapScrollWindow.scroll_horizontal = int(panWindow.custom_minimum_size.x/3.5) mapScrollWindow.scroll_vertical = int(panWindow.custom_minimum_size.y/3.5) - adjust_scale(20) - -func adjust_scale(zoom: int): - gridContainer.custom_minimum_size = Vector2(mapWidth*1.28*zoom, mapHeight*1.28*zoom) func _on_zoom_scroller_zoom_level_changed(value): zoom_level = value @@ -59,3 +61,11 @@ func _on_zoom_scroller_zoom_level_changed(value): func _on_tile_grid_zoom_level_changed(value): zoom_level = value +#The editor is closed, destroy the instance +#TODO: Check for unsaved changes +func _on_close_button_button_up(): + queue_free() + + +func _on_rotate_map_button_up(): + tileGrid.rotate_map() diff --git a/Scenes/ContentManager/Mapeditor/Scripts/mapeditortile.gd b/Scenes/ContentManager/Mapeditor/Scripts/mapeditortile.gd index 9de9cd17..51251ceb 100644 --- a/Scenes/ContentManager/Mapeditor/Scripts/mapeditortile.gd +++ b/Scenes/ContentManager/Mapeditor/Scripts/mapeditortile.gd @@ -1,15 +1,36 @@ extends Control -const defaultTileData: Dictionary = {"texture": "", "rotation": 0} +#If a tile has no data, we save an empty object. Tiledata can have: +# id, rotation, mob +const defaultTileData: Dictionary = {} const defaultTexture: String = "res://Scenes/ContentManager/Mapeditor/Images/emptyTile.png" const aboveTexture: String = "res://Scenes/ContentManager/Mapeditor/Images/tileAbove.png" var tileData: Dictionary = defaultTileData.duplicate(): set(data): tileData = data - if tileData.texture != "": - $TextureRect.texture = load("res://Mods/Core/Tiles/" + tileData.texture) + if tileData.has("id") and tileData.id != "": + $TileSprite.texture = Gamedata.get_sprite_by_id(Gamedata.data.tiles,\ + tileData.id).albedo_texture + if tileData.has("rotation"): + set_rotation_amount(tileData.rotation) + $MobFurnitureSprite.hide() + $MobFurnitureSprite.rotation_degrees = 0 + if tileData.has("mob"): + if tileData.mob.has("rotation"): + $MobFurnitureSprite.rotation_degrees = tileData.mob.rotation + $MobFurnitureSprite.texture = Gamedata.get_sprite_by_id(Gamedata.data.mobs,\ + tileData.mob.id) + $MobFurnitureSprite.show() + elif tileData.has("furniture"): + if tileData.furniture.has("rotation"): + $MobFurnitureSprite.rotation_degrees = tileData.furniture.rotation + $MobFurnitureSprite.texture = Gamedata.get_sprite_by_id(\ + Gamedata.data.furniture, tileData.furniture.id) + $MobFurnitureSprite.show() else: - $TextureRect.texture = load(defaultTexture) + $TileSprite.texture = load(defaultTexture) + $MobFurnitureSprite.texture = null + $MobFurnitureSprite.hide() signal tile_clicked(clicked_tile: Control) func _on_texture_rect_gui_input(event: InputEvent) -> void: @@ -19,10 +40,71 @@ func _on_texture_rect_gui_input(event: InputEvent) -> void: if event.pressed: tile_clicked.emit(self) -func set_texture(res: Resource) -> void: - $TextureRect.texture = res - var path: String = res.resource_path - tileData.texture = path.replace("res://Mods/Core/Tiles/","") +func set_rotation_amount(amount: int) -> void: + $TileSprite.rotation_degrees = amount + if amount == 0: + tileData.erase("rotation") + else: + tileData.rotation = amount + +func get_rotation_amount() -> int: + return $TileSprite.rotation_degrees + +func set_scale_amount(scaleAmount: int) -> void: + custom_minimum_size.x = scaleAmount + custom_minimum_size.y = scaleAmount + +func set_tile_id(id: String) -> void: + if id == "": + tileData.erase("id") + $TileSprite.texture = load(defaultTexture) + else: + tileData.id = id + $TileSprite.texture = Gamedata.get_sprite_by_id(Gamedata.data.tiles, id).albedo_texture + +func set_mob_id(id: String) -> void: + if id == "": + tileData.erase("mob") + if !tileData.has("furniture"): + $MobFurnitureSprite.hide() + else: + # A tile can either have a mob or furniture. If we add a mob, remove furniture + tileData.erase("furniture") + if tileData.has("mob"): + tileData.mob.id = id + else: + tileData.mob = {"id": id} + $MobFurnitureSprite.texture = Gamedata.get_sprite_by_id(Gamedata.data.mobs, id) + $MobFurnitureSprite.show() + +func set_furniture_id(id: String) -> void: + if id == "": + tileData.erase("furniture") + if !tileData.has("mob"): + $MobFurnitureSprite.hide() + else: + # A tile can either have a mob or furniture. If we add furniture, remove the mob + tileData.erase("mob") + if tileData.has("furniture"): + tileData.furniture.id = id + else: + tileData.furniture = {"id": id} + $MobFurnitureSprite.texture = Gamedata.get_sprite_by_id(Gamedata.data.furniture, id) + $MobFurnitureSprite.show() + +func set_mob_rotation(rotationDegrees): + $MobFurnitureSprite.rotation_degrees = rotationDegrees + if rotationDegrees == 0: + tileData.mob.erase("rotation") + else: + tileData.mob.rotation = rotationDegrees + +func set_furniture_rotation(rotationDegrees): + $MobFurnitureSprite.rotation_degrees = rotationDegrees + if rotationDegrees == 0: + tileData.furniture.erase("rotation") + else: + tileData.furniture.rotation = rotationDegrees func _on_texture_rect_mouse_entered() -> void: if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): @@ -32,20 +114,30 @@ func set_default() -> void: tileData = defaultTileData.duplicate() func highlight() -> void: - $TextureRect.modulate = Color(0.227, 0.635, 0.757) - + $TileSprite.modulate = Color(0.227, 0.635, 0.757) + func unhighlight() -> void: - $TextureRect.modulate = Color(1,1,1) - + $TileSprite.modulate = Color(1,1,1) + func set_clickable(clickable: bool): if !clickable: mouse_filter = MOUSE_FILTER_IGNORE - $TextureRect.mouse_filter = MOUSE_FILTER_IGNORE + $TileSprite.mouse_filter = MOUSE_FILTER_IGNORE + $MobFurnitureSprite.mouse_filter = MOUSE_FILTER_IGNORE #This function sets the texture to some static resource that helps the user visualize that something is above #If this tile has a texture in its data, set it to the above texture instead func set_above(): - if tileData.texture != "": - $TextureRect.texture = load(aboveTexture) + $MobFurnitureSprite.texture = null + $MobFurnitureSprite.hide() + if tileData.has("id") and tileData.id != "": + $TileSprite.texture = load(aboveTexture) else: - $TextureRect.texture = null + $TileSprite.texture = null + +func _on_texture_rect_resized(): + $TileSprite.pivot_offset = size / 2 + $MobFurnitureSprite.pivot_offset = size / 2 + +func get_tile_texture(): + return $TileSprite.texture diff --git a/Scenes/ContentManager/Mapeditor/Scripts/tilebrush.gd b/Scenes/ContentManager/Mapeditor/Scripts/tilebrush.gd index 7437278e..4c174129 100644 --- a/Scenes/ContentManager/Mapeditor/Scripts/tilebrush.gd +++ b/Scenes/ContentManager/Mapeditor/Scripts/tilebrush.gd @@ -1,15 +1,25 @@ extends Control signal tilebrush_clicked(clicked_tile: Control) +var tileID: String = "" +var selected: bool = false +var entityType: String = "tile" #When the event was a left mouse button press, adjust the modulate property of the $TileSprite to be 3aa2c1 func _on_texture_rect_gui_input(event): if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: tilebrush_clicked.emit(self) - + func set_tile_texture(res: Resource) -> void: $TileSprite.texture = res - + func get_texture() -> Resource: return $TileSprite.texture - + +#Mark the clicked tilebrush as selected +func set_selected(is_selected: bool) -> void: + selected = is_selected + if selected: + modulate = Color(0.227, 0.635, 0.757) + else: + modulate = Color(1,1,1) diff --git a/Scenes/ContentManager/Mapeditor/mapeditor.tscn b/Scenes/ContentManager/Mapeditor/mapeditor.tscn index d0e9af58..2eee8025 100644 --- a/Scenes/ContentManager/Mapeditor/mapeditor.tscn +++ b/Scenes/ContentManager/Mapeditor/mapeditor.tscn @@ -1,10 +1,23 @@ -[gd_scene load_steps=8 format=3 uid="uid://d3001f5xxpup1"] +[gd_scene load_steps=23 format=3 uid="uid://d3001f5xxpup1"] [ext_resource type="Script" path="res://Scenes/ContentManager/Mapeditor/Scripts/mapeditor.gd" id="1_0c7s4"] [ext_resource type="PackedScene" uid="uid://bswccbbg6ijep" path="res://Scenes/ContentManager/Mapeditor/Toolbar/mapeditorzoomscroller.tscn" id="1_0ytmu"] +[ext_resource type="Texture2D" uid="uid://dd700uhgg8oly" path="res://Images/Icons/IconCameraUnchecked.png" id="2_bib5l"] [ext_resource type="Script" path="res://Scenes/ContentManager/Mapeditor/Scripts/GridContainer.gd" id="2_sf17m"] +[ext_resource type="Texture2D" uid="uid://b6m2bbbpmsyik" path="res://Images/Icons/IconRotateRightDark.png" id="3_8q2iq"] +[ext_resource type="Texture2D" uid="uid://cxhp6hye2ufp2" path="res://Images/Icons/IconRectangleUnchecked.png" id="3_70koh"] +[ext_resource type="Texture2D" uid="uid://5fsf8rh6w0pb" path="res://Images/Icons/IconRectangleChecked.png" id="3_eu7pp"] [ext_resource type="Script" path="res://Scenes/ContentManager/Mapeditor/Scripts/Levelscroller.gd" id="3_i1qbw"] +[ext_resource type="PackedScene" uid="uid://3x0kjiu7lqg7" path="res://Scenes/ContentManager/Mapeditor/mapeditortile.tscn" id="4_lqbjy"] [ext_resource type="Script" path="res://Scenes/ContentManager/Mapeditor/Scripts/TilebrushList.gd" id="5_he816"] +[ext_resource type="Texture2D" uid="uid://7pbgyyv6lna1" path="res://Images/Icons/IconEraserChecked.png" id="5_n3fyt"] +[ext_resource type="Texture2D" uid="uid://hik7bkdfc51t" path="res://Images/Icons/IconEraserUnchecked.png" id="6_6lnwx"] +[ext_resource type="PackedScene" uid="uid://be62h2ytgw2kb" path="res://Scenes/ContentManager/Custom_Widgets/Scrolling_Flow_Container.tscn" id="6_onaby"] +[ext_resource type="Texture2D" uid="uid://kjsnbbs2o68u" path="res://Images/Icons/IconArrowDownChecked.png" id="7_s4wos"] +[ext_resource type="PackedScene" uid="uid://cccnrdolr1bfo" path="res://Scenes/ContentManager/Mapeditor/tilebrush.tscn" id="8_o4x7s"] +[ext_resource type="Texture2D" uid="uid://bsxgq272ca2kw" path="res://Images/Icons/IconArrowDownUnchecked.png" id="8_xcusj"] +[ext_resource type="Texture2D" uid="uid://dk8cdxff84idk" path="res://Images/Icons/IconArrowUpChecked.png" id="9_etume"] +[ext_resource type="Texture2D" uid="uid://biircfcjvj7lp" path="res://Images/Icons/IconArrowUpUnchecked.png" id="10_0rhye"] [sub_resource type="Gradient" id="Gradient_x1sdl"] @@ -12,7 +25,15 @@ gradient = SubResource("Gradient_x1sdl") width = 24 -[node name="mapeditor" type="Control" node_paths=PackedStringArray("panWindow", "mapScrollWindow", "gridContainer")] +[sub_resource type="InputEventKey" id="InputEventKey_nrfa0"] +device = -1 +keycode = 82 +unicode = 114 + +[sub_resource type="Shortcut" id="Shortcut_1tryc"] +events = [SubResource("InputEventKey_nrfa0")] + +[node name="mapeditor" type="Control" node_paths=PackedStringArray("panWindow", "mapScrollWindow", "gridContainer", "tileGrid")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -23,6 +44,7 @@ script = ExtResource("1_0c7s4") panWindow = NodePath("HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow") mapScrollWindow = NodePath("HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow") gridContainer = NodePath("HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer") +tileGrid = NodePath("HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid") [node name="HSplitContainer" type="HSplitContainer" parent="."] layout_mode = 1 @@ -44,62 +66,67 @@ custom_minimum_size = Vector2(0, 24) layout_mode = 2 size_flags_stretch_ratio = 0.05 -[node name="ZoomScroller" parent="HSplitContainer/MapeditorContainer/Toolbar" instance=ExtResource("1_0ytmu")] +[node name="CloseButton" type="Button" parent="HSplitContainer/MapeditorContainer/Toolbar"] layout_mode = 2 size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.15 +text = "Close" -[node name="mapsizelabel" type="Label" parent="HSplitContainer/MapeditorContainer/Toolbar"] -layout_mode = 2 -text = "Size: W:" - -[node name="MapWidth" type="TextEdit" parent="HSplitContainer/MapeditorContainer/Toolbar"] -clip_contents = true -custom_minimum_size = Vector2(40, 22) +[node name="SaveButton" type="Button" parent="HSplitContainer/MapeditorContainer/Toolbar"] layout_mode = 2 -theme_override_constants/line_spacing = 0 -theme_override_font_sizes/font_size = 16 -text = "32" +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.15 +text = "Save" -[node name="MapHeightLabel" type="Label" parent="HSplitContainer/MapeditorContainer/Toolbar"] +[node name="CreatePreviewImageButton" type="CheckBox" parent="HSplitContainer/MapeditorContainer/Toolbar"] layout_mode = 2 -text = "H:" +tooltip_text = "Creates a miniature image of the map in the /mods/core/maps folder. The file name will be the ID of the map + png. " +theme_override_icons/checked = ExtResource("2_bib5l") +theme_override_icons/unchecked = ExtResource("2_bib5l") -[node name="MapHeight" type="TextEdit" parent="HSplitContainer/MapeditorContainer/Toolbar"] -clip_contents = true -custom_minimum_size = Vector2(40, 22) +[node name="RotateMap" type="CheckBox" parent="HSplitContainer/MapeditorContainer/Toolbar"] layout_mode = 2 -theme_override_constants/line_spacing = 0 -theme_override_font_sizes/font_size = 16 -text = "32" +tooltip_text = "Rotate the brush to paint with rotation" +theme_override_icons/checked = ExtResource("3_8q2iq") +theme_override_icons/unchecked = ExtResource("3_8q2iq") +shortcut = SubResource("Shortcut_1tryc") +text = "0" -[node name="SaveButton" type="Button" parent="HSplitContainer/MapeditorContainer/Toolbar"] +[node name="ZoomScroller" parent="HSplitContainer/MapeditorContainer/Toolbar" instance=ExtResource("1_0ytmu")] layout_mode = 2 size_flags_horizontal = 3 -size_flags_stretch_ratio = 0.15 -text = "Save" -[node name="LoadButton" type="Button" parent="HSplitContainer/MapeditorContainer/Toolbar"] +[node name="RotateRight" type="CheckBox" parent="HSplitContainer/MapeditorContainer/Toolbar"] layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 0.15 -text = "Load" +tooltip_text = "Rotate the brush to paint with rotation" +theme_override_icons/checked = ExtResource("3_8q2iq") +theme_override_icons/unchecked = ExtResource("3_8q2iq") +shortcut = SubResource("Shortcut_1tryc") +text = "0" [node name="DrawRectangle" type="CheckBox" parent="HSplitContainer/MapeditorContainer/Toolbar"] layout_mode = 2 -text = "Rectangle" +tooltip_text = "Paint in a rectangle" +theme_override_icons/checked = ExtResource("3_eu7pp") +theme_override_icons/unchecked = ExtResource("3_70koh") [node name="Erase" type="CheckBox" parent="HSplitContainer/MapeditorContainer/Toolbar"] layout_mode = 2 -text = "Erase" +tooltip_text = "Erase tiles on the map" +theme_override_icons/checked = ExtResource("5_n3fyt") +theme_override_icons/unchecked = ExtResource("6_6lnwx") [node name="ShowBelow" type="CheckBox" parent="HSplitContainer/MapeditorContainer/Toolbar"] layout_mode = 2 -text = "Below" +tooltip_text = "Show the level below" +theme_override_icons/checked = ExtResource("7_s4wos") +theme_override_icons/unchecked = ExtResource("8_xcusj") [node name="ShowAbove" type="CheckBox" parent="HSplitContainer/MapeditorContainer/Toolbar"] layout_mode = 2 -text = "Above -" +tooltip_text = "Show the level above" +theme_override_icons/checked = ExtResource("9_etume") +theme_override_icons/unchecked = ExtResource("10_0rhye") [node name="HBoxContainer" type="HBoxContainer" parent="HSplitContainer/MapeditorContainer"] layout_mode = 2 @@ -126,7 +153,7 @@ grow_horizontal = 2 grow_vertical = 2 color = Color(0.313726, 0.313726, 0.313726, 1) -[node name="TileGrid" type="GridContainer" parent="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer" node_paths=PackedStringArray("mapEditor", "LevelScrollBar", "levelgrid_below", "levelgrid_above")] +[node name="TileGrid" type="GridContainer" parent="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer" node_paths=PackedStringArray("mapEditor", "LevelScrollBar", "levelgrid_below", "levelgrid_above", "mapScrollWindow", "brushPreviewTexture", "buttonRotateRight")] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -137,13 +164,17 @@ theme_override_constants/h_separation = 0 theme_override_constants/v_separation = 0 columns = 32 script = ExtResource("2_sf17m") +tileScene = ExtResource("4_lqbjy") mapEditor = NodePath("../../../../../../..") LevelScrollBar = NodePath("../../../../Levelscroller/LevelScrollbar") levelgrid_below = NodePath("../Level_Below") levelgrid_above = NodePath("../Level_Above") +mapScrollWindow = NodePath("../../..") +brushPreviewTexture = NodePath("../../../../../../../BrushPreviewTexture") +buttonRotateRight = NodePath("../../../../../Toolbar/RotateRight") [node name="Level_Below" type="GridContainer" parent="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer"] -modulate = Color(1, 1, 1, 0.0980392) +modulate = Color(1, 1, 1, 0.117647) layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -151,6 +182,8 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 +theme_override_constants/h_separation = 0 +theme_override_constants/v_separation = 0 columns = 32 [node name="Level_Above" type="GridContainer" parent="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer"] @@ -162,6 +195,8 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 +theme_override_constants/h_separation = 0 +theme_override_constants/v_separation = 0 columns = 32 [node name="Levelscroller" type="VBoxContainer" parent="HSplitContainer/MapeditorContainer/HBoxContainer"] @@ -195,23 +230,25 @@ rounded = true layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.2 - -[node name="ScrollContainer" type="ScrollContainer" parent="HSplitContainer/EntitiesContainer"] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="TilebrushList" type="HFlowContainer" parent="HSplitContainer/EntitiesContainer/ScrollContainer"] -clip_contents = true -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 script = ExtResource("5_he816") +scrolling_Flow_Container = ExtResource("6_onaby") +tileBrush = ExtResource("8_o4x7s") + +[node name="BrushPreviewTexture" type="TextureRect" parent="."] +visible = false +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 [connection signal="ready" from="." to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_mapeditor_ready"] [connection signal="zoom_level_changed" from="." to="HSplitContainer/MapeditorContainer/Toolbar/ZoomScroller" method="_on_mapeditor_zoom_level_changed"] +[connection signal="zoom_level_changed" from="." to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_zoom_level_changed"] +[connection signal="button_up" from="HSplitContainer/MapeditorContainer/Toolbar/CloseButton" to="." method="_on_close_button_button_up"] +[connection signal="button_up" from="HSplitContainer/MapeditorContainer/Toolbar/SaveButton" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="save_map_json_file"] +[connection signal="button_up" from="HSplitContainer/MapeditorContainer/Toolbar/CreatePreviewImageButton" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_create_preview_image_button_button_up"] +[connection signal="button_up" from="HSplitContainer/MapeditorContainer/Toolbar/RotateMap" to="." method="_on_rotate_map_button_up"] [connection signal="zoom_level_changed" from="HSplitContainer/MapeditorContainer/Toolbar/ZoomScroller" to="." method="_on_zoom_scroller_zoom_level_changed"] -[connection signal="button_up" from="HSplitContainer/MapeditorContainer/Toolbar/SaveButton" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_save_button_button_up"] -[connection signal="button_up" from="HSplitContainer/MapeditorContainer/Toolbar/LoadButton" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_load_button_button_up"] +[connection signal="button_up" from="HSplitContainer/MapeditorContainer/Toolbar/RotateRight" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_rotate_right_button_up"] [connection signal="toggled" from="HSplitContainer/MapeditorContainer/Toolbar/DrawRectangle" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_draw_rectangle_toggled"] [connection signal="toggled" from="HSplitContainer/MapeditorContainer/Toolbar/Erase" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_erase_toggled"] [connection signal="toggled" from="HSplitContainer/MapeditorContainer/Toolbar/ShowBelow" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_show_below_toggled"] @@ -220,4 +257,4 @@ script = ExtResource("5_he816") [connection signal="zoom_level_changed" from="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" to="." method="_on_tile_grid_zoom_level_changed"] [connection signal="value_changed" from="HSplitContainer/MapeditorContainer/HBoxContainer/Levelscroller/LevelScrollbar" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_level_scrollbar_value_changed"] [connection signal="value_changed" from="HSplitContainer/MapeditorContainer/HBoxContainer/Levelscroller/LevelScrollbar" to="HSplitContainer/MapeditorContainer/HBoxContainer/Levelscroller" method="_on_level_scrollbar_value_changed"] -[connection signal="tile_brush_selection_change" from="HSplitContainer/EntitiesContainer/ScrollContainer/TilebrushList" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_tilebrush_list_tile_brush_selection_change"] +[connection signal="tile_brush_selection_change" from="HSplitContainer/EntitiesContainer" to="HSplitContainer/MapeditorContainer/HBoxContainer/MapScrollWindow/PanWindow/GridContainer/TileGrid" method="_on_tilebrush_list_tile_brush_selection_change"] diff --git a/Scenes/ContentManager/Mapeditor/mapeditortile.tscn b/Scenes/ContentManager/Mapeditor/mapeditortile.tscn index ddd9d8c2..9d521390 100644 --- a/Scenes/ContentManager/Mapeditor/mapeditortile.tscn +++ b/Scenes/ContentManager/Mapeditor/mapeditortile.tscn @@ -13,7 +13,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 script = ExtResource("1_7fypm") -[node name="TextureRect" type="TextureRect" parent="."] +[node name="TileSprite" type="TextureRect" parent="."] layout_mode = 1 anchors_preset = -1 anchor_right = 1.0 @@ -23,5 +23,19 @@ grow_vertical = 2 texture = ExtResource("2_rued1") expand_mode = 3 -[connection signal="gui_input" from="TextureRect" to="." method="_on_texture_rect_gui_input"] -[connection signal="mouse_entered" from="TextureRect" to="." method="_on_texture_rect_mouse_entered"] +[node name="MobFurnitureSprite" type="TextureRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +expand_mode = 2 +stretch_mode = 4 + +[connection signal="gui_input" from="TileSprite" to="." method="_on_texture_rect_gui_input"] +[connection signal="mouse_entered" from="TileSprite" to="." method="_on_texture_rect_mouse_entered"] +[connection signal="resized" from="TileSprite" to="." method="_on_texture_rect_resized"] +[connection signal="gui_input" from="MobFurnitureSprite" to="." method="_on_texture_rect_gui_input"] +[connection signal="mouse_entered" from="MobFurnitureSprite" to="." method="_on_texture_rect_mouse_entered"] diff --git a/Scenes/ContentManager/Mapeditor/tilebrush.tscn b/Scenes/ContentManager/Mapeditor/tilebrush.tscn index be00e286..9a3e6e98 100644 --- a/Scenes/ContentManager/Mapeditor/tilebrush.tscn +++ b/Scenes/ContentManager/Mapeditor/tilebrush.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://cccnrdolr1bfo"] [ext_resource type="Script" path="res://Scenes/ContentManager/Mapeditor/Scripts/tilebrush.gd" id="1_x2ml4"] -[ext_resource type="Texture2D" uid="uid://ttmfel3ylg0w" path="res://Mods/Core/Tiles/arcstones1.png" id="2_7dvcp"] +[ext_resource type="Texture2D" uid="uid://d0ec7u2d3yqqp" path="res://Mods/Core/Tiles/asphalt_middle_horizontal.png" id="2_0qm6c"] [node name="TileBrush" type="Control"] custom_minimum_size = Vector2(64, 64) @@ -18,7 +18,8 @@ custom_minimum_size = Vector2(64, 64) layout_mode = 0 offset_right = 40.0 offset_bottom = 40.0 -texture = ExtResource("2_7dvcp") -expand_mode = 3 +texture = ExtResource("2_0qm6c") +expand_mode = 2 +stretch_mode = 4 [connection signal="gui_input" from="TileSprite" to="." method="_on_texture_rect_gui_input"] diff --git a/Scenes/ContentManager/Scripts/content_list.gd b/Scenes/ContentManager/Scripts/content_list.gd new file mode 100644 index 00000000..de9eed19 --- /dev/null +++ b/Scenes/ContentManager/Scripts/content_list.gd @@ -0,0 +1,165 @@ +extends Control + +#This scene is a control which lists content from any loaded mods +#It allows users to select content for editing and creating new content +#This node should be used to load everything from one specific json file or one directory +#The json file or directory is specified by setting the source variable +#This node is intended to be used in the content editor + +@export var contentItems: ItemList = null +@export var collapseButton: Button = null +@export var pupup_ID: Popup = null +@export var popup_textedit: TextEdit = null +signal item_activated(data: Array, itemID: String) +var is_collapsed: bool = false +var popupAction: String = "" +var contentData: Dictionary = {}: + set(newData): + contentData = newData + load_data() +var header: String = "Items": + set(newName): + header = newName + collapseButton.text = header + + + +#This function adds items to the content list based on the provided path +#If the path is a directory, it will list all the files in the directory +#If the path is a json file, it will list all the items in the json file +func load_data(): + if contentData.is_empty(): + return + contentItems.clear() + if !contentData.has("data"): + return + if contentData.data.is_empty(): + return + #If the first item is a string, it's a list of files. + #Otherwise, it's a list of objects representing some kind of data + if contentData.data[0] is String: + make_file_list() + else: + make_item_list() + +# Loops over all the items in contentData.data (which are dictionaries) +# Creates a new item in the list with the id of the item as text +func make_item_list(): + for item in contentData.data: + # get the id of the item, "missing_id" if not found + var item_id: String = item.get("id", "missing_id") + #Add the item and save the index number + var item_index: int = contentItems.add_item(item_id) + contentItems.set_item_metadata(item_index, item_id) + + if item.has("sprite") and contentData.sprites.has(item["sprite"]): + var mySprite: Resource = contentData.sprites[item["sprite"]] + if mySprite is BaseMaterial3D: + contentItems.set_item_icon(item_index,mySprite.albedo_texture) + else: + contentItems.set_item_icon(item_index,mySprite) + +# Loops over the files in contentData.data (which are filenames) +# For each file, a new item will be added to the list +func make_file_list() -> void: + for file_name in contentData.data: + # Extract the base name without the extension + var base_name = file_name.get_basename() + + # Add all the filenames to the ContentItems list as child nodes + var item_index: int = contentItems.add_item(base_name) + # Add the ID as metadata which can be used to load the item data + contentItems.set_item_metadata(item_index, base_name) + + # If the file has an image to represent it's content, load it + if contentData.has("sprites") and contentData.sprites.has(base_name + ".png"): + var mySprite: Resource = contentData.sprites[base_name + ".png"] + if mySprite: + contentItems.set_item_icon(item_index, mySprite) + + +# Executed when an item in ContentItems is double-clicked or +# when the user selects an item in ContentItems and presses enter +# Index is the position in the ContentItems list starting from 0 +func _on_content_items_item_activated(index: int): + # Get the id of the item from the metadata + var strItemID: String = contentItems.get_item_metadata(index) + if strItemID: + item_activated.emit(contentData, strItemID) + else: + print_debug("Tried to signal that item with ID (" + str(index) + ") was activated,\ + but the item has no metadata") + +#This function will append an item to the game data +func add_item_to_data(id: String): + Gamedata.add_id_to_data(contentData, id) + load_data() + +#This function will show a pop-up asking the user to input an ID +func _on_add_button_button_up(): + popupAction = "Add" + popup_textedit.text = "" + pupup_ID.show() + +#This function requires that an item from the list is selected +#Once clicked, it will show pupup_ID to ask the user for a new ID +#If the user enters an ID and presses OK, it will read the file from the source variable +#And duplicate the item that has the same ID as the ID that was selected +#The duplicate item will recieve the ID that the user has entered in the popup +#Lastly, the new duplicated item will be added to contentItems +func _on_duplicate_button_button_up(): + var selected_id: String = get_selected_item_text() + if selected_id == "": + return + popupAction = "Duplicate" + popup_textedit.text = selected_id + pupup_ID.show() + + +#Called after the user enters an ID into the popup textbox and presses OK +func _on_ok_button_up(): + pupup_ID.hide() + var myText = popup_textedit.text + if myText == "": + return; + if popupAction == "Add": + Gamedata.add_id_to_data(contentData, myText) + if popupAction == "Duplicate": + # This is true if contentData.data is an array of strings + # Else, it will be an array of dictionaries + if contentData.data[0] is String: + Gamedata.duplicate_file_in_data(contentData,get_selected_item_text(),myText) + else: + Gamedata.duplicate_item_in_data(contentData,get_selected_item_text(),myText) + popupAction = "" + load_data() + +#Called after the users presses cancel on the popup asking for an ID +func _on_cancel_button_up(): + pupup_ID.hide() + popupAction = "" + +#This function requires that an item from the list is selected +#Once clicked, the selected item will be removed from contentItems +#It will also remove the item from the json file specified by source +func _on_delete_button_button_up(): + var selected_id: String = get_selected_item_text() + if selected_id == "": + return + contentItems.remove_item(contentItems.get_selected_items()[0]) + Gamedata.remove_item_from_data(contentData, selected_id) + load_data() + +func get_selected_item_text() -> String: + if !contentItems.is_anything_selected(): + return "" + return contentItems.get_item_text(contentItems.get_selected_items()[0]) + +#This function will collapse and expand the $Content/ContentItems when the collapse button is pressed +func _on_collapse_button_button_up(): + contentItems.visible = is_collapsed + if is_collapsed: + size_flags_vertical = Control.SIZE_EXPAND_FILL + else: + size_flags_vertical = Control.SIZE_SHRINK_BEGIN + is_collapsed = !is_collapsed diff --git a/Scenes/ContentManager/Scripts/contenteditor.gd b/Scenes/ContentManager/Scripts/contenteditor.gd new file mode 100644 index 00000000..f76cbbc2 --- /dev/null +++ b/Scenes/ContentManager/Scripts/contenteditor.gd @@ -0,0 +1,87 @@ +extends Control + +@export var contentList: PackedScene = null +@export var mapEditor: PackedScene = null +@export var tacticalmapEditor: PackedScene = null +@export var terrainTileEditor: PackedScene = null +@export var furnitureEditor: PackedScene = null +@export var itemEditor: PackedScene = null +@export var mobEditor: PackedScene = null +@export var content: VBoxContainer = null +@export var tabContainer: TabContainer = null +var selectedMod: String = "Core" + +# Called when the node enters the scene tree for the first time. +#This function will instatiate a tileScene, set the source property and add it as a child to the content VBoxContainer. The source property should be set to "./Mods/Core/Maps/" +func _ready(): + load_content_list(Gamedata.data.tacticalmaps, "Tactical Maps") + load_content_list(Gamedata.data.maps, "Maps") + load_content_list(Gamedata.data.items, "Items") + load_content_list(Gamedata.data.tiles, "Terrain Tiles") + load_content_list(Gamedata.data.mobs, "Mobs") + load_content_list(Gamedata.data.furniture, "Furniture") + +func load_content_list(data: Dictionary, strHeader: String): + # Instantiate a contentlist + var contentListInstance: Control = contentList.instantiate() + + # Set the source property + contentListInstance.contentData = data + contentListInstance.header = strHeader + contentListInstance.connect("item_activated", _on_content_item_activated) + + # Add it as a child to the content VBoxContainer + content.add_child(contentListInstance) + +func _on_back_button_button_up(): + get_tree().change_scene_to_file("res://Scenes/ContentManager/contentmanager.tscn") + +#The user has doubleclicked or pressed enter on one of the items in the content lists +#Depending on wether the source is a JSON file, we are going to load the relevant content +#If strSource is a json file, we load an item from this file with the ID of itemText +#If the strSource is not a json file, we will assume it's a directory. +#If it's a directory, we will load the entire json file with the name of the item ID +func _on_content_item_activated(data: Dictionary, itemID: String): + if data.is_empty() or itemID == "": + print_debug("Tried to load the selected contentitem, but either \ + data (Array) or itemID ("+itemID+") is empty") + return + if data == Gamedata.data.tiles: + instantiate_editor(data, itemID, terrainTileEditor) + if data == Gamedata.data.furniture: + instantiate_editor(data, itemID, furnitureEditor) + if data == Gamedata.data.items: + instantiate_editor(data, itemID, itemEditor) + if data == Gamedata.data.mobs: + instantiate_editor(data, itemID, mobEditor) + if data == Gamedata.data.maps: + instantiate_editor(data, itemID, mapEditor) + if data == Gamedata.data.tacticalmaps: + instantiate_editor(data, itemID, tacticalmapEditor) + +#This will add an editor to the content editor tab view. +#The editor that should be instantiated is passed trough in the newEditor parameter +#It is important that the editor has the property contentSource or contentData so it can be set +func instantiate_editor(data: Dictionary, itemID: String, newEditor: PackedScene): + var newContentEditor: Control = newEditor.instantiate() + newContentEditor.name = itemID + tabContainer.add_child(newContentEditor) + tabContainer.current_tab = tabContainer.get_child_count()-1 + if data.dataPath.ends_with(".json"): + #We only pass the data for the specific id to the editor + newContentEditor.contentData = data.data[Gamedata.get_array_index_by_id(data,itemID)] + #Connect the data_changed signal to the Gamedata.on_data_changed function + #We pass trough the data collection that the changed data belongs to + newContentEditor.data_changed.connect(Gamedata.on_data_changed.bind(data)) + newContentEditor.data_changed.connect(_on_editor_data_changed.bind(data)) + + else: + #If the data source does not end with json, it's a directory + #So now we pass in the file we want the editor to edit + newContentEditor.contentSource = data.dataPath + itemID + ".json" + +# function to handle data changes +func _on_editor_data_changed(data: Dictionary): + for element in content.get_children(): + if element.contentData == data: + element.load_data() diff --git a/Scenes/ContentManager/Scripts/contentmanager.gd b/Scenes/ContentManager/Scripts/contentmanager.gd new file mode 100644 index 00000000..19f8e10d --- /dev/null +++ b/Scenes/ContentManager/Scripts/contentmanager.gd @@ -0,0 +1,9 @@ +extends Control + + +func _on_back_button_button_up(): + get_tree().change_scene_to_file("res://scene_selector.tscn") + + +func _on_content_editor_button_button_up(): + get_tree().change_scene_to_file("res://Scenes/ContentManager/contenteditor.tscn") diff --git a/Scenes/ContentManager/content_list.tscn b/Scenes/ContentManager/content_list.tscn new file mode 100644 index 00000000..711b5b22 --- /dev/null +++ b/Scenes/ContentManager/content_list.tscn @@ -0,0 +1,116 @@ +[gd_scene load_steps=2 format=3 uid="uid://bhh0v7x4fjsgi"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Scripts/content_list.gd" id="1_ly1kh"] + +[node name="ContentList" type="Control" node_paths=PackedStringArray("contentItems", "collapseButton", "pupup_ID", "popup_textedit")] +custom_minimum_size = Vector2(200, 30) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_ly1kh") +contentItems = NodePath("Content/ContentItems") +collapseButton = NodePath("Content/HBoxContainer/CollapseButton") +pupup_ID = NodePath("ID_Input") +popup_textedit = NodePath("ID_Input/VBoxContainer/TextEdit") + +[node name="Content" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="Content"] +layout_mode = 2 + +[node name="CollapseButton" type="Button" parent="Content/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "Click to collapse" +text = "Items" + +[node name="AddButton" type="Button" parent="Content/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.15 +tooltip_text = "Add item" +theme_override_font_sizes/font_size = 16 +text = "+" + +[node name="DuplicateButton" type="Button" parent="Content/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.15 +tooltip_text = "Duplicate item" +theme_override_font_sizes/font_size = 16 +text = "D" + +[node name="DeleteButton" type="Button" parent="Content/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.15 +tooltip_text = "Delete item" +theme_override_font_sizes/font_size = 16 +text = "-" + +[node name="ContentItems" type="ItemList" parent="Content"] +custom_minimum_size = Vector2(200, 30) +layout_mode = 2 +size_flags_vertical = 3 +fixed_icon_size = Vector2i(32, 32) + +[node name="ID_Input" type="Popup" parent="."] +title = "Input ID" +initial_position = 2 +size = Vector2i(200, 150) +unresizable = false +borderless = false + +[node name="VBoxContainer" type="VBoxContainer" parent="ID_Input"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="ID_Input/VBoxContainer"] +layout_mode = 2 +text = "Input an ID" + +[node name="TextEdit" type="TextEdit" parent="ID_Input/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +placeholder_text = "ex: pistol_9mm" +scroll_fit_content_height = true + +[node name="HBoxContainer" type="HBoxContainer" parent="ID_Input/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="OK" type="Button" parent="ID_Input/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +text = "Ok" + +[node name="Cancel" type="Button" parent="ID_Input/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +text = "Cancel" + +[connection signal="button_up" from="Content/HBoxContainer/CollapseButton" to="." method="_on_collapse_button_button_up"] +[connection signal="button_up" from="Content/HBoxContainer/AddButton" to="." method="_on_add_button_button_up"] +[connection signal="button_up" from="Content/HBoxContainer/DuplicateButton" to="." method="_on_duplicate_button_button_up"] +[connection signal="button_up" from="Content/HBoxContainer/DeleteButton" to="." method="_on_delete_button_button_up"] +[connection signal="item_activated" from="Content/ContentItems" to="." method="_on_content_items_item_activated"] +[connection signal="button_up" from="ID_Input/VBoxContainer/HBoxContainer/OK" to="." method="_on_ok_button_up"] +[connection signal="button_up" from="ID_Input/VBoxContainer/HBoxContainer/Cancel" to="." method="_on_cancel_button_up"] diff --git a/Scenes/ContentManager/contenteditor.tscn b/Scenes/ContentManager/contenteditor.tscn index 446d96bc..825815b5 100644 --- a/Scenes/ContentManager/contenteditor.tscn +++ b/Scenes/ContentManager/contenteditor.tscn @@ -1,14 +1,31 @@ -[gd_scene load_steps=2 format=3 uid="uid://480xqusluqrk"] +[gd_scene load_steps=9 format=3 uid="uid://480xqusluqrk"] -[ext_resource type="PackedScene" uid="uid://d3001f5xxpup1" path="res://Scenes/ContentManager/Mapeditor/mapeditor.tscn" id="1_rwi67"] +[ext_resource type="Script" path="res://Scenes/ContentManager/Scripts/contenteditor.gd" id="1_65sl4"] +[ext_resource type="PackedScene" uid="uid://bhh0v7x4fjsgi" path="res://Scenes/ContentManager/content_list.tscn" id="2_4f21i"] +[ext_resource type="PackedScene" uid="uid://d3001f5xxpup1" path="res://Scenes/ContentManager/Mapeditor/mapeditor.tscn" id="3_q062s"] +[ext_resource type="PackedScene" uid="uid://0r8ni3u0dosg" path="res://Scenes/ContentManager/Custom_Editors/TacticalMapEditor/TacticalMapEditor.tscn" id="4_5du0w"] +[ext_resource type="PackedScene" uid="uid://vfj2if40vf10" path="res://Scenes/ContentManager/Custom_Editors/TerrainTileEditor.tscn" id="4_5nnw0"] +[ext_resource type="PackedScene" uid="uid://drby7yfu8t38e" path="res://Scenes/ContentManager/Custom_Editors/MobEditor.tscn" id="5_86se2"] +[ext_resource type="PackedScene" uid="uid://cng4m3os6smj8" path="res://Scenes/ContentManager/Custom_Editors/FurnitureEditor.tscn" id="5_r1dle"] +[ext_resource type="PackedScene" uid="uid://dmpomdwta1pgq" path="res://Scenes/ContentManager/Custom_Editors/ItemEditor/ItemEditor.tscn" id="7_i5608"] -[node name="contenteditor" type="Control"] +[node name="contenteditor" type="Control" node_paths=PackedStringArray("content", "tabContainer")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +script = ExtResource("1_65sl4") +contentList = ExtResource("2_4f21i") +mapEditor = ExtResource("3_q062s") +tacticalmapEditor = ExtResource("4_5du0w") +terrainTileEditor = ExtResource("4_5nnw0") +furnitureEditor = ExtResource("5_r1dle") +itemEditor = ExtResource("7_i5608") +mobEditor = ExtResource("5_86se2") +content = NodePath("HSplitContainer/ContentLists/TabContainer2/Content") +tabContainer = NodePath("HSplitContainer/TabContainer") [node name="HSplitContainer" type="HSplitContainer" parent="."] layout_mode = 1 @@ -17,11 +34,37 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +split_offset = 240 -[node name="TabContainer2" type="TabContainer" parent="HSplitContainer"] +[node name="ContentLists" type="VBoxContainer" parent="HSplitContainer"] layout_mode = 2 -[node name="Recent" type="ItemList" parent="HSplitContainer/TabContainer2"] +[node name="BackButton" type="Button" parent="HSplitContainer/ContentLists"] +layout_mode = 2 +text = "Back to menu" + +[node name="SelectMods" type="OptionButton" parent="HSplitContainer/ContentLists"] +layout_mode = 2 +tooltip_text = "Select the mod you want edit" +item_count = 3 +selected = 0 +popup/item_0/text = "Core" +popup/item_0/id = 0 +popup/item_1/text = "MyArcheryMod" +popup/item_1/id = 1 +popup/item_2/text = "MyFarmMod" +popup/item_2/id = 2 + +[node name="TabContainer2" type="TabContainer" parent="HSplitContainer/ContentLists"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Content" type="VBoxContainer" parent="HSplitContainer/ContentLists/TabContainer2"] +custom_minimum_size = Vector2(0, 200) +layout_mode = 2 + +[node name="Recent" type="ItemList" parent="HSplitContainer/ContentLists/TabContainer2"] +visible = false custom_minimum_size = Vector2(200, 200) layout_mode = 2 item_count = 10 @@ -39,29 +82,23 @@ item_7/text = "snail" item_8/text = "core" item_9/text = "pistol_9mm" -[node name="CurrentFile" type="ItemList" parent="HSplitContainer/TabContainer2"] -visible = false -custom_minimum_size = Vector2(200, 200) -layout_mode = 2 -item_count = 6 -max_columns = 2 -item_0/text = "Core" -item_1/text = "pistol_9mm" -item_2/text = "core" -item_3/text = "revolver_357" -item_4/text = "core" -item_5/text = "laser_rifle" - [node name="TabContainer" type="TabContainer" parent="HSplitContainer"] layout_mode = 2 -[node name="9mm_pistol" type="Label" parent="HSplitContainer/TabContainer"] +[node name="Editor_Home" type="RichTextLabel" parent="HSplitContainer/TabContainer"] layout_mode = 2 +bbcode_enabled = true +text = "[font_size=70]Content editor[/font_size] -[node name="itemgroup_kitchen" type="Label" parent="HSplitContainer/TabContainer"] -visible = false -layout_mode = 2 +This is the content editor for CataX. -[node name="generic_house" parent="HSplitContainer/TabContainer" instance=ExtResource("1_rwi67")] -visible = false -layout_mode = 2 +[font_size=22][b]Content selection[/b][/font_size] +On the left side you can select one of the mods you want to work on. The content of the mod will be displayed in the selection lists below. +[ul]Double click an item in the list: opens the appropriate editor to the right. +Click the + sign: Allows you to add new content to the mod. Enter the name and a new item will be available to edit[/ul] + + +[font_size=22][b]Content editing[/b][/font_size] +On the right a content editor will be displayed that allows you to edit the selected item. Multiple editors can be opened in tabs. Use the controls to edit the content and press save to save your edits" + +[connection signal="button_up" from="HSplitContainer/ContentLists/BackButton" to="." method="_on_back_button_button_up"] diff --git a/Scenes/ContentManager/contentmanager.tscn b/Scenes/ContentManager/contentmanager.tscn index 1c4b3442..f913759e 100644 --- a/Scenes/ContentManager/contentmanager.tscn +++ b/Scenes/ContentManager/contentmanager.tscn @@ -1,5 +1,44 @@ -[gd_scene format=3 uid="uid://buahqv18qlohm"] +[gd_scene load_steps=2 format=3 uid="uid://buahqv18qlohm"] + +[ext_resource type="Script" path="res://Scenes/ContentManager/Scripts/contentmanager.gd" id="1_lt3y0"] [node name="contentmanager" type="Control"] layout_mode = 3 -anchors_preset = 0 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_lt3y0") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -60.5 +offset_top = -33.0 +offset_right = 60.5 +offset_bottom = 33.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ModManagerButton" type="Button" parent="VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 36 +text = "Mod manager" + +[node name="ContentEditorButton" type="Button" parent="VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 36 +text = "Content editor" + +[node name="BackButton" type="Button" parent="VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 36 +text = "Back" + +[connection signal="button_up" from="VBoxContainer/ContentEditorButton" to="." method="_on_content_editor_button_button_up"] +[connection signal="button_up" from="VBoxContainer/BackButton" to="." method="_on_back_button_button_up"] diff --git a/Scenes/GameOver.tscn b/Scenes/GameOver.tscn new file mode 100644 index 00000000..c0755658 --- /dev/null +++ b/Scenes/GameOver.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=2 format=3 uid="uid://ckuh2s0nvwg0x"] + +[ext_resource type="Script" path="res://Scripts/GameOver.gd" id="1_77h6a"] + +[node name="GameOver" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_77h6a") + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.129412, 0.14902, 0.180392, 1) + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -94.5 +offset_top = -42.5 +offset_right = 94.5 +offset_bottom = 42.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="GameOverLabel" type="Label" parent="VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 36 +text = "Game over" + +[node name="ReturnButton" type="Button" parent="VBoxContainer"] +layout_mode = 2 +text = "Return to main menu" + +[connection signal="button_up" from="VBoxContainer/ReturnButton" to="." method="_on_return_button_button_up"] diff --git a/Scenes/InventoryContainerListItem.tscn b/Scenes/InventoryContainerListItem.tscn new file mode 100644 index 00000000..1fefd468 --- /dev/null +++ b/Scenes/InventoryContainerListItem.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=3 uid="uid://crck2fhgayxhn"] + +[ext_resource type="Script" path="res://Scripts/InventoryContainerListItem.gd" id="1_76xnu"] +[ext_resource type="Texture2D" uid="uid://ttmfel3ylg0w" path="res://Mods/Core/Tiles/arcstones1.png" id="2_qnss5"] + +[node name="ContainerListItem" type="Control"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_76xnu") + +[node name="ContainerSprite" type="TextureRect" parent="."] +custom_minimum_size = Vector2(64, 64) +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("2_qnss5") +expand_mode = 3 + +[connection signal="gui_input" from="ContainerSprite" to="." method="_on_texture_rect_gui_input"] diff --git a/Scenes/InventoryWindow.tscn b/Scenes/InventoryWindow.tscn new file mode 100644 index 00000000..7397c471 --- /dev/null +++ b/Scenes/InventoryWindow.tscn @@ -0,0 +1,247 @@ +[gd_scene load_steps=14 format=3 uid="uid://e0ebcv1n8jnq"] + +[ext_resource type="Script" path="res://Scripts/InventoryWindow.gd" id="1_7kqbx"] +[ext_resource type="PackedScene" uid="uid://crck2fhgayxhn" path="res://Scenes/InventoryContainerListItem.tscn" id="2_xfgb3"] +[ext_resource type="Script" path="res://addons/gloot/core/inventory_stacked.gd" id="3_l8xgt"] +[ext_resource type="Resource" uid="uid://clehtt4tyqvdy" path="res://ItemProtosets.tres" id="3_sqsc0"] +[ext_resource type="Script" path="res://addons/gloot/core/inventory_item.gd" id="5_qidb6"] +[ext_resource type="FontFile" uid="uid://chm7lbcdeyo0h" path="res://Roboto-Bold.ttf" id="6_xpf2l"] +[ext_resource type="Script" path="res://addons/gloot/ui/ctrl_item_slot_ex.gd" id="7_kcmi5"] +[ext_resource type="Texture2D" uid="uid://dfmrlie57qrbo" path="res://Mods/Core/Items/9mm.png" id="8_0yr0i"] +[ext_resource type="Script" path="res://addons/gloot/ui/ctrl_inventory_stacked.gd" id="9_8a8sx"] +[ext_resource type="Texture2D" uid="uid://df2n5aculnj82" path="res://addons/gloot/images/icon_inventory.svg" id="10_6ygdg"] +[ext_resource type="Script" path="res://addons/gloot/core/item_ref_slot.gd" id="11_nqptt"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hyt2o"] +bg_color = Color(0.584314, 0.588235, 0.737255, 1) + +[sub_resource type="Theme" id="Theme_6v4rg"] +default_font = ExtResource("6_xpf2l") +default_font_size = 13 + +[node name="InventoryWindow" type="Control" node_paths=PackedStringArray("proximity_inventory", "proximity_inventory_control", "inventory_control", "inventory", "containerList", "LeftHandEquipmentSlot", "RightHandEquipmentSlot", "tooltip", "tooltip_item_name", "tooltip_item_description")] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_7kqbx") +proximity_inventory = NodePath("InventoryStackedProx") +proximity_inventory_control = NodePath("HBoxContainer/VBoxContainer/CtrlInventoryStackedProx") +inventory_control = NodePath("HBoxContainer/CtrlInventoryStacked") +inventory = NodePath("InventoryStacked") +containerList = NodePath("HBoxContainer/ContainersList") +containerListItem = ExtResource("2_xfgb3") +LeftHandEquipmentSlot = NodePath("HBoxContainer/EquipmentSlotList/LeftHandEquipment/LeftHandEquipmentRefSlot") +RightHandEquipmentSlot = NodePath("HBoxContainer/EquipmentSlotList/RightHandEquipment/RightHandEquipmentRefSlot2") +tooltip = NodePath("Tooltip") +tooltip_item_name = NodePath("Tooltip/Panel/ItemName") +tooltip_item_description = NodePath("Tooltip/Panel2/Description") + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.698039, 0.729412, 0.788235, 1) + +[node name="InventoryStacked" type="Node" parent="."] +script = ExtResource("3_l8xgt") +capacity = 1000.0 +item_protoset = ExtResource("3_sqsc0") + +[node name="_Node_23278" type="Node" parent="InventoryStacked"] +script = ExtResource("5_qidb6") +protoset = ExtResource("3_sqsc0") +prototype_id = "bullet_9mm" + +[node name="_Node_23288" type="Node" parent="InventoryStacked"] +script = ExtResource("5_qidb6") +protoset = ExtResource("3_sqsc0") +prototype_id = "pistol_magazine" + +[node name="_Node_23298" type="Node" parent="InventoryStacked"] +script = ExtResource("5_qidb6") +protoset = ExtResource("3_sqsc0") +prototype_id = "rifle_m4a1" + +[node name="_Node_23311" type="Node" parent="InventoryStacked"] +script = ExtResource("5_qidb6") +protoset = ExtResource("3_sqsc0") +prototype_id = "pistol_9mm" + +[node name="_Node_65384" type="Node" parent="InventoryStacked"] +script = ExtResource("5_qidb6") +protoset = ExtResource("3_sqsc0") +prototype_id = "pistol_9mm" + +[node name="InventoryStackedProx" type="Node" parent="."] +script = ExtResource("3_l8xgt") +capacity = 1000.0 +item_protoset = ExtResource("3_sqsc0") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ContainersList" type="VBoxContainer" parent="HBoxContainer"] +custom_minimum_size = Vector2(64, 0) +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="HBoxContainer/VBoxContainer"] +layout_mode = 2 +text = "Nearby container:" + +[node name="CtrlInventoryStackedProx" type="Control" parent="HBoxContainer/VBoxContainer"] +visible = false +custom_minimum_size = Vector2(300, 400) +layout_mode = 2 +size_flags_horizontal = 3 +script = ExtResource("9_8a8sx") +inventory_path = NodePath("../../../InventoryStackedProx") +default_item_icon = ExtResource("10_6ygdg") + +[node name="HBoxContainer" type="VBoxContainer" parent="HBoxContainer"] +layout_mode = 2 + +[node name="TransferRightButton" type="Button" parent="HBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "->" + +[node name="TransferLeftButton" type="Button" parent="HBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "<-" + +[node name="CtrlInventoryStacked" type="Control" parent="HBoxContainer"] +custom_minimum_size = Vector2(300, 400) +layout_mode = 2 +size_flags_horizontal = 3 +script = ExtResource("9_8a8sx") +inventory_path = NodePath("../../InventoryStacked") +default_item_icon = ExtResource("10_6ygdg") + +[node name="EquipmentSlotList" type="VBoxContainer" parent="HBoxContainer"] +custom_minimum_size = Vector2(64, 0) +layout_mode = 2 + +[node name="LeftHandEquipment" type="HBoxContainer" parent="HBoxContainer/EquipmentSlotList"] +layout_mode = 2 + +[node name="EquipLeftButton" type="Button" parent="HBoxContainer/EquipmentSlotList/LeftHandEquipment"] +layout_mode = 2 +text = "->" + +[node name="LeftHandEquipmentRefSlot" type="Node" parent="HBoxContainer/EquipmentSlotList/LeftHandEquipment"] +script = ExtResource("11_nqptt") +inventory_path = NodePath("../../../../InventoryStacked") + +[node name="LeftHandEquipmentSlotControl" type="Control" parent="HBoxContainer/EquipmentSlotList/LeftHandEquipment"] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +script = ExtResource("7_kcmi5") +slot_style = SubResource("StyleBoxFlat_hyt2o") +item_slot_path = NodePath("../LeftHandEquipmentRefSlot") +default_item_icon = ExtResource("8_0yr0i") +label_visible = false + +[node name="Label" type="Label" parent="HBoxContainer/EquipmentSlotList/LeftHandEquipment"] +layout_mode = 2 +text = "Left hand" + +[node name="RightHandEquipment" type="HBoxContainer" parent="HBoxContainer/EquipmentSlotList"] +layout_mode = 2 + +[node name="RightHandEquipmentRefSlot2" type="Node" parent="HBoxContainer/EquipmentSlotList/RightHandEquipment"] +script = ExtResource("11_nqptt") +inventory_path = NodePath("../../../../InventoryStacked") + +[node name="EquipRightButton" type="Button" parent="HBoxContainer/EquipmentSlotList/RightHandEquipment"] +layout_mode = 2 +text = "->" + +[node name="RightHandEquipmentSlotControl" type="Control" parent="HBoxContainer/EquipmentSlotList/RightHandEquipment"] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +script = ExtResource("7_kcmi5") +slot_style = SubResource("StyleBoxFlat_hyt2o") +item_slot_path = NodePath("../RightHandEquipmentRefSlot2") +default_item_icon = ExtResource("8_0yr0i") +label_visible = false + +[node name="Label" type="Label" parent="HBoxContainer/EquipmentSlotList/RightHandEquipment"] +layout_mode = 2 +text = "Right hand" + +[node name="Tooltip" type="Control" parent="."] +visible = false +layout_mode = 3 +anchors_preset = 0 +offset_right = 242.0 +offset_bottom = 115.0 +pivot_offset = Vector2(0, 173) +size_flags_horizontal = 3 +size_flags_vertical = 3 +tooltip_text = "kjkgkjghkjjhkg" + +[node name="Panel" type="Panel" parent="Tooltip"] +layout_mode = 2 +offset_left = 1.0 +offset_top = 1.0 +offset_right = 241.0 +offset_bottom = 33.0 +size_flags_vertical = 3 + +[node name="ItemName" type="Label" parent="Tooltip/Panel"] +layout_mode = 0 +offset_right = 240.0 +offset_bottom = 32.0 +theme_override_colors/font_color = Color(0.921569, 0.596078, 0, 1) +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 4 +theme_override_fonts/font = ExtResource("6_xpf2l") +theme_override_font_sizes/font_size = 20 +text = "Item name" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Panel2" type="Panel" parent="Tooltip"] +layout_mode = 2 +offset_left = 1.0 +offset_top = 35.0 +offset_right = 241.0 +offset_bottom = 115.0 +size_flags_vertical = 3 + +[node name="Description" type="Label" parent="Tooltip/Panel2"] +layout_mode = 0 +offset_right = 240.0 +offset_bottom = 32.0 +theme = SubResource("Theme_6v4rg") +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 4 +theme_override_fonts/font = ExtResource("6_xpf2l") +theme_override_font_sizes/font_size = 13 +text = "Item description" +autowrap_mode = 3 + +[connection signal="button_up" from="HBoxContainer/HBoxContainer/TransferRightButton" to="." method="_on_transfer_right_button_button_up"] +[connection signal="button_up" from="HBoxContainer/HBoxContainer/TransferLeftButton" to="." method="_on_transfer_left_button_button_up"] +[connection signal="button_up" from="HBoxContainer/EquipmentSlotList/LeftHandEquipment/EquipLeftButton" to="." method="_on_equip_left_button_button_up"] +[connection signal="cleared" from="HBoxContainer/EquipmentSlotList/LeftHandEquipment/LeftHandEquipmentRefSlot" to="." method="_on_left_hand_equipment_slot_cleared"] +[connection signal="item_equipped" from="HBoxContainer/EquipmentSlotList/LeftHandEquipment/LeftHandEquipmentRefSlot" to="." method="_on_left_hand_equipment_slot_item_equipped"] +[connection signal="cleared" from="HBoxContainer/EquipmentSlotList/RightHandEquipment/RightHandEquipmentRefSlot2" to="." method="_on_right_hand_equipment_slot_cleared"] +[connection signal="item_equipped" from="HBoxContainer/EquipmentSlotList/RightHandEquipment/RightHandEquipmentRefSlot2" to="." method="_on_right_hand_equipment_slot_item_equipped"] +[connection signal="button_up" from="HBoxContainer/EquipmentSlotList/RightHandEquipment/EquipRightButton" to="." method="_on_equip_right_button_button_up"] diff --git a/Scenes/Overmap/Overmap.tscn b/Scenes/Overmap/Overmap.tscn new file mode 100644 index 00000000..92f42054 --- /dev/null +++ b/Scenes/Overmap/Overmap.tscn @@ -0,0 +1,78 @@ +[gd_scene load_steps=3 format=3 uid="uid://bgswuol251m3u"] + +[ext_resource type="Script" path="res://Scenes/Overmap/Scripts/Overmap.gd" id="1_fmft1"] +[ext_resource type="PackedScene" uid="uid://budsoodfdkaea" path="res://Scenes/Overmap/OvermapTile.tscn" id="3_uq0vr"] + +[node name="Overmap" type="Control" node_paths=PackedStringArray("positionLabel", "tilesContainer", "travelButton", "overmapTileLabel")] +layout_mode = 3 +anchor_left = 0.2 +anchor_top = 0.2 +anchor_right = 0.8 +anchor_bottom = 0.8 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_fmft1") +positionLabel = NodePath("MarginContainer/HBoxContainer/VBoxContainer/Label") +tilesContainer = NodePath("MarginContainer/HBoxContainer/TilesContainer") +overmapTile = ExtResource("3_uq0vr") +travelButton = NodePath("MarginContainer/HBoxContainer/VBoxContainer/TravelButton") +overmapTileLabel = NodePath("MarginContainer/HBoxContainer/VBoxContainer/OvermapTileLabel") + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.129412, 0.14902, 0.180392, 1) + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 16 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"] +clip_contents = true +layout_mode = 2 + +[node name="TilesContainer" type="Control" parent="MarginContainer/HBoxContainer"] +clip_contents = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.8 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/HBoxContainer"] +layout_mode = 2 +size_flags_stretch_ratio = 0.2 + +[node name="OvermapTileLabel" type="Label" parent="MarginContainer/HBoxContainer/VBoxContainer"] +layout_mode = 2 +text = "Name: Urbanroad +Environment: Forest +Challenge: Easy" + +[node name="Label" type="Label" parent="MarginContainer/HBoxContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0.898039, 0.356863, 1) +text = "+" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="TravelButton" type="Button" parent="MarginContainer/HBoxContainer/VBoxContainer"] +layout_mode = 2 +text = "Travel to location" + +[node name="HomeButton" type="Button" parent="MarginContainer/HBoxContainer/VBoxContainer"] +layout_mode = 2 +text = "Home" + +[connection signal="button_up" from="MarginContainer/HBoxContainer/VBoxContainer/TravelButton" to="." method="_on_travel_button_button_up"] +[connection signal="button_up" from="MarginContainer/HBoxContainer/VBoxContainer/HomeButton" to="." method="_on_home_button_button_up"] diff --git a/Scenes/Overmap/OvermapTile.tscn b/Scenes/Overmap/OvermapTile.tscn new file mode 100644 index 00000000..daa755f9 --- /dev/null +++ b/Scenes/Overmap/OvermapTile.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=2 format=3 uid="uid://budsoodfdkaea"] + +[ext_resource type="Script" path="res://Scenes/Overmap/Scripts/OvermapTile.gd" id="1_kxuyw"] + +[node name="OvermapTile" type="Control"] +custom_minimum_size = Vector2(32, 32) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_kxuyw") + +[node name="TextureRect" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[connection signal="gui_input" from="TextureRect" to="." method="_on_texture_rect_gui_input"] diff --git a/Scenes/Overmap/Scripts/Overmap.gd b/Scenes/Overmap/Scripts/Overmap.gd new file mode 100644 index 00000000..758654b4 --- /dev/null +++ b/Scenes/Overmap/Scripts/Overmap.gd @@ -0,0 +1,277 @@ +extends Control + +@export var positionLabel: Label = null +@export var tilesContainer: Control = null +@export var overmapTile: PackedScene = null +@export var travelButton: Button = null +@export var overmapTileLabel: Label = null +var last_position_coord: Vector2 = Vector2() +var tiles: Array = ["1.png", "arcstones1.png", "forestunderbrushscale5.png", "rockyfloor4.png"] +var noise = FastNoiseLite.new() +var grid_chunks: Dictionary = {} # Stores references to grid containers (visual tilegrids) +var chunk_width: int = 32 +var chunk_size = 32 +var tile_size = 32 +var grid_pixel_size = chunk_size*tile_size +var selected_overmap_tile: Control = null +# We will emit this signal when the position_coords change +# Which happens when the user has panned the overmap +signal position_coord_changed(delta) +#Fires when the player has pressed the travel button +signal change_level_pressed() + +func _ready(): + var gameFileJson: Dictionary = Helper.json_helper.load_json_dictionary_file(\ + Helper.save_helper.current_save_folder + "/game.json") + noise.seed = gameFileJson.mapseed + noise.fractal_octaves = 5 + noise.fractal_gain = 0.5 + noise.frequency = 0.04 + noise.noise_type = FastNoiseLite.TYPE_SIMPLEX + + update_chunks() + connect("position_coord_changed", on_position_coord_changed) + +# This function updates the chunks. +# It loops through a 4x4 grid centered on the current position +# generating new chunks at each position if they don't already exist. +# After generating any necessary new chunks, it calls `unload_chunks()` +# to unload any chunks that are no longer needed. The +# `chunk_size` variable determines the size of each chunk, +# and `position_coord` is the current position in the world +func update_chunks(): + # Convert the current position to grid coordinates based on the grid's pixel size + var grid_position: Vector2 = (Helper.position_coord / grid_pixel_size).floor() * grid_pixel_size + #The position is increase arbitrarily so it is more center of screen + grid_position.x += grid_pixel_size + grid_position.y += grid_pixel_size + + for x in range(-1, 1): + for y in range(-1, 1): + var chunk_grid_position: Vector2 = grid_position + Vector2(x, y) * grid_pixel_size + # Use the separate noise_chunks Dictionary for retrieving the noise data + if not Helper.chunks.has(chunk_grid_position): + generate_chunk(chunk_grid_position) + # Retrieve the chunk data for the specific position. + var chunk_data = Helper.chunks[chunk_grid_position] + + if not grid_chunks.has(chunk_grid_position): + # Use chunk data to create and fill the GridContainer. + var localized_x: float = chunk_grid_position.x-Helper.position_coord.x + var localized_y: float = chunk_grid_position.y-Helper.position_coord.y + var new_grid_container = create_and_fill_grid_container(chunk_data,\ + Vector2(localized_x,localized_y)) + tilesContainer.call_deferred("add_child",new_grid_container) + # tilesContainer.add_child(new_grid_container) + # Store the GridContainer using the grid position as the key. + grid_chunks[chunk_grid_position] = new_grid_container + + # After generating new chunks, you may want to unload any that are off-screen. + unload_chunks() + +# This function creates terrain for a specific area on the overmap. It uses a grid_position +# to determine where to generate the terrain. The function employs a noise algorithm +# to select tile types from a predefined list, creating a chunk of terrain data. +# This data is stored in a global dictionary for later use in rendering the overmap. +func generate_chunk(grid_position: Vector2) -> void: + var chunk = [] + for y in range(chunk_size): # x goes from 0 to chunk_size - 1 + for x in range(chunk_size): # y goes from 0 to chunk_size - 1 + # We calculate global coordinates by + # offsetting the local coordinates by the grid_position + var global_x = x + grid_position.x / tile_size + var global_y = y + grid_position.y / tile_size + var noise_value = noise.get_noise_2d(global_x, global_y) + # Scale noise_value to a valid index in the tiles array + # Ensure noise_value is scaled correctly based on the number of tiles. + var tile_index = int((noise_value + 1) / 2 * tiles.size()) % tiles.size() + if global_x == 0 and global_y == 0: + chunk.append({"tile": tiles[tile_index], "global_x": global_x, \ + "global_y": global_y, "tacticalmap": Gamedata.data.tacticalmaps.data[0]}) + else: + chunk.append({"tile": tiles[tile_index], "global_x": global_x, \ + "global_y": global_y, "tacticalmap": get_random_mapname_1_in_100()}) + # Store the chunk using the grid_position as the key. + Helper.chunks[grid_position] = chunk + +func get_random_mapname_1_in_100() -> String: + var random_file: String = "" + var chance = randi_range(0, 100) + if chance < 1: + var random_index = randi() % Gamedata.data.tacticalmaps.data.size() + random_file = Gamedata.data.tacticalmaps.data[random_index] + return random_file + + + +# The user will leave chunks behind as the map is panned around +# Chunks that are too far from the current position will be destoroyed +#This will only destroy the visual representation of the data stored in Helper.chunks +func unload_chunks(): + var dist = 0 + var rangeLimit = 0 + for chunk_position in grid_chunks.keys(): + dist = chunk_position.distance_to(Helper.position_coord) + #Lowering this number 5 will cause newly created chunks + #to be instantly deleted and recreated + rangeLimit = 3 * grid_pixel_size + if dist > rangeLimit: + #Distroy the grid itself + grid_chunks[chunk_position].call_deferred("queue_free") + #Remove the reference to the grid + grid_chunks.erase(chunk_position) + + +var mouse_button_pressed: bool = false +func _input(event): + if !visible: + return + if event is InputEventMouseButton: + match event.button_index: + MOUSE_BUTTON_MIDDLE: + mouse_button_pressed = event.is_pressed() + + if event is InputEventMouseMotion and mouse_button_pressed: + # Adjust the position based on the mouse movement, divided by 100 for sensitivity. + var motion = event.relative / 2 + # Calculate the new position first. + var new_position_coord = Helper.position_coord - motion + # Round the new_position_coord to the nearest integer. + new_position_coord = new_position_coord.round() + # Calculate the delta based on the old and the rounded new positions. + var delta = new_position_coord - Helper.position_coord + if delta != Vector2.ZERO: + # Update position_coord to the new rounded position. + Helper.position_coord = new_position_coord + # Emit the signal to update other parts of the game that depend on the position. + emit_signal("position_coord_changed", delta) + # Update last_position_coord for the next input event. + last_position_coord = Helper.position_coord + + +#This function will move all the tilegrids on screen when the position_coords change +#This will make it look like the user pans across the map +func update_tiles_position(delta): + for grid_container in tilesContainer.get_children(): + # Update the grid container's position by subtracting the delta + grid_container.position -= delta + +#We will call this function when the position_coords change +func on_position_coord_changed(delta): + update_tiles_position(delta) + update_chunks() + if positionLabel: + positionLabel.text = "Position: " + str(Helper.position_coord) + +# This function creates and populates a GridContainer with tiles based on chunk data. +# It takes two arguments: chunk, an array containing data for each tile in the chunk, +# and chunk_position, a Vector2 representing the chunk's position in the world. +# The function generates a new GridContainer, sets its columns to chunk_width, and +# ensures no space between tiles. It then iterates over the chunk array, creating +# a tile for each entry. Each tile's metadata is set with global and local positions, +# and additional data like map files if available. Tiles are added as children to +# the GridContainer, which is positioned based on chunk_position. The function returns +# the populated GridContainer. This process visually represents a section of the +# overmap in a grid format. +func create_and_fill_grid_container(chunk: Array, chunk_position: Vector2): + var grid_container = GridContainer.new() + grid_container.columns = chunk_width # Set the number of columns to chunk_width. + # Make sure there is no space between the tiles + grid_container.set("theme_override_constants/h_separation", 0) + grid_container.set("theme_override_constants/v_separation", 0) + + # Variables to keep track of the row and column position + var row: int = 0 + var column: int = 0 + + # Iterate over the chunk array to create and add TextureRects for each tile. + for i in range(chunk.size()): + if i > 0 and i % chunk_width == 0: + row += 1 + column = 0 # Reset column at the start of a new row + + var tile_type = chunk[i].tile + # Retrieve the texture based on the tile type. + var texture = Gamedata.data.overmaptiles.sprites[tile_type] + var tile = overmapTile.instantiate() + var local_x = column*tile_size + var local_y = row*tile_size + var global_x = chunk[i].global_x + var global_y = chunk[i].global_y + # Assign the tile's row and column information + tile.set_meta("global_pos", Vector2(global_x,global_y)) + tile.set_meta("local_pos", Vector2(local_x,local_y)) + if chunk[i].tacticalmap != "": + tile.set_meta("map_file", chunk[i].tacticalmap) # Set the metadata of the tile + tile.set_color(Color(1, 0.8, 0.8)) # Make the tile slightly red + + if global_x == 0 and global_y == 0: + tile.set_color(Color(0.3, 0.3, 1)) # blue color + + tile.set_texture(texture) + tile.connect("tile_clicked", _on_tile_clicked) + # Add the tile as a child to the grid container + grid_container.add_child(tile) + + # Increase column count after placing each tile + column += 1 + + # Set the position of the grid container in pixel space. + grid_container.position = chunk_position + + # Return the filled grid container. + return grid_container + + + + +#This function will be connected to the signal of the tiles +func _on_tile_clicked(clicked_tile): + if clicked_tile.has_meta("map_file"): + selected_overmap_tile = clicked_tile + var mapFile = clicked_tile.get_meta("map_file") + var tilePos = clicked_tile.get_meta("global_pos") + var posString: String = "Pos: (" + str(tilePos.x)+","+str(tilePos.y)+")" + var nameString: String = "\nName: " + mapFile + var envString: String = clicked_tile.tileData.texture + envString = envString.replace("res://Mods/Core/OvermapTiles/","") + envString = "\nEnvironment: " + envString + var challengeString: String = "\nChallenge: Easy" + overmapTileLabel.text = posString + nameString + envString + challengeString + travelButton.disabled = false + else: + selected_overmap_tile = null + travelButton.disabled = true + overmapTileLabel.text = "Select a valid target" + + +func _on_travel_button_button_up(): + change_level_pressed.emit() + var mapFile = selected_overmap_tile.get_meta("map_file") + var global_pos: Vector2 = selected_overmap_tile.get_meta("global_pos") + Helper.switch_level(mapFile, global_pos) + + +func _on_home_button_button_up(): + # Calculate the screen center offset + var screen_center_offset = get_viewport_rect().size * 0.5 + + # Convert screen center offset to world coordinates based on the tile size + var halfTileSize = tile_size/12 + var world_center_offset = screen_center_offset / halfTileSize + + # Calculate the new position as the negative of the world center offset + var new_position_coord = -world_center_offset + + # Calculate the delta for moving the tiles + var delta = new_position_coord - Helper.position_coord + + # Update position_coord to the new position + Helper.position_coord = new_position_coord + + # Emit the signal to update the overmap's position and tiles + emit_signal("position_coord_changed", delta) + + # Optionally, update the position label if it exists + if positionLabel: + positionLabel.text = "Position: (0, 0)" diff --git a/Scenes/Overmap/Scripts/OvermapTile.gd b/Scenes/Overmap/Scripts/OvermapTile.gd new file mode 100644 index 00000000..4eb1f9ea --- /dev/null +++ b/Scenes/Overmap/Scripts/OvermapTile.gd @@ -0,0 +1,41 @@ +extends Control + +const defaultTileData: Dictionary = {"texture": ""} +const defaultTexture: String = "./Scenes/ContentManager/Mapeditor/Images/emptyTile.png" +var tileData: Dictionary = defaultTileData.duplicate(): + set(data): + tileData = data + if tileData.texture != "": + $TextureRect.texture = load("./Mods/Core/OvermapTiles/" + tileData.texture) + else: + $TextureRect.texture = load(defaultTexture) +signal tile_clicked(clicked_tile: Control) + +func _on_texture_rect_gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton: + match event.button_index: + MOUSE_BUTTON_LEFT: + if event.pressed: + tile_clicked.emit(self) + +func set_texture(res: Resource) -> void: + $TextureRect.texture = res + var path: String = res.resource_path + tileData.texture = path.replace("./Mods/Core/OvermapTiles/","") + +func set_default() -> void: + tileData = defaultTileData.duplicate() + +func highlight() -> void: + $TextureRect.modulate = Color(0.227, 0.635, 0.757) + +func unhighlight() -> void: + $TextureRect.modulate = Color(1,1,1) + +func set_color(myColor: Color) -> void: + $TextureRect.modulate = myColor + +func set_clickable(clickable: bool): + if !clickable: + mouse_filter = MOUSE_FILTER_IGNORE + $TextureRect.mouse_filter = MOUSE_FILTER_IGNORE diff --git a/Scripts/BuildManager.gd b/Scripts/BuildManager.gd index ecb639b3..eea9deb3 100644 --- a/Scripts/BuildManager.gd +++ b/Scripts/BuildManager.gd @@ -25,7 +25,7 @@ func _ready(): # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): +func _process(_delta): if is_building: ghost_sprite.visible = true @@ -33,7 +33,7 @@ func _process(delta): # ghost_sprite.global_position = get_global_mouse_position() -func _input(event): +func _input(_event): #3D # if Input.is_action_pressed("click") && is_building && get_node(hud).try_to_spend_item("plank", 2): @@ -41,7 +41,7 @@ func _input(event): # if get_node(player_path).check_if_visible(get_global_mouse_position()) && Vector2(get_node(player_path).global_position).distance_to(get_global_mouse_position()) <= build_range: # tile_map.set_cell(0, tile_map.local_to_map(get_global_mouse_position()), 0, Vector2i(9,3)) - if Input.is_action_pressed("right_click") && is_building: + if Input.is_action_pressed("click_right") && is_building: is_building = false General.is_allowed_to_shoot = true ghost_sprite.visible = false @@ -49,7 +49,7 @@ func _input(event): func make_tile_ghost(): pass -func _on_hud_construction_chosen(construction: String): +func _on_hud_construction_chosen(_construction: String): print("Building test") is_building = true General.is_allowed_to_shoot = false diff --git a/Scripts/Camera.gd b/Scripts/Camera.gd index c43f1339..f5186ebe 100644 --- a/Scripts/Camera.gd +++ b/Scripts/Camera.gd @@ -1,16 +1,5 @@ extends Camera3D - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass - - func _input(event): if event.is_action_pressed("zoom_in"): size -= 2 diff --git a/Scripts/Components/ComponentInteract.gd b/Scripts/Components/ComponentInteract.gd index 92626b91..dad6be0c 100644 --- a/Scripts/Components/ComponentInteract.gd +++ b/Scripts/Components/ComponentInteract.gd @@ -1,11 +1,11 @@ extends Node3D - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass +# +## Called when the node enters the scene tree for the first time. +#func _ready(): + #pass # Replace with function body. +# +# +## Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): + #pass diff --git a/Scripts/CraftingMenu.gd b/Scripts/CraftingMenu.gd index df4f85c1..12aae3ff 100644 --- a/Scripts/CraftingMenu.gd +++ b/Scripts/CraftingMenu.gd @@ -31,10 +31,6 @@ func _ready(): button.crafting_menu = [self] -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass - func item_craft_button_clicked(recipe): active_recipe = recipe diff --git a/Scripts/Detection.gd b/Scripts/Detection.gd index f52d347d..132733a4 100644 --- a/Scripts/Detection.gd +++ b/Scripts/Detection.gd @@ -1,7 +1,7 @@ extends Node3D @export var playerCol: Node3D -@export var stats: NodePath +@export var mob: CharacterBody3D signal player_spotted @@ -13,23 +13,26 @@ var melee_range # Called when the node enters the scene tree for the first time. func _ready(): - sightRange = get_node(stats).sightRange - senseRange = get_node(stats).senseRange - hearingRange = get_node(stats).hearingRange + sightRange = mob.sightRange + senseRange = mob.senseRange + hearingRange = mob.hearingRange # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): +func _process(_delta): pass #3d # queue_redraw() -func _physics_process(delta): +func _physics_process(_delta): var space_state = get_world_3d().direct_space_state # TO-DO Change playerCol to group of players - var query = PhysicsRayQueryParameters3D.create(global_position, get_tree().get_first_node_in_group("Players").global_position, pow(2, 1-1) + pow(2, 3-1),[self]) + var playerInstance: CharacterBody3D = get_tree().get_first_node_in_group("Players") + if !playerInstance: + return + var query = PhysicsRayQueryParameters3D.create(global_position, playerInstance.global_position, int(pow(2, 1-1) + pow(2, 3-1)),[self]) var result = space_state.intersect_ray(query) diff --git a/Scripts/Documentation.gd b/Scripts/Documentation.gd index d8065964..892809ab 100644 --- a/Scripts/Documentation.gd +++ b/Scripts/Documentation.gd @@ -6,9 +6,6 @@ func _ready(): load_documentation_files() $CategoryTree.item_selected.connect(_on_CategoryTree_item_selected) -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass func load_documentation_files(): var resourceDir = "./Documentation" @@ -66,11 +63,6 @@ func sanitize_filename(input: String) -> String: modifiedString = modifiedString.replace(".md", "") return modifiedString -#This function will be called when the user clicks ona link in the documentation page -func _on_document_display_meta_clicked(meta): - #Open the link in the default browser on the user's OS - OS.shell_open(str(meta)) - #When the user clicks on the back button, return to the main menu func _on_back_button_pressed(): get_tree().change_scene_to_file("res://scene_selector.tscn") diff --git a/Scripts/Enemy.gd b/Scripts/Enemy.gd deleted file mode 100644 index 4d482936..00000000 --- a/Scripts/Enemy.gd +++ /dev/null @@ -1,34 +0,0 @@ -extends CharacterBody3D - -var tween: Tween -var original_scale - -@export var sprite: NodePath -@export var stats: NodePath - -@export var corpse_scene: PackedScene - -@onready var nav_agent := $NavigationAgent3D as NavigationAgent3D - -func _ready(): - pass - #3d -# original_scale = get_node(sprite).scale - -func _get_hit(damage): - - #3d -# tween = create_tween() -# tween.tween_property(get_node(sprite), "scale", get_node(sprite).scale * 1.35, 0.1) -# tween.tween_property(get_node(sprite), "scale", original_scale, 0.1) - - get_node(stats).current_health -= damage - if get_node(stats).current_health <= 0: - _die() - -func _die(): - var corpse = corpse_scene.instantiate() - #$"../../../..".add_child(corpse) - get_tree().get_root().call_deferred("add_child", corpse) - corpse.global_position = global_position - queue_free() diff --git a/Scripts/EnemyFollow.gd b/Scripts/EnemyFollow.gd deleted file mode 100644 index d795a405..00000000 --- a/Scripts/EnemyFollow.gd +++ /dev/null @@ -1,60 +0,0 @@ -extends State -class_name EnemyFollow - - - -@export var nav_agent: NavigationAgent3D -@export var enemy: CharacterBody3D -@export var enemyCol: NodePath -@export var stats: NodePath -@export var pathfinding_timer: Timer - -var targeted_player - -@onready var target_location = enemy.position - - -func Enter(): - print("Following the player") - pathfinding_timer.start() - makepath() - -func Exit(): - pathfinding_timer.stop() - -func Physics_Update(delta: float): - var dir = enemy.to_local(nav_agent.get_next_path_position()).normalized() - enemy.velocity = dir * get_node(stats).current_move_speed - enemy.move_and_slide() - - - var space_state = get_world_3d().direct_space_state - # TO-DO Change playerCol to group of players - var query = PhysicsRayQueryParameters3D.create(get_node(enemyCol).global_position, targeted_player.global_position, pow(2, 1-1) + pow(2, 3-1),[self]) - var result = space_state.intersect_ray(query) - - - if result: - - if result.collider.is_in_group("Players")&& Vector3(get_node(enemyCol).global_position).distance_to(targeted_player.global_position) <= get_node(stats).melee_range / 2: - print("changing state to enemyattack...") - Transistioned.emit(self, "enemyattack") - - - - - if Vector3(enemy.global_position).distance_to(target_location) <= 0.5: - Transistioned.emit(self, "enemyidle") - - - -func makepath() -> void: - nav_agent.target_position = target_location -# print("From follow: ", target_location) - -func _on_timer_timeout(): - makepath() - -func _on_detection_player_spotted(player): - target_location = player.position - targeted_player = player diff --git a/Scripts/EnemyIdle.gd b/Scripts/EnemyIdle.gd deleted file mode 100644 index 76dd9f31..00000000 --- a/Scripts/EnemyIdle.gd +++ /dev/null @@ -1,60 +0,0 @@ -extends State -class_name EnemyIdle - -var idle_speed - -@export var nav_agent: NavigationAgent3D -@export var stats: NodePath -@export var enemy: NodePath -@export var move_distance: float - -@export var moving_timer: Timer - - -@onready var target_location - -var is_looking_to_move = false - -var rng = RandomNumberGenerator.new() - - -func Enter(): - print("Enemy idle") - idle_speed = get_node(stats).idle_move_speed - moving_timer.start() - -func Exit(): - moving_timer.stop() - -func Physics_Update(delta: float): - if is_looking_to_move: - var dir = get_node(enemy).to_local(nav_agent.get_next_path_position()).normalized() - get_node(enemy).velocity = dir * get_node(stats).current_idle_move_speed - get_node(enemy).move_and_slide() - - - if Vector3(get_node(enemy).global_position).distance_to(target_location) <= 0.5: - is_looking_to_move = false - - - -func _on_detection_player_spotted(player): - Transistioned.emit(self, "enemyfollow") - - -func makepath() -> void: - nav_agent.target_position = target_location - #print(nav_agent.target_position) - -func _on_moving_cooldown_timeout(): - - var space_state = get_world_3d().direct_space_state - var random_dir = Vector3(rng.randf_range(-1,1), get_node(enemy).global_position.y, rng.randf_range(-1, 1)) - var query = PhysicsRayQueryParameters3D.create(get_node(enemy).global_position, get_node(enemy).global_position + (random_dir * move_distance), pow(2, 1-1) + pow(2, 3-1),[self]) - - var result = space_state.intersect_ray(query) - if !result: - is_looking_to_move = true - target_location = get_node(enemy).global_position + (random_dir * move_distance) - makepath() - diff --git a/Scripts/FurniturePhysics.gd b/Scripts/FurniturePhysics.gd new file mode 100644 index 00000000..2e509132 --- /dev/null +++ b/Scripts/FurniturePhysics.gd @@ -0,0 +1,54 @@ +extends RigidBody3D + +# id for the furniture json. this will be used to load the data when creating a furniture +# when saving a mob in between levels, we will use some static json defined by this id +# and some dynamic json like the furniture health +var id: String + +@export var corpse_scene: PackedScene +var current_health: float = 10.0 + +func _get_hit(damage): + + #3d +# tween = create_tween() +# tween.tween_property(get_node(sprite), "scale", get_node(sprite).scale * 1.35, 0.1) +# tween.tween_property(get_node(sprite), "scale", original_scale, 0.1) + + current_health -= damage + if current_health <= 0: + _die() + +func _die(): + add_corpse.call_deferred(global_position) + queue_free() + +func add_corpse(pos: Vector3): + var corpse = corpse_scene.instantiate() + get_tree().get_root().add_child(corpse) + corpse.global_position = pos + corpse.add_to_group("mapitems") + +func set_sprite(newSprite: Resource): + $Sprite3D.texture = newSprite + #var material := StandardMaterial3D.new() + #material.albedo_texture = newSprite # Set the texture of the material + #material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA + #$MeshInstance3D.mesh.surface_set_material(0, material) + +func set_new_rotation(amount: int): + if amount == 180: + $Sprite3D.rotation_degrees.y = amount-180 + elif amount == 0: + $Sprite3D.rotation_degrees.y = amount+180 + else: + $Sprite3D.rotation_degrees.y = amount-0 + +func get_sprite_rotation() -> int: + var rot: int = $Sprite3D.rotation_degrees.y + if rot == 180: + return rot-180 + elif rot == 0: + return rot+180 + else: + return rot-0 diff --git a/Scripts/FurnitureStatic.gd b/Scripts/FurnitureStatic.gd new file mode 100644 index 00000000..e4755cd4 --- /dev/null +++ b/Scripts/FurnitureStatic.gd @@ -0,0 +1,70 @@ +extends StaticBody3D + + +# id for the furniture json. this will be used to load the data when creating a furniture +# when saving a mob in between levels, we will use some static json defined by this id +# and some dynamic json like the furniture health +var id: String + +@export var corpse_scene: PackedScene +var current_health: float = 10.0 + + +func _get_hit(damage): + current_health -= damage + if current_health <= 0: + _die() + +func _die(): + add_corpse.call_deferred(global_position) + queue_free() + +func add_corpse(pos: Vector3): + var corpse = corpse_scene.instantiate() + get_tree().get_root().add_child(corpse) + corpse.global_position = pos + corpse.add_to_group("mapitems") + +func get_sprite_rotation() -> int: + return $Sprite3D.rotation_degrees.y + +func set_sprite(newSprite: Texture): + $Sprite3D.texture = newSprite + + # Calculate new dimensions for the collision shape + var sprite_width = newSprite.get_width() + var sprite_height = newSprite.get_height() + + var new_x = sprite_width / 100.0 # 0.1 units per 10 pixels in width + var new_z = sprite_height / 100.0 # 0.1 units per 10 pixels in height + var new_y = 0.5 # Fixed height for now + + # Update the collision shape + var new_shape = BoxShape3D.new() + new_shape.extents = Vector3(new_x / 2.0, new_y / 2.0, new_z / 2.0) # BoxShape3D extents are half extents + + var collision_shape_node = $CollisionShape3D + collision_shape_node.shape = new_shape + +func set_new_rotation(amount: int): + var rotation_amount = amount + if amount == 180: + rotation_amount = amount - 180 + elif amount == 0: + rotation_amount = amount + 180 + else: + rotation_amount = amount + + # Rotate the entire StaticBody3D node, including its children + rotation_degrees.y = rotation_amount + + +func get_my_rotation() -> int: + var rot: int = int(rotation_degrees.y) + if rot == 180: + return rot-180 + elif rot == 0: + return rot+180 + else: + return rot-0 + diff --git a/Scripts/GameOver.gd b/Scripts/GameOver.gd new file mode 100644 index 00000000..3575088b --- /dev/null +++ b/Scripts/GameOver.gd @@ -0,0 +1,7 @@ +extends Control + + + +func _on_return_button_button_up(): + Helper.reset() + get_tree().change_scene_to_file("res://scene_selector.tscn") diff --git a/Scripts/Helper.gd b/Scripts/Helper.gd index 4ab0f310..c6b2c147 100644 --- a/Scripts/Helper.gd +++ b/Scripts/Helper.gd @@ -1,21 +1,55 @@ extends Node3D var current_level_name : String +# Overmap data +var chunks: Dictionary = {} #Stores references to tilegrids representing the overmap +var current_level_pos: Vector2 = Vector2(0.1,0.1) +var current_map_seed: int = 0 +var position_coord: Vector2 = Vector2(0, 0) +# Helper scripts +const json_Helper_Class = preload("res://Scripts/Helper/json_helper.gd") +var json_helper: Node = null +const save_Helper_Class = preload("res://Scripts/Helper/save_helper.gd") +var save_helper: Node = null # Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. + json_helper = json_Helper_Class.new() + save_helper = save_Helper_Class.new() + add_child(save_helper) +# Called when the game is over and everything will need to be reset to default +func reset(): + chunks = {} #Stores references to tilegrids representing the overmap + current_level_pos = Vector2(0.1,0.1) + current_map_seed = 0 + position_coord = Vector2(0, 0) + save_helper.current_save_folder = "" + var mapMobs = get_tree().get_nodes_in_group("mobs") + for mob in mapMobs: + mob.remove_from_group("mobs") + mob.queue_free() + var mapitems = get_tree().get_nodes_in_group("mapitems") + for item in mapitems: + item.remove_from_group("mapitems") + item.queue_free() -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass - -func switch_level(level_name): +#Level_name is a filename in /mods/core/maps +#global_pos is the absolute position on the overmap +#see overmap.gd for how global_pos is used there +func switch_level(level_name: String, global_pos: Vector2) -> void: current_level_name = level_name + # This is only true if the game has just initialized + # In that case no level has once been loaded so there is no game to save + if current_level_pos != Vector2(0.1,0.1): + save_helper.save_current_level(current_level_pos) + save_helper.save_overmap_state() + save_helper.save_player_inventory() + save_helper.save_player_equipment() + save_helper.save_player_state(get_tree().get_first_node_in_group("Players")) + current_level_pos = global_pos get_tree().change_scene_to_file("res://level_generation.tscn") - func line(pos1: Vector3, pos2: Vector3, color = Color.WHITE_SMOKE) -> MeshInstance3D: var mesh_instance := MeshInstance3D.new() @@ -23,7 +57,7 @@ func line(pos1: Vector3, pos2: Vector3, color = Color.WHITE_SMOKE) -> MeshInstan var material := ORMMaterial3D.new() mesh_instance.mesh = immediate_mesh - mesh_instance.cast_shadow = 0 + mesh_instance.cast_shadow = mesh_instance.SHADOW_CASTING_SETTING_OFF immediate_mesh.surface_begin(Mesh.PRIMITIVE_LINES, material) immediate_mesh.surface_add_vertex(pos1) diff --git a/Scripts/Helper/json_helper.gd b/Scripts/Helper/json_helper.gd new file mode 100644 index 00000000..380b131b --- /dev/null +++ b/Scripts/Helper/json_helper.gd @@ -0,0 +1,148 @@ +extends Node + +#This script is a generic helper script to load and manipulate JSOn files. +#In Helper.gd, this script is loaded on game start +#It can be accessed trough Helper.json_helper + + +#This function takes the path to a json file and returns its contents as an array +#It should check if the contents is an array or not. If it is not an array, +#it should return an empty array +func load_json_array_file(source: String) -> Array: + var data_json: Array = [] + var file = FileAccess.open(source, FileAccess.READ) + if file: + var parsed_data = JSON.parse_string(file.get_as_text()) + if typeof(parsed_data) == TYPE_ARRAY: + data_json = parsed_data + else: + print_debug("The file does not contain a JSON array: " + source) + else: + print_debug("Unable to load file: " + source) + return data_json + +#This function takes the path to a json file and returns its contents as an array +#It should check if the contents is an array or not. If it is not an array, +#it should return an empty array +func load_json_dictionary_file(source: String) -> Dictionary: + var data_json: Dictionary = {} + var file = FileAccess.open(source, FileAccess.READ) + if file: + var parsed_data = JSON.parse_string(file.get_as_text()) + if typeof(parsed_data) == TYPE_DICTIONARY: + data_json = parsed_data + else: + print_debug("The file does not contain a JSON dictionary: " + source) + else: + print_debug("Unable to load file: " + source) + return data_json + + +# This function lists all the files in a specified directory. +# it takes two arguments: `dirName` (the path of the directory +# to list files from) and `extensionFilter` (an optional +# array of file extensions to filter by). +# If the `extensionFilter` is empty, all filenames will be returned. +# If not, it will only return filenames which file extentnion is in `extensionFilter` +func file_names_in_dir(dirName: String, extensionFilter: Array = []) -> Array: + var fileNames: Array = [] + var dir = DirAccess.open(dirName) + if dir: + dir.list_dir_begin() + var file_name = dir.get_next() + while file_name != "": + if !dir.current_is_dir(): + if extensionFilter.is_empty(): + fileNames.append(file_name) + elif file_name.get_extension() in extensionFilter: + fileNames.append(file_name) + file_name = dir.get_next() + else: + print_debug("An error occurred when trying to access the path: " + dirName) + dir.list_dir_end() + return fileNames + + +# This function lists all the files in a specified directory. +# it takes ne argument: `dirName` (the path of the directory +# to list folders from) +func folder_names_in_dir(path: String) -> Array: + var dirs: Array = [] + var dir = DirAccess.open(path) + if dir: + dir.list_dir_begin() + var folder_name = dir.get_next() + while folder_name != "": + if dir.current_is_dir(): + dirs.append(folder_name) + folder_name = dir.get_next() + else: + print("An error occurred when trying to access the path.") + return dirs + +#This function takes a json string and saves it as a json file. +func write_json_file(path: String, json: String): + # Save the JSON string to the selected file location + var file = FileAccess.open(path, FileAccess.WRITE) + if file: + file.store_string(json) + file.close() + else: + print_debug("Unable to write file " + path) + +# This function will take a path and create a new json file with just {} or [] as the contents. +#If the file already exists, we do not overwrite it +func create_new_json_file(filename: String = "", isArray: bool = true): + # If no string was provided, return without doing anything. + if filename.is_empty(): + return + + # If the file already exists, alert the user that the file already exists. + if FileAccess.file_exists(filename): + return + + var file = FileAccess.open(filename, FileAccess.WRITE) + #The file cen contain either one object or one array with a list of objects + if isArray: + file.store_string("[]") + else: + file.store_string("{}") + file.close() + + + +#This function enters a new item into the json file specified by the source variable +#The item will just be an object like this: {"id": id} +#If an item with that ID already exists in that file, do nothing +func add_id_to_json_file(source: String, id: String): +# If the source is not a JSON file, return without doing anything. + if !source.ends_with(".json"): + return + + # If the file does not exist, create a new JSON file. + if !FileAccess.file_exists(source): + create_new_json_file(source, true) + + var data_json: Array = load_json_array_file(source) + + # Check if an item with the given ID already exists in the file. + for item in data_json: + if item.get("id", "") == id: + print_debug("An item with ID (" + id + ") already exists in the file.") + return + + # If no item with the given ID exists, add a new item to the JSON data. + data_json.append({"id": id}) + write_json_file(source, JSON.stringify(data_json, "\t")) + + +#This function will take a path to a json file and delete it +func delete_json_file(path: String): + var dir = DirAccess.open(path) + if dir: + # Delete the file + var err = dir.remove(path) + if err == OK: + print_debug("File deleted successfully: " + path) + else: + print_debug("An error occurred when trying to delete the file: " + path) diff --git a/Scripts/Helper/save_helper.gd b/Scripts/Helper/save_helper.gd new file mode 100644 index 00000000..47b0aa7d --- /dev/null +++ b/Scripts/Helper/save_helper.gd @@ -0,0 +1,309 @@ +extends Node + +#This script is loaded in to the helper.gd autoload singleton +#It can be accessed trough Helper.save_helper +#This script provides functions to help transitioning between maps +#It has functions to save the current map and the location of items, mobs and tiles +#It also has functions to load saved data and place the items, mobs and tiles on the map + +var current_save_folder: String = "" + +# Function to save the current map state +func save_current_level(global_pos: Vector2) -> void: + var dir = DirAccess.open(current_save_folder) + var map_folder = "map_x" + str(global_pos.x) + "_y" + str(global_pos.y) + var target_folder = current_save_folder+ "/" + map_folder + if !dir.dir_exists(map_folder): + if !dir.make_dir(map_folder) == OK: + print_debug("Failed to create a folder for the current map") + return + + save_map_data(target_folder) + save_mob_data(target_folder) + save_item_data(target_folder) + save_furniture_data(target_folder) + +#Creates a new save folder. The name of this folder will be the current date and time +#This is to make sure it is unique. The folder name is stored in order to perform +#save and load actions. Also, the map seed is created and stored +func create_new_save(): + var dir = DirAccess.open("user://") + var unique_folder_path := "save/" + Time.get_datetime_string_from_system() + var sanitized_path = unique_folder_path.replace(":","") + if dir.make_dir_recursive(sanitized_path) == OK: + current_save_folder = "user://" + sanitized_path + Helper.json_helper.write_json_file(current_save_folder + "/game.json",\ + JSON.stringify({"mapseed": randi()})) + else: + print_debug("Failed to create a unique folder for the demo.") + +# Save all the mobs and their current stats to the mobs file for this map +func save_mob_data(target_folder: String) -> void: + var mobData: Array = [] + var mapMobs = get_tree().get_nodes_in_group("mobs") + var newMobData: Dictionary + for mob in mapMobs: + mob.remove_from_group("mobs") + newMobData = { + "id": mob.id, + "global_position_x": mob.global_position.x, + "global_position_y": mob.global_position.y, + "global_position_z": mob.global_position.z, + "rotation": mob.rotation_degrees.y, + "melee_damage": mob.melee_damage, + "melee_range": mob.melee_range, + "health": mob.health, + "current_health": mob.current_health, + "move_speed": mob.moveSpeed, + "current_move_speed": mob.current_move_speed, + "idle_move_speed": mob.idle_move_speed, + "current_idle_move_speed": mob.current_idle_move_speed, + "sight_range": mob.sightRange, + "sense_range": mob.senseRange, + "hearing_range": mob.hearingRange + } + mobData.append(newMobData.duplicate()) + mob.queue_free() + Helper.json_helper.write_json_file(target_folder + "/mobs.json", JSON.stringify(mobData)) + +#Save the type and position of all mobs on the map +func save_item_data(target_folder: String) -> void: + var itemData: Array = [] + var defaultItem: Dictionary = {"itemid": "item1", \ + "global_position_x": 0, "global_position_y": 0, "global_position_z": 0, "inventory": []} + var mapitems = get_tree().get_nodes_in_group("mapitems") + var newitemData: Dictionary + for item in mapitems: + item.remove_from_group("mapitems") + newitemData = defaultItem.duplicate() + newitemData["global_position_x"] = item.global_position.x + newitemData["global_position_y"] = item.global_position.y + newitemData["global_position_z"] = item.global_position.z + newitemData["inventory"] = item.get_node(item.inventory).serialize() + itemData.append(newitemData.duplicate()) + item.queue_free() + Helper.json_helper.write_json_file(target_folder + "/items.json",\ + JSON.stringify(itemData)) + + +func save_furniture_data(target_folder: String) -> void: + var furnitureData: Array = [] + var mapFurniture = get_tree().get_nodes_in_group("furniture") + var newFurnitureData: Dictionary + var newRot: int + for furniture in mapFurniture: + furniture.remove_from_group("furniture") + if furniture is RigidBody3D: + newRot = furniture.rotation_degrees.y + else: + newRot = furniture.get_my_rotation() + newFurnitureData = { + "id": furniture.id, + "moveable": furniture is RigidBody3D, + "global_position_x": furniture.global_position.x, + "global_position_y": furniture.global_position.y, + "global_position_z": furniture.global_position.z, + "rotation": newRot, # Save the Y-axis rotation + "sprite_rotation": furniture.get_sprite_rotation() + } + furnitureData.append(newFurnitureData.duplicate()) + furniture.queue_free() + Helper.json_helper.write_json_file(target_folder + "/furniture.json", JSON.stringify(furnitureData)) + + +# Saves all of the maplevels to disk +# A maplevel is one 32x32 layer at a certain x,y and z position +# This layer will contain 1024 blocks +func save_map_data(target_folder: String) -> void: + var level_width: int = 32 + var level_height: int = 32 + var tacticalmapData: Dictionary = {"maplevels": []} + var tree: SceneTree = get_tree() + var mapLevels = tree.get_nodes_in_group("maplevels") + + for level: Node3D in mapLevels: + level.remove_from_group("maplevels") + var level_node_data: Array = [] + var level_node_dict: Dictionary = { + "map_x": level.global_position.x, + "map_y": level.global_position.y, + "map_z": level.global_position.z, + "blocks": level_node_data + } + + # Iterate over each possible block position in the level + for h in range(level_height): + for w in range(level_width): + var block_data: Dictionary = get_block_data_at_position(level, Vector3(w, 0, h)) + level_node_data.append(block_data) + + tacticalmapData.maplevels.append(level_node_dict) + + Helper.json_helper.write_json_file(target_folder + "/map.json", \ + JSON.stringify(tacticalmapData)) + +# Helper function to get block data at a specific position +func get_block_data_at_position(level: Node3D, position: Vector3) -> Dictionary: + var block: StaticBody3D = find_block_at_position(level, position) + if block: + var blockRotation: int = block.rotation_degrees.y + var myRotation: int + if blockRotation == 90: + myRotation = blockRotation-90 + else: + myRotation = blockRotation+90 + return {"id": block.id, "rotation": myRotation} + return {} + +# Helper function to find a block at a specific position +func find_block_at_position(level: Node3D, position: Vector3) -> StaticBody3D: + for child in level.get_children(): + if child is StaticBody3D and child.position == position: + return child + return null + + +# This function determines the saved map folder path for the current level. +# It constructs this path using the current level's position and the current +# save folder's path. If the map folder for the level exists, it returns +# the full path to this folder; otherwise, it returns an empty string. +# The current_save_folder is determined when the game is first started +# and does not change unless the user start a new game. +func get_saved_map_folder(level_pos: Vector2) -> String: + var dir = DirAccess.open(current_save_folder) + var map_folder = "map_x" + str(level_pos.x) + "_y" + str(level_pos.y) + var target_folder = current_save_folder+ "/" + map_folder + # For example, the target_folder could be: "C:\Users\User\AppData\Roaming\Godot\app_userdata\ + # CataX\save\2024-01-08T202236\map_x0_y0" + if dir.dir_exists(map_folder): + return target_folder + return "" + +# Function to load game.json from a given saved game folder +func load_game_from_folder(save_folder_name: String) -> void: + current_save_folder = "user://save/" + save_folder_name + +# Function to save the current state of the overmap +func save_overmap_state() -> void: + var save_path = current_save_folder + "/overmap_state.json" + var save_data: Dictionary = { + "position_coord_x": Helper.position_coord.x, + "position_coord_y": Helper.position_coord.y, + "chunk_data": {} + } + + # Convert Vector2 keys to strings + for key in Helper.chunks: + var key_str = str(key.x) + "," + str(key.y) + save_data["chunk_data"][key_str] = Helper.chunks[key] + + Helper.json_helper.write_json_file(save_path, JSON.stringify(save_data)) + +# Function to load the saved state of the overmap +func load_overmap_state() -> void: + var overmap_path = current_save_folder + "/overmap_state.json" + var overmap_state_data = Helper.json_helper.load_json_dictionary_file(overmap_path) + + if overmap_state_data: + Helper.position_coord = Vector2(overmap_state_data["position_coord_x"],\ + overmap_state_data["position_coord_y"]) + Helper.chunks.clear() + + # Convert string keys back to Vector2 + var chunk_data = overmap_state_data["chunk_data"] + for key_str in chunk_data: + var key_parts = key_str.split(",") + if key_parts.size() == 2: + var key = Vector2(float(key_parts[0]), float(key_parts[1])) + Helper.chunks[key] = chunk_data[key_str] + + print_debug("Overmap state loaded from: ", overmap_path) + else: + print_debug("Failed to parse overmap state file: ", overmap_path) + +# Function to save the player's inventory to a JSON file. +func save_player_inventory() -> void: + var save_path = current_save_folder + "/player_inventory.json" + var inventory_data = JSON.stringify(General.player_inventory_dict) + Helper.json_helper.write_json_file(save_path, inventory_data) + +# Function to save the player's equipment to a JSON file. +func save_player_equipment() -> void: + var save_path = current_save_folder + "/player_equipment.json" + var equipment_data = JSON.stringify(General.player_equipment_dict) + Helper.json_helper.write_json_file(save_path, equipment_data) + + + # Function to load the player's inventory data +func load_player_inventory() -> void: + var load_path = current_save_folder + "/player_inventory.json" + + # Load the inventory data from the file + var loaded_inventory_data = Helper.json_helper.load_json_dictionary_file(load_path) + + if loaded_inventory_data: + # Update the General.player_inventory_dict with the loaded data + General.player_inventory_dict = loaded_inventory_data + print_debug("Player inventory loaded from: " + load_path) + else: + print_debug("Failed to load player inventory from: " + load_path) + + # Function to load the player's inventory data +func load_player_equipment() -> void: + var load_path = current_save_folder + "/player_equipment.json" + + # Load the equipment data from the file + var loaded_equipment_data = Helper.json_helper.load_json_dictionary_file(load_path) + + if loaded_equipment_data: + # Update the General.player_inventory_dict with the loaded data + General.player_equipment_dict = loaded_equipment_data + print_debug("Player equipment loaded from: " + load_path) + else: + print_debug("Failed to load player equipment from: " + load_path) + +# Function to save the player's state to a JSON file. +func save_player_state(player: CharacterBody3D) -> void: + if !player: + return + var save_path = current_save_folder + "/player_state.json" + var player_state: Dictionary = { + "is_alive": player.is_alive, + "left_arm_health": player.current_left_arm_health, + "right_arm_health": player.current_right_arm_health, + "head_health": player.current_head_health, + "torso_health": player.current_torso_health, + "left_leg_health": player.current_left_leg_health, + "right_leg_health": player.current_right_leg_health, + "stamina": player.current_stamina, + "hunger": player.current_hunger, + "thirst": player.current_thirst, + "nutrition": player.current_nutrition, + "pain": player.current_pain + } + Helper.json_helper.write_json_file(save_path, JSON.stringify(player_state)) + +# Function to load the player's state from a JSON file. +func load_player_state(player: CharacterBody3D) -> void: + var load_path = current_save_folder + "/player_state.json" + var player_state = Helper.json_helper.load_json_dictionary_file(load_path) + + if player_state: + player.is_alive = player_state["is_alive"] + player.current_left_arm_health = player_state["left_arm_health"] + player.current_right_arm_health = player_state["right_arm_health"] + player.current_head_health = player_state["head_health"] + player.current_torso_health = player_state["torso_health"] + player.current_left_leg_health = player_state["left_leg_health"] + player.current_right_leg_health = player_state["right_leg_health"] + player.current_stamina = player_state["stamina"] + player.current_hunger = player_state["hunger"] + player.current_thirst = player_state["thirst"] + player.current_nutrition = player_state["nutrition"] + player.current_pain = player_state["pain"] + # Emit signals to update the HUD + player.update_doll.emit(player.current_head_health, player.current_right_arm_health, player.current_left_arm_health, player.current_torso_health, player.current_right_leg_health, player.current_left_leg_health) + player.update_stamina_HUD.emit(player.current_stamina) + else: + print_debug("Failed to load player state from: ", load_path) + diff --git a/Scripts/InventoryContainerListItem.gd b/Scripts/InventoryContainerListItem.gd new file mode 100644 index 00000000..a42ddd55 --- /dev/null +++ b/Scripts/InventoryContainerListItem.gd @@ -0,0 +1,24 @@ +extends Control + +signal containerlistitem_clicked(clicked_item: Control) +var containerInstance: Node3D = null +var selected: bool = false + +#When the event was a left mouse button press, signal it was clicked +func _on_texture_rect_gui_input(event): + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + containerlistitem_clicked.emit(self) + +func set_item_texture(res: Resource) -> void: + $ContainerSprite.texture = res + +func get_texture() -> Resource: + return $ContainerSprite.texture + +#Mark the clicked containerlistitem as selected +func set_selected(is_selected: bool) -> void: + selected = is_selected + if selected: + modulate = Color(0.227, 0.635, 0.757) + else: + modulate = Color(1,1,1) diff --git a/Scripts/InventoryWindow.gd b/Scripts/InventoryWindow.gd new file mode 100644 index 00000000..c3d5da1b --- /dev/null +++ b/Scripts/InventoryWindow.gd @@ -0,0 +1,262 @@ +extends Control + +# This node holds the data of the items in the container that is selected in the containerList +@export var proximity_inventory: InventoryStacked +# This node visualizes the items in the container that is selected in the containerList +@export var proximity_inventory_control: CtrlInventoryStacked + +# The node that visualizes the player inventory +@export var inventory_control : CtrlInventoryStacked +# The player inventory +@export var inventory : InventoryStacked +# Holds a list of containers represented by their sprite +@export var containerList : VBoxContainer +@export var containerListItem : PackedScene + +# Equipment +@export var LeftHandEquipmentSlot : ItemRefSlot +@export var RightHandEquipmentSlot : ItemRefSlot + +# The tooltip will show when the player hovers over an item +@export var tooltip: Control +var is_showing_tooltip = false +@export var tooltip_item_name : Label +@export var tooltip_item_description : Label + +signal item_was_equipped(equippedItem: InventoryItem, slotName: String) +signal item_was_cleared(slotName: String) + +# Called when the node enters the scene tree for the first time. +func _ready(): + # The items that were in the player inventory when they exited + # the previous level are loaded back into the inventory + inventory.deserialize(General.player_inventory_dict) + if General.player_equipment_dict.has("LeftHandEquipmentSlot"): + LeftHandEquipmentSlot.deserialize(General.player_equipment_dict.LeftHandEquipmentSlot) + if General.player_equipment_dict.has("RightHandEquipmentSlot"): + RightHandEquipmentSlot.deserialize(General.player_equipment_dict.RightHandEquipmentSlot) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + if is_showing_tooltip: + tooltip.visible = true + tooltip.global_position = tooltip.get_global_mouse_position() + Vector2(0, -5 - tooltip.size.y) + else: + tooltip.visible = false + + +func _on_inventory_item_mouse_entered(item): + is_showing_tooltip = true + tooltip_item_name.text = str(item.get_property("name", "")) + tooltip_item_description.text = item.get_property("description", "") + +func _on_inventory_item_mouse_exited(_item): + is_showing_tooltip = false + +func check_if_resources_are_available(item_id, amount_to_spend: int): + var inventory_node = inventory + print("checking if we have the item id in inv") + if inventory_node.get_item_by_id(item_id): + print("we have the item id") + var item_total_amount : int = 0 + var current_amount_to_spend = amount_to_spend + var items = inventory_node.get_items_by_id(item_id) + for item in items: + item_total_amount += InventoryStacked.get_item_stack_size(item) + if item_total_amount >= current_amount_to_spend: + return true + return false + +func try_to_spend_item(item_id, amount_to_spend : int): + var inventory_node = inventory + if inventory_node.get_item_by_id(item_id): + var item_total_amount : int = 0 + var current_amount_to_spend = amount_to_spend + var items = inventory_node.get_items_by_id(item_id) + + for item in items: + item_total_amount += InventoryStacked.get_item_stack_size(item) + + if item_total_amount >= amount_to_spend: + merge_items_to_total_amount(items, inventory_node, item_total_amount - current_amount_to_spend) + return true + else: + return false + else: + return false + +func merge_items_to_total_amount(items, inventory_node, total_amount : int): + var current_total_amount = total_amount + for item in items: + if inventory_node.get_item_stack_size(item) < current_total_amount: + if inventory_node.get_item_stack_size(item) == item.get_property("max_stack_size"): + current_total_amount -= inventory_node.get_item_stack_size(item) + elif inventory_node.get_item_stack_size(item) < item.get_property("max_stack_size"): + current_total_amount -= item.get_property("max_stack_size") - inventory_node.get_item_stack_size(item) + inventory_node.set_item_stack_size(item, item.get_property("max_stack_size")) + + elif inventory_node.get_item_stack_size(item) == current_total_amount: + current_total_amount = 0 + + elif inventory_node.get_item_stack_size(item) > current_total_amount: + inventory_node.set_item_stack_size(item, current_total_amount) + current_total_amount = 0 + + if inventory_node.get_item_stack_size(item) == 0: + inventory_node.remove_item(item) + +func _on_crafting_menu_start_craft(recipe): + if recipe: + #first we need to use required resources for the recipe + for required_item in recipe["required_resource"]: + try_to_spend_item(required_item, recipe["required_resource"][required_item]) + #adding a new item(s) to the inventory based on the recipe + var item + item = inventory.create_and_add_item(recipe["crafts"]) + InventoryStacked.set_item_stack_size(item, recipe["craft_amount"]) + + +# When an item is added to the player inventory +# We check where it came from and delete it from that inventory +# This happens when the player moves an item from $CtrlInventoryGridExProx +func _on_inventory_grid_stacked_item_added(item): + if item.has_meta("original_parent"): + var original_parent = item.get_meta("original_parent") + var original_item = item.get_meta("original_item") + if original_parent and original_parent.has_method("remove_item"): + original_parent.remove_item(original_item) # Remove from original parent + +func get_inventory() -> InventoryStacked: + return inventory + +func get_equipment_dict() -> Dictionary: + var player_equipment: Dictionary = { + "LeftHandEquipmentSlot": LeftHandEquipmentSlot.serialize(), + "RightHandEquipmentSlot": RightHandEquipmentSlot.serialize() + } + return player_equipment + +# Signal handler for adding a container to the proximity +func _on_item_detector_add_to_proximity_inventory(container: Node3D): + add_container_to_list(container) + +# Signal handler for removing a container from the proximity +func _on_item_detector_remove_from_proximity_inventory(container: Node3D): + remove_container_from_list(container) + +# Function to add a container to the containerList +func add_container_to_list(container: Node3D): + # Create a new instance of the containerlistitem node + var containerListItemInstance = containerListItem.instantiate() + # Assign the texture to the TextureRect + containerListItemInstance.set_item_texture(container.get_sprite()) + # We save a reference to the container + containerListItemInstance.containerInstance = container + containerListItemInstance.containerlistitem_clicked.connect(_on_container_clicked) + containerList.add_child(containerListItemInstance) + + # Check if this is the only container in the list + if containerList.get_child_count() == 1: + # Set the inventory of the proximity inventory control to this container's inventory + var container_inventory = containerListItemInstance.containerInstance.get_inventory() + if container_inventory: + proximity_inventory_control.inventory = container_inventory + # Make the proximity inventory control visible + proximity_inventory_control.visible = true + + +# Function to update the proximity inventory control when a container is selected +func _on_container_clicked(containerListItemInstance: Control): + if containerListItemInstance and containerListItemInstance.containerInstance: + var container_inventory = containerListItemInstance.containerInstance.get_inventory() + if container_inventory: + proximity_inventory_control.inventory = container_inventory + +# Function to remove a container from the containerList +func remove_container_from_list(container: Node3D): + var was_selected = false + var first_container = null + + # Check if the container being removed is the currently selected one + if proximity_inventory_control.inventory == container.get_inventory(): + was_selected = true + + # Remove the container from the list and count remaining containers + var remaining_containers = 0 + for child in containerList.get_children(): + if child.containerInstance == container: + child.queue_free() + elif not child.is_queued_for_deletion(): # Only count children not queued for deletion + remaining_containers += 1 + if first_container == null: + first_container = child.containerInstance + + # If the removed container was selected, update the inventory to the first remaining container's inventory + if was_selected and remaining_containers > 0: + var first_container_inventory = first_container.get_inventory() + if first_container_inventory: + proximity_inventory_control.inventory = first_container_inventory + elif was_selected or remaining_containers == 0: + # Reset the inventory to proximity_inventory and hide the control + proximity_inventory_control.inventory = proximity_inventory + proximity_inventory_control.visible = false + + +# This function is called when an item is equipped in the left hand equipment slot +func _on_left_hand_equipment_slot_item_equipped(): + var equipped_item_left = LeftHandEquipmentSlot.get_item() + var equipped_item_right = RightHandEquipmentSlot.get_item() + # If we have a weapon in the right hand and it's a two handed weapon, + # We clear the left handed slot again + if equipped_item_right and equipped_item_right.get_property("two_handed", false): + LeftHandEquipmentSlot.clear() + item_was_cleared.emit("LeftHand") + return + # If the weapon we equip is a two handed weapon, clear the weapon in the other weapon slot + if equipped_item_left and equipped_item_left.get_property("two_handed", false): + # If the item is two-handed, clear the right hand slot + RightHandEquipmentSlot.clear() + item_was_cleared.emit("RightHand") + item_was_equipped.emit(equipped_item_left, "LeftHand") + +# This function is called when an item is equipped in the right hand equipment slot +func _on_right_hand_equipment_slot_item_equipped(): + var equipped_item_left = LeftHandEquipmentSlot.get_item() + var equipped_item_right = RightHandEquipmentSlot.get_item() + # If we have a weapon in the left hand and it's a two handed weapon, + # We clear the right handed slot again + if equipped_item_left and equipped_item_left.get_property("two_handed", false): + RightHandEquipmentSlot.clear() + item_was_cleared.emit("RightHand") + return + elif equipped_item_right and equipped_item_right.get_property("two_handed", false): + # If the item is two-handed, clear the left hand slot + LeftHandEquipmentSlot.clear() + item_was_cleared.emit("LeftHand") + item_was_equipped.emit(equipped_item_right, "RightHand") + + +# This function is called when an item is removed from the left hand equipment slot +func _on_left_hand_equipment_slot_cleared(): + item_was_cleared.emit("LeftHand") + +# This function is called when an item is removed from the right hand equipment slot +func _on_right_hand_equipment_slot_cleared(): + item_was_cleared.emit("RightHand") + + +func _on_equip_right_button_button_up(): + RightHandEquipmentSlot.equip(inventory_control.get_selected_inventory_item()) + + +func _on_equip_left_button_button_up(): + LeftHandEquipmentSlot.equip(inventory_control.get_selected_inventory_item()) + + +func _on_transfer_left_button_button_up(): + inventory.transfer(inventory_control.get_selected_inventory_item(), proximity_inventory_control.inventory) + + +func _on_transfer_right_button_button_up(): + var selected_inventory_item: InventoryItem = proximity_inventory_control.get_selected_inventory_item() + proximity_inventory_control.inventory.transfer(selected_inventory_item, inventory) diff --git a/Scripts/ItemAmmoEditor.gd b/Scripts/ItemAmmoEditor.gd new file mode 100644 index 00000000..e7cf0158 --- /dev/null +++ b/Scripts/ItemAmmoEditor.gd @@ -0,0 +1,17 @@ +extends Control + +# This scene is intended to be used inside the item editor +# It is supposed to edit exactly one type of ammo + + +# Form elements +@export var DamageNumberBox: SpinBox = null + +func get_properties() -> Dictionary: + return { + "damage": DamageNumberBox.get_line_edit().text + } + +func set_properties(properties: Dictionary) -> void: + if properties.has("damage"): + DamageNumberBox.get_line_edit().text = properties["damage"] diff --git a/Scripts/ItemDetector.gd b/Scripts/ItemDetector.gd index 4f3f07f0..7cf9280c 100644 --- a/Scripts/ItemDetector.gd +++ b/Scripts/ItemDetector.gd @@ -2,26 +2,16 @@ extends Area3D signal add_to_proximity_inventory signal remove_from_proximity_inventory -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass func _on_area_entered(area): if area.get_owner().is_in_group("Containers"): - add_to_proximity_inventory.emit(area.get_owner().get_items()) + add_to_proximity_inventory.emit(area.get_owner()) #print(area.get_owner().get_items()) - - func _on_area_exited(area): if area.get_owner().is_in_group("Containers"): - remove_from_proximity_inventory.emit(area.get_owner().get_items()) + remove_from_proximity_inventory.emit(area.get_owner()) diff --git a/Scripts/ItemEditor.gd b/Scripts/ItemEditor.gd new file mode 100644 index 00000000..a9880074 --- /dev/null +++ b/Scripts/ItemEditor.gd @@ -0,0 +1,154 @@ +extends Control + +#This scene is intended to be used inside the content editor +#It is supposed to edit exactly one item (friend and foe) +#It expects to save the data to a JSON file that contains all data from a mod +#To load data, provide the name of the item data file and an ID + + +@export var tabContainer: TabContainer = null + +# Used to open the sprite selector popup +@export var itemImageDisplay: TextureRect = null +@export var IDTextLabel: Label = null + +# To show the name of the sprite +@export var PathTextLabel: Label = null + +# Name and description of the item +@export var NameTextEdit: TextEdit = null +@export var DescriptionTextEdit: TextEdit = null + +#The actual sprite selector popup +@export var itemSelector: Popup = null + +# Inventory propeties +@export var VolumeNumberBox: SpinBox = null +@export var WeightNumberBox: SpinBox = null +@export var StackSizeNumberBox: SpinBox = null +@export var MaxStackSizeNumberBox: SpinBox = null + +@export var typesContainer: HFlowContainer = null +@export var TwoHandedCheckBox: CheckBox = null + + + +# This signal will be emitted when the user presses the save button +# This signal should alert Gamedata that the item data array should be saved to disk +# The content editor has connected this signal to Gamedata already +signal data_changed() + +# The data that represents this item +# The data is selected from the Gamedata.data.items.data array +# based on the ID that the user has selected in the content editor +var contentData: Dictionary = {}: + set(value): + contentData = value + load_item_data() + itemSelector.sprites_collection = Gamedata.data.items.sprites + +func _ready(): + refresh_tab_visibility() + +#This function update the form based on the contentData that has been loaded +func load_item_data() -> void: + if itemImageDisplay != null and contentData.has("sprite") and Gamedata.data.items.sprites.has(contentData["sprite"]): + itemImageDisplay.texture = Gamedata.data.items.sprites[contentData["sprite"]] + PathTextLabel.text = contentData["sprite"] + if IDTextLabel != null: + IDTextLabel.text = str(contentData["id"]) + if NameTextEdit != null and contentData.has("name"): + NameTextEdit.text = contentData["name"] + if DescriptionTextEdit != null and contentData.has("description"): + DescriptionTextEdit.text = contentData["description"] + if VolumeNumberBox != null and contentData.has("volume"): + VolumeNumberBox.get_line_edit().text = contentData["volume"] + if WeightNumberBox != null and contentData.has("weight"): + WeightNumberBox.get_line_edit().text = contentData["weight"] + if StackSizeNumberBox != null and contentData.has("stack_size"): + StackSizeNumberBox.get_line_edit().text = contentData["stack_size"] + if MaxStackSizeNumberBox != null and contentData.has("max_stack_size"): + MaxStackSizeNumberBox.get_line_edit().text = contentData["max_stack_size"] + if TwoHandedCheckBox != null and contentData.has("two_handed"): + TwoHandedCheckBox.button_pressed = contentData["two_handed"] + + # Loop through typesContainer children to load additional properties and set button_pressed + for i in range(typesContainer.get_child_count()): + var child = typesContainer.get_child(i) + if child is CheckBox: + var tabIndex = get_tab_by_title(child.text) + var tab = tabContainer.get_child(tabIndex) + if tab and tab.has_method("set_properties") and contentData.has(child.text): + tab.set_properties(contentData[child.text]) + # Set button_pressed to true if contentData has the property + child.button_pressed = true + refresh_tab_visibility() + +#The editor is closed, destroy the instance +#TODO: Check for unsaved changes +func _on_close_button_button_up() -> void: + queue_free() + +# This function takes all data fro the form elements stores them in the contentData +# Since contentData is a reference to an item in Gamedata.data.items.data +# the central array for itemdata is updated with the changes as well +# The function will signal to Gamedata that the data has changed and needs to be saved +func _on_save_button_button_up() -> void: + contentData["sprite"] = PathTextLabel.text + # We add this image property only for the itemprotosets of gloot + contentData["image"] = Gamedata.data.items.spritePath + PathTextLabel.text + contentData["name"] = NameTextEdit.text + contentData["description"] = DescriptionTextEdit.text + contentData["volume"] = VolumeNumberBox.get_line_edit().text + contentData["weight"] = WeightNumberBox.get_line_edit().text + contentData["stack_size"] = StackSizeNumberBox.get_line_edit().text + contentData["max_stack_size"] = MaxStackSizeNumberBox.get_line_edit().text + contentData["two_handed"] = TwoHandedCheckBox.button_pressed + + # Loop through typesContainer children to save additional properties + for i in range(typesContainer.get_child_count()): + var child = typesContainer.get_child(i) + # Check if the child is a CheckBox and its button_pressed is true + if child is CheckBox and child.button_pressed: + var tabIndex = get_tab_by_title(child.text) + var tab = tabContainer.get_child(tabIndex) + if tab and tab.has_method("get_properties"): + contentData[child.text] = tab.get_properties() + data_changed.emit() + +#When the itemImageDisplay is clicked, the user will be prompted to select an image from +# "res://Mods/Core/items/". The texture of the itemImageDisplay will change to the selected image +func _on_item_image_display_gui_input(event) -> void: + if event is InputEventMouseButton and event.pressed: + itemSelector.show() + + +func _on_sprite_selector_sprite_selected_ok(clicked_sprite) -> void: + var itemTexture: Resource = clicked_sprite.get_texture() + itemImageDisplay.texture = itemTexture + PathTextLabel.text = itemTexture.resource_path.get_file() + + +func _on_type_check_button_up(): + refresh_tab_visibility() + +# This function loops over the checkboxes. +# It will show corresponding tabs in the tab container if the box is checked. +# It will hide the corresponding tabs in the tab container if the box is unchecked. +func refresh_tab_visibility() -> void: + # Loop over all children of the typesContainer + for i in range(typesContainer.get_child_count()): + # Get the child node at index 'i' + var child = typesContainer.get_child(i) + # Check if the child is a CheckBox + if child is CheckBox: + # Find the tab in the TabContainer with the same name as the checkbox text + tabContainer.set_tab_hidden(get_tab_by_title(child.text),!child.button_pressed) + +# Returns the tab control with the given name +func get_tab_by_title(tabName: String) -> int: + # Loop over all children of the typesContainer + for i in range(tabContainer.get_tab_count()): + if tabContainer.get_tab_title(i) == tabName: + return i + return -1 diff --git a/Scripts/ItemMagazineEditor.gd b/Scripts/ItemMagazineEditor.gd new file mode 100644 index 00000000..87a34da1 --- /dev/null +++ b/Scripts/ItemMagazineEditor.gd @@ -0,0 +1,22 @@ +extends Control + +# This scene is intended to be used inside the item editor +# It is supposed to edit exactly one magazine + + +# Form elements +@export var UsedAmmoTextEdit: TextEdit = null +@export var MaxAmmoNumberBox: SpinBox = null + + +func get_properties() -> Dictionary: + return { + "used_ammo": UsedAmmoTextEdit.text, + "max_ammo": MaxAmmoNumberBox.get_line_edit().text + } + +func set_properties(properties: Dictionary) -> void: + if properties.has("used_ammo"): + UsedAmmoTextEdit.text = properties["used_ammo"] + if properties.has("max_ammo"): + MaxAmmoNumberBox.get_line_edit().text = properties["max_ammo"] diff --git a/Scripts/ItemRangedEditor.gd b/Scripts/ItemRangedEditor.gd new file mode 100644 index 00000000..952da4d0 --- /dev/null +++ b/Scripts/ItemRangedEditor.gd @@ -0,0 +1,48 @@ +extends Control + +# This scene is intended to be used inside the item editor +# It is supposed to edit exactly one ranged weapon + +# Ranged form elements +@export var UsedAmmoTextEdit: TextEdit = null +@export var UsedMagazineTextEdit: TextEdit = null +@export var RangeNumberBox: SpinBox = null +@export var SpreadNumberBox: SpinBox = null +@export var SwayNumberBox: SpinBox = null +@export var RecoilNumberBox: SpinBox = null +@export var UsedSkillTextEdit: TextEdit = null +@export var ReloadSpeedNumberBox: SpinBox = null +@export var FiringSpeedNumberBox: SpinBox = null + +func get_properties() -> Dictionary: + return { + "used_ammo": UsedAmmoTextEdit.text, + "used_magazine": UsedMagazineTextEdit.text, + "range": RangeNumberBox.get_line_edit().text, + "spread": SpreadNumberBox.get_line_edit().text, + "sway": SwayNumberBox.get_line_edit().text, + "recoil": RecoilNumberBox.get_line_edit().text, + "used_skill": UsedSkillTextEdit.text, + "reload_speed": ReloadSpeedNumberBox.get_line_edit().text, + "firing_speed": FiringSpeedNumberBox.get_line_edit().text + } + +func set_properties(properties: Dictionary) -> void: + if properties.has("used_ammo"): + UsedAmmoTextEdit.text = properties["used_ammo"] + if properties.has("used_magazine"): + UsedMagazineTextEdit.text = properties["used_magazine"] + if properties.has("range"): + RangeNumberBox.get_line_edit().text = properties["range"] + if properties.has("spread"): + SpreadNumberBox.get_line_edit().text = properties["spread"] + if properties.has("sway"): + SwayNumberBox.get_line_edit().text = properties["sway"] + if properties.has("recoil"): + RecoilNumberBox.get_line_edit().text = properties["recoil"] + if properties.has("used_skill"): + UsedSkillTextEdit.text = properties["used_skill"] + if properties.has("reload_speed"): + ReloadSpeedNumberBox.get_line_edit().text = properties["reload_speed"] + if properties.has("firing_speed"): + FiringSpeedNumberBox.get_line_edit().text = properties["firing_speed"] diff --git a/Scripts/Mob.gd b/Scripts/Mob.gd new file mode 100644 index 00000000..10faea40 --- /dev/null +++ b/Scripts/Mob.gd @@ -0,0 +1,105 @@ +extends CharacterBody3D + +var tween: Tween +var original_scale +# id for the mob json. this will be used to load the data when creating a mob +# when saving a mob in between levels, we will use some static json defined by this id +# and some dynamic json like the mob health and buffs and debuffs +var id: String + + +var melee_damage: float = 20.0 +var melee_range: float = 1.5 +var health: float = 100.0 +var current_health: float +var moveSpeed: float = 1.0 +var current_move_speed: float +var idle_move_speed: float = 0.5 +var current_idle_move_speed: float +var sightRange: float = 200.0 +var senseRange: float = 50.0 +var hearingRange: float = 1000.0 + +@export var corpse_scene: PackedScene +@onready var nav_agent := $NavigationAgent3D as NavigationAgent3D +# +#func _ready(): + #pass + ##3d +## original_scale = get_node(sprite).scale +# Called when the node enters the scene tree for the first time. +func _ready(): + current_health = health + current_move_speed = moveSpeed + current_idle_move_speed = idle_move_speed + +func _get_hit(damage): + + #3d +# tween = create_tween() +# tween.tween_property(get_node(sprite), "scale", get_node(sprite).scale * 1.35, 0.1) +# tween.tween_property(get_node(sprite), "scale", original_scale, 0.1) + + current_health -= damage + if current_health <= 0: + _die() + +func _die(): + add_corpse.call_deferred(global_position) + queue_free() + +func add_corpse(pos: Vector3): + var corpse = corpse_scene.instantiate() + get_tree().get_root().add_child(corpse) + corpse.global_position = pos + corpse.add_to_group("mapitems") + +# Sets the sprite to the mob +# TODO: In order to optimize this, instead of calling original_mesh.duplicate() +# We should keep track of every unique mesh (one for each type of mob) +# THen we check if there has already been a mesh created for a mob with this +# id and assign that mesh. Right now every mob has it's own unique mesh +func set_sprite(newSprite: Resource): + var original_mesh = $MeshInstance3D.mesh + var new_mesh = original_mesh.duplicate() # Clone the mesh + var material := StandardMaterial3D.new() + material.albedo_texture = newSprite + material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA + new_mesh.surface_set_material(0, material) + $MeshInstance3D.mesh = new_mesh # Set the new mesh to MeshInstance3D + + +# Applies it's own data from the dictionary it received +# If it is created as a new mob, it will spawn with the default stats +# If it is created from a saved game, it might have lower health for example +func apply_stats_from_json(json_data: Dictionary) -> void: + id = json_data.id + set_sprite(Gamedata.get_sprite_by_id(Gamedata.data.mobs,json_data.id)) + if json_data.has("melee_damage"): + melee_damage = float(json_data["melee_damage"]) + if json_data.has("melee_range"): + melee_range = float(json_data["melee_range"]) + if json_data.has("health"): + health = float(json_data["health"]) + if json_data.has("current_health"): + current_health = float(json_data["current_health"]) + else: # Reset current health to max health + current_health = health + if json_data.has("move_speed"): + moveSpeed = float(json_data["move_speed"]) + if json_data.has("current_move_speed"): + current_move_speed = float(json_data["current_move_speed"]) + else: # Reset current moveSpeed to max moveSpeed + current_move_speed = moveSpeed + if json_data.has("idle_move_speed"): + idle_move_speed = float(json_data["idle_move_speed"]) + if json_data.has("current_idle_move_speed"): + current_idle_move_speed = float(json_data["current_idle_move_speed"]) + else: # Reset current idle_move_speed to max idle_move_speed + current_idle_move_speed = idle_move_speed + if json_data.has("sight_range"): + sightRange = float(json_data["sight_range"]) + if json_data.has("sense_range"): + senseRange = float(json_data["sense_range"]) + if json_data.has("hearing_range"): + hearingRange = float(json_data["hearing_range"]) diff --git a/Scripts/EnemyAttack.gd b/Scripts/MobAttack.gd similarity index 52% rename from Scripts/EnemyAttack.gd rename to Scripts/MobAttack.gd index 0992e819..07afbaf3 100644 --- a/Scripts/EnemyAttack.gd +++ b/Scripts/MobAttack.gd @@ -1,10 +1,9 @@ extends State -class_name EnemyAttack +class_name MobAttack -@export var stats: NodePath @export var attack_timer: Timer -@export var enemy: NodePath -@export var enemy_sprite: NodePath +@export var mob: CharacterBody3D +@export var mob_sprite: NodePath var tween: Tween @@ -19,18 +18,25 @@ func Enter(): func Exit(): pass -func Physics_Update(delta: float): +func Physics_Update(_delta: float): + # Rotation towards target using look_at + if targeted_player: + var mesh_instance = $"../../MeshInstance3D" + var target_position = targeted_player.global_position + target_position.y = mesh_instance.global_position.y # Align y-axis to avoid tilting + mesh_instance.look_at(target_position, Vector3.UP) + var space_state = get_world_3d().direct_space_state # TO-DO Change playerCol to group of players - var query = PhysicsRayQueryParameters3D.create(get_node(enemy).global_position, targeted_player.global_position, pow(2, 1-1) + pow(2, 3-1), [self]) + var query = PhysicsRayQueryParameters3D.create(mob.global_position, targeted_player.global_position, int(pow(2, 1-1) + pow(2, 3-1)), [self]) var result = space_state.intersect_ray(query) if result: - if result.collider.is_in_group("Players") && Vector3(get_node(enemy).global_position).distance_to(targeted_player.global_position) <= get_node(stats).melee_range: + if result.collider.is_in_group("Players") && Vector3(mob.global_position).distance_to(targeted_player.global_position) <= mob.melee_range: if !is_in_attack_mode: is_in_attack_mode = true @@ -53,21 +59,21 @@ func attack(): # print(Vector2(targeted_player.global_position)) # print(Vector2(to_local(targeted_player.position))) # print(Vector2(to_local(targeted_player.global_position))) -# print(Vector2(targeted_player.position - get_node(enemy).global_position)) +# print(Vector2(targeted_player.position - get_node(mob).global_position)) #3d # tween = create_tween() -# tween.tween_property(get_node(enemy_sprite), "position", targeted_player.position - get_node(enemy).global_position, 0.1 ) -# tween.tween_property(get_node(enemy_sprite), "position", Vector2(0,0), 0.1 ) +# tween.tween_property(get_node(mob_sprite), "position", targeted_player.position - get_node(mob).global_position, 0.1 ) +# tween.tween_property(get_node(mob_sprite), "position", Vector2(0,0), 0.1 ) if targeted_player.has_method("_get_hit"): - targeted_player._get_hit(get_node(stats).melee_damage) + targeted_player._get_hit(mob.melee_damage) func stop_attacking(): print("I stopped attacking") attack_timer.stop() - Transistioned.emit(self, "enemyfollow") + Transistioned.emit(self, "mobfollow") func _on_detection_player_spotted(player): diff --git a/Scripts/MobFollow.gd b/Scripts/MobFollow.gd new file mode 100644 index 00000000..06f28225 --- /dev/null +++ b/Scripts/MobFollow.gd @@ -0,0 +1,62 @@ +extends State +class_name MobFollow + + + +@export var nav_agent: NavigationAgent3D +@export var mob: CharacterBody3D +@export var mobCol: NodePath +@export var pathfinding_timer: Timer + +var targeted_player + +@onready var target_location = mob.position + + +func Enter(): + print("Following the player") + pathfinding_timer.start() + makepath() + +func Exit(): + pathfinding_timer.stop() + +func Physics_Update(_delta: float): + var dir = mob.to_local(nav_agent.get_next_path_position()).normalized() + mob.velocity = dir * mob.current_move_speed + mob.move_and_slide() + + # Rotation towards target using look_at + if targeted_player: + var mesh_instance = $"../../MeshInstance3D" + var target_position = targeted_player.global_position + target_position.y = mesh_instance.global_position.y # Align y-axis to avoid tilting + mesh_instance.look_at(target_position, Vector3.UP) + + if !targeted_player: + return + var space_state = get_world_3d().direct_space_state + # TO-DO Change playerCol to group of players + var query = PhysicsRayQueryParameters3D.create(get_node(mobCol).global_position, targeted_player.global_position, int(pow(2, 1-1) + pow(2, 3-1)),[self]) + var result = space_state.intersect_ray(query) + + if result: + + if result.collider.is_in_group("Players")&& Vector3(get_node(mobCol).global_position).distance_to(targeted_player.global_position) <= mob.melee_range / 2: + print("changing state to mobattack...") + Transistioned.emit(self, "mobattack") + + if Vector3(mob.global_position).distance_to(target_location) <= 0.5: + Transistioned.emit(self, "mobidle") + + +func makepath() -> void: + nav_agent.target_position = target_location +# print("From follow: ", target_location) + +func _on_timer_timeout(): + makepath() + +func _on_detection_player_spotted(player): + target_location = player.position + targeted_player = player diff --git a/Scripts/MobIdle.gd b/Scripts/MobIdle.gd new file mode 100644 index 00000000..a994fc8f --- /dev/null +++ b/Scripts/MobIdle.gd @@ -0,0 +1,59 @@ +extends State +class_name MobIdle + +var idle_speed + +@export var nav_agent: NavigationAgent3D +@export var mob: CharacterBody3D +@export var move_distance: float + +@export var moving_timer: Timer + + +@onready var target_location + +var is_looking_to_move = false + +var rng = RandomNumberGenerator.new() + + +func Enter(): + print("Mob idle") + idle_speed = mob.idle_move_speed + moving_timer.start() + +func Exit(): + moving_timer.stop() + +func Physics_Update(_delta: float): + if is_looking_to_move: + var dir = mob.to_local(nav_agent.get_next_path_position()).normalized() + mob.velocity = dir * mob.current_idle_move_speed + mob.move_and_slide() + + + if Vector3(mob.global_position).distance_to(target_location) <= 0.5: + is_looking_to_move = false + + + +func _on_detection_player_spotted(_player): + Transistioned.emit(self, "mobfollow") + + +func makepath() -> void: + nav_agent.target_position = target_location + #print(nav_agent.target_position) + +func _on_moving_cooldown_timeout(): + + var space_state = get_world_3d().direct_space_state + var random_dir = Vector3(rng.randf_range(-1,1), mob.global_position.y, rng.randf_range(-1, 1)) + var query = PhysicsRayQueryParameters3D.create(mob.global_position, mob.global_position + (random_dir * move_distance), int(pow(2, 1-1) + pow(2, 3-1)),[self]) + + var result = space_state.intersect_ray(query) + if !result: + is_looking_to_move = true + target_location = mob.global_position + (random_dir * move_distance) + makepath() + diff --git a/Scripts/EnemyStats.gd b/Scripts/MobStats.gd similarity index 96% rename from Scripts/EnemyStats.gd rename to Scripts/MobStats.gd index 62fae365..fb3ab0d0 100644 --- a/Scripts/EnemyStats.gd +++ b/Scripts/MobStats.gd @@ -20,5 +20,5 @@ func _ready(): # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): +func _process(_delta): pass diff --git a/Scripts/NonHUDclick.gd b/Scripts/NonHUDclick.gd index 1c3ac3b1..878fe4ce 100644 --- a/Scripts/NonHUDclick.gd +++ b/Scripts/NonHUDclick.gd @@ -1,16 +1,6 @@ extends Control -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass - - func _on_mouse_entered(): General.is_mouse_outside_HUD = true diff --git a/Scripts/PlayerShooting.gd b/Scripts/PlayerShooting.gd index e86b7818..df0c608c 100644 --- a/Scripts/PlayerShooting.gd +++ b/Scripts/PlayerShooting.gd @@ -1,13 +1,20 @@ extends Node3D -var weapon -var magazine -var ammo -var current_ammo : int -var max_ammo : int +# Define properties for left-hand and right-hand weapons. +var left_hand_weapon +var right_hand_weapon +var left_hand_magazine +var right_hand_magazine +var left_hand_ammo +var right_hand_ammo -signal ammo_changed +var current_left_ammo : int +var max_left_ammo : int +var current_right_ammo : int +var max_right_ammo : int + +signal ammo_changed(current_ammo: int, max_ammo: int, leftHand: bool) @export var projectiles: NodePath @export var bullet_speed: float @@ -17,8 +24,11 @@ signal ammo_changed @export var bullet_line_scene: PackedScene -@export var attack_cooldown : Timer -@export var reload_timer : Timer +@export var left_attack_cooldown : Timer +@export var right_attack_cooldown : Timer +@export var left_reload_timer : Timer +@export var right_reload_timer : Timer + @export var player: NodePath @export var hud: NodePath @@ -33,101 +43,183 @@ var damage = 25 func _input(event): - + if not left_hand_weapon and not right_hand_weapon: + return # Return early if no weapon is equipped if event.is_action_pressed("reload_weapon"): - reload_timer.start() - get_node(hud).start_progress_bar(reload_timer.time_left) + # Reload logic for both weapons with additional checks. + if left_hand_weapon and current_left_ammo < max_left_ammo and right_reload_timer.is_stopped(): + reload_left_weapon() + elif right_hand_weapon and current_right_ammo < max_right_ammo and left_reload_timer.is_stopped(): + reload_right_weapon() + + # Handling left and right click for different weapons. + if event.is_action_pressed("click_left") and General.is_mouse_outside_HUD and General.is_allowed_to_shoot and left_hand_weapon: + fire_weapon(left_hand_weapon, current_left_ammo, "LeftHand") + + if event.is_action_pressed("click_right") and General.is_mouse_outside_HUD and General.is_allowed_to_shoot and right_hand_weapon: + fire_weapon(right_hand_weapon, current_right_ammo, "RightHand") + +# New function to handle firing logic for a weapon. +func fire_weapon(weapon, current_ammo, hand): + if not weapon or current_ammo <= 0: + return # Return if no weapon is equipped or no ammo. - if event.is_action_pressed("click") && General.is_mouse_outside_HUD && General.is_allowed_to_shoot: - -# var space_state = get_world_2d().direct_space_state -# var query = PhysicsRayQueryParameters2D.create(global_position, global_position + (get_global_mouse_position() - global_position).normalized() * 10000 , pow(2, 1-1) + pow(2, 2-1) + pow(2, 3-1),[self]) -# -# var result = space_state.intersect_ray(query) -# -# if result: -# print("hit") -# var line = bullet_line_scene.instantiate() -# get_node(projectiles).add_child(line) -# line.add_point(global_position) -# line.add_point(result.position) -# -# if result.collider.has_method("_get_hit"): -# result.collider._get_hit(damage) - if attack_cooldown.is_stopped() && current_ammo > 0 && reload_timer.is_stopped(): - attack_cooldown.start() - current_ammo -= 1 - ammo_changed.emit(current_ammo, max_ammo) - shoot_audio_player.stream = shoot_audio_randomizer - shoot_audio_player.play() + var cooldown_timer = get_cooldown_timer(hand) + if cooldown_timer.is_stopped() and reload_timer_is_stopped(hand): + cooldown_timer.start() + # Update ammo and emit signal. + if hand == "LeftHand": + current_left_ammo -= 1 + ammo_changed.emit(current_left_ammo, max_left_ammo, true) + elif hand == "RightHand": + current_right_ammo -= 1 + ammo_changed.emit(current_right_ammo, max_right_ammo, false) - var space_state = get_world_3d().direct_space_state - var mouse_pos : Vector2 = get_viewport().get_mouse_position() + + shoot_audio_player.stream = shoot_audio_randomizer + shoot_audio_player.play() + + var space_state = get_world_3d().direct_space_state + var mouse_pos : Vector2 = get_viewport().get_mouse_position() + + var layer = pow(2, 1-1) + pow(2, 2-1) + pow(2, 3-1) + var mouse_pos_in_world = Helper.raycast_from_mouse(mouse_pos, layer).position + var query = PhysicsRayQueryParameters3D.create(global_position, global_position + (Vector3(mouse_pos_in_world.x - global_position.x, 0, mouse_pos_in_world.z - global_position.z)).normalized() * 10000, layer, [self]) + + var result = space_state.intersect_ray(query) + + if result: + print("hit") + Helper.line(global_position, result.position) -# var dropPlane = Plane(Vector3(0, 0, 1), 1) -# var position3D = dropPlane.intersects_ray( -# get_tree().get_first_node_in_group("Camera").project_ray_origin(mouse_pos), -# get_tree().get_first_node_in_group("Camera").project_ray_normal(mouse_pos)) - -# var query = PhysicsRayQueryParameters3D.create(global_position, global_position + Vector3(mouse_pos.x - global_position.x, 0, mouse_pos.y - global_position.z).normalized() * 10000 , pow(2, 1-1) + pow(2, 2-1) + pow(2, 3-1),[self]) - #var query = PhysicsRayQueryParameters3D.create(global_position, global_position + (position3D - global_position).normalized() * 10000 , pow(2, 1-1) + pow(2, 2-1) + pow(2, 3-1),[self]) - var layer = pow(2, 1-1) + pow(2, 2-1) + pow(2, 3-1) - var mouse_pos_in_world = Helper.raycast_from_mouse(mouse_pos, layer).position - var query = PhysicsRayQueryParameters3D.create(global_position, global_position + (Vector3(mouse_pos_in_world.x - global_position.x, 0, mouse_pos_in_world.z - global_position.z)).normalized() * 10000, layer, [self]) - - var result = space_state.intersect_ray(query) - - if result: - print("hit") -# var line = bullet_line_scene.instantiate() -# get_node(projectiles).add_child(line) -# line.add_point(global_position) -# line.add_point(result.position) - Helper.line(global_position, result.position) - - if result.collider.has_method("_get_hit"): - result.collider._get_hit(damage) - - - - + if result.collider.has_method("_get_hit"): + result.collider._get_hit(damage) + + +# Helper function to get the appropriate cooldown timer based on the hand. +func get_cooldown_timer(hand: String) -> Timer: + if hand == "LeftHand": + return left_attack_cooldown + else: + return right_attack_cooldown + +# Helper function to check if reload timer is stopped based on the hand. +func reload_timer_is_stopped(hand: String) -> bool: + if hand == "LeftHand": + return left_reload_timer.is_stopped() + else: + return right_reload_timer.is_stopped() + +# Called when the left weapon is reloaded +# Since only one reload action can run at a time, +# We check that the right reload timer is stopped +func reload_left_weapon(): + if right_reload_timer.is_stopped(): + current_left_ammo = max_left_ammo + left_reload_timer.start() # Start the left reload timer + get_node(hud).start_progress_bar(left_reload_timer.time_left) # Start HUD progress bar for left-hand weapon + +# Called when the right weapon is reloaded +# Since only one reload action can run at a time, +# We check that the left reload timer is stopped +func reload_right_weapon(): + if left_reload_timer.is_stopped(): + current_right_ammo = max_right_ammo + right_reload_timer.start() # Start the right reload timer + get_node(hud).start_progress_bar(right_reload_timer.time_left) # Start HUD progress bar for right-hand weapon -# var bullet = bullet_scene.instantiate() -# bullet.speed = bullet_speed -# bullet.damage = bullet_damage -# get_node(projectiles).add_child(bullet) -# bullet.global_position = global_position -# #bullet.rotation = (get_global_mouse_position() - global_position).normalized() -# bullet.direction = (get_global_mouse_position() - global_position).normalized() - # Called when the node enters the scene tree for the first time. func _ready(): - weapon = ItemManager.weapon - magazine = ItemManager.magazine - ammo = ItemManager.ammo - - max_ammo = int(magazine["max_ammo"]) - current_ammo = max_ammo - - ammo_changed.emit(current_ammo, max_ammo) - - attack_cooldown.wait_time = float(weapon["firing_speed"]) - reload_timer.wait_time = float(weapon["reload_speed"]) - + clear_weapon_properties("LeftHand") + clear_weapon_properties("RightHand") # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - - # Reloading sound logic, basically we want to play the sound during the reloading phase, - # not before or after reloading so the end of reloading sounds will align with end of the reloading phase - if reload_timer.time_left <= reload_audio_player.stream.get_length() && !reload_audio_player.playing && !reload_timer.is_stopped(): - reload_audio_player.play() - - -func _on_reload_time_timeout(): - current_ammo = max_ammo - ammo_changed.emit(current_ammo, max_ammo) +func _process(_delta): + # Check if the left-hand weapon is reloading. + if not left_reload_timer.is_stopped() and left_reload_timer.time_left <= reload_audio_player.stream.get_length() and not reload_audio_player.playing: + reload_audio_player.play() # Play reload sound for left-hand weapon. + + # Check if the right-hand weapon is reloading. + if not right_reload_timer.is_stopped() and right_reload_timer.time_left <= reload_audio_player.stream.get_length() and not reload_audio_player.playing: + reload_audio_player.play() # Play reload sound for right-hand weapon. + + + +# The weapon is reloaded once the timer has stopped +func _on_left_reload_time_timeout(): + if left_hand_weapon: + current_left_ammo = max_left_ammo + ammo_changed.emit(current_left_ammo, max_left_ammo, true) + +func _on_right_reload_time_timeout(): + if right_hand_weapon: + current_right_ammo = max_right_ammo + ammo_changed.emit(current_right_ammo, max_right_ammo, false) + + +# The player has equipped an item in one of the equipmentslots +# equippedItem is an InventoryItem +# slotName is a string, for example "LeftHand" or "RightHand" +func _on_hud_item_was_equipped(equippedItem: InventoryItem, slotName: String): + # Adjust this function to handle dual-wielding. + var weaponID = equippedItem.prototype_id + var weaponData = Gamedata.get_data_by_id(Gamedata.data.items, weaponID) + if weaponData.has("Ranged"): + var newMagazineID = weaponData.Ranged.used_magazine + var newAmmoID = weaponData.Ranged.used_ammo + # Set the weapon for the corresponding hand. + if slotName == "LeftHand": + left_hand_weapon = weaponData + left_hand_magazine = Gamedata.get_data_by_id(Gamedata.data.items, newMagazineID) + left_hand_ammo = Gamedata.get_data_by_id(Gamedata.data.items, newAmmoID) + max_left_ammo = int(left_hand_magazine.Magazine["max_ammo"]) + current_left_ammo = max_left_ammo + ammo_changed.emit(current_left_ammo, max_left_ammo, true) + elif slotName == "RightHand": + right_hand_weapon = weaponData + right_hand_magazine = Gamedata.get_data_by_id(Gamedata.data.items, newMagazineID) + right_hand_ammo = Gamedata.get_data_by_id(Gamedata.data.items, newAmmoID) + max_right_ammo = int(right_hand_magazine.Magazine["max_ammo"]) + current_right_ammo = max_right_ammo + ammo_changed.emit(current_right_ammo, max_right_ammo, false) + else: + # Reset weapon, magazine, and ammo if the equipped item is not a weapon. + if slotName == "LeftHand": + left_hand_weapon = null + left_hand_magazine = null + left_hand_ammo = null + current_left_ammo = 0 + max_left_ammo = 0 + ammo_changed.emit(-1,-1, false) + elif slotName == "RightHand": + right_hand_weapon = null + right_hand_magazine = null + right_hand_ammo = null + current_right_ammo = 0 + max_right_ammo = 0 + ammo_changed.emit(-1,-1, true) + +# Called when an equipment slot was cleared +# slotName can be "LeftHand" or "RightHand" +func _on_hud_item_equipment_slot_was_cleared(slotName): + clear_weapon_properties(slotName) + +# Function to clear weapon properties for a specified hand +func clear_weapon_properties(hand: String): + if hand == "LeftHand": + left_hand_weapon = null + left_hand_magazine = null + left_hand_ammo = null + current_left_ammo = 0 + max_left_ammo = 0 + elif hand == "RightHand": + right_hand_weapon = null + right_hand_magazine = null + right_hand_ammo = null + current_right_ammo = 0 + max_right_ammo = 0 + ammo_changed.emit(-1, -1, hand == "LeftHand") # Emit signal to indicate no weapon is equipped diff --git a/Scripts/container.gd b/Scripts/container.gd index 3bffa50a..fdfd2ff8 100644 --- a/Scripts/container.gd +++ b/Scripts/container.gd @@ -6,25 +6,20 @@ extends Node3D # Called when the node enters the scene tree for the first time. func _ready(): create_random_loot() - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass - func create_random_loot(): if get_node(inventory).get_children() == []: - var item = get_node(inventory).create_and_add_item("plank") - item.set_property("assigned_id", ItemManager.assign_id()) - item = get_node(inventory).create_and_add_item("9mm") - item.set_property("assigned_id", ItemManager.assign_id()) + var item = get_node(inventory).create_and_add_item("plank_2x4") + item = get_node(inventory).create_and_add_item("bullet_9mm") item = get_node(inventory).create_and_add_item("pistol_magazine") - item.set_property("assigned_id", ItemManager.assign_id()) item = get_node(inventory).create_and_add_item("steel_scrap") - item.set_property("assigned_id", ItemManager.assign_id()) - func get_items(): return get_node(inventory).get_children() + +func get_sprite(): + return $Sprite3D.texture + +func get_inventory(): + return get_node(inventory) diff --git a/Scripts/crafting_recipes_manager.gd b/Scripts/crafting_recipes_manager.gd index 4501f07c..f5f49c10 100644 --- a/Scripts/crafting_recipes_manager.gd +++ b/Scripts/crafting_recipes_manager.gd @@ -7,11 +7,6 @@ var crafting_recipes func _ready(): get_crafting_recipes_from_json() - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass - func get_crafting_recipes_from_json(): var file = "res://JSON/crafting_recipes.json" var json_as_text = FileAccess.get_file_as_string(file) diff --git a/Scripts/gamedata.gd b/Scripts/gamedata.gd new file mode 100644 index 00000000..d136d4c1 --- /dev/null +++ b/Scripts/gamedata.gd @@ -0,0 +1,231 @@ +extends Node + +#This autoload singleton loads all game data required to run the game +#It can be accessed by using Gamedata.property +var data: Dictionary = {} + +# We write down the associated paths for the files to load +# Next, sprites are loaded from spritesPath into the .sprites property +# Finally, the data is loaded from dataPath into the .data property +# Maps tile sprites and map data are different so they +# are loaded in using their respective functions +func _ready(): + data.tiles = {} + data.mobs = {} + data.overmaptiles = {} + data.maps = {} + data.tacticalmaps = {} + data.furniture = {} + data.items = {} + data.tiles.dataPath = "./Mods/Core/Tiles/Tiles.json" + data.tiles.spritePath = "./Mods/Core/Tiles/" + data.mobs.dataPath = "./Mods/Core/Mobs/Mobs.json" + data.mobs.spritePath = "./Mods/Core/Mobs/" + data.items.dataPath = "./Mods/Core/Items/Items.json" + data.items.spritePath = "./Mods/Core/Items/" + data.furniture.spritePath = "./Mods/Core/Furniture/" + data.furniture.dataPath = "./Mods/Core/Furniture/Furniture.json" + data.overmaptiles.spritePath = "./Mods/Core/OvermapTiles/" + data.tacticalmaps.dataPath = "./Mods/Core/TacticalMaps/" + data.maps.dataPath = "./Mods/Core/Maps/" + # Map preview images are stored in the same folder + data.maps.spritePath = "./Mods/Core/Maps/" + load_sprites() + load_tile_sprites() + load_data() + update_item_protoset_json_data("res://ItemProtosets.tres",JSON.stringify(data.items.data,"\t")) + data.maps.data = Helper.json_helper.file_names_in_dir(data.maps.dataPath, ["json"]) + data.tacticalmaps.data = Helper.json_helper.file_names_in_dir(\ + data.tacticalmaps.dataPath, ["json"]) + +#Loads json data. If no json file exists, it will create an empty array in a new file +func load_data() -> void: + for dict in data.keys(): + if data[dict].has("dataPath"): + var dataPath: String = data[dict].dataPath + if FileAccess.file_exists(dataPath): + Helper.json_helper.create_new_json_file(dataPath) + data[dict].data = Helper.json_helper.load_json_array_file(dataPath) + else: + data[dict].data = [] + +#This loads all the sprites and assigns them to the proper dictionary +func load_sprites() -> void: + for dict in data.keys(): + if data[dict].has("spritePath"): + var loaded_sprites: Dictionary = {} # Materials used to represent mobs + var spritesDir: String = data[dict].spritePath + var png_files: Array = Helper.json_helper.file_names_in_dir(spritesDir, ["png"]) + for png_file in png_files: + # Load the .png file as a texture + var texture := load(spritesDir + png_file) + # Add the material to the dictionary + loaded_sprites[png_file] = texture + data[dict].sprites = loaded_sprites + +# This function reads all the files in "res://Mods/Core/Tiles/". It will check if the file is a .png file. If the file is a .png file, it will create a new material with that .png image as the texture. It will put all of the created materials in a dictionary with the name of the file as the key and the material as the value. +func load_tile_sprites() -> void: + var tile_materials: Dictionary = {} # Materials used to represent tiles + var tilesDir = data.tiles.spritePath + var png_files: Array = Helper.json_helper.file_names_in_dir(tilesDir, ["png"]) + for png_file in png_files: + var texture := load(tilesDir + png_file) # Load the .png file as a texture + var material := StandardMaterial3D.new() + material.albedo_texture = texture # Set the texture of the material + material.uv1_scale = Vector3(3,2,1) + tile_materials[png_file] = material # Add the material to the dictionary + data.tiles.sprites = tile_materials + +#This function will take two strings called ID and newID +#It will find an item with this ID in a json file specified by the source variable +#It will then duplicate that item into the json file and change the ID to newID +func duplicate_item_in_data(contentData: Dictionary, id: String, newID: String): + if contentData.data.is_empty(): + return + + if contentData.dataPath.ends_with((".json")): + # Check if an item with the given ID exists in the file. + var item_index: int = get_array_index_by_id(contentData,id) + if item_index == -1: + return + + # Duplicate the found item recursively + var item_to_duplicate = contentData.data[item_index].duplicate(true) + + # If there is no item to duplicate, return without doing anything. + if item_to_duplicate == null: + return + # Change the ID of the duplicated item. + item_to_duplicate["id"] = newID + # Add the duplicated item to the JSON data. + contentData.data.append(item_to_duplicate) + Helper.json_helper.write_json_file(contentData.dataPath,JSON.stringify(contentData.data)) + else: + print_debug("There should be code here for when a file in the gets duplicated") + + +# This function will duplicate a file with the provided original ID +# and save it under a new ID within the same directory. +func duplicate_file_in_data(contentData: Dictionary, original_id: String, new_id: String) -> void: + var data_path: String = contentData.dataPath + var original_file_path: String = data_path + original_id + ".json" + var new_file_path: String = data_path + new_id + ".json" + + if not FileAccess.file_exists(original_file_path): + print_debug("Original file not found: " + original_file_path) + return + + # Load the original file content. + var original_content = Helper.json_helper.load_json_dictionary_file(original_file_path) + + # Write the original content to a new file with the new ID. + var save_result = Helper.json_helper.write_json_file(new_file_path, JSON.stringify(original_content)) + if save_result == OK: + print_debug("File duplicated successfully: " + new_file_path) + # Add the new ID to the data array if it's managed as an array of IDs. + if contentData.data is Array and typeof(contentData.data[0]) == TYPE_STRING: + contentData.data.append(new_id) + save_data_to_file(contentData) # Save the updated data array to file. + else: + print_debug("Failed to duplicate file to: " + new_file_path) + + + +# This function appends a new object to an existing array +# Pass the contentData dictionary to this function and the value of the ID +# If the data directory ends in .json, it will append an object +# The object that will be appended will be nothing more then {"id": id} +# if the data directory does not end in .json, a new file will be added +# This file will get the name as specified by id, so for example "myhouse" +# After the ID is added, the data array will be saved to disk +func add_id_to_data(contentData: Dictionary, id: String): + if !contentData.has("data"): + return + if contentData.dataPath.ends_with((".json")): + if get_array_index_by_id(contentData,id) != -1: + print_debug("Tried to add an existing id to an array") + return + contentData.data.append({"id": id}) + save_data_to_file(contentData) + else: + if id in contentData.data: + print_debug("Tried to add an existing file to a file array") + return + contentData.data.append(id) + #Create a new json file in the directory with only {} in the file + Helper.json_helper.create_new_json_file(contentData.dataPath + id + ".json", false) + +# Will remove an item from the data +# If the first item in data is a dictionary, we remove an item that has the provided id +# If the first item in data is a string, we remove the string and the associated json file +func remove_item_from_data(contentData: Dictionary, id: String): + if contentData.data.is_empty(): + return + if contentData.data[0] is Dictionary: + contentData.data.remove_at(get_array_index_by_id(contentData, id)) + save_data_to_file(contentData) + elif contentData.data[0] is String: + contentData.data.erase(id) + Helper.json_helper.delete_json_file(contentData.dataPath, id) + else: + print_debug("Tried to remove item from data, but the data contains \ + neither Dictionary nor String") + +func get_array_index_by_id(contentData: Dictionary, id: String) -> int: + # Iterate through the array + for i in range(len(contentData.data)): + # Check if the current item is a dictionary + if typeof(contentData.data[i]) == TYPE_DICTIONARY: + # Check if it has the 'id' key and matches the given ID + if contentData.data[i].has("id") and contentData.data[i]["id"] == id: + return i + # Check if the current item is a string and matches the given ID + elif typeof(contentData.data[i]) == TYPE_STRING and contentData.data[i] == id: + return i + # Return -1 if the ID is not found + return -1 + +func save_data_to_file(contentData: Dictionary): + var datapath: String = contentData.dataPath + if datapath.ends_with(".json"): + Helper.json_helper.write_json_file(datapath,JSON.stringify(contentData.data,"\t")) + +# Takes contentdata and an id and returns the json that belongs to an id +# For example, contentData can be Gamedata.data.tiles +# and id can be "plain_grass" and it will return the json data for plain_grass +func get_data_by_id(contentData: Dictionary, id: String) -> Dictionary: + return contentData.data[get_array_index_by_id(contentData,id)] + +#Takes contentData and an id and returns the sprite associated with the id +# For example, contentData can be Gamedata.data.tiles +# and id can be "plain_grass" and it will return the sprite for plain_grass +func get_sprite_by_id(contentData: Dictionary, id: String) -> Resource: + var item_json = get_data_by_id(contentData, id) + return contentData.sprites[item_json.sprite] + +# This functino is called when an editor has changed data +# The contenteditor (that initializes the individual editors) +# connects the changed_data signal to this function +# and binds the appropriate data array so it can be saved in this function +func on_data_changed(contentData: Dictionary): + save_data_to_file(contentData) + +# This will update the given resource file with the provided json data +# It is intended to save item data from json to the res://ItemProtosets.tres file +# So we can use the item json data in-game +func update_item_protoset_json_data(tres_path: String, new_json_data: String) -> void: + # Load the ItemProtoset resource + var item_protoset = load(tres_path) as ItemProtoset + if not item_protoset: + print("Failed to load ItemProtoset resource from:", tres_path) + return + + # Update the json_data property + item_protoset.json_data = new_json_data + + # Save the resource back to the .tres file + var save_result = ResourceSaver.save(item_protoset, tres_path) + if save_result != OK: + print("Failed to save updated ItemProtoset resource to:", tres_path) + else: + print("ItemProtoset resource updated and saved successfully to:", tres_path) diff --git a/Scripts/general.gd b/Scripts/general.gd index f9752fc9..d30b1640 100644 --- a/Scripts/general.gd +++ b/Scripts/general.gd @@ -3,12 +3,7 @@ extends Node var is_mouse_outside_HUD = false var is_allowed_to_shoot = true - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass +#This holds the inventory data of the player inventory between maps +var player_inventory_dict: Dictionary +# Equipment +var player_equipment_dict : Dictionary diff --git a/Scripts/hud.gd b/Scripts/hud.gd index b13951f7..04d96a60 100644 --- a/Scripts/hud.gd +++ b/Scripts/hud.gd @@ -9,27 +9,21 @@ extends CanvasLayer @export var stamina_HUD: NodePath -@export var ammo_HUD: NodePath +@export var ammo_HUD_left: NodePath +@export var ammo_HUD_right: NodePath @export var healthy_color: Color @export var damaged_color: Color -@export var proximity_inventory: NodePath -@export var proximity_inventory_control: NodePath - -@export var inventory_control : NodePath -@export var inventory : NodePath +# This window shows the inventory to the player +@export var inventoryWindow : Control @export var building_menu: NodePath @export var crafting_menu : NodePath +@export var overmap: Control var is_building_menu_open = false -@export var tooltip: NodePath -var is_showing_tooltip = false -@export var tooltip_item_name : NodePath -@export var tooltip_item_description : NodePath - @export var progress_bar : NodePath @export var progress_bar_filling : NodePath @@ -39,6 +33,8 @@ var progress_bar_timer_max_time : float var is_progress_bar_well_progressing_i_guess = false signal construction_chosen +signal item_was_equipped(equippedItem: InventoryItem, slotName: String) +signal item_equipment_slot_was_cleared(slotName: String) @@ -46,7 +42,16 @@ signal construction_chosen func test(): print("TESTING 123 123!") + +func _process(_delta): + if is_progress_bar_well_progressing_i_guess: + update_progress_bar() + +func update_progress_bar(): + var progressBarNode = get_node(progress_bar_filling) + var timerNode = get_node(progress_bar_timer) + progressBarNode.scale.x = lerp(1, 0, timerNode.time_left / progress_bar_timer_max_time) func _input(event): if event.is_action_pressed("build_menu"): @@ -59,30 +64,18 @@ func _input(event): get_node(building_menu).set_visible(true) if event.is_action_pressed("toggle_inventory"): - get_node(inventory_control).visible = !get_node(inventory_control).visible - get_node(proximity_inventory_control).visible = !get_node(proximity_inventory_control).visible - + inventoryWindow.visible = !inventoryWindow.visible + if event.is_action_pressed("crafting_menu"): get_node(crafting_menu).visible = !get_node(crafting_menu).visible - + if event.is_action_pressed("overmap"): + if overmap.visible: + overmap.hide() + else: + overmap.show() -# Called when the node enters the scene tree for the first time. -func _ready(): - #temporary hack - ItemManager.create_item_protoset(item_protoset) - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - if is_showing_tooltip: - get_node(tooltip).visible = true - get_node(tooltip).global_position = get_node(tooltip).get_global_mouse_position() + Vector2(0, -5 - get_node(tooltip).size.y) - else: - get_node(tooltip).visible = false - - - if is_progress_bar_well_progressing_i_guess: get_node(progress_bar_filling).scale.x = lerp(1, 0, get_node(progress_bar_timer).time_left / progress_bar_timer_max_time) @@ -95,37 +88,10 @@ func _on_player_update_doll(head, right_arm, left_arm, torso, right_leg, left_le get_node(right_leg_health).modulate = lerp(damaged_color, healthy_color, right_leg/100) get_node(left_leg_health).modulate = lerp(damaged_color, healthy_color, left_leg/100) - - func _on_player_update_stamina_hud(stamina): get_node(stamina_HUD).text = str(round(stamina)) + "%" - - -func _on_item_detector_add_to_proximity_inventory(items): - var duplicated_items = items - - for item in duplicated_items: - var duplicated_item = item.duplicate() - #duplicated_item.get_parent().remove_child(item) - get_node(proximity_inventory).add_child(duplicated_item) - - #get_node(proximity_inventory_control).refresh() - - -func _on_item_detector_remove_from_proximity_inventory(items): -# for prox_item in get_node(proximity_inventory).get_children(): -# print("test") -# if prox_item in items: -# prox_item.queue_free() - - for prox_item in get_node(proximity_inventory).get_children(): - for item in items: - if item.get_property("assigned_id") == prox_item.get_property("assigned_id"): - prox_item.queue_free() - - func _on_concrete_button_down(): construction_chosen.emit("concrete_wall") @@ -134,36 +100,25 @@ func _on_concrete_button_down(): # get_node(ammo_HUD).text = str(current_ammo) + "/" + str(max_ammo) -func _on_inventory_item_mouse_entered(item): - is_showing_tooltip = true - get_node(tooltip_item_name).text = str(item.get_property("name", "")) - get_node(tooltip_item_description).text = item.get_property("description", "") - -func _on_inventory_item_mouse_exited(item): - is_showing_tooltip = false func check_if_resources_are_available(item_id, amount_to_spend: int): - - var inventory_node = get_node(inventory) + var inventory_node: InventoryStacked = inventoryWindow.get_inventory() print("checking if we have the item id in inv") if inventory_node.get_item_by_id(item_id): print("we have the item id") - var item_total_amount : int + var item_total_amount : int = 0 var current_amount_to_spend = amount_to_spend var items = inventory_node.get_items_by_id(item_id) - for item in items: item_total_amount += inventory_node.get_item_stack_size(item) - if item_total_amount >= current_amount_to_spend: return true - return false func try_to_spend_item(item_id, amount_to_spend : int): - var inventory_node = get_node(inventory) + var inventory_node = inventoryWindow.get_inventory() if inventory_node.get_item_by_id(item_id): - var item_total_amount : int + var item_total_amount : int = 0 var current_amount_to_spend = amount_to_spend var items = inventory_node.get_items_by_id(item_id) @@ -177,7 +132,7 @@ func try_to_spend_item(item_id, amount_to_spend : int): return false else: return false - + func merge_items_to_total_amount(items, inventory, total_amount : int): var current_total_amount = total_amount for item in items: @@ -187,17 +142,16 @@ func merge_items_to_total_amount(items, inventory, total_amount : int): elif inventory.get_item_stack_size(item) < item.get_property("max_stack_size"): current_total_amount -= item.get_property("max_stack_size") - inventory.get_item_stack_size(item) inventory.set_item_stack_size(item, item.get_property("max_stack_size")) - + elif inventory.get_item_stack_size(item) == current_total_amount: current_total_amount = 0 - + elif inventory.get_item_stack_size(item) > current_total_amount: inventory.set_item_stack_size(item, current_total_amount) current_total_amount = 0 - + if inventory.get_item_stack_size(item) == 0: inventory.remove_item(item) - func _on_crafting_menu_start_craft(recipe): @@ -208,10 +162,8 @@ func _on_crafting_menu_start_craft(recipe): #adding a new item(s) to the inventory based on the recipe var item - item = get_node(inventory).create_and_add_item(recipe["crafts"]) - get_node(inventory).set_item_stack_size(item, recipe["craft_amount"]) - - + item = inventoryWindow.get_inventory().create_and_add_item(recipe["crafts"]) + inventoryWindow.get_inventory().set_item_stack_size(item, recipe["craft_amount"]) func start_progress_bar(time : float): get_node(progress_bar).visible = true @@ -230,6 +182,37 @@ func interrupt_progress_bar(): func _on_progress_bar_timer_timeout(): interrupt_progress_bar() +func _on_shooting_ammo_changed(current_ammo: int, max_ammo: int, leftHand:bool): + var ammo_HUD: Label = get_node(ammo_HUD_left) + var prefix: String = "L: " + if !leftHand: + ammo_HUD = get_node(ammo_HUD_right) + prefix = "R: " + if current_ammo == -1 and max_ammo == -1: # Assuming -1 is the value when no weapon is equipped + ammo_HUD.hide() + else: + ammo_HUD.text = prefix + str(current_ammo) + "/" + str(max_ammo) + ammo_HUD.show() + + +# Called when the users presses the travel button on the overmap +# We save the player inventory to a autoload singleton so we can load it on the next map +func _on_overmap_change_level_pressed(): + General.player_inventory_dict = inventoryWindow.get_inventory().serialize() + General.player_equipment_dict = inventoryWindow.get_equipment_dict() + +# The parameter container the inventory that has entered proximity +func _on_item_detector_add_to_proximity_inventory(container): + inventoryWindow._on_item_detector_add_to_proximity_inventory(container) + +# The parameter container the inventory that has left proximity +func _on_item_detector_remove_from_proximity_inventory(container): + inventoryWindow._on_item_detector_remove_from_proximity_inventory(container) + +# When an item in the inventorywindow was equipped, we pass on the signal +func _on_inventory_window_item_was_equipped(equippedItem, slotName): + item_was_equipped.emit(equippedItem, slotName) -func _on_shooting_ammo_changed(current_ammo, max_ammo): - get_node(ammo_HUD).text = str(current_ammo) + "/" + str(max_ammo) +# slotName can be "LeftHand" or "RightHand" +func _on_inventory_window_item_was_cleared(slotName: String): + item_equipment_slot_was_cleared.emit(slotName) diff --git a/Scripts/item_craft_button.gd b/Scripts/item_craft_button.gd index 2e2404cd..ce25dd48 100644 --- a/Scripts/item_craft_button.gd +++ b/Scripts/item_craft_button.gd @@ -5,6 +5,6 @@ var recipe var crafting_menu -func _on_toggled(button_pressed): - if button_pressed: +func _on_toggled(currently_pressed: bool): + if currently_pressed: get_tree().call_group("CraftingMenu","item_craft_button_clicked", recipe) diff --git a/Scripts/item_manager.gd b/Scripts/item_manager.gd index 8ae0dccc..1750c372 100644 --- a/Scripts/item_manager.gd +++ b/Scripts/item_manager.gd @@ -36,14 +36,6 @@ var item_protoset : ItemProtoset "damage": "25" } -# Called when the node enters the scene tree for the first time. -func _ready(): - pass - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass - func assign_id(): item_id_to_assign += 1 return item_id_to_assign diff --git a/Scripts/player.gd b/Scripts/player.gd index c69687e1..0d9918bc 100644 --- a/Scripts/player.gd +++ b/Scripts/player.gd @@ -66,21 +66,34 @@ func _ready(): current_right_leg_health = right_leg_health current_head_health = head_health current_torso_health = torso_health - current_stamina = stamina - - -func _process(delta): + Helper.save_helper.load_player_state(self) + + + + +func _process(_delta): + # Get the 2D screen position of the player + var camera = get_tree().get_first_node_in_group("Camera") + var player_screen_pos = camera.unproject_position(global_position) + + # Get the mouse position in 2D screen space + var mouse_pos_2d = get_viewport().get_mouse_position() + + # Calculate the direction vector from the player to the mouse position + var dir = (mouse_pos_2d - player_screen_pos).normalized() + + # Calculate the angle between the player and the mouse position + # Since the sprite is rotating in the opposite direction, change the sign of the angle + var angle = atan2(-dir.y, -dir.x) # This negates both components of the direction vector + + sprite.rotation.y = -angle # Inverts the angle for rotation + $CollisionShape3D.rotation.y = -angle # Inverts the angle for rotation + + # if is_progress_bar_well_progressing_i_guess: # get_node(progress_bar_filling).scale.x = lerp(1, 0, get_node(progress_bar_timer).time_left / progress_bar_timer_max_time) - - # player facing the mouse position - var mouse_position : Vector3 = get_tree().get_first_node_in_group("Camera").project_ray_origin(get_viewport().get_mouse_position()) - if mouse_position.x > global_position.x: - sprite.flip_h = true - else: - sprite.flip_h = false func _physics_process(delta): @@ -133,9 +146,11 @@ func _input(event): print("Interact button pressed") if result: print("Found object") - if result.collider.get_owner().has_method("interact"): - print("collider has method") - result.collider.get_owner().interact() + var myOwner = result.collider.get_owner() + if myOwner: + if myOwner.has_method("interact"): + print("collider has method") + myOwner.interact() func _get_hit(damage: float): @@ -191,24 +206,26 @@ func check_if_alive(): current_head_health = 0 die() - -func check_if_visible(target_position: Vector3): - - var space_state = get_world_3d().direct_space_state - # TO-DO Change playerCol to group of players - var query = PhysicsRayQueryParameters3D.create(global_position, target_position, pow(2, 1-1) + pow(2, 3-1) + pow(2, 2-1),[self]) - var result = space_state.intersect_ray(query) - - if result: - print("I see something!") - return false - else: - print("I see nothing!") - return true +# +#func check_if_visible(target_position: Vector3): + # + #var space_state = get_world_3d().direct_space_state + ## TO-DO Change playerCol to group of players + #var query = PhysicsRayQueryParameters3D.create(global_position, target_position, pow(2, 1-1) + pow(2, 3-1) + pow(2, 2-1),[self]) + #var result = space_state.intersect_ray(query) + # + #if result: + #print("I see something!") + #return false + #else: + #print("I see nothing!") + #return true func die(): - print("Player died") - is_alive = false + if is_alive: + print("Player died") + is_alive = false + $"../../../HUD".get_node("GameOver").show() func transfer_damage_to_torso(damage: float): current_torso_health -= damage diff --git a/Scripts/scene_selector.gd b/Scripts/scene_selector.gd index 95fde38d..7015adef 100644 --- a/Scripts/scene_selector.gd +++ b/Scripts/scene_selector.gd @@ -1,44 +1,37 @@ extends Control -var level_files : Array -@export var option_levels : OptionButton - - -# Called when the node enters the scene tree for the first time. +var saved_game_folders : Array +@export var load_game_list : OptionButton func _ready(): - dir_contents("user://levels") - - for level_file in level_files: - option_levels.add_item(level_file) - - -func dir_contents(path): - var dir = DirAccess.open(path) - if dir: - dir.list_dir_begin() - var file_name = dir.get_next() - while file_name != "": - if dir.current_is_dir(): - print("Found directory: " + file_name) - else: - print("Found file: " + file_name) - level_files.append(file_name) - file_name = dir.get_next() - else: - print("An error occurred when trying to access the path.") - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass - - -func _on_view_level_pressed(): - Helper.switch_level(level_files[option_levels.get_selected_id()]) - - + saved_game_folders = Helper.json_helper.folder_names_in_dir("user://save/") + # Reverse the order of the saved_game_folders array + saved_game_folders.reverse() + + # Populate the load_game_list with the saved game folders + for saved_game in saved_game_folders: + load_game_list.add_item(saved_game) + +func _on_load_game_button_pressed(): + var selected_game_folder = saved_game_folders[load_game_list.get_selected_id()] + Helper.save_helper.load_game_from_folder(selected_game_folder) + Helper.save_helper.load_overmap_state() + Helper.save_helper.load_player_inventory() + Helper.save_helper.load_player_equipment() + # We pass the name of the default map and coordinates + # If there is a saved game, it will not load the provided map + # but rather the one that was saved in the game that was loaded + Helper.switch_level("DefaultTacticalMap.json", Vector2(0, 0)) + +# When the play demo button is pressed +# Create a new folder in the user directory +# The name of the folder should be the current date and time so it's unique +# This unique folder will contain save data for this game and can be loaded later func _on_play_demo_pressed(): - Helper.switch_level("") + Helper.save_helper.create_new_save() + Helper.switch_level("DefaultTacticalMap.json", Vector2(0, 0)) func _on_help_button_pressed(): get_tree().change_scene_to_file("res://documentation.tscn") + +func _on_content_manager_button_button_up(): + get_tree().change_scene_to_file("res://Scenes/ContentManager/contentmanager.tscn") diff --git a/Textures/Tiles/Actual textures/5.png b/Textures/Tiles/Actual textures/5.png deleted file mode 100644 index 26791a77..00000000 Binary files a/Textures/Tiles/Actual textures/5.png and /dev/null differ diff --git a/Textures/Tiles/Actual textures/5.png.import b/Textures/Tiles/Actual textures/5.png.import deleted file mode 100644 index b4db05a4..00000000 --- a/Textures/Tiles/Actual textures/5.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://djm4muwbpkhon" -path="res://.godot/imported/5.png-b05b0952cdf23746c187f7dacb5e45ba.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Textures/Tiles/Actual textures/5.png" -dest_files=["res://.godot/imported/5.png-b05b0952cdf23746c187f7dacb5e45ba.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/Textures/Tiles/Actual textures/6.png b/Textures/Tiles/Actual textures/6.png deleted file mode 100644 index 4f25ced3..00000000 Binary files a/Textures/Tiles/Actual textures/6.png and /dev/null differ diff --git a/Textures/Tiles/Actual textures/6.png.import b/Textures/Tiles/Actual textures/6.png.import deleted file mode 100644 index 57e0870c..00000000 --- a/Textures/Tiles/Actual textures/6.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dxwsqlxunc3i5" -path="res://.godot/imported/6.png-e1e02d582d46dbda827c756129490f1a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Textures/Tiles/Actual textures/6.png" -dest_files=["res://.godot/imported/6.png-e1e02d582d46dbda827c756129490f1a.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/Textures/Tiles/Actual textures/7.png b/Textures/Tiles/Actual textures/7.png deleted file mode 100644 index 115b7794..00000000 Binary files a/Textures/Tiles/Actual textures/7.png and /dev/null differ diff --git a/Textures/Tiles/Actual textures/7.png.import b/Textures/Tiles/Actual textures/7.png.import deleted file mode 100644 index 6febc82e..00000000 --- a/Textures/Tiles/Actual textures/7.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b8t3vfrl6fh1c" -path="res://.godot/imported/7.png-4d01b8eff1f08c14becbcff4c9284871.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Textures/Tiles/Actual textures/7.png" -dest_files=["res://.godot/imported/7.png-4d01b8eff1f08c14becbcff4c9284871.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/Textures/Tiles/Actual textures/sprite_sheet.png b/Textures/Tiles/Actual textures/sprite_sheet.png deleted file mode 100644 index 3cc98337..00000000 Binary files a/Textures/Tiles/Actual textures/sprite_sheet.png and /dev/null differ diff --git a/Textures/Tiles/Actual textures/sprite_sheet.png.import b/Textures/Tiles/Actual textures/sprite_sheet.png.import deleted file mode 100644 index 004ef296..00000000 --- a/Textures/Tiles/Actual textures/sprite_sheet.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b7cce3duxh4do" -path="res://.godot/imported/sprite_sheet.png-fb5f43d1080f194d6aa61666047f1a19.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Textures/Tiles/Actual textures/sprite_sheet.png" -dest_files=["res://.godot/imported/sprite_sheet.png-fb5f43d1080f194d6aa61666047f1a19.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/Textures/Tiles/GRASS+.png b/Textures/Tiles/GRASS+.png deleted file mode 100644 index 2b6fb6a3..00000000 Binary files a/Textures/Tiles/GRASS+.png and /dev/null differ diff --git a/Textures/Tiles/GRASS+.png.import b/Textures/Tiles/GRASS+.png.import deleted file mode 100644 index daea16a3..00000000 --- a/Textures/Tiles/GRASS+.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://beqlsvo0hmpwu" -path="res://.godot/imported/GRASS+.png-3c1fa86a185c9f16eaa40b60fe4b3d2d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Textures/Tiles/GRASS+.png" -dest_files=["res://.godot/imported/GRASS+.png-3c1fa86a185c9f16eaa40b60fe4b3d2d.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/Textures/Tiles/doors.png b/Textures/Tiles/doors.png deleted file mode 100644 index 8122682e..00000000 Binary files a/Textures/Tiles/doors.png and /dev/null differ diff --git a/Textures/Tiles/grass4.png b/Textures/Tiles/grass4.png deleted file mode 100644 index 68ac9b57..00000000 Binary files a/Textures/Tiles/grass4.png and /dev/null differ diff --git a/Textures/Tiles/grass4.png.import b/Textures/Tiles/grass4.png.import deleted file mode 100644 index a1ddc57b..00000000 --- a/Textures/Tiles/grass4.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bwrhjixkpl3t1" -path="res://.godot/imported/grass4.png-c3b3c17ebaabdb86dc5411e766bd9bc1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Textures/Tiles/grass4.png" -dest_files=["res://.godot/imported/grass4.png-c3b3c17ebaabdb86dc5411e766bd9bc1.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/Textures/Tiles/grassV2.png b/Textures/Tiles/grassV2.png deleted file mode 100644 index 917dc846..00000000 Binary files a/Textures/Tiles/grassV2.png and /dev/null differ diff --git a/Textures/Tiles/grassV2.png.import b/Textures/Tiles/grassV2.png.import deleted file mode 100644 index 041fd940..00000000 --- a/Textures/Tiles/grassV2.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bdil6p380mtif" -path="res://.godot/imported/grassV2.png-b6d97d3882bd033e41bba1f16bffd605.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Textures/Tiles/grassV2.png" -dest_files=["res://.godot/imported/grassV2.png-b6d97d3882bd033e41bba1f16bffd605.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/Textures/Tiles/grassv3.png b/Textures/Tiles/grassv3.png deleted file mode 100644 index 3eb5e587..00000000 Binary files a/Textures/Tiles/grassv3.png and /dev/null differ diff --git a/Textures/Tiles/grassv3.png.import b/Textures/Tiles/grassv3.png.import deleted file mode 100644 index 3108a6d2..00000000 --- a/Textures/Tiles/grassv3.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://wm6nfo4h77k5" -path="res://.godot/imported/grassv3.png-fd8b4dbf0696016c8cf51491f666580a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Textures/Tiles/grassv3.png" -dest_files=["res://.godot/imported/grassv3.png-fd8b4dbf0696016c8cf51491f666580a.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/Textures/Tiles/grassv5.png b/Textures/Tiles/grassv5.png deleted file mode 100644 index fefe4627..00000000 Binary files a/Textures/Tiles/grassv5.png and /dev/null differ diff --git a/Textures/Tiles/grassv5.png.import b/Textures/Tiles/grassv5.png.import deleted file mode 100644 index 8c198908..00000000 --- a/Textures/Tiles/grassv5.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://1xji6t8nmjv4" -path="res://.godot/imported/grassv5.png-4f12d161bcef6ce4512119255874fdaf.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Textures/Tiles/grassv5.png" -dest_files=["res://.godot/imported/grassv5.png-4f12d161bcef6ce4512119255874fdaf.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/Textures/steel_scrap.png b/Textures/steel_scrap.png index cef55666..4fde92c0 100644 Binary files a/Textures/steel_scrap.png and b/Textures/steel_scrap.png differ diff --git a/addons/gloot/core/constraints/constraint_manager.gd b/addons/gloot/core/constraints/constraint_manager.gd index 66b6d5f8..05dcc27a 100644 --- a/addons/gloot/core/constraints/constraint_manager.gd +++ b/addons/gloot/core/constraints/constraint_manager.gd @@ -1,3 +1,5 @@ +extends RefCounted + const KEY_WEIGHT_CONSTRAINT = "weight_constraint" const KEY_STACKS_CONSTRAINT = "stacks_constraint" const KEY_GRID_CONSTRAINT = "grid_constraint" @@ -139,16 +141,40 @@ func _sg_get_space_for(item: InventoryItem) -> ItemCount: func has_space_for(item: InventoryItem) -> bool: - return not get_space_for(item).less(ItemCount.new(1)) + match get_configuration(): + Configuration.W: + return _weight_constraint.has_space_for(item) + Configuration.S: + return _stacks_constraint.has_space_for(item) + Configuration.G: + return _grid_constraint.has_space_for(item) + Configuration.WS: + return _weight_constraint.has_space_for(item) + Configuration.WG: + return _weight_constraint.has_space_for(item) && _grid_constraint.has_space_for(item) + Configuration.SG: + return _sg_has_space_for(item) + Configuration.WSG: + return _sg_has_space_for(item) && _weight_constraint.has_space_for(item) + + return true + + +func _sg_has_space_for(item: InventoryItem) -> bool: + if _grid_constraint.has_space_for(item): + return true + var stack_size := ItemCount.new(_stacks_constraint.get_item_stack_size(item)) + var free_stacks_space := _stacks_constraint.get_free_stack_space_for(item) + return free_stacks_space.ge(stack_size) -func enable_weight_constraint_(capacity: float = 0.0) -> void: +func enable_weight_constraint(capacity: float = 0.0) -> void: assert(_weight_constraint == null, "Weight constraint is already enabled") _weight_constraint = WeightConstraint.new(inventory) _weight_constraint.capacity = capacity -func enable_stacks_constraint_() -> void: +func enable_stacks_constraint() -> void: assert(_stacks_constraint == null, "Stacks constraint is already enabled") _stacks_constraint = StacksConstraint.new(inventory) diff --git a/addons/gloot/core/constraints/grid_constraint.gd b/addons/gloot/core/constraints/grid_constraint.gd index daa3fe72..fecb3ac0 100644 --- a/addons/gloot/core/constraints/grid_constraint.gd +++ b/addons/gloot/core/constraints/grid_constraint.gd @@ -45,9 +45,20 @@ func _fill_item_map() -> void: func _on_inventory_set() -> void: _refresh_item_map() - inventory.item_added.connect(func(item: InventoryItem): _item_map.fill_rect(get_item_rect(item), item)) - inventory.item_removed.connect(func(item: InventoryItem): _item_map.clear_rect(get_item_rect(item))) - inventory.item_modified.connect(func(_item: InventoryItem): _refresh_item_map()) + + +func _on_item_added(item: InventoryItem) -> void: + if item == null: + return + _item_map.fill_rect(get_item_rect(item), item) + + +func _on_item_removed(item: InventoryItem) -> void: + _item_map.clear_rect(get_item_rect(item)) + + +func _on_item_modified(item: InventoryItem) -> void: + _refresh_item_map() func _bounds_broken() -> bool: @@ -116,7 +127,7 @@ func _get_prototype_size(prototype_id: String) -> Vector2i: assert(inventory != null, "Inventory not set!") assert(inventory.item_protoset != null, "Inventory protoset is null!") var width: int = inventory.item_protoset.get_item_property(prototype_id, KEY_WIDTH, 1) - var height: int = inventory.item_protoset.get_item_property(prototype_id, KEY_WIDTH, 1) + var height: int = inventory.item_protoset.get_item_property(prototype_id, KEY_HEIGHT, 1) return Vector2i(width, height) @@ -304,7 +315,7 @@ func sort() -> bool: var item_array: Array[InventoryItem] for item in inventory.get_items(): item_array.append(item) - item_array.sort_custom(Callable(self, "_compare_items")) + item_array.sort_custom(_compare_items) for item in item_array: _move_item_to_unsafe(item, -get_item_size(item)) @@ -326,6 +337,9 @@ func _sort_if_needed() -> void: func get_space_for(item: InventoryItem) -> ItemCount: var occupied_rects: Array[Rect2i] var item_size = get_item_size(item) + if item_size == Vector2i.ONE: + return ItemCount.new(_item_map.free_fields) + var free_space := find_free_space(item_size, occupied_rects) while free_space.success: occupied_rects.append(Rect2i(free_space.position, item_size)) @@ -333,6 +347,14 @@ func get_space_for(item: InventoryItem) -> ItemCount: return ItemCount.new(occupied_rects.size()) +func has_space_for(item: InventoryItem) -> bool: + var item_size = get_item_size(item) + if item_size == Vector2i.ONE: + return _item_map.free_fields > 0 + + return find_free_space(item_size).success + + # TODO: Check if find_free_place is needed func find_free_space(item_size: Vector2i, occupied_rects: Array[Rect2i] = []) -> Dictionary: var result := {success = false, position = Vector2i(-1, -1)} diff --git a/addons/gloot/core/constraints/inventory_constraint.gd b/addons/gloot/core/constraints/inventory_constraint.gd index cfaff6ac..54e4cf85 100644 --- a/addons/gloot/core/constraints/inventory_constraint.gd +++ b/addons/gloot/core/constraints/inventory_constraint.gd @@ -1,3 +1,5 @@ +extends Object + var inventory: Inventory = null : get: return inventory @@ -17,6 +19,11 @@ func get_space_for(item: InventoryItem) -> ItemCount: return ItemCount.zero() +# Override this +func has_space_for(item:InventoryItem) -> bool: + return false + + # Override this func reset() -> void: pass diff --git a/addons/gloot/core/constraints/item_map.gd b/addons/gloot/core/constraints/item_map.gd index 73493222..27ed977b 100644 --- a/addons/gloot/core/constraints/item_map.gd +++ b/addons/gloot/core/constraints/item_map.gd @@ -1,4 +1,10 @@ var map: Array +var _free_fields: int +var free_fields : + get: + return _free_fields + set(new_free_fields): + assert(false, "free_fields is read-only!") func _init(size: Vector2i) -> void: @@ -11,6 +17,7 @@ func resize(size: Vector2i) -> void: for i in map.size(): map[i] = [] map[i].resize(size.y) + _free_fields = size.x * size.y func fill_rect(rect: Rect2i, value) -> void: @@ -20,6 +27,7 @@ func fill_rect(rect: Rect2i, value) -> void: if !contains(map_coords): continue map[map_coords.x][map_coords.y] = value + _free_fields -= 1 func clear_rect(rect: Rect2i) -> void: @@ -44,6 +52,8 @@ func print() -> void: func clear() -> void: for column in map: column.fill(null) + var size = get_size() + _free_fields = size.x * size.y func contains(position: Vector2i) -> bool: diff --git a/addons/gloot/core/constraints/stacks_constraint.gd b/addons/gloot/core/constraints/stacks_constraint.gd index ee1307d7..31568b3b 100644 --- a/addons/gloot/core/constraints/stacks_constraint.gd +++ b/addons/gloot/core/constraints/stacks_constraint.gd @@ -35,13 +35,24 @@ static func get_item_max_stack_size(item: InventoryItem) -> int: return item.get_property(KEY_MAX_STACK_SIZE, DEFAULT_MAX_STACK_SIZE) -static func set_item_stack_size(item: InventoryItem, stack_size: int) -> void: +static func set_item_stack_size(item: InventoryItem, stack_size: int) -> bool: assert(item != null, "item is null!") + assert(stack_size >= 0, "stack_size can't be negative!") + if stack_size > get_item_max_stack_size(item): + return false + if stack_size == 0: + var inventory: Inventory = item.get_inventory() + if inventory != null: + inventory.remove_item(item) + item.queue_free() + return true item.set_property(KEY_STACK_SIZE, stack_size) + return true static func set_item_max_stack_size(item: InventoryItem, max_stack_size: int) -> void: assert(item != null, "item is null!") + assert(max_stack_size > 0, "max_stack_size can't be less than 1!") item.set_property(KEY_MAX_STACK_SIZE, max_stack_size) @@ -115,22 +126,13 @@ func add_item_automerge( var target_items = get_mergable_items(item) for target_item in target_items: - if _merge_stacks_autodelete(target_item, item) == MergeResult.SUCCESS: + if _merge_stacks(target_item, item) == MergeResult.SUCCESS: return true assert(inventory.add_item(item)) return true -static func _merge_stacks_autodelete(item_dst: InventoryItem, item_src: InventoryItem) -> int: - var result := _merge_stacks(item_dst, item_src) - if result == MergeResult.SUCCESS: - if item_src.get_inventory(): - item_src.get_inventory().remove_item(item_src) - item_src.queue_free() - return result - - static func _merge_stacks(item_dst: InventoryItem, item_src: InventoryItem) -> int: assert(item_dst != null, "item_dst is null!") assert(item_src != null, "item_src is null!") @@ -144,8 +146,8 @@ static func _merge_stacks(item_dst: InventoryItem, item_src: InventoryItem) -> i if free_dst_stack_space <= 0: return MergeResult.FAIL - set_item_stack_size(item_src, max(src_size - free_dst_stack_space, 0)) - set_item_stack_size(item_dst, min(dst_size + src_size, dst_max_size)) + assert(set_item_stack_size(item_src, max(src_size - free_dst_stack_space, 0))) + assert(set_item_stack_size(item_dst, min(dst_size + src_size, dst_max_size))) if free_dst_stack_space >= src_size: return MergeResult.SUCCESS @@ -168,8 +170,8 @@ static func split_stack(item: InventoryItem, new_stack_size: int) -> InventoryIt if new_item.get_parent(): new_item.get_parent().remove_child(new_item) - set_item_stack_size(new_item, new_stack_size) - set_item_stack_size(item, stack_size - new_stack_size) + assert(set_item_stack_size(new_item, new_stack_size)) + assert(set_item_stack_size(item, stack_size - new_stack_size)) return new_item @@ -192,7 +194,7 @@ func join_stacks( return false # TODO: Check if this can be an assertion - _merge_stacks_autodelete(item_dst, item_src) + _merge_stacks(item_dst, item_src) return true @@ -218,6 +220,10 @@ func get_space_for(item: InventoryItem) -> ItemCount: return ItemCount.inf() +func has_space_for(item: InventoryItem) -> bool: + return true + + func get_free_stack_space_for(item: InventoryItem) -> ItemCount: assert(inventory != null, "Inventory not set!") @@ -239,7 +245,7 @@ func pack_item(item: InventoryItem) -> void: var mergable_items = get_mergable_items(item) for mergable_item in mergable_items: - var merge_result := _merge_stacks_autodelete(mergable_item, item) + var merge_result := _merge_stacks(mergable_item, item) if merge_result == MergeResult.SUCCESS: return @@ -268,7 +274,7 @@ func transfer_autosplit(item: InventoryItem, destination: Inventory) -> Inventor func _get_space_for_single_item(inventory: Inventory, item: InventoryItem) -> ItemCount: var single_item := item.duplicate() - set_item_stack_size(single_item, 1) + assert(set_item_stack_size(single_item, 1)) var count := inventory._constraint_manager.get_space_for(single_item) single_item.free() return count diff --git a/addons/gloot/core/constraints/weight_constraint.gd b/addons/gloot/core/constraints/weight_constraint.gd index 6dd701b7..9ca9b58e 100644 --- a/addons/gloot/core/constraints/weight_constraint.gd +++ b/addons/gloot/core/constraints/weight_constraint.gd @@ -102,6 +102,13 @@ func get_space_for(item: InventoryItem) -> ItemCount: return ItemCount.new(floor(get_free_space() / unit_weight)) +func has_space_for(item: InventoryItem) -> bool: + if has_unlimited_capacity(): + return true + var item_weight := get_item_weight(item) + return get_free_space() >= item_weight + + func reset() -> void: capacity = 0.0 diff --git a/addons/gloot/core/inventory.gd b/addons/gloot/core/inventory.gd index e1628044..6c926c43 100644 --- a/addons/gloot/core/inventory.gd +++ b/addons/gloot/core/inventory.gd @@ -1,4 +1,5 @@ @tool +@icon("res://addons/gloot/images/icon_inventory.svg") extends Node class_name Inventory @@ -16,6 +17,7 @@ const ConstraintManager = preload("res://addons/gloot/core/constraints/constrain set(new_item_protoset): if new_item_protoset == item_protoset: return + # TODO: Maybe the inventory should be cleared here? if not _items.is_empty(): return item_protoset = new_item_protoset @@ -53,7 +55,7 @@ func _enter_tree(): func _exit_tree(): - _items.clear() + _items.clear() func _init() -> void: @@ -69,7 +71,8 @@ func _on_item_added(item: InventoryItem) -> void: _items.append(item) contents_changed.emit() _connect_item_signals(item) - _constraint_manager._on_item_added(item) + if _constraint_manager: + _constraint_manager._on_item_added(item) item_added.emit(item) @@ -77,7 +80,8 @@ func _on_item_removed(item: InventoryItem) -> void: _items.erase(item) contents_changed.emit() _disconnect_item_signals(item) - _constraint_manager._on_item_removed(item) + if _constraint_manager: + _constraint_manager._on_item_removed(item) item_removed.emit(item) @@ -105,21 +109,21 @@ func get_item_count() -> int: func _connect_item_signals(item: InventoryItem) -> void: - if !item.protoset_changed.is_connected(Callable(self, "_emit_item_modified")): - item.protoset_changed.connect(Callable(self, "_emit_item_modified").bind(item)) - if !item.prototype_id_changed.is_connected(Callable(self, "_emit_item_modified")): - item.prototype_id_changed.connect(Callable(self, "_emit_item_modified").bind(item)) - if !item.properties_changed.is_connected(Callable(self, "_emit_item_modified")): - item.properties_changed.connect(Callable(self, "_emit_item_modified").bind(item)) + if !item.protoset_changed.is_connected(_emit_item_modified): + item.protoset_changed.connect(_emit_item_modified.bind(item)) + if !item.prototype_id_changed.is_connected(_emit_item_modified): + item.prototype_id_changed.connect(_emit_item_modified.bind(item)) + if !item.properties_changed.is_connected(_emit_item_modified): + item.properties_changed.connect(_emit_item_modified.bind(item)) func _disconnect_item_signals(item:InventoryItem) -> void: - if item.protoset_changed.is_connected(Callable(self, "_emit_item_modified")): - item.protoset_changed.disconnect(Callable(self, "_emit_item_modified")) - if item.prototype_id_changed.is_connected(Callable(self, "_emit_item_modified")): - item.prototype_id_changed.disconnect(Callable(self, "_emit_item_modified")) - if item.properties_changed.is_connected(Callable(self, "_emit_item_modified")): - item.properties_changed.disconnect(Callable(self, "_emit_item_modified")) + if item.protoset_changed.is_connected(_emit_item_modified): + item.protoset_changed.disconnect(_emit_item_modified) + if item.prototype_id_changed.is_connected(_emit_item_modified): + item.prototype_id_changed.disconnect(_emit_item_modified) + if item.properties_changed.is_connected(_emit_item_modified): + item.properties_changed.disconnect(_emit_item_modified) func _emit_item_modified(item: InventoryItem) -> void: diff --git a/addons/gloot/core/inventory_grid.gd b/addons/gloot/core/inventory_grid.gd index a28e94a3..8581cd5f 100644 --- a/addons/gloot/core/inventory_grid.gd +++ b/addons/gloot/core/inventory_grid.gd @@ -1,4 +1,5 @@ @tool +@icon("res://addons/gloot/images/icon_inventory_grid.svg") extends Inventory class_name InventoryGrid @@ -8,6 +9,10 @@ const DEFAULT_SIZE: Vector2i = Vector2i(10, 10) @export var size: Vector2i = DEFAULT_SIZE : get: + if _constraint_manager == null: + return DEFAULT_SIZE + if _constraint_manager.get_grid_constraint() == null: + return DEFAULT_SIZE return _constraint_manager.get_grid_constraint().size set(new_size): _constraint_manager.get_grid_constraint().size = new_size @@ -16,11 +21,7 @@ const DEFAULT_SIZE: Vector2i = Vector2i(10, 10) func _init() -> void: super._init() _constraint_manager.enable_grid_constraint() - _constraint_manager.get_grid_constraint().size_changed.connect(Callable(self, "_on_size_changed")) - - -func _on_size_changed() -> void: - size_changed.emit() + _constraint_manager.get_grid_constraint().size_changed.connect(func(): size_changed.emit()) func get_item_position(item: InventoryItem) -> Vector2i: diff --git a/addons/gloot/core/inventory_grid_stacked.gd b/addons/gloot/core/inventory_grid_stacked.gd index 640e4a13..d5091597 100644 --- a/addons/gloot/core/inventory_grid_stacked.gd +++ b/addons/gloot/core/inventory_grid_stacked.gd @@ -1,4 +1,5 @@ @tool +@icon("res://addons/gloot/images/icon_inventory_grid_stacked.svg") extends InventoryGrid class_name InventoryGridStacked @@ -6,62 +7,62 @@ const StacksConstraint = preload("res://addons/gloot/core/constraints/stacks_con func _init() -> void: - super._init() - _constraint_manager.enable_stacks_constraint_() + super._init() + _constraint_manager.enable_stacks_constraint() func has_place_for(item: InventoryItem) -> bool: - return _constraint_manager.has_space_for(item) + return _constraint_manager.has_space_for(item) func add_item_automerge(item: InventoryItem) -> bool: - return _constraint_manager.get_stacks_constraint().add_item_automerge(item) - - + return _constraint_manager.get_stacks_constraint().add_item_automerge(item) + + func split(item: InventoryItem, new_stack_size: int) -> InventoryItem: - return _constraint_manager.get_stacks_constraint().split_stack_safe(item, new_stack_size) + return _constraint_manager.get_stacks_constraint().split_stack_safe(item, new_stack_size) func join(item_dst: InventoryItem, item_src: InventoryItem) -> bool: - return _constraint_manager.get_stacks_constraint().join_stacks(item_dst, item_src) + return _constraint_manager.get_stacks_constraint().join_stacks(item_dst, item_src) static func get_item_stack_size(item: InventoryItem) -> int: - return StacksConstraint.get_item_stack_size(item) + return StacksConstraint.get_item_stack_size(item) -static func set_item_stack_size(item: InventoryItem, new_stack_size: int) -> void: - StacksConstraint.set_item_stack_size(item, new_stack_size) +static func set_item_stack_size(item: InventoryItem, new_stack_size: int) -> bool: + return StacksConstraint.set_item_stack_size(item, new_stack_size) static func get_item_max_stack_size(item: InventoryItem) -> int: - return StacksConstraint.get_item_max_stack_size(item) + return StacksConstraint.get_item_max_stack_size(item) static func set_item_max_stack_size(item: InventoryItem, new_stack_size: int) -> void: - StacksConstraint.set_item_max_stack_size(item, new_stack_size) + StacksConstraint.set_item_max_stack_size(item, new_stack_size) func get_prototype_stack_size(prototype_id: String) -> int: - return _constraint_manager.get_stacks_constraint().get_prototype_stack_size(item_protoset, prototype_id) + return _constraint_manager.get_stacks_constraint().get_prototype_stack_size(item_protoset, prototype_id) func get_prototype_max_stack_size(prototype_id: String) -> int: - return _constraint_manager.get_stacks_constraint().get_prototype_max_stack_size(item_protoset, prototype_id) + return _constraint_manager.get_stacks_constraint().get_prototype_max_stack_size(item_protoset, prototype_id) func transfer_automerge(item: InventoryItem, destination: Inventory) -> bool: - return _constraint_manager.get_stacks_constraint().transfer_automerge(item, destination) + return _constraint_manager.get_stacks_constraint().transfer_automerge(item, destination) func transfer_autosplitmerge(item: InventoryItem, destination: Inventory) -> bool: - return _constraint_manager.get_stacks_constraint().transfer_autosplitmerge(item, destination) + return _constraint_manager.get_stacks_constraint().transfer_autosplitmerge(item, destination) func transfer_to(item: InventoryItem, destination: Inventory, position: Vector2i) -> bool: - return _constraint_manager.get_grid_constraint().transfer_to(item, destination._constraint_manager.get_grid_constraint(), position) + return _constraint_manager.get_grid_constraint().transfer_to(item, destination._constraint_manager.get_grid_constraint(), position) func _get_mergable_item_at(item: InventoryItem, position: Vector2i) -> InventoryItem: - return _constraint_manager.get_grid_constraint()._get_mergable_item_at(item, position) + return _constraint_manager.get_grid_constraint()._get_mergable_item_at(item, position) diff --git a/addons/gloot/core/inventory_grid_transfer.tscn b/addons/gloot/core/inventory_grid_transfer.tscn deleted file mode 100644 index 37da785e..00000000 --- a/addons/gloot/core/inventory_grid_transfer.tscn +++ /dev/null @@ -1,141 +0,0 @@ -[gd_scene load_steps=9 format=3 uid="uid://jopigw4xplp4"] - -[ext_resource type="Resource" uid="uid://ddrmqwl3guset" path="res://tests/data/item_definitions_grid.tres" id="1"] -[ext_resource type="Script" path="res://addons/gloot/core/inventory_grid.gd" id="2"] -[ext_resource type="Script" path="res://addons/gloot/ui/ctrl_inventory_grid.gd" id="3"] -[ext_resource type="Script" path="res://examples/inventory_grid_transfer.gd" id="4"] -[ext_resource type="Texture2D" uid="uid://b2hkcwwq10cut" path="res://icon.png" id="5"] -[ext_resource type="Script" path="res://addons/gloot/ui/ctrl_item_slot.gd" id="6"] -[ext_resource type="Script" path="res://addons/gloot/core/item_slot.gd" id="7"] -[ext_resource type="Script" path="res://addons/gloot/core/inventory_item.gd" id="8"] - -[node name="InventoryGridTransfer" type="Control"] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("4") - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -layout_mode = 0 -offset_right = 40.0 -offset_bottom = 40.0 - -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 0 - -[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"] -layout_mode = 2 - -[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/HBoxContainer/VBoxContainer"] -layout_mode = 2 - -[node name="CtrlInventoryGridLeft" type="Container" parent="VBoxContainer/HBoxContainer/VBoxContainer/PanelContainer"] -texture_filter = 1 -custom_minimum_size = Vector2(160, 160) -layout_mode = 2 -script = ExtResource("3") -inventory_path = NodePath("../../../../../InventoryGridLeft") -default_item_texture = ExtResource("5") - -[node name="BtnSortLeft" type="Button" parent="VBoxContainer/HBoxContainer/VBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Sort" - -[node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"] -layout_mode = 2 - -[node name="PanelContainer2" type="PanelContainer" parent="VBoxContainer/HBoxContainer/VBoxContainer2"] -layout_mode = 2 - -[node name="CtrlInventoryGridRight" type="Container" parent="VBoxContainer/HBoxContainer/VBoxContainer2/PanelContainer2"] -texture_filter = 1 -custom_minimum_size = Vector2(160, 160) -layout_mode = 2 -script = ExtResource("3") -inventory_path = NodePath("../../../../../InventoryGridRight") -default_item_texture = ExtResource("5") - -[node name="BtnSortRight" type="Button" parent="VBoxContainer/HBoxContainer/VBoxContainer2"] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Sort" - -[node name="VBoxContainer3" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer/VBoxContainer3"] -layout_mode = 2 -text = "Item Slot:" - -[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/HBoxContainer/VBoxContainer3"] -layout_mode = 2 - -[node name="CtrlItemSlot" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/VBoxContainer3/PanelContainer"] -custom_minimum_size = Vector2(32, 32) -layout_mode = 2 -script = ExtResource("6") -item_slot_path = NodePath("../../../../../ItemSlot") -label_visible = false - -[node name="BtnUnequip" type="Button" parent="VBoxContainer/HBoxContainer/VBoxContainer3"] -layout_mode = 2 -text = "Unequip" - -[node name="Label" type="Label" parent="VBoxContainer"] -layout_mode = 2 -text = "Drag and drop items to transfer them from one inventory to the other. -Press the 'Sort' buttons to sort the inventories. -Drag items from the right inventory onto the item slot to equip it. -Use the 'Unequip' button to unequip it." - -[node name="InventoryGridLeft" type="Node" parent="."] -script = ExtResource("2") -size = Vector2i(5, 5) -item_protoset = ExtResource("1") - -[node name="L_item_2x2" type="Node" parent="InventoryGridLeft"] -script = ExtResource("8") -protoset = ExtResource("1") -prototype_id = "item_2x2" - -[node name="L_item_2x2_2" type="Node" parent="InventoryGridLeft"] -script = ExtResource("8") -protoset = ExtResource("1") -prototype_id = "item_2x2" -properties = { -"grid_position": Vector2i(0, 2) -} - -[node name="InventoryGridRight" type="Node" parent="."] -script = ExtResource("2") -size = Vector2i(5, 5) -item_protoset = ExtResource("1") - -[node name="R_item_2x2" type="Node" parent="InventoryGridRight"] -script = ExtResource("8") -protoset = ExtResource("1") -prototype_id = "item_2x2" - -[node name="R_item_1x1" type="Node" parent="InventoryGridRight"] -script = ExtResource("8") -protoset = ExtResource("1") -prototype_id = "item_1x1" -properties = { -"grid_position": Vector2i(0, 2) -} - -[node name="ItemSlot" type="Node" parent="."] -script = ExtResource("7") -inventory_path = NodePath("../InventoryGridRight") - -[node name="LblInfo" type="Label" parent="."] -visible = false -layout_mode = 0 -offset_right = 40.0 -offset_bottom = 14.0 diff --git a/addons/gloot/core/inventory_item.gd b/addons/gloot/core/inventory_item.gd index aec3a313..a23a6624 100644 --- a/addons/gloot/core/inventory_item.gd +++ b/addons/gloot/core/inventory_item.gd @@ -1,10 +1,15 @@ @tool +@icon("res://addons/gloot/images/icon_item.svg") extends Node class_name InventoryItem signal protoset_changed signal prototype_id_changed signal properties_changed +signal added_to_inventory(inventory) +signal removed_from_inventory(inventory) +signal equipped_in_slot(item_slot) +signal removed_from_slot(item_slot) @export var protoset: Resource : get: @@ -18,7 +23,7 @@ signal properties_changed if new_protoset && new_protoset._prototypes && new_protoset._prototypes.keys().size() > 0: self.prototype_id = new_protoset._prototypes.keys()[0] - new_protoset.changed.connect(Callable(self, "_on_protoset_modified")) + new_protoset.changed.connect(func(): update_configuration_warnings()) protoset = new_protoset protoset_changed.emit() @@ -43,7 +48,8 @@ signal properties_changed properties_changed.emit() update_configuration_warnings() -var _inventory: Node +var _inventory: Inventory +var _item_slot: ItemSlot const KEY_PROTOSET: String = "protoset" const KEY_PROTOTYE_ID: String = "prototype_id" @@ -68,10 +74,6 @@ func _get_configuration_warnings() -> PackedStringArray: return PackedStringArray() -func _on_protoset_modified() -> void: - update_configuration_warnings() - - func reset_properties() -> void: if !protoset || prototype_id.is_empty(): properties = {} @@ -87,30 +89,63 @@ func reset_properties() -> void: func _notification(what): if what == NOTIFICATION_PARENTED: - if !(get_parent() is Inventory): - _inventory = null - return - _inventory = get_parent() - var inv_item_protoset = get_parent().get("item_protoset") - if inv_item_protoset: - protoset = inv_item_protoset - _on_item_added(get_parent()) + _on_parented(get_parent()) elif what == NOTIFICATION_UNPARENTED: - _on_item_removed(_inventory) + _on_unparented() + + +func _on_parented(parent: Node) -> void: + if parent is Inventory: + _on_added_to_inventory(parent as Inventory) + else: _inventory = null + if parent is ItemSlot: + _link_to_slot(parent as ItemSlot) + else: + _unlink_from_slot() + + +func _on_added_to_inventory(inventory: Inventory) -> void: + assert(inventory != null) + _inventory = inventory + if _inventory.item_protoset: + protoset = _inventory.item_protoset + + added_to_inventory.emit(_inventory) + _inventory._on_item_added(self) -func _on_item_removed(obj: Object): - if obj && obj.has_method("_on_item_removed"): - obj._on_item_removed(self) +func _on_unparented() -> void: + if _inventory: + _on_removed_from_inventory(_inventory) + _inventory = null -func _on_item_added(obj: Object): - if obj && obj.has_method("_on_item_added"): - obj._on_item_added(self) + _unlink_from_slot() + + +func _on_removed_from_inventory(inventory: Inventory) -> void: + if inventory: + removed_from_inventory.emit(inventory) + inventory._on_item_removed(self) + + +func _link_to_slot(item_slot: ItemSlot) -> void: + _item_slot = item_slot + _item_slot._on_item_added(self) + equipped_in_slot.emit(item_slot) + + +func _unlink_from_slot() -> void: + if _item_slot == null: + return + var temp_slot := _item_slot + _item_slot = null + temp_slot._on_item_removed() + removed_from_slot.emit(temp_slot) -func get_inventory() -> Node: +func get_inventory() -> Inventory: return _inventory diff --git a/addons/gloot/core/inventory_stacked.gd b/addons/gloot/core/inventory_stacked.gd index 137c3f55..92dae13f 100644 --- a/addons/gloot/core/inventory_stacked.gd +++ b/addons/gloot/core/inventory_stacked.gd @@ -1,4 +1,5 @@ @tool +@icon("res://addons/gloot/images/icon_inventory_stacked.svg") extends Inventory class_name InventoryStacked @@ -8,88 +9,88 @@ signal capacity_changed signal occupied_space_changed @export var capacity: float : - get: - return _constraint_manager.get_weight_constraint().capacity - set(new_capacity): - _constraint_manager.get_weight_constraint().capacity = new_capacity + get: + if _constraint_manager == null: + return 0.0 + if _constraint_manager.get_weight_constraint() == null: + return 0.0 + return _constraint_manager.get_weight_constraint().capacity + set(new_capacity): + _constraint_manager.get_weight_constraint().capacity = new_capacity var occupied_space: float : - get: - return _constraint_manager.get_weight_constraint().occupied_space - set(new_occupied_space): - assert(false, "occupied_space is read-only!") + get: + if _constraint_manager == null: + return 0.0 + if _constraint_manager.get_weight_constraint() == null: + return 0.0 + return _constraint_manager.get_weight_constraint().occupied_space + set(new_occupied_space): + assert(false, "occupied_space is read-only!") func _init() -> void: - super._init() - _constraint_manager.enable_weight_constraint_() - _constraint_manager.enable_stacks_constraint_() - _constraint_manager.get_weight_constraint().capacity_changed.connect(Callable(self, "_on_capacity_changed")) - _constraint_manager.get_weight_constraint().occupied_space_changed.connect(Callable(self, "_on_occupied_space_changed")) - - -func _on_capacity_changed() -> void: - capacity_changed.emit() - - -func _on_occupied_space_changed() -> void: - occupied_space_changed.emit() + super._init() + _constraint_manager.enable_weight_constraint() + _constraint_manager.enable_stacks_constraint() + _constraint_manager.get_weight_constraint().capacity_changed.connect(func(): capacity_changed.emit()) + _constraint_manager.get_weight_constraint().occupied_space_changed.connect(func(): occupied_space_changed.emit()) func has_unlimited_capacity() -> bool: - return _constraint_manager.get_weight_constraint().has_unlimited_capacity() + return _constraint_manager.get_weight_constraint().has_unlimited_capacity() func get_free_space() -> float: - return _constraint_manager.get_weight_constraint().get_free_space() + return _constraint_manager.get_weight_constraint().get_free_space() func has_place_for(item: InventoryItem) -> bool: - return _constraint_manager.has_space_for(item) + return _constraint_manager.has_space_for(item) func add_item_automerge(item: InventoryItem) -> bool: - return _constraint_manager.get_stacks_constraint().add_item_automerge(item) + return _constraint_manager.get_stacks_constraint().add_item_automerge(item) func split(item: InventoryItem, new_stack_size: int) -> InventoryItem: - return _constraint_manager.get_stacks_constraint().split_stack_safe(item, new_stack_size) + return _constraint_manager.get_stacks_constraint().split_stack_safe(item, new_stack_size) func join(item_dst: InventoryItem, item_src: InventoryItem) -> bool: - return _constraint_manager.get_stacks_constraint().join_stacks(item_dst, item_src) + return _constraint_manager.get_stacks_constraint().join_stacks(item_dst, item_src) static func get_item_stack_size(item: InventoryItem) -> int: - return StacksConstraint.get_item_stack_size(item) + return StacksConstraint.get_item_stack_size(item) -static func set_item_stack_size(item: InventoryItem, new_stack_size: int) -> void: - return StacksConstraint.set_item_stack_size(item, new_stack_size) +static func set_item_stack_size(item: InventoryItem, new_stack_size: int) -> bool: + return StacksConstraint.set_item_stack_size(item, new_stack_size) static func get_item_max_stack_size(item: InventoryItem) -> int: - return StacksConstraint.get_item_max_stack_size(item) + return StacksConstraint.get_item_max_stack_size(item) static func set_item_max_stack_size(item: InventoryItem, new_stack_size: int) -> void: - return StacksConstraint.set_item_max_stack_size(item, new_stack_size) + StacksConstraint.set_item_max_stack_size(item, new_stack_size) func get_prototype_stack_size(prototype_id: String) -> int: - return StacksConstraint.get_prototype_stack_size(item_protoset, prototype_id) + return StacksConstraint.get_prototype_stack_size(item_protoset, prototype_id) func get_prototype_max_stack_size(prototype_id: String) -> int: - return StacksConstraint.get_prototype_max_stack_size(item_protoset, prototype_id) + return StacksConstraint.get_prototype_max_stack_size(item_protoset, prototype_id) func transfer_autosplit(item: InventoryItem, destination: InventoryStacked) -> bool: - return _constraint_manager.get_stacks_constraint().transfer_autosplit(item, destination) != null + return _constraint_manager.get_stacks_constraint().transfer_autosplit(item, destination) != null func transfer_automerge(item: InventoryItem, destination: InventoryStacked) -> bool: - return _constraint_manager.get_stacks_constraint().transfer_automerge(item, destination) + return _constraint_manager.get_stacks_constraint().transfer_automerge(item, destination) func transfer_autosplitmerge(item: InventoryItem, destination: InventoryStacked) -> bool: - return _constraint_manager.get_stacks_constraint().transfer_autosplitmerge(item, destination) + return _constraint_manager.get_stacks_constraint().transfer_autosplitmerge(item, destination) diff --git a/addons/gloot/core/item_count.gd b/addons/gloot/core/item_count.gd index 1829991c..28a0fc9d 100644 --- a/addons/gloot/core/item_count.gd +++ b/addons/gloot/core/item_count.gd @@ -3,108 +3,114 @@ class_name ItemCount const Inf: int = -1 @export var count: int = 0 : - get: - return count - set(new_count): - if new_count < 0: - new_count = -1 - count = new_count + get: + return count + set(new_count): + if new_count < 0: + new_count = -1 + count = new_count func _init(count_: int = 0) -> void: - if count_ < 0: - count_ = -1 - count = count_ + if count_ < 0: + count_ = -1 + count = count_ func is_inf() -> bool: - return count < 0 + return count < 0 func add(item_count_: ItemCount) -> ItemCount: - if item_count_.is_inf(): - count = Inf - elif !self.is_inf(): - count += item_count_.count + if item_count_.is_inf(): + count = Inf + elif !self.is_inf(): + count += item_count_.count - return self + return self func mul(item_count_: ItemCount) -> ItemCount: - if (count == 0): - return self - if item_count_.is_inf(): - count = Inf - return self - if item_count_.count == 0: - count = 0 - return self - if self.is_inf(): - return self + if (count == 0): + return self + if item_count_.is_inf(): + count = Inf + return self + if item_count_.count == 0: + count = 0 + return self + if self.is_inf(): + return self - count *= item_count_.count - return self + count *= item_count_.count + return self func div(item_count_: ItemCount) -> ItemCount: - assert(item_count_.count > 0 || item_count_.is_inf(), "Can't devide by zero!") - if (count == 0): - return self - if item_count_.is_inf() && self.is_inf(): - count = 1 - return self - if self.is_inf(): - return self - if item_count_.is_inf(): - count = 0 - return self - - count /= item_count_.count - return self + assert(item_count_.count > 0 || item_count_.is_inf(), "Can't devide by zero!") + if (count == 0): + return self + if item_count_.is_inf() && self.is_inf(): + count = 1 + return self + if self.is_inf(): + return self + if item_count_.is_inf(): + count = 0 + return self + + count /= item_count_.count + return self func eq(item_count_: ItemCount) -> bool: - return item_count_.count == count + return item_count_.count == count func less(item_count_: ItemCount) -> bool: - if item_count_.is_inf(): - if self.is_inf(): - return false - return true + if item_count_.is_inf(): + if self.is_inf(): + return false + return true - if self.is_inf(): - return false + if self.is_inf(): + return false - return count < item_count_.count + return count < item_count_.count + + +func le(item_count_: ItemCount) -> bool: + return self.less(item_count_) || self.eq(item_count_) func gt(item_count_: ItemCount) -> bool: - if item_count_.is_inf(): - if self.is_inf(): - return false - return false + if item_count_.is_inf(): + if self.is_inf(): + return false + return false + + if self.is_inf(): + return true + + return count > item_count_.count - if self.is_inf(): - return true - return count > item_count_.count +func ge(item_count_: ItemCount) -> bool: + return self.gt(item_count_) || self.eq(item_count_) static func min(item_count_l: ItemCount, item_count_r: ItemCount) -> ItemCount: - if item_count_l.less(item_count_r): - return item_count_l - return item_count_r + if item_count_l.less(item_count_r): + return item_count_l + return item_count_r static func inf() -> ItemCount: - return ItemCount.new(Inf) + return ItemCount.new(Inf) static func zero() -> ItemCount: - return ItemCount.new(0) + return ItemCount.new(0) -# TODO: Implement le() -# TODO: Implement ge() # TODO: Implement max() diff --git a/addons/gloot/core/item_protoset.gd b/addons/gloot/core/item_protoset.gd index 14ac2a0d..bf6c48ad 100644 --- a/addons/gloot/core/item_protoset.gd +++ b/addons/gloot/core/item_protoset.gd @@ -1,128 +1,139 @@ @tool +@icon("res://addons/gloot/images/icon_item_protoset.svg") class_name ItemProtoset extends Resource const KEY_ID: String = "id" @export_multiline var json_data : - get: - return json_data - set(new_json_data): - json_data = new_json_data - if !json_data.is_empty(): - parse(json_data) - _save() + get: + return json_data + set(new_json_data): + json_data = new_json_data + if !json_data.is_empty(): + parse(json_data) + _save() var _prototypes: Dictionary = {} : - get: - return _prototypes - set(new_prototypes): - _prototypes = new_prototypes - _update_json_data() - _save() + get: + return _prototypes + set(new_prototypes): + _prototypes = new_prototypes + _update_json_data() + _save() func parse(json: String) -> void: - _prototypes.clear() + _prototypes.clear() - var test_json_conv: JSON = JSON.new() - assert(test_json_conv.parse(json) == OK, "Failed to parse JSON!") - var parse_result = test_json_conv.data - assert(parse_result is Array, "JSON file must contain an array!") + var test_json_conv: JSON = JSON.new() + assert(test_json_conv.parse(json) == OK, "Failed to parse JSON!") + var parse_result = test_json_conv.data + assert(parse_result is Array, "JSON file must contain an array!") - for prototype in parse_result: - assert(prototype is Dictionary, "Item definition must be a dictionary!") - assert(prototype.has(KEY_ID), "Item definition must have an '%s' property!" % KEY_ID) - assert(prototype[KEY_ID] is String, "'%s' property must be a string!" % KEY_ID) + for prototype in parse_result: + assert(prototype is Dictionary, "Item prototype must be a dictionary!") + assert(prototype.has(KEY_ID), "Item prototype must have an '%s' property!" % KEY_ID) + assert(prototype[KEY_ID] is String, "'%s' property must be a string!" % KEY_ID) - var id = prototype[KEY_ID] - assert(!_prototypes.has(id), "Item definition ID '%s' already in use!") - _prototypes[id] = prototype - _unstringify_prototype(_prototypes[id]) + var id = prototype[KEY_ID] + assert(!_prototypes.has(id), "Item prototype ID '%s' already in use!" % id) + _prototypes[id] = prototype + _unstringify_prototype(_prototypes[id]) func _to_json() -> String: - var result: Array[Dictionary] - for prototype_id in _prototypes.keys(): - result.append(get_prototype(prototype_id)) + var result: Array[Dictionary] + for prototype_id in _prototypes.keys(): + result.append(get_prototype(prototype_id)) - for prototype in result: - _stringify_prototype(prototype) + for prototype in result: + _stringify_prototype(prototype) - # TODO: Add plugin settings for this - return JSON.stringify(result, " ") + # TODO: Add plugin settings for this + return JSON.stringify(result, " ") func _stringify_prototype(prototype: Dictionary) -> void: - for key in prototype.keys(): - var type = typeof(prototype[key]) - if (type != TYPE_STRING) and (type != TYPE_FLOAT): - prototype[key] = var_to_str(prototype[key]) + for key in prototype.keys(): + var type = typeof(prototype[key]) + if (type != TYPE_STRING) and (type != TYPE_FLOAT): + prototype[key] = var_to_str(prototype[key]) func _unstringify_prototype(prototype: Dictionary) -> void: - for key in prototype.keys(): - var type = typeof(prototype[key]) - if type == TYPE_STRING: - var variant = str_to_var(prototype[key]) - if variant != null: - prototype[key] = variant + for key in prototype.keys(): + var type = typeof(prototype[key]) + if type == TYPE_STRING: + var variant = str_to_var(prototype[key]) + if variant != null: + prototype[key] = variant func _update_json_data() -> void: - json_data = _to_json() + json_data = _to_json() func _save() -> void: - emit_changed() - if !resource_path.is_empty(): - ResourceSaver.save(self) + emit_changed() + if !resource_path.is_empty(): + ResourceSaver.save(self) func get_prototype(id: StringName) -> Variant: - assert(has_prototype(id), "No prototype") - return _prototypes[id] + assert(has_prototype(id), "No prototype") + return _prototypes[id] func add_prototype(id: String) -> void: - assert(!has_prototype(id), "Prototype with ID already exists") - _prototypes[id] = {KEY_ID: id} - _update_json_data() - _save() + assert(!has_prototype(id), "Prototype with ID already exists") + _prototypes[id] = {KEY_ID: id} + _update_json_data() + _save() func remove_prototype(id: String) -> void: - assert(has_prototype(id), "No prototype for ID") - _prototypes.erase(id) - _update_json_data() - _save() + assert(has_prototype(id), "No prototype for ID") + _prototypes.erase(id) + _update_json_data() + _save() + + +func duplicate_prototype(id: String) -> void: + assert(has_prototype(id), "No prototype for ID") + var new_id = "%s_duplicate" % id + var new_dict = _prototypes[id].duplicate() + new_dict[KEY_ID] = new_id + _prototypes[new_id] = new_dict + _update_json_data() + _save() func rename_prototype(id: String, new_id: String) -> void: - assert(has_prototype(id), "No prototype for ID") - assert(!has_prototype(new_id), "Prototype with ID already exists") - add_prototype(new_id) - _prototypes[new_id] = _prototypes[id].duplicate() - _prototypes[new_id][KEY_ID] = new_id - remove_prototype(id) - _update_json_data() - _save() + assert(has_prototype(id), "No prototype for ID") + assert(!has_prototype(new_id), "Prototype with ID already exists") + add_prototype(new_id) + _prototypes[new_id] = _prototypes[id].duplicate() + _prototypes[new_id][KEY_ID] = new_id + remove_prototype(id) + _update_json_data() + _save() func set_prototype_properties(id: String, new_properties: Dictionary) -> void: - _prototypes[id] = new_properties - _update_json_data() - _save() + _prototypes[id] = new_properties + _update_json_data() + _save() func has_prototype(id: String) -> bool: - return _prototypes.has(id) + return _prototypes.has(id) func get_item_property(id: String, property_name: String, default_value = null) -> Variant: - if has_prototype(id): - var prototype = get_prototype(id) - if !prototype.is_empty() && prototype.has(property_name): - return prototype[property_name] - - return default_value + if has_prototype(id): + var prototype = get_prototype(id) + if !prototype.is_empty() && prototype.has(property_name): + return prototype[property_name] + + return default_value diff --git a/addons/gloot/core/item_ref_slot.gd b/addons/gloot/core/item_ref_slot.gd new file mode 100644 index 00000000..71f7880e --- /dev/null +++ b/addons/gloot/core/item_ref_slot.gd @@ -0,0 +1,193 @@ +@tool +@icon("res://addons/gloot/images/icon_item_ref_slot.svg") +class_name ItemRefSlot +extends "res://addons/gloot/core/item_slot_base.gd" + +signal inventory_changed + +const Verify = preload("res://addons/gloot/core/verify.gd") +const KEY_ITEM_INDEX: String = "item_index" +const EMPTY_SLOT = -1 + +@export var inventory_path: NodePath : + get: + return inventory_path + set(new_inv_path): + if inventory_path == new_inv_path: + return + inventory_path = new_inv_path + update_configuration_warnings() + _set_inventory_from_path(inventory_path) + +var _wr_item: WeakRef = weakref(null) +var _wr_inventory: WeakRef = weakref(null) +@export var _equipped_item: int = EMPTY_SLOT : + get = _get_equipped_item_index, set = _set_equipped_item_index +var inventory: Inventory = null : + get = _get_inventory, set = _set_inventory + + +func _get_configuration_warnings() -> PackedStringArray: + if inventory_path.is_empty(): + return PackedStringArray([ + "Inventory path not set! Inventory path needs to point to an inventory node, so " +\ + "items from that inventory can be equipped in the slot."]) + return PackedStringArray() + + +func _get_equipped_item_index() -> int: + return _equipped_item + + +func _set_equipped_item_index(new_value: int) -> void: + _equipped_item = new_value + equip_by_index(new_value) + + +func _ready() -> void: + _set_inventory_from_path(inventory_path) + equip_by_index(_equipped_item) + + +func _set_inventory_from_path(path: NodePath) -> bool: + if path.is_empty(): + return false + + var node: Node = null + + if is_inside_tree(): + node = get_node_or_null(inventory_path) + + if node == null || !(node is Inventory): + return false + + clear() + _set_inventory(node) + return true + + +func _set_inventory(inventory: Inventory) -> void: + if inventory == _wr_inventory.get_ref(): + return + + if _get_inventory() != null: + _disconnect_inventory_signals() + + clear() + _wr_inventory = weakref(inventory) + inventory_changed.emit() + + if _get_inventory() != null: + _connect_inventory_signals() + + +func _connect_inventory_signals() -> void: + if _get_inventory() == null: + return + + if !_get_inventory().item_removed.is_connected(_on_item_removed): + _get_inventory().item_removed.connect(_on_item_removed) + + +func _disconnect_inventory_signals() -> void: + if _get_inventory() == null: + return + + if _get_inventory().item_removed.is_connected(_on_item_removed): + _get_inventory().item_removed.disconnect(_on_item_removed) + + +func _on_item_removed(item: InventoryItem) -> void: + clear() + + +func _get_inventory() -> Inventory: + return _wr_inventory.get_ref() + + +func equip(item: InventoryItem) -> bool: + if !can_hold_item(item): + return false + + if _wr_item.get_ref() == item: + return false + + if get_item() != null && !clear(): + return false + + _wr_item = weakref(item) + _equipped_item = _get_inventory().get_item_index(item) + item_equipped.emit() + return true + + +func equip_by_index(index: int) -> bool: + if _get_inventory() == null: + return false + if index < 0: + return false + if index >= _get_inventory().get_item_count(): + return false + return equip(_get_inventory().get_items()[index]) + + +func clear() -> bool: + if get_item() == null: + return false + + _wr_item = weakref(null) + _equipped_item = EMPTY_SLOT + cleared.emit() + return true + + +func get_item() -> InventoryItem: + return _wr_item.get_ref() + + +func can_hold_item(item: InventoryItem) -> bool: + if item == null: + return false + + if _get_inventory() == null || !_get_inventory().has_item(item): + return false + + return true + + +func reset() -> void: + clear() + + +func serialize() -> Dictionary: + var result: Dictionary = {} + var item : InventoryItem = _wr_item.get_ref() + + if item != null && item.get_inventory() != null: + result[KEY_ITEM_INDEX] = item.get_inventory().get_item_index(item) + + return result + + +func deserialize(source: Dictionary) -> bool: + if !Verify.dict(source, false, KEY_ITEM_INDEX, [TYPE_INT, TYPE_FLOAT]): + return false + + reset() + + if source.has(KEY_ITEM_INDEX): + var item_index: int = source[KEY_ITEM_INDEX] + if !_equip_item_with_index(item_index): + return false + + return true + + +func _equip_item_with_index(item_index: int) -> bool: + if _get_inventory() == null: + return false + if item_index >= _get_inventory().get_item_count(): + return false + equip(_get_inventory().get_items()[item_index]) + return true + diff --git a/addons/gloot/core/item_slot.gd b/addons/gloot/core/item_slot.gd index 730274f6..e297681a 100644 --- a/addons/gloot/core/item_slot.gd +++ b/addons/gloot/core/item_slot.gd @@ -1,181 +1,132 @@ @tool -extends Node +@icon("res://addons/gloot/images/icon_item_slot.svg") class_name ItemSlot +extends "res://addons/gloot/core/item_slot_base.gd" -signal item_set(item) -signal item_cleared -signal inventory_changed(inventory) +signal protoset_changed +const Verify = preload("res://addons/gloot/core/verify.gd") +const KEY_ITEM: String = "item" -@export var inventory_path: NodePath : - get: - return inventory_path - set(new_inv_path): - inventory_path = new_inv_path - update_configuration_warnings() - var node: Node = get_node_or_null(inventory_path) - - if is_inside_tree() && node: - assert(node is Inventory) - - if node == null: - return - - self.inventory = node - -@export var equipped_item: int = -1 : - get: - return equipped_item - set(new_equipped_item): - equipped_item = new_equipped_item - if equipped_item < 0: - self.item = null - return - if inventory: - var items = inventory.get_items() - if equipped_item < items.size() && can_hold_item(items[equipped_item]): - self.item = items[equipped_item] - -var _inventory -var inventory : +@export var item_protoset: ItemProtoset: get: - if !_inventory && !inventory_path.is_empty(): - self._inventory = get_node_or_null(inventory_path) - - return _inventory - set(new_inv): - if new_inv == _inventory: + return item_protoset + set(new_item_protoset): + if new_item_protoset == item_protoset: return + if _item: + _item = null + item_protoset = new_item_protoset + protoset_changed.emit() + update_configuration_warnings() +@export var remember_source_inventory: bool = true - _disconnect_inventory_signals() - self.item = null - _inventory = new_inv - _connect_inventory_signals() +var _wr_source_inventory: WeakRef = weakref(null) +var _item: InventoryItem - inventory_changed.emit(inventory) - -var item: InventoryItem : - get: - return item - set(new_item): - assert(can_hold_item(new_item)) - if inventory == null: - return - if new_item && !inventory.has_item(new_item): - return +func _get_configuration_warnings() -> PackedStringArray: + if item_protoset == null: + return PackedStringArray([ + "This item slot has no protoset. Set the 'item_protoset' field to be able to equip items."]) + return PackedStringArray() - if item != null: - item.tree_exiting.disconnect(Callable(self, "_on_item_tree_exiting")) - item = new_item - if item != null: - item.tree_exiting.connect(Callable(self, "_on_item_tree_exiting")) - item_set.emit(item) - else: - item_cleared.emit() +func equip(item: InventoryItem) -> bool: + if !can_hold_item(item): + return false -const KEY_INVENTORY: String = "inventory" -const KEY_ITEM: String = "item" -const Verify = preload("res://addons/gloot/core/verify.gd") + if item.get_parent() == self: + return false + if get_item() != null && !clear(): + return false -func _get_configuration_warnings() -> PackedStringArray: - if inventory_path.is_empty(): - return PackedStringArray([ - "Inventory path not set! Inventory path needs to point to an inventory node, so " +\ - "items from that inventory can be equipped in the slot."]) - return PackedStringArray() + _wr_source_inventory = weakref(item.get_inventory()) + if item.get_parent(): + item.get_parent().remove_child(item) -func _connect_inventory_signals() -> void: - if !inventory: - return + add_child(item) + if Engine.is_editor_hint(): + item.owner = get_tree().edited_scene_root + return true - if !inventory.tree_exiting.is_connected(Callable(self, "_on_inventory_tree_exiting")): - inventory.tree_exiting.connect(Callable(self, "_on_inventory_tree_exiting")) - if !inventory.item_removed.is_connected(Callable(self, "_on_item_removed")): - inventory.item_removed.connect(Callable(self, "_on_item_removed")) +func _on_item_added(item: InventoryItem) -> void: + _item = item + item_equipped.emit() -func _disconnect_inventory_signals() -> void: - if !inventory: - return - if inventory.tree_exiting.is_connected(Callable(self, "_on_inventory_tree_exiting")): - inventory.tree_exiting.disconnect(Callable(self, "_on_inventory_tree_exiting")) - if inventory.item_removed.is_connected(Callable(self, "_on_item_removed")): - inventory.item_removed.disconnect(Callable(self, "_on_item_removed")) +func clear() -> bool: + return _clear_impl(remember_source_inventory) -func can_hold_item(new_item: InventoryItem) -> bool: - if new_item == null: - return true - if inventory == null: +func _clear_impl(return_item: bool) -> bool: + if get_item() == null: return false - if !inventory.has_item(new_item): - return false - + + if return_item: + _return_item_to_source_inventory() + + remove_child(get_item()) return true -func _ready(): - self.inventory = get_node_or_null(inventory_path) - if equipped_item >= 0 && inventory: - var items = inventory.get_items() - if equipped_item < items.size() && can_hold_item(items[equipped_item]): - self.item = items[equipped_item] +func _return_item_to_source_inventory() -> bool: + var inventory: Inventory = (_wr_source_inventory.get_ref() as Inventory) + if inventory != null: + if inventory.add_item(get_item()): + return true + return false + +func _on_item_removed() -> void: + _item = null + _wr_source_inventory = weakref(null) + cleared.emit() -func _on_inventory_tree_exiting(): - inventory = null - self.item = null +func get_item() -> InventoryItem: + return _item -func _on_item_removed(pItem: InventoryItem) -> void: - if pItem == item: - self.item = null +func can_hold_item(item: InventoryItem) -> bool: + assert(item_protoset != null, "Item protoset not set!") + if item == null: + return false + if item_protoset != item.protoset: + return false -func _on_item_tree_exiting(): - self.item = null + return true -func reset(): - self.inventory = null - self.item = null +func reset() -> void: + if _item: + _item.queue_free() + _clear_impl(false) func serialize() -> Dictionary: var result: Dictionary = {} - # TODO: Find a better way to serialize inventory and item references - if inventory: - result[KEY_INVENTORY] = inventory.get_instance_id() - if item: - result[KEY_ITEM] = item.get_instance_id() + if _item != null: + result[KEY_ITEM] = _item.serialize() return result func deserialize(source: Dictionary) -> bool: - if !Verify.dict(source, false, KEY_INVENTORY, [TYPE_INT, TYPE_FLOAT]): - return false - if !Verify.dict(source, false, KEY_ITEM, [TYPE_INT, TYPE_FLOAT]): + if !Verify.dict(source, false, KEY_ITEM, [TYPE_DICTIONARY]): return false reset() - if source.has(KEY_INVENTORY): - inventory = instance_from_id(source[KEY_INVENTORY]) - if inventory == null: - print("Warning: Node not found (%s)!" % source[KEY_INVENTORY]) - return false if source.has(KEY_ITEM): - item = instance_from_id(source[KEY_ITEM]) - if item == null: - print("Warning: Node not found (%s)!" % source[KEY_ITEM]) + var item := InventoryItem.new() + if !item.deserialize(source[KEY_ITEM]): return false + equip(item) return true diff --git a/addons/gloot/core/item_slot_base.gd b/addons/gloot/core/item_slot_base.gd new file mode 100644 index 00000000..0c9679ed --- /dev/null +++ b/addons/gloot/core/item_slot_base.gd @@ -0,0 +1,42 @@ +@tool +@icon("res://addons/gloot/images/icon_item_slot.svg") +class_name ItemSlotBase +extends Node + +signal item_equipped +signal cleared + + +# Override this +func equip(item: InventoryItem) -> bool: + return false + + +# Override this +func clear() -> bool: + return false + + +# Override this +func get_item() -> InventoryItem: + return null + + +# Override this +func can_hold_item(item: InventoryItem) -> bool: + return false + + +# Override this +func reset() -> void: + pass + + +# Override this +func serialize() -> Dictionary: + return {} + + +# Override this +func deserialize(source: Dictionary) -> bool: + return false \ No newline at end of file diff --git a/addons/gloot/core/verify.gd b/addons/gloot/core/verify.gd index cbf8a770..db6679d4 100644 --- a/addons/gloot/core/verify.gd +++ b/addons/gloot/core/verify.gd @@ -90,7 +90,7 @@ static func create_var(type: int): TYPE_RID: return RID() TYPE_OBJECT: - return Object() + return Object.new() TYPE_DICTIONARY: return {} TYPE_ARRAY: diff --git a/addons/gloot/editor/common/choice_filter.gd b/addons/gloot/editor/common/choice_filter.gd index bc0168f7..de8b0a81 100644 --- a/addons/gloot/editor/common/choice_filter.gd +++ b/addons/gloot/editor/common/choice_filter.gd @@ -76,10 +76,10 @@ func _populate() -> void: func _ready() -> void: - btn_pick.pressed.connect(Callable(self, "_on_btn_pick")) - line_edit.text_changed.connect(Callable(self, "_on_filter_text_changed")) - item_list.item_activated.connect(Callable(self, "_on_item_activated")) - item_list.item_selected.connect(Callable(self, "_on_item_selected")) + btn_pick.pressed.connect(_on_btn_pick) + line_edit.text_changed.connect(_on_filter_text_changed) + item_list.item_activated.connect(_on_item_activated) + item_list.item_selected.connect(_on_item_selected) refresh() if btn_pick: btn_pick.text = pick_text diff --git a/addons/gloot/editor/common/dict_editor.gd b/addons/gloot/editor/common/dict_editor.gd index 706ee2a1..d2f4d733 100644 --- a/addons/gloot/editor/common/dict_editor.gd +++ b/addons/gloot/editor/common/dict_editor.gd @@ -65,8 +65,8 @@ const supported_types: Array[int] = [ func _ready() -> void: - btn_add.pressed.connect(Callable(self, "_on_btn_add")) - edt_property_name.text_submitted.connect(Callable(self, "_on_text_entered")) + btn_add.pressed.connect(_on_btn_add) + edt_property_name.text_submitted.connect(_on_text_entered) refresh() @@ -150,7 +150,7 @@ func _add_value_editor(key: String) -> void: value_editor.value = dictionary[key] value_editor.size_flags_horizontal = SIZE_EXPAND_FILL value_editor.enabled = (not key in immutable_keys) - value_editor.value_changed.connect(Callable(self, "_on_value_changed").bind(key, value_editor)) + value_editor.value_changed.connect(_on_value_changed.bind(key, value_editor)) grid_container.add_child(value_editor) @@ -166,7 +166,7 @@ func _add_remove_button(key: String) -> void: button.text = remove_button_map[key].text button.disabled = remove_button_map[key].disabled button.icon = remove_button_map[key].icon - button.pressed.connect(Callable(self, "_on_remove_button").bind(key)) + button.pressed.connect(_on_remove_button.bind(key)) grid_container.add_child(button) diff --git a/addons/gloot/editor/common/editor_icons.gd b/addons/gloot/editor/common/editor_icons.gd index bd5a66a8..faed61e3 100644 --- a/addons/gloot/editor/common/editor_icons.gd +++ b/addons/gloot/editor/common/editor_icons.gd @@ -1,7 +1,6 @@ -static func get_icon(editor_interface: EditorInterface, icon_name: String) -> Texture2D: - if editor_interface: - var gui = editor_interface.get_base_control() - var icon = gui.get_theme_icon(icon_name, "EditorIcons") - return icon +@tool - return null +static func get_icon(icon_name: String) -> Texture2D: + var gui = EditorInterface.get_base_control() + var icon = gui.get_theme_icon(icon_name, "EditorIcons") + return icon diff --git a/addons/gloot/editor/common/multivalue_editor.gd b/addons/gloot/editor/common/multivalue_editor.gd index 66112da8..6df449fb 100644 --- a/addons/gloot/editor/common/multivalue_editor.gd +++ b/addons/gloot/editor/common/multivalue_editor.gd @@ -35,8 +35,8 @@ func _ready() -> void: var line_edit: LineEdit = LineEdit.new() line_edit.text = var_to_str(values[i]) line_edit.size_flags_horizontal = SIZE_EXPAND_FILL - line_edit.text_submitted.connect(Callable(self, "_on_line_edit_value_entered").bind(line_edit, i)) - line_edit.focus_exited.connect(Callable(self, "_on_line_edit_focus_exited").bind(line_edit, i)) + line_edit.text_submitted.connect(_on_line_edit_value_entered.bind(line_edit, i)) + line_edit.focus_exited.connect(_on_line_edit_focus_exited.bind(line_edit, i)) line_edit.editable = enabled hbox.add_child(line_edit) diff --git a/addons/gloot/editor/common/value_editor.gd b/addons/gloot/editor/common/value_editor.gd index 6efe66f1..bf14bda1 100644 --- a/addons/gloot/editor/common/value_editor.gd +++ b/addons/gloot/editor/common/value_editor.gd @@ -65,8 +65,8 @@ func _create_line_edit() -> LineEdit: line_edit.text = var_to_str(value) line_edit.editable = enabled _expand_control(line_edit) - line_edit.text_submitted.connect(Callable(self, "_on_line_edit_value_entered").bind(line_edit)) - line_edit.focus_exited.connect(Callable(self, "_on_line_edit_focus_exited").bind(line_edit)) + line_edit.text_submitted.connect(_on_line_edit_value_entered.bind(line_edit)) + line_edit.focus_exited.connect(_on_line_edit_focus_exited.bind(line_edit)) return line_edit @@ -88,7 +88,7 @@ func _create_color_picker() -> ColorPickerButton: picker.color = value picker.disabled = !enabled _expand_control(picker) - picker.popup_closed.connect(Callable(self, "_on_color_picked").bind(picker)) + picker.popup_closed.connect(_on_color_picked.bind(picker)) return picker @@ -102,7 +102,7 @@ func _create_checkbox() -> CheckButton: checkbox.button_pressed = value checkbox.disabled = !enabled _expand_control(checkbox) - checkbox.pressed.connect(Callable(self, "_on_checkbox").bind(checkbox)) + checkbox.pressed.connect(_on_checkbox.bind(checkbox)) return checkbox @@ -114,14 +114,14 @@ func _on_checkbox(checkbox: CheckButton) -> void: func _create_v2_editor() -> Control: var values = [value.x, value.y] var titles = ["X", "Y"] - var v2_editor = _create_multifloat_editor(2, enabled, values, titles, "_on_v2_value_changed") + var v2_editor = _create_multifloat_editor(2, enabled, values, titles, _on_v2_value_changed) return v2_editor func _create_v2i_editor() -> Control: var values = [value.x, value.y] var titles = ["X", "Y"] - var v2_editor = _create_multiint_editor(2, enabled, values, titles, "_on_v2_value_changed") + var v2_editor = _create_multiint_editor(2, enabled, values, titles, _on_v2_value_changed) return v2_editor @@ -134,14 +134,14 @@ func _on_v2_value_changed(_idx: int, v2_editor: Control) -> void: func _create_v3_editor() -> Control: var values = [value.x, value.y, value.z] var titles = ["X", "Y", "Z"] - var v3_editor = _create_multifloat_editor(3, enabled, values, titles, "_on_v3_value_changed") + var v3_editor = _create_multifloat_editor(3, enabled, values, titles, _on_v3_value_changed) return v3_editor func _create_v3i_editor() -> Control: var values = [value.x, value.y, value.z] var titles = ["X", "Y", "Z"] - var v3_editor = _create_multiint_editor(3, enabled, values, titles, "_on_v3_value_changed") + var v3_editor = _create_multiint_editor(3, enabled, values, titles, _on_v3_value_changed) return v3_editor @@ -155,14 +155,14 @@ func _on_v3_value_changed(_idx: int, v3_editor: Control) -> void: func _create_r2_editor() -> Control: var values = [value.position.x, value.position.y, value.size.x, value.size.y] var titles = ["Position X", "Position Y", "Size X", "Size Y"] - var r2_editor = _create_multifloat_editor(2, enabled, values, titles, "_on_r2_value_changed") + var r2_editor = _create_multifloat_editor(2, enabled, values, titles, _on_r2_value_changed) return r2_editor func _create_r2i_editor() -> Control: var values = [value.position.x, value.position.y, value.size.x, value.size.y] var titles = ["Position X", "Position Y", "Size X", "Size Y"] - var r2_editor = _create_multiint_editor(2, enabled, values, titles, "_on_r2_value_changed") + var r2_editor = _create_multiint_editor(2, enabled, values, titles, _on_r2_value_changed) return r2_editor @@ -177,7 +177,7 @@ func _on_r2_value_changed(_idx: int, r2_editor: Control) -> void: func _create_plane_editor() -> Control: var values = [value.x, value.y, value.z, value.d] var titles = ["X", "Y", "Z", "D"] - var editor = _create_multifloat_editor(2, enabled, values, titles, "_on_plane_value_changed") + var editor = _create_multifloat_editor(2, enabled, values, titles, _on_plane_value_changed) return editor @@ -192,7 +192,7 @@ func _on_plane_value_changed(_idx: int, plane_editor: Control) -> void: func _create_quat_editor() -> Control: var values = [value.x, value.y, value.z, value.w] var titles = ["X", "Y", "Z", "W"] - var editor = _create_multifloat_editor(2, enabled, values, titles, "_on_quat_value_changed") + var editor = _create_multifloat_editor(2, enabled, values, titles, _on_quat_value_changed) return editor @@ -208,7 +208,7 @@ func _create_aabb_editor() -> Control: var values = [value.position.x, value.position.y, value.position.z, \ value.size.x, value.size.y, value.size.z] var titles = ["Position X", "Position Y", "Position Z", "Size X", "Size Y", "Size Z"] - var editor = _create_multifloat_editor(3, enabled, values, titles, "_on_aabb_value_changed") + var editor = _create_multifloat_editor(3, enabled, values, titles, _on_aabb_value_changed) return editor @@ -227,7 +227,7 @@ func _create_multifloat_editor( enabled: bool, values: Array, titles: Array, - value_changed_handler: String) -> Control: + value_changed_handler: Callable) -> Control: return _create_multivalue_editor(columns, enabled, TYPE_FLOAT, values, titles, value_changed_handler) @@ -236,7 +236,7 @@ func _create_multiint_editor( enabled: bool, values: Array, titles: Array, - value_changed_handler: String) -> Control: + value_changed_handler: Callable) -> Control: return _create_multivalue_editor(columns, enabled, TYPE_INT, values, titles, value_changed_handler) @@ -246,7 +246,7 @@ func _create_multivalue_editor( type: int, values: Array, titles: Array, - value_changed_handler: String) -> Control: + value_changed_handler: Callable) -> Control: var multivalue_editor = MultivalueEditor.new() multivalue_editor.columns = columns multivalue_editor.enabled = enabled @@ -254,7 +254,7 @@ func _create_multivalue_editor( multivalue_editor.values = values multivalue_editor.titles = titles _expand_control(multivalue_editor) - multivalue_editor.value_changed.connect(Callable(self, value_changed_handler).bind(multivalue_editor)) + multivalue_editor.value_changed.connect(value_changed_handler.bind(multivalue_editor)) return multivalue_editor diff --git a/addons/gloot/editor/gloot_undo_redo.gd b/addons/gloot/editor/gloot_undo_redo.gd index cfffc675..3f036003 100644 --- a/addons/gloot/editor/gloot_undo_redo.gd +++ b/addons/gloot/editor/gloot_undo_redo.gd @@ -1,9 +1,19 @@ +@tool extends Object -var undo_redo_manager: EditorUndoRedoManager +const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd") -func add_inventory_item(inventory: Inventory, prototype_id: String) -> void: + +static func _get_undo_redo_manager() -> EditorUndoRedoManager: + var gloot = load("res://addons/gloot/gloot.gd") + assert(gloot.instance()) + var undo_redo_manager = gloot.instance().get_undo_redo() assert(undo_redo_manager) + return undo_redo_manager + + +static func add_inventory_item(inventory: Inventory, prototype_id: String) -> void: + var undo_redo_manager = _get_undo_redo_manager() var old_inv_state := inventory.serialize() if inventory.create_and_add_item(prototype_id) == null: @@ -11,13 +21,13 @@ func add_inventory_item(inventory: Inventory, prototype_id: String) -> void: var new_inv_state := inventory.serialize() undo_redo_manager.create_action("Add Inventory Item") - undo_redo_manager.add_do_method(self, "_set_inventory", inventory, new_inv_state) - undo_redo_manager.add_undo_method(self, "_set_inventory", inventory, old_inv_state) + undo_redo_manager.add_do_method(GlootUndoRedo, "_set_inventory", inventory, new_inv_state) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_inventory", inventory, old_inv_state) undo_redo_manager.commit_action() -func remove_inventory_item(inventory: Inventory, item: InventoryItem) -> void: - assert(undo_redo_manager) +static func remove_inventory_item(inventory: Inventory, item: InventoryItem) -> void: + var undo_redo_manager = _get_undo_redo_manager() var old_inv_state := inventory.serialize() if !inventory.remove_item(item): @@ -25,13 +35,13 @@ func remove_inventory_item(inventory: Inventory, item: InventoryItem) -> void: var new_inv_state := inventory.serialize() undo_redo_manager.create_action("Remove Inventory Item") - undo_redo_manager.add_do_method(self, "_set_inventory", inventory, new_inv_state) - undo_redo_manager.add_undo_method(self, "_set_inventory", inventory, old_inv_state) + undo_redo_manager.add_do_method(GlootUndoRedo, "_set_inventory", inventory, new_inv_state) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_inventory", inventory, old_inv_state) undo_redo_manager.commit_action() -func remove_inventory_items(inventory: Inventory, items: Array[InventoryItem]) -> void: - assert(undo_redo_manager) +static func remove_inventory_items(inventory: Inventory, items: Array[InventoryItem]) -> void: + var undo_redo_manager = _get_undo_redo_manager() var old_inv_state := inventory.serialize() for item in items: @@ -39,19 +49,19 @@ func remove_inventory_items(inventory: Inventory, items: Array[InventoryItem]) - var new_inv_state := inventory.serialize() undo_redo_manager.create_action("Remove Inventory Items") - undo_redo_manager.add_do_method(self, "_set_inventory", inventory, new_inv_state) - undo_redo_manager.add_undo_method(self, "_set_inventory", inventory, old_inv_state) + undo_redo_manager.add_do_method(GlootUndoRedo, "_set_inventory", inventory, new_inv_state) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_inventory", inventory, old_inv_state) undo_redo_manager.commit_action() -func set_item_properties(item: InventoryItem, new_properties: Dictionary) -> void: - assert(undo_redo_manager) +static func set_item_properties(item: InventoryItem, new_properties: Dictionary) -> void: + var undo_redo_manager = _get_undo_redo_manager() var inventory: Inventory = item.get_inventory() if inventory: undo_redo_manager.create_action("Set item properties") - undo_redo_manager.add_do_method(self, "_set_item_properties", inventory, inventory.get_item_index(item), new_properties) - undo_redo_manager.add_undo_method(self, "_set_item_properties", inventory, inventory.get_item_index(item), item.properties) + undo_redo_manager.add_do_method(GlootUndoRedo, "_set_item_properties", inventory, inventory.get_item_index(item), new_properties) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_item_properties", inventory, inventory.get_item_index(item), item.properties) undo_redo_manager.commit_action() else: undo_redo_manager.create_action("Set item properties") @@ -60,14 +70,14 @@ func set_item_properties(item: InventoryItem, new_properties: Dictionary) -> voi undo_redo_manager.commit_action() -func set_item_prototype_id(item: InventoryItem, new_prototype_id: String) -> void: - assert(undo_redo_manager) +static func set_item_prototype_id(item: InventoryItem, new_prototype_id: String) -> void: + var undo_redo_manager = _get_undo_redo_manager() var inventory: Inventory = item.get_inventory() if inventory: undo_redo_manager.create_action("Set prototype_id") - undo_redo_manager.add_do_method(self, "_set_item_prototype_id", inventory, inventory.get_item_index(item), new_prototype_id) - undo_redo_manager.add_undo_method(self, "_set_item_prototype_id", inventory, inventory.get_item_index(item), item.prototype_id) + undo_redo_manager.add_do_method(GlootUndoRedo, "_set_item_prototype_id", inventory, inventory.get_item_index(item), new_prototype_id) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_item_prototype_id", inventory, inventory.get_item_index(item), item.prototype_id) undo_redo_manager.commit_action() else: undo_redo_manager.create_action("Set prototype_id") @@ -76,31 +86,54 @@ func set_item_prototype_id(item: InventoryItem, new_prototype_id: String) -> voi undo_redo_manager.commit_action() -func _set_inventory(inventory: Inventory, inventory_data: Dictionary) -> void: +static func _set_inventory(inventory: Inventory, inventory_data: Dictionary) -> void: inventory.deserialize(inventory_data) -func _set_item_prototype_id(inventory: Inventory, item_index: int, new_prototype_id: String): +static func _set_item_prototype_id(inventory: Inventory, item_index: int, new_prototype_id: String): assert(item_index < inventory.get_item_count()) inventory.get_items()[item_index].prototype_id = new_prototype_id -func _set_item_properties(inventory: Inventory, item_index: int, new_properties: Dictionary): +static func _set_item_properties(inventory: Inventory, item_index: int, new_properties: Dictionary): assert(item_index < inventory.get_item_count()) inventory.get_items()[item_index].properties = new_properties.duplicate() -func set_item_slot_equipped_item(item_slot: ItemSlot, new_equipped_item: int) -> void: - assert(undo_redo_manager) +static func equip_item_in_item_slot(item_slot: ItemSlotBase, item: InventoryItem) -> void: + var undo_redo_manager = _get_undo_redo_manager() + + var old_slot_state := item_slot.serialize() + if !item_slot.equip(item): + return + var new_slot_state := item_slot.serialize() + + undo_redo_manager.create_action("Equip Inventory Item") + undo_redo_manager.add_do_method(GlootUndoRedo, "_set_item_slot", item_slot, new_slot_state) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_item_slot", item_slot, old_slot_state) + undo_redo_manager.commit_action() + + +static func clear_item_slot(item_slot: ItemSlotBase) -> void: + var undo_redo_manager = _get_undo_redo_manager() + + var old_slot_state := item_slot.serialize() + if !item_slot.clear(): + return + var new_slot_state := item_slot.serialize() - undo_redo_manager.create_action("Set equipped_item") - undo_redo_manager.add_undo_property(item_slot, "equipped_item", item_slot.equipped_item) - undo_redo_manager.add_do_property(item_slot, "equipped_item", new_equipped_item) + undo_redo_manager.create_action("Clear Inventory Item") + undo_redo_manager.add_do_method(GlootUndoRedo, "_set_item_slot", item_slot, new_slot_state) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_item_slot", item_slot, old_slot_state) undo_redo_manager.commit_action() -func move_inventory_item(inventory: InventoryGrid, item: InventoryItem, to: Vector2i) -> void: - assert(undo_redo_manager) +static func _set_item_slot(item_slot: ItemSlotBase, item_slot_data: Dictionary) -> void: + item_slot.deserialize(item_slot_data) + + +static func move_inventory_item(inventory: InventoryGrid, item: InventoryItem, to: Vector2i) -> void: + var undo_redo_manager = _get_undo_redo_manager() var old_position := inventory.get_item_position(item) if old_position == to: @@ -108,23 +141,23 @@ func move_inventory_item(inventory: InventoryGrid, item: InventoryItem, to: Vect var item_index := inventory.get_item_index(item) undo_redo_manager.create_action("Move Inventory Item") - undo_redo_manager.add_do_method(self, "_move_item", inventory, item_index, to) - undo_redo_manager.add_undo_method(self, "_move_item", inventory, item_index, old_position) + undo_redo_manager.add_do_method(GlootUndoRedo, "_move_item", inventory, item_index, to) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_move_item", inventory, item_index, old_position) undo_redo_manager.commit_action() -func _move_item(inventory: InventoryGrid, item_index: int, to: Vector2i) -> void: +static func _move_item(inventory: InventoryGrid, item_index: int, to: Vector2i) -> void: assert(item_index >= 0 && item_index < inventory.get_item_count()) var item = inventory.get_items()[item_index] inventory.move_item_to(item, to) -func join_inventory_items( +static func join_inventory_items( inventory: InventoryGridStacked, item_dst: InventoryItem, item_src: InventoryItem ) -> void: - assert(undo_redo_manager) + var undo_redo_manager = _get_undo_redo_manager() var old_inv_state := inventory.serialize() if !inventory.join(item_dst, item_src): @@ -132,59 +165,70 @@ func join_inventory_items( var new_inv_state := inventory.serialize() undo_redo_manager.create_action("Join Inventory Items") - undo_redo_manager.add_do_method(self, "_set_inventory", inventory, new_inv_state) - undo_redo_manager.add_undo_method(self, "_set_inventory", inventory, old_inv_state) + undo_redo_manager.add_do_method(GlootUndoRedo, "_set_inventory", inventory, new_inv_state) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_inventory", inventory, old_inv_state) undo_redo_manager.commit_action() -func rename_prototype(protoset: ItemProtoset, id: String, new_id: String) -> void: - assert(undo_redo_manager) +static func rename_prototype(protoset: ItemProtoset, id: String, new_id: String) -> void: + var undo_redo_manager = _get_undo_redo_manager() var old_prototypes = _prototypes_deep_copy(protoset) undo_redo_manager.create_action("Rename Prototype") - undo_redo_manager.add_undo_method(self, "_set_prototypes", protoset, old_prototypes) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_prototypes", protoset, old_prototypes) undo_redo_manager.add_do_method(protoset, "rename_prototype", id, new_id) undo_redo_manager.commit_action() -func add_prototype(protoset: ItemProtoset, id: String) -> void: - assert(undo_redo_manager) +static func add_prototype(protoset: ItemProtoset, id: String) -> void: + var undo_redo_manager = _get_undo_redo_manager() var old_prototypes = _prototypes_deep_copy(protoset) undo_redo_manager.create_action("Add Prototype") - undo_redo_manager.add_undo_method(self, "_set_prototypes", protoset, old_prototypes) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_prototypes", protoset, old_prototypes) undo_redo_manager.add_do_method(protoset, "add_prototype", id) undo_redo_manager.commit_action() -func remove_prototype(protoset: ItemProtoset, id: String) -> void: - assert(undo_redo_manager) +static func remove_prototype(protoset: ItemProtoset, id: String) -> void: + var undo_redo_manager = _get_undo_redo_manager() var old_prototypes = _prototypes_deep_copy(protoset) undo_redo_manager.create_action("Remove Prototype") - undo_redo_manager.add_undo_method(self, "_set_prototypes", protoset, old_prototypes) + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_prototypes", protoset, old_prototypes) undo_redo_manager.add_do_method(protoset, "remove_prototype", id) undo_redo_manager.commit_action() -func _prototypes_deep_copy(protoset: ItemProtoset) -> Dictionary: +static func duplicate_prototype(protoset: ItemProtoset, id: String) -> void: + var undo_redo_manager = _get_undo_redo_manager() + + var old_prototypes = _prototypes_deep_copy(protoset) + + undo_redo_manager.create_action("Duplicate Prototype") + undo_redo_manager.add_undo_method(GlootUndoRedo, "_set_prototypes", protoset, old_prototypes) + undo_redo_manager.add_do_method(protoset, "duplicate_prototype", id) + undo_redo_manager.commit_action() + + +static func _prototypes_deep_copy(protoset: ItemProtoset) -> Dictionary: var result = protoset._prototypes.duplicate() for prototype_id in result.keys(): result[prototype_id] = protoset._prototypes[prototype_id].duplicate() return result -func _set_prototypes(protoset: ItemProtoset, prototypes: Dictionary) -> void: +static func _set_prototypes(protoset: ItemProtoset, prototypes: Dictionary) -> void: protoset._prototypes = prototypes -func set_prototype_properties(protoset: ItemProtoset, +static func set_prototype_properties(protoset: ItemProtoset, prototype_id: String, new_properties: Dictionary) -> void: - assert(undo_redo_manager) + var undo_redo_manager = _get_undo_redo_manager() assert(protoset.has_prototype(prototype_id)) var old_properties = protoset.get_prototype(prototype_id).duplicate() diff --git a/addons/gloot/editor/inventory_editor/inventory_editor.gd b/addons/gloot/editor/inventory_editor/inventory_editor.gd index a4c85eb1..56c5e266 100644 --- a/addons/gloot/editor/inventory_editor/inventory_editor.gd +++ b/addons/gloot/editor/inventory_editor/inventory_editor.gd @@ -1,6 +1,7 @@ @tool extends Control +const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd") const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd") @onready var hsplit_container = $HSplitContainer @@ -10,126 +11,113 @@ const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd") @onready var btn_remove = $HSplitContainer/VBoxContainer/HBoxContainer/BtnRemove @onready var scroll_container = $HSplitContainer/VBoxContainer/ScrollContainer var inventory: Inventory : - get: - return inventory - set(new_inventory): - disconnect_inventory_signals() - inventory = new_inventory - connect_inventory_signals() - - _refresh() -var editor_interface: EditorInterface -var gloot_undo_redo : - get: - return gloot_undo_redo - set(new_gloot_undo_redo): - gloot_undo_redo = new_gloot_undo_redo - if _inventory_control is CtrlInventoryGrid: - _inventory_control._gloot_undo_redo = gloot_undo_redo + get: + return inventory + set(new_inventory): + disconnect_inventory_signals() + inventory = new_inventory + connect_inventory_signals() + + _refresh() var _inventory_control: Control func connect_inventory_signals(): - if !inventory: - return + if !inventory: + return - if inventory is InventoryStacked: - inventory.capacity_changed.connect(Callable(self, "_refresh")) - if inventory is InventoryGrid: - inventory.size_changed.connect(Callable(self, "_refresh")) - inventory.protoset_changed.connect(Callable(self, "_refresh")) + if inventory is InventoryStacked: + inventory.capacity_changed.connect(_refresh) + if inventory is InventoryGrid: + inventory.size_changed.connect(_refresh) + inventory.protoset_changed.connect(_refresh) - if !inventory.item_protoset: - return - inventory.item_protoset.changed.connect(Callable(self, "_refresh")) + if !inventory.item_protoset: + return + inventory.item_protoset.changed.connect(_refresh) func disconnect_inventory_signals(): - if !inventory: - return - - if inventory is InventoryStacked: - inventory.capacity_changed.disconnect(Callable(self, "_refresh")) - if inventory is InventoryGrid: - inventory.size_changed.disconnect(Callable(self, "_refresh")) - inventory.protoset_changed.disconnect(Callable(self, "_refresh")) + if !inventory: + return + + if inventory is InventoryStacked: + inventory.capacity_changed.disconnect(_refresh) + if inventory is InventoryGrid: + inventory.size_changed.disconnect(_refresh) + inventory.protoset_changed.disconnect(_refresh) - if !inventory.item_protoset: - return - inventory.item_protoset.changed.disconnect(Callable(self, "_refresh")) + if !inventory.item_protoset: + return + inventory.item_protoset.changed.disconnect(_refresh) func _refresh() -> void: - if !is_inside_tree() || inventory == null || inventory.item_protoset == null: - return - - # Remove the inventory control, if present - if _inventory_control: - scroll_container.remove_child(_inventory_control) - _inventory_control.queue_free() - _inventory_control = null - - # Create the appropriate inventory control and populate it - if inventory is InventoryGrid: - _inventory_control = CtrlInventoryGrid.new() - _inventory_control.grid_color = Color.GRAY - _inventory_control.draw_selections = true - # TODO: Find a better way for undoing/redoing item movements: - _inventory_control._gloot_undo_redo = gloot_undo_redo - elif inventory is InventoryStacked: - _inventory_control = CtrlInventoryStacked.new() - elif inventory is Inventory: - _inventory_control = CtrlInventory.new() - _inventory_control.size_flags_horizontal = SIZE_EXPAND_FILL - _inventory_control.size_flags_vertical = SIZE_EXPAND_FILL - _inventory_control.inventory = inventory - _inventory_control.inventory_item_activated.connect(Callable(self, "_on_inventory_item_activated")) - - scroll_container.add_child(_inventory_control) - - # Set prototype_id_filter values - prototype_id_filter.set_values(inventory.item_protoset._prototypes.keys()) + if !is_inside_tree() || inventory == null || inventory.item_protoset == null: + return + + # Remove the inventory control, if present + if _inventory_control: + scroll_container.remove_child(_inventory_control) + _inventory_control.queue_free() + _inventory_control = null + + # Create the appropriate inventory control and populate it + if inventory is InventoryGrid: + _inventory_control = CtrlInventoryGrid.new() + _inventory_control.grid_color = Color.GRAY + _inventory_control.draw_selections = true + elif inventory is InventoryStacked: + _inventory_control = CtrlInventoryStacked.new() + elif inventory is Inventory: + _inventory_control = CtrlInventory.new() + _inventory_control.size_flags_horizontal = SIZE_EXPAND_FILL + _inventory_control.size_flags_vertical = SIZE_EXPAND_FILL + _inventory_control.inventory = inventory + _inventory_control.inventory_item_activated.connect(_on_inventory_item_activated) + + scroll_container.add_child(_inventory_control) + + # Set prototype_id_filter values + prototype_id_filter.set_values(inventory.item_protoset._prototypes.keys()) func _on_inventory_item_activated(item: InventoryItem) -> void: - assert(gloot_undo_redo) - gloot_undo_redo.remove_inventory_item(inventory, item) + GlootUndoRedo.remove_inventory_item(inventory, item) func _ready() -> void: - prototype_id_filter.pick_icon = EditorIcons.get_icon(editor_interface, "Add") - prototype_id_filter.filter_icon = EditorIcons.get_icon(editor_interface, "Search") - btn_edit.icon = EditorIcons.get_icon(editor_interface, "Edit") - btn_remove.icon = EditorIcons.get_icon(editor_interface, "Remove") + prototype_id_filter.pick_icon = EditorIcons.get_icon("Add") + prototype_id_filter.filter_icon = EditorIcons.get_icon("Search") + btn_edit.icon = EditorIcons.get_icon("Edit") + btn_remove.icon = EditorIcons.get_icon("Remove") - prototype_id_filter.choice_picked.connect(Callable(self, "_on_prototype_id_picked")) - btn_edit.pressed.connect(Callable(self, "_on_btn_edit")) - btn_remove.pressed.connect(Callable(self, "_on_btn_remove")) - _refresh() + prototype_id_filter.choice_picked.connect(_on_prototype_id_picked) + btn_edit.pressed.connect(_on_btn_edit) + btn_remove.pressed.connect(_on_btn_remove) + _refresh() func _on_prototype_id_picked(index: int) -> void: - assert(gloot_undo_redo) - var prototype_id = prototype_id_filter.values[index] - gloot_undo_redo.add_inventory_item(inventory, prototype_id) - + var prototype_id = prototype_id_filter.values[index] + GlootUndoRedo.add_inventory_item(inventory, prototype_id) + func _on_btn_edit() -> void: - var selected_item: InventoryItem = _inventory_control.get_selected_inventory_item() - if selected_item != null: - # Call it deferred, so that the control can clean up - call_deferred("_select_node", editor_interface, selected_item) + var selected_item: InventoryItem = _inventory_control.get_selected_inventory_item() + if selected_item != null: + # Call it deferred, so that the control can clean up + call_deferred("_select_node", selected_item) func _on_btn_remove() -> void: - assert(gloot_undo_redo) - var selected_item: InventoryItem = _inventory_control.get_selected_inventory_item() - if selected_item != null: - gloot_undo_redo.remove_inventory_item(inventory, selected_item) + var selected_item: InventoryItem = _inventory_control.get_selected_inventory_item() + if selected_item != null: + GlootUndoRedo.remove_inventory_item(inventory, selected_item) -static func _select_node(editor_interface: EditorInterface, node: Node) -> void: - editor_interface.get_selection().clear() - editor_interface.get_selection().add_node(node) - editor_interface.edit_node(node) +static func _select_node(node: Node) -> void: + EditorInterface.get_selection().clear() + EditorInterface.get_selection().add_node(node) + EditorInterface.edit_node(node) diff --git a/addons/gloot/editor/inventory_editor/inventory_inspector.gd b/addons/gloot/editor/inventory_editor/inventory_inspector.gd index f43ed124..f2e572a1 100644 --- a/addons/gloot/editor/inventory_editor/inventory_inspector.gd +++ b/addons/gloot/editor/inventory_editor/inventory_inspector.gd @@ -15,43 +15,23 @@ var inventory: Inventory : inventory = new_inventory if inventory_editor: inventory_editor.inventory = inventory -var editor_interface: EditorInterface : - get: - return editor_interface - set(new_editor_interface): - editor_interface = new_editor_interface - if inventory_editor: - inventory_editor.editor_interface = editor_interface -var gloot_undo_redo : - get: - return gloot_undo_redo - set(new_gloot_undo_redo): - gloot_undo_redo = new_gloot_undo_redo - if inventory_editor: - inventory_editor.gloot_undo_redo = gloot_undo_redo -func init(inventory_: Inventory, gloot_undo_redo_, editor_interface_: EditorInterface) -> void: +func init(inventory_: Inventory) -> void: inventory = inventory_ - gloot_undo_redo = gloot_undo_redo_ - editor_interface = editor_interface_ func _ready() -> void: if inventory_editor: inventory_editor.inventory = inventory - inventory_editor.editor_interface = editor_interface - inventory_editor.gloot_undo_redo = gloot_undo_redo _apply_editor_settings() - btn_expand.icon = EditorIcons.get_icon(editor_interface, "DistractionFree") - btn_expand.pressed.connect(Callable(self, "on_btn_expand")) + btn_expand.icon = EditorIcons.get_icon("DistractionFree") + btn_expand.pressed.connect(on_btn_expand) _window_dialog.close_requested.connect(func(): _window_dialog.hide()) func on_btn_expand() -> void: _inventory_editor.inventory = inventory - _inventory_editor.gloot_undo_redo = gloot_undo_redo - _inventory_editor.editor_interface = editor_interface _window_dialog.popup_centered() diff --git a/addons/gloot/editor/inventory_inspector_plugin.gd b/addons/gloot/editor/inventory_inspector_plugin.gd index d6dacb64..fa09e9f7 100644 --- a/addons/gloot/editor/inventory_inspector_plugin.gd +++ b/addons/gloot/editor/inventory_inspector_plugin.gd @@ -1,42 +1,33 @@ extends EditorInspectorPlugin -var EditProtosetButton = preload("res://addons/gloot/editor/protoset_editor/edit_protoset_button.tscn") -var InventoryInspector = preload("res://addons/gloot/editor/inventory_editor/inventory_inspector.tscn") -var EditPropertiesButton = preload("res://addons/gloot/editor/item_editor/edit_properties_button.gd") -var EditPrototypeIdButton = preload("res://addons/gloot/editor/item_editor/edit_prototype_id_button.gd") -var EditEquippedItemButton = preload("res://addons/gloot/editor/item_slot_editor/edit_equipped_item_button.gd") -var GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd") -var editor_interface: EditorInterface = null -var undo_redo_manager: EditorUndoRedoManager = null : - get: - return undo_redo_manager - set(new_undo_redo): - undo_redo_manager = new_undo_redo - if gloot_undo_redo: - gloot_undo_redo.undo_redo_manager = undo_redo_manager -var gloot_undo_redo = null - - -func _init(): - gloot_undo_redo = GlootUndoRedo.new() - gloot_undo_redo.undo_redo_manager = undo_redo_manager +const EditProtosetButton = preload("res://addons/gloot/editor/protoset_editor/edit_protoset_button.tscn") +const InventoryInspector = preload("res://addons/gloot/editor/inventory_editor/inventory_inspector.tscn") +const ItemSlotInspector = preload("res://addons/gloot/editor/item_slot_editor/item_slot_inspector.tscn") +const ItemRefSlotButton = preload("res://addons/gloot/editor/item_slot_editor/item_ref_slot_button.gd") +const EditPropertiesButton = preload("res://addons/gloot/editor/item_editor/edit_properties_button.gd") +const EditPrototypeIdButton = preload("res://addons/gloot/editor/item_editor/edit_prototype_id_button.gd") func _can_handle(object: Object) -> bool: return (object is Inventory) || \ (object is InventoryItem) || \ (object is ItemSlot) || \ + (object is ItemRefSlot) || \ (object is ItemProtoset) func _parse_begin(object: Object) -> void: if object is Inventory: var inventory_inspector := InventoryInspector.instantiate() - inventory_inspector.init(object as Inventory, gloot_undo_redo, editor_interface) + inventory_inspector.init(object as Inventory) add_custom_control(inventory_inspector) + if object is ItemSlot: + var item_slot_inspector := ItemSlotInspector.instantiate() + item_slot_inspector.init(object as ItemSlot) + add_custom_control(item_slot_inspector) if object is ItemProtoset: var edit_protoset_button := EditProtosetButton.instantiate() - edit_protoset_button.init(object as ItemProtoset, gloot_undo_redo, editor_interface) + edit_protoset_button.init(object as ItemProtoset) add_custom_control(edit_protoset_button) @@ -48,17 +39,13 @@ func _parse_property(object: Object, usage: int, wide: bool) -> bool: if (object is InventoryItem) && name == "properties": - var item_property_editor = EditPropertiesButton.new(gloot_undo_redo, editor_interface) - add_property_editor(name, item_property_editor) + add_property_editor(name, EditPropertiesButton.new()) return true if (object is InventoryItem) && name == "prototype_id": - var item_prototype_id_editor = EditPrototypeIdButton.new(gloot_undo_redo, editor_interface) - add_property_editor(name, item_prototype_id_editor) + add_property_editor(name, EditPrototypeIdButton.new()) return true - if (object is ItemSlot) && name == "equipped_item": - var item_slot_equipped_item_editor = EditEquippedItemButton.new() - item_slot_equipped_item_editor.gloot_undo_redo = gloot_undo_redo - add_property_editor(name, item_slot_equipped_item_editor) + if (object is ItemRefSlot) && name == "_equipped_item": + add_property_editor(name, ItemRefSlotButton.new()) return true return false diff --git a/addons/gloot/editor/item_editor/edit_properties_button.gd b/addons/gloot/editor/item_editor/edit_properties_button.gd index f1a89581..e0d53423 100644 --- a/addons/gloot/editor/item_editor/edit_properties_button.gd +++ b/addons/gloot/editor/item_editor/edit_properties_button.gd @@ -6,34 +6,31 @@ const POPUP_SIZE = Vector2i(800, 300) var current_value: Dictionary var updating: bool = false -var editor_interface: EditorInterface var _btn_prototype_id: Button var _properties_editor: Window -func _init(gloot_undo_redo_, editor_interface_: EditorInterface): +func _init(): _properties_editor = PropertiesEditor.instantiate() - _properties_editor.init(gloot_undo_redo_, editor_interface_) add_child(_properties_editor) _btn_prototype_id = Button.new() _btn_prototype_id.text = "Edit Properties" - _btn_prototype_id.pressed.connect(Callable(self, "_on_btn_edit")) + _btn_prototype_id.pressed.connect(_on_btn_edit) + _btn_prototype_id.icon = EditorIcons.get_icon("Edit") add_child(_btn_prototype_id) func _ready() -> void: - _btn_prototype_id.icon = EditorIcons.get_icon(editor_interface, "Edit") - var item: InventoryItem = get_edited_object() if !item: return _properties_editor.item = item - item.properties_changed.connect(Callable(self, "update_property")) + item.properties_changed.connect(update_property) if !item.protoset: return - item.protoset.changed.connect(Callable(self, "_on_protoset_changed")) + item.protoset.changed.connect(_on_protoset_changed) _refresh_button() diff --git a/addons/gloot/editor/item_editor/edit_prototype_id_button.gd b/addons/gloot/editor/item_editor/edit_prototype_id_button.gd index 7e2a806f..1ac4e696 100644 --- a/addons/gloot/editor/item_editor/edit_prototype_id_button.gd +++ b/addons/gloot/editor/item_editor/edit_prototype_id_button.gd @@ -10,23 +10,22 @@ var _prototype_id_editor: Window var _btn_prototype_id: Button -func _init(gloot_undo_redo_, editor_interface_: EditorInterface): +func _init(): _prototype_id_editor = PrototypeIdEditor.instantiate() - _prototype_id_editor.init(gloot_undo_redo_, editor_interface_) add_child(_prototype_id_editor) _btn_prototype_id = Button.new() _btn_prototype_id.text = "Prototype ID" - _btn_prototype_id.pressed.connect(Callable(self, "_on_btn_prototype_id")) + _btn_prototype_id.pressed.connect(_on_btn_prototype_id) add_child(_btn_prototype_id) func _ready() -> void: var item: InventoryItem = get_edited_object() _prototype_id_editor.item = item - item.prototype_id_changed.connect(Callable(self, "_on_prototype_id_changed")) + item.prototype_id_changed.connect(_refresh_button) if item.protoset: - item.protoset.changed.connect(Callable(self, "_on_protoset_changed")) + item.protoset.changed.connect(_refresh_button) _refresh_button() @@ -50,14 +49,6 @@ func _get_popup_at_mouse_position(size: Vector2i) -> Vector2i: return popup_pos -func _on_prototype_id_changed() -> void: - _refresh_button() - - -func _on_protoset_changed() -> void: - _refresh_button() - - func update_property() -> void: var new_value = get_edited_object()[get_edited_property()] if new_value == current_value: diff --git a/addons/gloot/editor/item_editor/properties_editor.gd b/addons/gloot/editor/item_editor/properties_editor.gd index 04b575f8..60a6e45f 100644 --- a/addons/gloot/editor/item_editor/properties_editor.gd +++ b/addons/gloot/editor/item_editor/properties_editor.gd @@ -1,6 +1,7 @@ @tool extends Window +const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd") const GridConstraint = preload("res://addons/gloot/core/constraints/grid_constraint.gd") const DictEditor = preload("res://addons/gloot/editor/common/dict_editor.tscn") const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd") @@ -10,8 +11,6 @@ var IMMUTABLE_KEYS: Array[String] = [ItemProtoset.KEY_ID, GridConstraint.KEY_GRI @onready var _margin_container: MarginContainer = $"MarginContainer" @onready var _dict_editor: Control = $"MarginContainer/DictEditor" -var gloot_undo_redo = null -var editor_interface: EditorInterface var item: InventoryItem = null : get: return item @@ -21,17 +20,10 @@ var item: InventoryItem = null : assert(item == null, "Item already set!") item = new_item if item.protoset: - item.protoset.changed.connect(Callable(self, "_refresh")) + item.protoset.changed.connect(_refresh) _refresh() -func init(gloot_undo_redo_, editor_interface_: EditorInterface) -> void: - assert(gloot_undo_redo_, "gloot_undo_redo_ is null!") - assert(editor_interface_, "editor_interface_ is null!") - gloot_undo_redo = gloot_undo_redo_ - editor_interface = editor_interface_ - - func _ready() -> void: about_to_popup.connect(func(): _refresh()) close_requested.connect(func(): hide()) @@ -51,7 +43,7 @@ func _on_value_changed(key: String, new_value) -> void: if new_properties.hash() == item.properties.hash(): return - gloot_undo_redo.set_item_properties(item, new_properties) + GlootUndoRedo.set_item_properties(item, new_properties) _refresh() @@ -62,13 +54,13 @@ func _on_value_removed(key: String) -> void: if new_properties.hash() == item.properties.hash(): return - gloot_undo_redo.set_item_properties(item, new_properties) + GlootUndoRedo.set_item_properties(item, new_properties) _refresh() func _refresh() -> void: if _dict_editor.btn_add: - _dict_editor.btn_add.icon = EditorIcons.get_icon(editor_interface, "Add") + _dict_editor.btn_add.icon = EditorIcons.get_icon("Add") _dict_editor.dictionary = _get_dictionary() _dict_editor.color_map = _get_color_map() _dict_editor.remove_button_map = _get_remove_button_map() @@ -123,10 +115,10 @@ func _get_remove_button_map() -> Dictionary: result[key] = {} if item.protoset.get_prototype(item.prototype_id).has(key): result[key]["text"] = "" - result[key]["icon"] = EditorIcons.get_icon(editor_interface, "Reload") + result[key]["icon"] = EditorIcons.get_icon("Reload") else: result[key]["text"] = "" - result[key]["icon"] = EditorIcons.get_icon(editor_interface, "Remove") + result[key]["icon"] = EditorIcons.get_icon("Remove") result[key]["disabled"] = (not key in item.properties) or (key in IMMUTABLE_KEYS) return result diff --git a/addons/gloot/editor/item_editor/prototype_id_editor.gd b/addons/gloot/editor/item_editor/prototype_id_editor.gd index 8ccd860f..b6168d94 100644 --- a/addons/gloot/editor/item_editor/prototype_id_editor.gd +++ b/addons/gloot/editor/item_editor/prototype_id_editor.gd @@ -1,14 +1,13 @@ @tool extends Window +const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd") const ChoiceFilter = preload("res://addons/gloot/editor/common/choice_filter.tscn") const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd") const POPUP_MARGIN = 10 @onready var _margin_container: MarginContainer = $"MarginContainer" @onready var _choice_filter: Control = $"MarginContainer/ChoiceFilter" -var gloot_undo_redo = null -var editor_interface: EditorInterface var item: InventoryItem = null : get: return item @@ -18,19 +17,12 @@ var item: InventoryItem = null : assert(item == null, "Item already set!") item = new_item if item.protoset: - item.protoset.changed.connect(Callable(self, "_refresh")) + item.protoset.changed.connect(_refresh) _refresh() -func init(gloot_undo_redo_, editor_interface_: EditorInterface) -> void: - assert(gloot_undo_redo_, "gloot_undo_redo_ is null!") - assert(editor_interface_, "editor_interface_ is null!") - gloot_undo_redo = gloot_undo_redo_ - editor_interface = editor_interface_ - - func _ready() -> void: - _choice_filter.filter_icon = EditorIcons.get_icon(editor_interface, "Search") + _choice_filter.filter_icon = EditorIcons.get_icon("Search") about_to_popup.connect(func(): _refresh()) close_requested.connect(func(): hide()) _choice_filter.choice_picked.connect(func(value_index: int): _on_choice_picked(value_index)) @@ -41,7 +33,7 @@ func _on_choice_picked(value_index: int) -> void: assert(item, "Item not set!") var new_prototype_id = _choice_filter.values[value_index] if new_prototype_id != item.prototype_id: - gloot_undo_redo.set_item_prototype_id(item, new_prototype_id) + GlootUndoRedo.set_item_prototype_id(item, new_prototype_id) hide() diff --git a/addons/gloot/editor/item_slot_editor/edit_equipped_item_button.gd b/addons/gloot/editor/item_slot_editor/edit_equipped_item_button.gd deleted file mode 100644 index f1db473f..00000000 --- a/addons/gloot/editor/item_slot_editor/edit_equipped_item_button.gd +++ /dev/null @@ -1,77 +0,0 @@ -extends EditorProperty - -var updating: bool = false -var _option_button: OptionButton -var gloot_undo_redo = null - - -func _init(): - _option_button = OptionButton.new() - add_child(_option_button) - add_focusable(_option_button) - _option_button.item_selected.connect(Callable(self, "_on_item_selected")) - - -func _ready() -> void: - var item_slot: ItemSlot = get_edited_object() - item_slot.inventory_changed.connect(Callable(self, "_on_inventory_changed")) - item_slot.item_set.connect(Callable(self, "_on_item_set")) - item_slot.item_cleared.connect(Callable(self, "_on_item_cleared")) - _refresh_option_button() - - -func _on_inventory_changed(inventory: Inventory) -> void: - _refresh_option_button() - - -func _on_item_set(item: InventoryItem) -> void: - _refresh_option_button() - - -func _on_item_cleared() -> void: - _refresh_option_button() - - -func _refresh_option_button() -> void: - _clear_option_button() - _populate_option_button() - - -func _clear_option_button() -> void: - _option_button.clear() - _option_button.add_item("NONE") - _option_button.set_item_metadata(0, -1) - _option_button.select(0) - - -func _populate_option_button() -> void: - if !get_edited_object(): - return - - var item_slot: ItemSlot = get_edited_object() - if !item_slot.inventory: - return - - var selected_item_index = 0 - for inventory_item_index in range(item_slot.inventory.get_item_count()): - var item = item_slot.inventory.get_items()[inventory_item_index] - _option_button.add_icon_item(item.get_texture(), item.get_title()) - var current_item_index = _option_button.get_item_count() - 1 - _option_button.set_item_metadata(current_item_index, inventory_item_index) - if item == item_slot.item: - selected_item_index = current_item_index - - _option_button.select(selected_item_index) - - -func _on_item_selected(item_index: int) -> void: - if !get_edited_object() || updating: - return - - updating = true - var item_slot: ItemSlot = get_edited_object() - var new_equipped_item = _option_button.get_item_metadata(item_index) - if item_slot.equipped_item != new_equipped_item: - gloot_undo_redo.set_item_slot_equipped_item(item_slot, new_equipped_item) - updating = false - diff --git a/addons/gloot/editor/item_slot_editor/item_ref_slot_button.gd b/addons/gloot/editor/item_slot_editor/item_ref_slot_button.gd new file mode 100644 index 00000000..0e1abfea --- /dev/null +++ b/addons/gloot/editor/item_slot_editor/item_ref_slot_button.gd @@ -0,0 +1,67 @@ +extends EditorProperty + +const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd") + +var updating: bool = false +var _option_button: OptionButton + + +func _init(): + _option_button = OptionButton.new() + add_child(_option_button) + add_focusable(_option_button) + _option_button.item_selected.connect(_on_item_selected) + + +func _ready() -> void: + var item_ref_slot: ItemRefSlot = get_edited_object() + item_ref_slot.inventory_changed.connect(_refresh_option_button) + item_ref_slot.item_equipped.connect(_refresh_option_button) + item_ref_slot.cleared.connect(_refresh_option_button) + _refresh_option_button() + + +func _refresh_option_button() -> void: + _clear_option_button() + _populate_option_button() + + +func _clear_option_button() -> void: + _option_button.clear() + _option_button.add_item("None") + _option_button.set_item_metadata(0, null) + _option_button.select(0) + + +func _populate_option_button() -> void: + if !get_edited_object(): + return + + var item_ref_slot: ItemRefSlot = get_edited_object() + if !item_ref_slot.inventory: + return + + var equipped_item_index := 0 + for item in item_ref_slot.inventory.get_items(): + _option_button.add_icon_item(item.get_texture(), item.get_title()) + var option_item_index = _option_button.get_item_count() - 1 + _option_button.set_item_metadata(option_item_index, item) + if item == item_ref_slot.get_item(): + equipped_item_index = option_item_index + + _option_button.select(equipped_item_index) + + +func _on_item_selected(item_index: int) -> void: + if !get_edited_object() || updating: + return + + updating = true + var item_ref_slot: ItemRefSlot = get_edited_object() + var selected_item: InventoryItem = _option_button.get_item_metadata(item_index) + if item_ref_slot.get_item() != selected_item: + if selected_item == null: + GlootUndoRedo.clear_item_slot(item_ref_slot) + else: + GlootUndoRedo.equip_item_in_item_slot(item_ref_slot, selected_item) + updating = false diff --git a/addons/gloot/editor/item_slot_editor/item_slot_editor.gd b/addons/gloot/editor/item_slot_editor/item_slot_editor.gd new file mode 100644 index 00000000..8c640523 --- /dev/null +++ b/addons/gloot/editor/item_slot_editor/item_slot_editor.gd @@ -0,0 +1,108 @@ +@tool +extends Control + +const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd") +const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd") + +@onready var hsplit_container = $HSplitContainer +@onready var prototype_id_filter = $HSplitContainer/ChoiceFilter +@onready var btn_edit = $HSplitContainer/VBoxContainer/HBoxContainer/BtnEdit +@onready var btn_clear = $HSplitContainer/VBoxContainer/HBoxContainer/BtnClear +@onready var ctrl_item_slot = $HSplitContainer/VBoxContainer/CtrlItemSlot + +var item_slot: ItemSlot : + get: + return item_slot + set(new_item_slot): + disconnect_item_slot_signals() + item_slot = new_item_slot + ctrl_item_slot.item_slot = item_slot + connect_item_slot_signals() + + _refresh() + + +func connect_item_slot_signals(): + if !item_slot: + return + + item_slot.item_equipped.connect(_refresh) + item_slot.cleared.connect(_refresh) + + if !item_slot.item_protoset: + return + item_slot.item_protoset.changed.connect(_refresh) + item_slot.protoset_changed.connect(_refresh) + + +func disconnect_item_slot_signals(): + if !item_slot: + return + + item_slot.item_equipped.disconnect(_refresh) + item_slot.cleared.disconnect(_refresh) + + if !item_slot.item_protoset: + return + item_slot.item_protoset.changed.disconnect(_refresh) + item_slot.protoset_changed.disconnect(_refresh) + + +func init(item_slot_: ItemSlot) -> void: + item_slot = item_slot_ + + +func _refresh() -> void: + if !is_inside_tree() || item_slot == null || item_slot.item_protoset == null: + return + prototype_id_filter.set_values(item_slot.item_protoset._prototypes.keys()) + + +func _ready() -> void: + _apply_editor_settings() + + prototype_id_filter.pick_icon = EditorIcons.get_icon("Add") + prototype_id_filter.filter_icon = EditorIcons.get_icon("Search") + btn_edit.icon = EditorIcons.get_icon("Edit") + btn_clear.icon = EditorIcons.get_icon("Remove") + + prototype_id_filter.choice_picked.connect(_on_prototype_id_picked) + btn_edit.pressed.connect(_on_btn_edit) + btn_clear.pressed.connect(_on_btn_clear) + + ctrl_item_slot.item_slot = item_slot + _refresh() + + +func _apply_editor_settings() -> void: + var control_height: int = ProjectSettings.get_setting("gloot/inspector_control_height") + custom_minimum_size.y = control_height + + +func _on_prototype_id_picked(index: int) -> void: + var prototype_id = prototype_id_filter.values[index] + var item := InventoryItem.new() + if item_slot.get_item() != null: + item_slot.get_item().queue_free() + item.protoset = item_slot.item_protoset + item.prototype_id = prototype_id + GlootUndoRedo.equip_item_in_item_slot(item_slot, item) + + +func _on_btn_edit() -> void: + if item_slot.get_item() != null: + # Call it deferred, so that the control can clean up + call_deferred("_select_node", item_slot.get_item()) + + +func _on_btn_clear() -> void: + if item_slot.get_item() != null: + item_slot.get_item().queue_free() + GlootUndoRedo.clear_item_slot(item_slot) + + +static func _select_node(node: Node) -> void: + EditorInterface.get_selection().clear() + EditorInterface.get_selection().add_node(node) + EditorInterface.edit_node(node) + diff --git a/addons/gloot/editor/item_slot_editor/item_slot_editor.tscn b/addons/gloot/editor/item_slot_editor/item_slot_editor.tscn new file mode 100644 index 00000000..67a00ff3 --- /dev/null +++ b/addons/gloot/editor/item_slot_editor/item_slot_editor.tscn @@ -0,0 +1,103 @@ +[gd_scene load_steps=12 format=3 uid="uid://bgs0xwufm4k6k"] + +[ext_resource type="Script" path="res://addons/gloot/editor/item_slot_editor/item_slot_editor.gd" id="1_d7a2m"] +[ext_resource type="PackedScene" uid="uid://dj577duf8yjeb" path="res://addons/gloot/editor/common/choice_filter.tscn" id="2_lcnj8"] +[ext_resource type="Script" path="res://addons/gloot/ui/ctrl_item_slot.gd" id="3_421wi"] + +[sub_resource type="Image" id="Image_ktvjb"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_t45ni"] +image = SubResource("Image_ktvjb") + +[sub_resource type="Image" id="Image_rhg3a"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 68, 224, 224, 224, 184, 224, 224, 224, 240, 224, 224, 224, 232, 224, 224, 224, 186, 227, 227, 227, 62, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 129, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 122, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 68, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 123, 224, 224, 224, 32, 224, 224, 224, 33, 225, 225, 225, 125, 224, 224, 224, 254, 224, 224, 224, 254, 226, 226, 226, 69, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 184, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 125, 224, 224, 224, 255, 225, 225, 225, 174, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 240, 224, 224, 224, 255, 231, 231, 231, 31, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 35, 224, 224, 224, 255, 224, 224, 224, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 232, 224, 224, 224, 255, 224, 224, 224, 32, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 228, 228, 228, 37, 224, 224, 224, 255, 224, 224, 224, 228, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 186, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 130, 224, 224, 224, 255, 224, 224, 224, 173, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 62, 224, 224, 224, 255, 224, 224, 224, 254, 225, 225, 225, 126, 225, 225, 225, 34, 227, 227, 227, 36, 224, 224, 224, 131, 224, 224, 224, 255, 224, 224, 224, 255, 226, 226, 226, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 122, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 69, 225, 225, 225, 174, 224, 224, 224, 233, 224, 224, 224, 228, 224, 224, 224, 173, 226, 226, 226, 77, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 227, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_3hnnf"] +image = SubResource("Image_rhg3a") + +[sub_resource type="Image" id="Image_8ww1c"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 182, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 171, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 234, 224, 224, 224, 234, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 85, 225, 225, 225, 85, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_yqex5"] +image = SubResource("Image_8ww1c") + +[sub_resource type="Image" id="Image_240jw"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 227, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 225, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 73, 224, 224, 224, 226, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 225, 226, 226, 226, 70, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_ip6wh"] +image = SubResource("Image_240jw") + +[node name="ItemSlotEditor" type="Control"] +custom_minimum_size = Vector2(0, 200) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_d7a2m") + +[node name="HSplitContainer" type="HSplitContainer" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ChoiceFilter" parent="HSplitContainer" instance=ExtResource("2_lcnj8")] +layout_mode = 2 +pick_text = "Equip" +pick_icon = SubResource("ImageTexture_t45ni") +filter_text = "Filter Prototypes:" +filter_icon = SubResource("ImageTexture_3hnnf") + +[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="CtrlItemSlot" type="Control" parent="HSplitContainer/VBoxContainer"] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +size_flags_vertical = 3 +script = ExtResource("3_421wi") + +[node name="HBoxContainer" type="HBoxContainer" parent="HSplitContainer/VBoxContainer"] +layout_mode = 2 + +[node name="BtnEdit" type="Button" parent="HSplitContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Edit" +icon = SubResource("ImageTexture_yqex5") + +[node name="BtnClear" type="Button" parent="HSplitContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Clear" +icon = SubResource("ImageTexture_ip6wh") diff --git a/addons/gloot/editor/item_slot_editor/item_slot_inspector.gd b/addons/gloot/editor/item_slot_editor/item_slot_inspector.gd new file mode 100644 index 00000000..7cdee922 --- /dev/null +++ b/addons/gloot/editor/item_slot_editor/item_slot_inspector.gd @@ -0,0 +1,40 @@ +@tool +extends Control + +const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd") + +@onready var item_slot_editor: Control = $HBoxContainer/ItemSlotEditor +@onready var btn_expand: Button = $HBoxContainer/BtnExpand +@onready var _window_dialog: Window = $Window +@onready var _item_slot_editor: Control = $Window/MarginContainer/ItemSlotEditor + +var item_slot: ItemSlot : + get: + return item_slot + set(new_item_slot): + item_slot = new_item_slot + if item_slot_editor: + item_slot_editor.item_slot = item_slot + + +func init(item_slot_: ItemSlot) -> void: + item_slot = item_slot_ + + +func _ready() -> void: + if item_slot_editor: + item_slot_editor.item_slot = item_slot + _apply_editor_settings() + btn_expand.icon = EditorIcons.get_icon("DistractionFree") + btn_expand.pressed.connect(on_btn_expand) + _window_dialog.close_requested.connect(func(): _window_dialog.hide()) + + +func on_btn_expand() -> void: + _item_slot_editor.item_slot = item_slot + _window_dialog.popup_centered() + + +func _apply_editor_settings() -> void: + var control_height: int = ProjectSettings.get_setting("gloot/inspector_control_height") + custom_minimum_size.y = control_height diff --git a/addons/gloot/editor/item_slot_editor/item_slot_inspector.tscn b/addons/gloot/editor/item_slot_editor/item_slot_inspector.tscn new file mode 100644 index 00000000..d5fcc8f1 --- /dev/null +++ b/addons/gloot/editor/item_slot_editor/item_slot_inspector.tscn @@ -0,0 +1,66 @@ +[gd_scene load_steps=5 format=3 uid="uid://b8bv63d2djwv3"] + +[ext_resource type="Script" path="res://addons/gloot/editor/item_slot_editor/item_slot_inspector.gd" id="1_4gsgr"] +[ext_resource type="PackedScene" uid="uid://bgs0xwufm4k6k" path="res://addons/gloot/editor/item_slot_editor/item_slot_editor.tscn" id="2_ysqy6"] + +[sub_resource type="Image" id="Image_ump51"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 4, 255, 255, 255, 4, 255, 255, 255, 4, 255, 255, 255, 3, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 127, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 135, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 140, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 213, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 136, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 213, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 210, 224, 224, 224, 138, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 126, 255, 255, 255, 0, 232, 232, 232, 22, 224, 224, 224, 213, 224, 224, 224, 255, 226, 226, 226, 103, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 107, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 22, 226, 226, 226, 103, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 105, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 107, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 109, 232, 232, 232, 22, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 127, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 105, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 109, 224, 224, 224, 255, 224, 224, 224, 213, 232, 232, 232, 22, 255, 255, 255, 0, 224, 224, 224, 129, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 140, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 22, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 213, 225, 225, 225, 142, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 232, 232, 232, 22, 224, 224, 224, 213, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 138, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 142, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 129, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_eojh7"] +image = SubResource("Image_ump51") + +[node name="ItemSlotInspector" type="Control"] +custom_minimum_size = Vector2(0, 200) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_4gsgr") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="ItemSlotEditor" parent="HBoxContainer" instance=ExtResource("2_ysqy6")] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="BtnExpand" type="Button" parent="HBoxContainer"] +layout_mode = 2 +icon = SubResource("ImageTexture_eojh7") + +[node name="Window" type="Window" parent="."] +title = "Edit Item Slot" +size = Vector2i(800, 600) +visible = false +exclusive = true +min_size = Vector2i(400, 300) + +[node name="MarginContainer" type="MarginContainer" parent="Window"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="ItemSlotEditor" parent="Window/MarginContainer" instance=ExtResource("2_ysqy6")] +layout_mode = 2 diff --git a/addons/gloot/editor/protoset_editor/edit_protoset_button.gd b/addons/gloot/editor/protoset_editor/edit_protoset_button.gd index 5fffc7e3..71990bbc 100644 --- a/addons/gloot/editor/protoset_editor/edit_protoset_button.gd +++ b/addons/gloot/editor/protoset_editor/edit_protoset_button.gd @@ -13,40 +13,15 @@ var protoset: ItemProtoset : protoset = new_protoset if protoset_editor: protoset_editor.protoset = protoset -var gloot_undo_redo = null : - get: - return gloot_undo_redo - set(new_gloot_undo_redo): - gloot_undo_redo = new_gloot_undo_redo - if protoset_editor: - protoset_editor.gloot_undo_redo = gloot_undo_redo -var editor_interface: EditorInterface : - get: - return editor_interface - set(new_editor_interface): - editor_interface = new_editor_interface - if protoset_editor: - protoset_editor.editor_interface = editor_interface -func init(protoset_: ItemProtoset, gloot_undo_redo_, editor_interface_: EditorInterface) -> void: +func init(protoset_: ItemProtoset) -> void: protoset = protoset_ - gloot_undo_redo = gloot_undo_redo_ - editor_interface = editor_interface_ func _ready() -> void: - icon = EditorIcons.get_icon(editor_interface, "Edit") - window_dialog.close_requested.connect(Callable(self, "_on_close_requested")) + icon = EditorIcons.get_icon("Edit") + window_dialog.close_requested.connect(func(): protoset.notify_property_list_changed()) protoset_editor.protoset = protoset - protoset_editor.gloot_undo_redo = gloot_undo_redo - protoset_editor.editor_interface = editor_interface - pressed.connect(Callable(self, "_on_pressed")) - - -func _on_close_requested() -> void: - protoset.notify_property_list_changed() - + pressed.connect(func(): window_dialog.popup_centered(window_dialog.size)) -func _on_pressed() -> void: - window_dialog.popup_centered(window_dialog.size) diff --git a/addons/gloot/editor/protoset_editor/edit_protoset_button.tscn b/addons/gloot/editor/protoset_editor/edit_protoset_button.tscn index 721f40d6..57d03d32 100644 --- a/addons/gloot/editor/protoset_editor/edit_protoset_button.tscn +++ b/addons/gloot/editor/protoset_editor/edit_protoset_button.tscn @@ -1,8 +1,20 @@ -[gd_scene load_steps=3 format=3 uid="uid://bjme7iuv3j6yb"] +[gd_scene load_steps=5 format=3 uid="uid://bjme7iuv3j6yb"] [ext_resource type="PackedScene" uid="uid://cyj0avrwjowl" path="res://addons/gloot/editor/protoset_editor/protoset_editor.tscn" id="1"] [ext_resource type="Script" path="res://addons/gloot/editor/protoset_editor/edit_protoset_button.gd" id="2"] +[sub_resource type="Image" id="Image_tnk37"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 182, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 171, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 234, 224, 224, 224, 234, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 85, 225, 225, 225, 85, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_18gso"] +image = SubResource("Image_tnk37") + [node name="EditProtosetButton" type="Button"] anchors_preset = 15 anchor_right = 1.0 @@ -10,19 +22,16 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 text = "Edit Protoset" +icon = SubResource("ImageTexture_18gso") script = ExtResource("2") [node name="Window" type="Window" parent="."] unique_name_in_owner = true title = "Edit Protoset" -size = Vector2i(800, 600) +size = Vector2i(1000, 600) visible = false exclusive = true -min_size = Vector2i(600, 200) +min_size = Vector2i(800, 200) [node name="ProtosetEditor" parent="Window" instance=ExtResource("1")] unique_name_in_owner = true -layout_mode = 3 -anchors_preset = 15 -grow_horizontal = 2 -grow_vertical = 2 diff --git a/addons/gloot/editor/protoset_editor/protoset_editor.gd b/addons/gloot/editor/protoset_editor/protoset_editor.gd index 231025d5..0cfca1c5 100644 --- a/addons/gloot/editor/protoset_editor/protoset_editor.gd +++ b/addons/gloot/editor/protoset_editor/protoset_editor.gd @@ -1,12 +1,14 @@ @tool extends Control +const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd") const EditorIcons = preload("res://addons/gloot/editor/common/editor_icons.gd") @onready var prototype_filter = $"%PrototypeFilter" @onready var property_editor = $"%PropertyEditor" @onready var txt_prototype_id = $"%TxtPrototypeName" @onready var btn_add_prototype = $"%BtnAddPrototype" +@onready var btn_duplicate_prototype = $"%BtnDuplicatePrototype" @onready var btn_remove_prototype = $"%BtnRemovePrototype" @onready var btn_rename_prototype = $"%BtnRenamePrototype" @@ -16,30 +18,27 @@ var protoset: ItemProtoset : set(new_protoset): protoset = new_protoset if protoset: - protoset.changed.connect(Callable(self, "_on_protoset_changed")) - _refresh() -var gloot_undo_redo = null -var editor_interface: EditorInterface : - get: - return editor_interface - set(new_editor_interface): - editor_interface = new_editor_interface - btn_add_prototype.icon = EditorIcons.get_icon(editor_interface, "Add") - btn_rename_prototype.icon = EditorIcons.get_icon(editor_interface, "Edit") - btn_remove_prototype.icon = EditorIcons.get_icon(editor_interface, "Remove") - prototype_filter.filter_icon = EditorIcons.get_icon(editor_interface, "Search") + protoset.changed.connect(_on_protoset_changed) + _refresh() var selected_prototype_id: String = "" - + func _ready() -> void: - prototype_filter.choice_selected.connect(Callable(self, "_on_prototype_selected")) - property_editor.value_changed.connect(Callable(self, "_on_property_changed")) - property_editor.value_removed.connect(Callable(self, "_on_property_removed")) - txt_prototype_id.text_changed.connect(Callable(self, "_on_prototype_id_changed")) - txt_prototype_id.text_submitted.connect(Callable(self, "_on_prototype_id_entered")) - btn_add_prototype.pressed.connect(Callable(self, "_on_btn_add_prototype")) - btn_rename_prototype.pressed.connect(Callable(self, "_on_btn_rename_prototype")) - btn_remove_prototype.pressed.connect(Callable(self, "_on_btn_remove_prototype")) + prototype_filter.choice_selected.connect(_on_prototype_selected) + property_editor.value_changed.connect(_on_property_changed) + property_editor.value_removed.connect(_on_property_removed) + txt_prototype_id.text_changed.connect(_on_prototype_id_changed) + txt_prototype_id.text_submitted.connect(_on_prototype_id_entered) + btn_add_prototype.pressed.connect(_on_btn_add_prototype) + btn_duplicate_prototype.pressed.connect(_on_btn_duplicate_prototype) + btn_rename_prototype.pressed.connect(_on_btn_rename_prototype) + btn_remove_prototype.pressed.connect(_on_btn_remove_prototype) + + btn_add_prototype.icon = EditorIcons.get_icon("Add") + btn_duplicate_prototype.icon = EditorIcons.get_icon("Duplicate") + btn_rename_prototype.icon = EditorIcons.get_icon("Edit") + btn_remove_prototype.icon = EditorIcons.get_icon("Remove") + prototype_filter.filter_icon = EditorIcons.get_icon("Search") _refresh() @@ -52,6 +51,7 @@ func _refresh() -> void: _refresh_btn_add_prototype() _refresh_btn_rename_prototype() _refresh_btn_remove_prototype() + _refresh_btn_duplicate_prototype() _inspect_prototype_id(selected_prototype_id) @@ -81,6 +81,10 @@ func _refresh_btn_remove_prototype() -> void: btn_remove_prototype.disabled = prototype_filter.get_selected_text().is_empty() +func _refresh_btn_duplicate_prototype() -> void: + btn_duplicate_prototype.disabled = prototype_filter.get_selected_text().is_empty() + + func _on_protoset_changed() -> void: _refresh() @@ -89,6 +93,7 @@ func _on_prototype_selected(index: int) -> void: selected_prototype_id = prototype_filter.values[index] _inspect_prototype_id(selected_prototype_id) _refresh_btn_remove_prototype() + _refresh_btn_duplicate_prototype() func _inspect_prototype_id(prototype_id: String) -> void: @@ -105,7 +110,7 @@ func _inspect_prototype_id(prototype_id: String) -> void: property_editor.set_remove_button_config(property_name, { "text": "", "disabled": property_name == ItemProtoset.KEY_ID, - "icon": EditorIcons.get_icon(editor_interface, "Remove"), + "icon": EditorIcons.get_icon("Remove"), }) @@ -118,7 +123,7 @@ func _on_property_changed(property_name: String, new_value) -> void: if new_properties.hash() == protoset.get_prototype(selected_prototype_id).hash(): return - gloot_undo_redo.set_prototype_properties(protoset, selected_prototype_id, new_properties) + GlootUndoRedo.set_prototype_properties(protoset, selected_prototype_id, new_properties) func _on_property_removed(property_name: String) -> void: @@ -127,10 +132,10 @@ func _on_property_removed(property_name: String) -> void: var new_properties = protoset.get_prototype(selected_prototype_id).duplicate() new_properties.erase(property_name) - gloot_undo_redo.set_prototype_properties(protoset, selected_prototype_id, new_properties) + GlootUndoRedo.set_prototype_properties(protoset, selected_prototype_id, new_properties) -func _on_prototype_id_changed() -> void: +func _on_prototype_id_changed(_prototype_id: String) -> void: _refresh_btn_add_prototype() _refresh_btn_rename_prototype() @@ -143,28 +148,29 @@ func _on_btn_add_prototype() -> void: _add_prototype_id(txt_prototype_id.text) +func _on_btn_duplicate_prototype() -> void: + GlootUndoRedo.duplicate_prototype(protoset, selected_prototype_id) + + func _on_btn_rename_prototype() -> void: - assert(gloot_undo_redo) if selected_prototype_id.is_empty(): return - gloot_undo_redo.rename_prototype(protoset, + GlootUndoRedo.rename_prototype(protoset, selected_prototype_id, txt_prototype_id.text) txt_prototype_id.text = "" func _add_prototype_id(prototype_id: String) -> void: - assert(gloot_undo_redo) - gloot_undo_redo.add_prototype(protoset, prototype_id) + GlootUndoRedo.add_prototype(protoset, prototype_id) txt_prototype_id.text = "" func _on_btn_remove_prototype() -> void: - assert(gloot_undo_redo) if selected_prototype_id.is_empty(): return var prototype_id = selected_prototype_id if !prototype_id.is_empty(): - gloot_undo_redo.remove_prototype(protoset, prototype_id) + GlootUndoRedo.remove_prototype(protoset, prototype_id) diff --git a/addons/gloot/editor/protoset_editor/protoset_editor.tscn b/addons/gloot/editor/protoset_editor/protoset_editor.tscn index d7bf73da..77aca4e0 100644 --- a/addons/gloot/editor/protoset_editor/protoset_editor.tscn +++ b/addons/gloot/editor/protoset_editor/protoset_editor.tscn @@ -1,14 +1,76 @@ -[gd_scene load_steps=4 format=3 uid="uid://cyj0avrwjowl"] +[gd_scene load_steps=14 format=3 uid="uid://cyj0avrwjowl"] -[ext_resource type="PackedScene" path="res://addons/gloot/editor/common/choice_filter.tscn" id="1"] +[ext_resource type="PackedScene" uid="uid://dj577duf8yjeb" path="res://addons/gloot/editor/common/choice_filter.tscn" id="1"] [ext_resource type="PackedScene" uid="uid://digtudobrw3xb" path="res://addons/gloot/editor/common/dict_editor.tscn" id="2"] [ext_resource type="Script" path="res://addons/gloot/editor/protoset_editor/protoset_editor.gd" id="3"] +[sub_resource type="Image" id="Image_3d3lf"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 68, 224, 224, 224, 184, 224, 224, 224, 240, 224, 224, 224, 232, 224, 224, 224, 186, 227, 227, 227, 62, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 129, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 122, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 68, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 123, 224, 224, 224, 32, 224, 224, 224, 33, 225, 225, 225, 125, 224, 224, 224, 254, 224, 224, 224, 254, 226, 226, 226, 69, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 184, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 125, 224, 224, 224, 255, 225, 225, 225, 174, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 240, 224, 224, 224, 255, 231, 231, 231, 31, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 35, 224, 224, 224, 255, 224, 224, 224, 233, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 232, 224, 224, 224, 255, 224, 224, 224, 32, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 228, 228, 228, 37, 224, 224, 224, 255, 224, 224, 224, 228, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 186, 224, 224, 224, 255, 224, 224, 224, 123, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 130, 224, 224, 224, 255, 224, 224, 224, 173, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 62, 224, 224, 224, 255, 224, 224, 224, 254, 225, 225, 225, 126, 225, 225, 225, 34, 227, 227, 227, 36, 224, 224, 224, 131, 224, 224, 224, 255, 224, 224, 224, 255, 226, 226, 226, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 122, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 226, 226, 226, 69, 225, 225, 225, 174, 224, 224, 224, 233, 224, 224, 224, 228, 224, 224, 224, 173, 226, 226, 226, 77, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 255, 224, 224, 224, 210, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 210, 224, 224, 224, 227, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 225, 225, 225, 34, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_ooqbn"] +image = SubResource("Image_3d3lf") + +[sub_resource type="Image" id="Image_7dqyh"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_dehry"] +image = SubResource("Image_7dqyh") + +[sub_resource type="Image" id="Image_nsl4i"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_cfl22"] +image = SubResource("Image_nsl4i") + +[sub_resource type="Image" id="Image_o82dw"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 182, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 180, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 171, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 170, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 231, 231, 231, 21, 224, 224, 224, 234, 224, 224, 224, 234, 231, 231, 231, 21, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 225, 225, 225, 85, 225, 225, 225, 85, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_qoier"] +image = SubResource("Image_o82dw") + +[sub_resource type="Image" id="Image_ey4cw"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 227, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 225, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 73, 224, 224, 224, 226, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 225, 226, 226, 226, 70, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_i8glk"] +image = SubResource("Image_ey4cw") + [node name="ProtosetEditor" type="Control"] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 script = ExtResource("3") [node name="Gui" type="HSplitContainer" parent="."] @@ -36,6 +98,7 @@ unique_name_in_owner = true layout_mode = 2 pick_button_visible = false filter_text = "Prototype Filter:" +filter_icon = SubResource("ImageTexture_ooqbn") [node name="HBoxContainer2" type="HBoxContainer" parent="Gui/VBoxContainer"] layout_mode = 2 @@ -52,6 +115,15 @@ layout_mode = 2 tooltip_text = "Add a new prototype with the entered ID" disabled = true text = "Add" +icon = SubResource("ImageTexture_dehry") + +[node name="BtnDuplicatePrototype" type="Button" parent="Gui/VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Duplicate the selected prototype" +disabled = true +text = "Duplicate" +icon = SubResource("ImageTexture_cfl22") [node name="BtnRenamePrototype" type="Button" parent="Gui/VBoxContainer/HBoxContainer2"] unique_name_in_owner = true @@ -59,6 +131,7 @@ layout_mode = 2 tooltip_text = "Rename the selected prototype" disabled = true text = "Rename" +icon = SubResource("ImageTexture_qoier") [node name="BtnRemovePrototype" type="Button" parent="Gui/VBoxContainer/HBoxContainer2"] unique_name_in_owner = true @@ -66,6 +139,7 @@ layout_mode = 2 tooltip_text = "Remove the selected prototype" disabled = true text = "Remove" +icon = SubResource("ImageTexture_i8glk") [node name="VBoxContainer2" type="VBoxContainer" parent="Gui"] layout_mode = 2 diff --git a/addons/gloot/gloot.gd b/addons/gloot/gloot.gd index 64093f7d..ad9cd79b 100644 --- a/addons/gloot/gloot.gd +++ b/addons/gloot/gloot.gd @@ -2,72 +2,38 @@ extends EditorPlugin var inspector_plugin: EditorInspectorPlugin +static var _instance: EditorPlugin -func _enter_tree() -> void: - add_custom_type("ItemProtoset", "Resource", preload("core/item_protoset.gd"), preload("images/icon_item_protoset.svg")) - - add_custom_type("InventoryItem", "Node", preload("core/inventory_item.gd"), preload("images/icon_item.svg")) - - add_custom_type("Inventory", "Node", preload("core/inventory.gd"), preload("images/icon_inventory.svg")) - add_custom_type("InventoryStacked", "Node", preload("core/inventory_stacked.gd"), preload("images/icon_inventory_stacked.svg")) - add_custom_type("InventoryGrid", "Node", preload("core/inventory_grid.gd"), preload("images/icon_inventory_grid.svg")) - add_custom_type("InventoryGridStacked", "Node", preload("core/inventory_grid_stacked.gd"), preload("images/icon_inventory_grid_stacked.svg")) +func _init() -> void: + _instance = self - add_custom_type("ItemSlot", "Node", preload("core/item_slot.gd"), preload("images/icon_item_slot.svg")) - add_custom_type("CtrlInventory", "Control", preload("ui/ctrl_inventory.gd"), preload("images/icon_ctrl_inventory.svg")) - add_custom_type("CtrlInventoryStacked", "Control", preload("ui/ctrl_inventory_stacked.gd"), preload("images/icon_ctrl_inventory_stacked.svg")) - add_custom_type("CtrlInventoryGrid", "Control", preload("ui/ctrl_inventory_grid.gd"), preload("images/icon_ctrl_inventory_grid.svg")) - add_custom_type("CtrlInventoryGridEx", "Control", preload("ui/ctrl_inventory_grid_ex.gd"), preload("images/icon_ctrl_inventory_grid.svg")) - add_custom_type("CtrlItemSlot", "Control", preload("ui/ctrl_item_slot.gd"), preload("images/icon_ctrl_item_slot.svg")) - add_custom_type("CtrlItemSlotEx", "Control", preload("ui/ctrl_item_slot_ex.gd"), preload("images/icon_ctrl_item_slot.svg")) +static func instance() -> EditorPlugin: + return _instance - inspector_plugin = preload("res://addons/gloot/editor/inventory_inspector_plugin.gd").new() - inspector_plugin.editor_interface = get_editor_interface() - inspector_plugin.undo_redo_manager = get_undo_redo() - add_inspector_plugin(inspector_plugin) - add_autoload_singleton("GLoot", "res://addons/gloot/gloot_autoload.gd") +func _enter_tree() -> void: + inspector_plugin = preload("res://addons/gloot/editor/inventory_inspector_plugin.gd").new() + add_inspector_plugin(inspector_plugin) - _add_settings() + _add_settings() func _exit_tree() -> void: - remove_autoload_singleton("GLoot") - - remove_inspector_plugin(inspector_plugin) - - remove_custom_type("ItemProtoset") - - remove_custom_type("InventoryItem") - - remove_custom_type("Inventory") - remove_custom_type("InventoryStacked") - remove_custom_type("InventoryGrid") - remove_custom_type("InventoryGridStacked") - - remove_custom_type("ItemSlot") - - remove_custom_type("CtrlInventory") - remove_custom_type("CtrlInventoryStacked") - remove_custom_type("CtrlInventoryGrid") - remove_custom_type("CtrlInventoryGridEx") - remove_custom_type("CtrlItemSlot") - remove_custom_type("CtrlItemSlotEx") - + remove_inspector_plugin(inspector_plugin) func _add_settings() -> void: - _add_setting("gloot/inspector_control_height", TYPE_INT, 200) + _add_setting("gloot/inspector_control_height", TYPE_INT, 200) func _add_setting(name: String, type: int, value) -> void: - if !ProjectSettings.has_setting(name): - ProjectSettings.set(name, value) - - var property_info = { - "name": name, - "type": type - } - ProjectSettings.add_property_info(property_info) - ProjectSettings.set_initial_value(name, value) + if !ProjectSettings.has_setting(name): + ProjectSettings.set(name, value) + + var property_info = { + "name": name, + "type": type + } + ProjectSettings.add_property_info(property_info) + ProjectSettings.set_initial_value(name, value) diff --git a/addons/gloot/images/icon_inventory.svg.import b/addons/gloot/images/icon_inventory.svg.import index 2af2f081..dadd7032 100644 --- a/addons/gloot/images/icon_inventory.svg.import +++ b/addons/gloot/images/icon_inventory.svg.import @@ -3,26 +3,25 @@ importer="texture" type="CompressedTexture2D" uid="uid://df2n5aculnj82" -path.s3tc="res://.godot/imported/icon_inventory.svg-50bec89eff0070d5b4c81ef749399472.s3tc.ctex" +path="res://.godot/imported/icon_inventory.svg-50bec89eff0070d5b4c81ef749399472.ctex" metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true +"vram_texture": false } [deps] source_file="res://addons/gloot/images/icon_inventory.svg" -dest_files=["res://.godot/imported/icon_inventory.svg-50bec89eff0070d5b4c81ef749399472.s3tc.ctex"] +dest_files=["res://.godot/imported/icon_inventory.svg-50bec89eff0070d5b4c81ef749399472.ctex"] [params] -compress/mode=2 +compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -32,7 +31,7 @@ process/normal_map_invert_y=false process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 -detect_3d/compress_to=0 +detect_3d/compress_to=1 svg/scale=1.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/addons/gloot/images/icon_item.svg.import b/addons/gloot/images/icon_item.svg.import index c8dd2142..87f2f070 100644 --- a/addons/gloot/images/icon_item.svg.import +++ b/addons/gloot/images/icon_item.svg.import @@ -3,26 +3,25 @@ importer="texture" type="CompressedTexture2D" uid="uid://qlt0i7muj2tj" -path.s3tc="res://.godot/imported/icon_item.svg-19f0c54092b35b57bc3510f8accf9092.s3tc.ctex" +path="res://.godot/imported/icon_item.svg-19f0c54092b35b57bc3510f8accf9092.ctex" metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true +"vram_texture": false } [deps] source_file="res://addons/gloot/images/icon_item.svg" -dest_files=["res://.godot/imported/icon_item.svg-19f0c54092b35b57bc3510f8accf9092.s3tc.ctex"] +dest_files=["res://.godot/imported/icon_item.svg-19f0c54092b35b57bc3510f8accf9092.ctex"] [params] -compress/mode=2 +compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -32,7 +31,7 @@ process/normal_map_invert_y=false process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 -detect_3d/compress_to=0 +detect_3d/compress_to=1 svg/scale=1.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/addons/gloot/images/icon_item_ref_slot.svg b/addons/gloot/images/icon_item_ref_slot.svg new file mode 100644 index 00000000..c5da49e5 --- /dev/null +++ b/addons/gloot/images/icon_item_ref_slot.svg @@ -0,0 +1,77 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/addons/gloot/images/icon_item_ref_slot.svg.import b/addons/gloot/images/icon_item_ref_slot.svg.import new file mode 100644 index 00000000..ceb9a0dd --- /dev/null +++ b/addons/gloot/images/icon_item_ref_slot.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dagqmcoxvm3m6" +path="res://.godot/imported/icon_item_ref_slot.svg-c8a8d9826d793965417f19dda840f923.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/gloot/images/icon_item_ref_slot.svg" +dest_files=["res://.godot/imported/icon_item_ref_slot.svg-c8a8d9826d793965417f19dda840f923.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/gloot/plugin.cfg b/addons/gloot/plugin.cfg index 6bcf22ff..1daa2975 100644 --- a/addons/gloot/plugin.cfg +++ b/addons/gloot/plugin.cfg @@ -3,5 +3,5 @@ name="GLoot" description="A universal inventory system for the Godot game engine" author="Peter Kish" -version="2.3.5" +version="2.4.0" script="gloot.gd" diff --git a/addons/gloot/ui/ctrl_dragable.gd b/addons/gloot/ui/ctrl_dragable.gd new file mode 100644 index 00000000..f34975de --- /dev/null +++ b/addons/gloot/ui/ctrl_dragable.gd @@ -0,0 +1,111 @@ +@tool +extends Control + +const CtrlDragable = preload("res://addons/gloot/ui/ctrl_dragable.gd") +const CtrlDropZone = preload("res://addons/gloot/ui/ctrl_drop_zone.gd") + +# Somewhat hacky way to do static signals: +# https://stackoverflow.com/questions/77026156/how-to-write-a-static-event-emitter-in-gdscript/77026952#77026952 + +static var dragable_grabbed: Signal = (func(): + (CtrlDragable as Object).add_user_signal("dragable_grabbed") + return Signal(CtrlDragable, "dragable_grabbed") +).call() + +static var dragable_dropped: Signal = (func(): + (CtrlDragable as Object).add_user_signal("dragable_dropped") + return Signal(CtrlDragable, "dragable_dropped") +).call() + +signal grabbed(position) +signal dropped(zone, position) + +static var _grabbed_dragable: CtrlDragable = null +static var _grab_offset: Vector2 + +var drag_preview: Control +var _preview_node := Node2D.new() +var drag_z_index := 1 + + +static func grab(dragable: CtrlDragable) -> void: + _grabbed_dragable = dragable + _grab_offset = dragable.get_global_mouse_position() - dragable.global_position + + dragable.mouse_filter = Control.MOUSE_FILTER_IGNORE + dragable.grabbed.emit(_grab_offset) + dragable_grabbed.emit(dragable, _grab_offset) + dragable.drag_start() + + +static func release() -> void: + _drop(null) + + +static func release_on(zone: CtrlDropZone) -> void: + _drop(zone) + + +static func _drop(zone: CtrlDropZone) -> void: + var grabbed_dragable := _grabbed_dragable + var grab_offset := _grab_offset + _grabbed_dragable = null + _grab_offset = Vector2.ZERO + grabbed_dragable.mouse_filter = Control.MOUSE_FILTER_PASS + var local_drop_position := Vector2.ZERO + if zone != null: + local_drop_position = zone.get_local_mouse_position() - grab_offset + + grabbed_dragable.drag_end() + grabbed_dragable.dropped.emit(zone, local_drop_position) + dragable_dropped.emit(grabbed_dragable, zone, local_drop_position) + + +static func get_grabbed_dragable() -> CtrlDragable: + return _grabbed_dragable + + +static func get_grab_offset() -> Vector2: + return _grab_offset + + +func drag_start() -> void: + if drag_preview == null: + return + + drag_preview.mouse_filter = Control.MOUSE_FILTER_IGNORE + drag_preview.global_position = get_global_mouse_position() - get_grab_offset() + add_child(_preview_node) + _preview_node.add_child(drag_preview) + _preview_node.z_index = drag_z_index + + +func drag_end() -> void: + if drag_preview == null: + return + + _preview_node.remove_child(drag_preview) + remove_child(_preview_node) + drag_preview.mouse_filter = Control.MOUSE_FILTER_PASS + + +func _process(_delta) -> void: + if drag_preview: + drag_preview.global_position = get_global_mouse_position() - get_grab_offset() + + +func _gui_input(event: InputEvent) -> void: + if !(event is InputEventMouseButton): + return + + var mb_event: InputEventMouseButton = event + if mb_event.button_index != MOUSE_BUTTON_LEFT: + return + + if mb_event.is_pressed(): + grab(self) + + +func is_dragged() -> bool: + return _grabbed_dragable == self + diff --git a/addons/gloot/ui/ctrl_drop_zone.gd b/addons/gloot/ui/ctrl_drop_zone.gd new file mode 100644 index 00000000..992c6331 --- /dev/null +++ b/addons/gloot/ui/ctrl_drop_zone.gd @@ -0,0 +1,64 @@ +@tool +extends Control + +signal dragable_dropped(dragable, position) + +const CtrlDragable = preload("res://addons/gloot/ui/ctrl_dragable.gd") +const CtrlDropZone = preload("res://addons/gloot/ui/ctrl_drop_zone.gd") + +var _mouse_inside := false +static var _drop_event: Dictionary = {} + + +func _process(_delta) -> void: + if _drop_event.is_empty(): + return + + if _drop_event.zone == null: + CtrlDragable.release() + else: + if _drop_event.zone != self: + return + _drop_event.zone.dragable_dropped.emit( + CtrlDragable.get_grabbed_dragable(), + get_local_mouse_position() - CtrlDragable.get_grab_offset() + ) + CtrlDragable.release_on(self) + + _drop_event = {} + + +func _input(event: InputEvent) -> void: + if !(event is InputEventMouseButton): + return + + var mb_event: InputEventMouseButton = event + if mb_event.is_pressed() || mb_event.button_index != MOUSE_BUTTON_LEFT: + return + + if CtrlDragable.get_grabbed_dragable() == null: + return + + if _mouse_inside: + _drop_event = {zone = self} + elif _drop_event.is_empty(): + _drop_event = {zone = null} + + +func activate() -> void: + mouse_filter = Control.MOUSE_FILTER_PASS + + +func deactivate() -> void: + mouse_filter = Control.MOUSE_FILTER_IGNORE + _mouse_inside = false + + +func is_active() -> bool: + return (mouse_filter != Control.MOUSE_FILTER_IGNORE) + + +func _ready() -> void: + mouse_entered.connect(func(): _mouse_inside = true) + mouse_exited.connect(func(): _mouse_inside = false) + diff --git a/addons/gloot/ui/ctrl_inventory.gd b/addons/gloot/ui/ctrl_inventory.gd index a3396312..da7aa2d2 100644 --- a/addons/gloot/ui/ctrl_inventory.gd +++ b/addons/gloot/ui/ctrl_inventory.gd @@ -1,39 +1,40 @@ @tool +@icon("res://addons/gloot/images/icon_ctrl_inventory.svg") class_name CtrlInventory extends Control signal inventory_item_activated(item) @export var inventory_path: NodePath : - get: - return inventory_path - set(new_inv_path): - inventory_path = new_inv_path - var node: Node = get_node_or_null(inventory_path) + get: + return inventory_path + set(new_inv_path): + inventory_path = new_inv_path + var node: Node = get_node_or_null(inventory_path) - if node == null: - return + if node == null: + return - if is_inside_tree(): - assert(node is Inventory) - - self.inventory = node - update_configuration_warnings() + if is_inside_tree(): + assert(node is Inventory) + + self.inventory = node + update_configuration_warnings() @export var default_item_icon: Texture2D var inventory: Inventory = null : - get: - return inventory - set(new_inventory): - if new_inventory == inventory: - return - - _disconnect_inventory_signals() - inventory = new_inventory - _connect_inventory_signals() - - _refresh() + get: + return inventory + set(new_inventory): + if new_inventory == inventory: + return + + _disconnect_inventory_signals() + inventory = new_inventory + _connect_inventory_signals() + + _refresh() var _vbox_container: VBoxContainer var _item_list: ItemList @@ -42,124 +43,124 @@ const KEY_NAME = "name" func _get_configuration_warnings() -> PackedStringArray: - if inventory_path.is_empty(): - return PackedStringArray([ - "This node is not linked to an inventory, so it can't display any content.\n" + \ - "Set the inventory_path property to point to an Inventory node."]) - return PackedStringArray() + if inventory_path.is_empty(): + return PackedStringArray([ + "This node is not linked to an inventory, so it can't display any content.\n" + \ + "Set the inventory_path property to point to an Inventory node."]) + return PackedStringArray() func _ready(): - if Engine.is_editor_hint(): - # Clean up, in case it is duplicated in the editor - if _vbox_container: - _vbox_container.queue_free() + if Engine.is_editor_hint(): + # Clean up, in case it is duplicated in the editor + if _vbox_container: + _vbox_container.queue_free() - _vbox_container = VBoxContainer.new() - _vbox_container.size_flags_horizontal = SIZE_EXPAND_FILL - _vbox_container.size_flags_vertical = SIZE_EXPAND_FILL - _vbox_container.anchor_right = 1.0 - _vbox_container.anchor_bottom = 1.0 - add_child(_vbox_container) + _vbox_container = VBoxContainer.new() + _vbox_container.size_flags_horizontal = SIZE_EXPAND_FILL + _vbox_container.size_flags_vertical = SIZE_EXPAND_FILL + _vbox_container.anchor_right = 1.0 + _vbox_container.anchor_bottom = 1.0 + add_child(_vbox_container) - _item_list = ItemList.new() - _item_list.size_flags_horizontal = SIZE_EXPAND_FILL - _item_list.size_flags_vertical = SIZE_EXPAND_FILL - _item_list.item_activated.connect(Callable(self, "_on_list_item_activated")) - _vbox_container.add_child(_item_list) + _item_list = ItemList.new() + _item_list.size_flags_horizontal = SIZE_EXPAND_FILL + _item_list.size_flags_vertical = SIZE_EXPAND_FILL + _item_list.item_activated.connect(_on_list_item_activated) + _vbox_container.add_child(_item_list) - if has_node(inventory_path): - self.inventory = get_node(inventory_path) + if has_node(inventory_path): + self.inventory = get_node(inventory_path) - _refresh() + _refresh() func _connect_inventory_signals() -> void: - if !inventory: - return + if !inventory: + return - if !inventory.contents_changed.is_connected(Callable(self, "_refresh")): - inventory.contents_changed.connect(Callable(self, "_refresh")) - if !inventory.item_modified.is_connected(Callable(self, "_on_item_modified")): - inventory.item_modified.connect(Callable(self, "_on_item_modified")) + if !inventory.contents_changed.is_connected(_refresh): + inventory.contents_changed.connect(_refresh) + if !inventory.item_modified.is_connected(_on_item_modified): + inventory.item_modified.connect(_on_item_modified) func _disconnect_inventory_signals() -> void: - if !inventory: - return + if !inventory: + return - if inventory.contents_changed.is_connected(Callable(self, "_refresh")): - inventory.contents_changed.disconnect(Callable(self, "_refresh")) - if inventory.item_modified.is_connected(Callable(self, "_on_item_modified")): - inventory.item_modified.disconnect(Callable(self, "_on_item_modified")) + if inventory.contents_changed.is_connected(_refresh): + inventory.contents_changed.disconnect(_refresh) + if inventory.item_modified.is_connected(_on_item_modified): + inventory.item_modified.disconnect(_on_item_modified) func _on_list_item_activated(index: int) -> void: - inventory_item_activated.emit(_get_inventory_item(index)) + inventory_item_activated.emit(_get_inventory_item(index)) func _on_item_modified(_item: InventoryItem) -> void: - _refresh() + _refresh() func _refresh() -> void: - if is_inside_tree(): - _clear_list() - _populate_list() + if is_inside_tree(): + _clear_list() + _populate_list() func _clear_list() -> void: - if _item_list: - _item_list.clear() + if _item_list: + _item_list.clear() func _populate_list() -> void: - if inventory == null: - return + if inventory == null: + return - for item in inventory.get_items(): - var texture := item.get_texture() - if !texture: - texture = default_item_icon - _item_list.add_item(_get_item_title(item), texture) - _item_list.set_item_metadata(_item_list.get_item_count() - 1, item) + for item in inventory.get_items(): + var texture := item.get_texture() + if !texture: + texture = default_item_icon + _item_list.add_item(_get_item_title(item), texture) + _item_list.set_item_metadata(_item_list.get_item_count() - 1, item) func _get_item_title(item: InventoryItem) -> String: - if item == null: - return "" + if item == null: + return "" - var title = item.get_title() - var stack_size: int = InventoryStacked.get_item_stack_size(item) - if stack_size > 1: - title = "%s (x%d)" % [title, stack_size] + var title = item.get_title() + var stack_size: int = InventoryStacked.get_item_stack_size(item) + if stack_size > 1: + title = "%s (x%d)" % [title, stack_size] - return title + return title func get_selected_inventory_item() -> InventoryItem: - if _item_list.get_selected_items().is_empty(): - return null + if _item_list.get_selected_items().is_empty(): + return null - return _get_inventory_item(_item_list.get_selected_items()[0]) + return _get_inventory_item(_item_list.get_selected_items()[0]) func _get_inventory_item(index: int) -> InventoryItem: - assert(index >= 0) - assert(index < _item_list.get_item_count()) + assert(index >= 0) + assert(index < _item_list.get_item_count()) - return _item_list.get_item_metadata(index) + return _item_list.get_item_metadata(index) func deselect_inventory_item() -> void: - _item_list.deselect_all() + _item_list.deselect_all() func select_inventory_item(item: InventoryItem) -> void: - _item_list.deselect_all() - for index in _item_list.item_count: - if _item_list.get_item_metadata(index) != item: - continue - _item_list.select(index) - return + _item_list.deselect_all() + for index in _item_list.item_count: + if _item_list.get_item_metadata(index) != item: + continue + _item_list.select(index) + return diff --git a/addons/gloot/ui/ctrl_inventory_grid.gd b/addons/gloot/ui/ctrl_inventory_grid.gd index 64016a4b..ed10f7fa 100644 --- a/addons/gloot/ui/ctrl_inventory_grid.gd +++ b/addons/gloot/ui/ctrl_inventory_grid.gd @@ -1,4 +1,5 @@ @tool +@icon("res://addons/gloot/images/icon_ctrl_inventory_grid.svg") class_name CtrlInventoryGrid extends Control @@ -8,493 +9,444 @@ signal inventory_item_activated(item) signal item_mouse_entered(item) signal item_mouse_exited(item) +const GlootUndoRedo = preload("res://addons/gloot/editor/gloot_undo_redo.gd") +const CtrlInventoryItemRect = preload("res://addons/gloot/ui/ctrl_inventory_item_rect.gd") +const CtrlDropZone = preload("res://addons/gloot/ui/ctrl_drop_zone.gd") +const CtrlDragable = preload("res://addons/gloot/ui/ctrl_dragable.gd") + @export var field_dimensions: Vector2 = Vector2(32, 32) : - get: - return field_dimensions - set(new_field_dimensions): - field_dimensions = new_field_dimensions - _refresh_grid_container() + get: + return field_dimensions + set(new_field_dimensions): + field_dimensions = new_field_dimensions + _refresh_grid_container() @export var item_spacing: int = 0 : - get: - return item_spacing - set(new_item_spacing): - item_spacing = new_item_spacing - _refresh() + get: + return item_spacing + set(new_item_spacing): + item_spacing = new_item_spacing + _refresh() @export var draw_grid: bool = true : - get: - return draw_grid - set(new_draw_grid): - draw_grid = new_draw_grid - _refresh() + get: + return draw_grid + set(new_draw_grid): + draw_grid = new_draw_grid + _refresh() @export var grid_color: Color = Color.BLACK : - get: - return grid_color - set(new_grid_color): - grid_color = new_grid_color - _refresh() + get: + return grid_color + set(new_grid_color): + grid_color = new_grid_color + _refresh() @export var draw_selections: bool = false : - get: - return draw_selections - set(new_draw_selections): - draw_selections = new_draw_selections + get: + return draw_selections + set(new_draw_selections): + draw_selections = new_draw_selections @export var selection_color: Color = Color.GRAY @export var inventory_path: NodePath : - get: - return inventory_path - set(new_inv_path): - inventory_path = new_inv_path - var node: Node = get_node_or_null(inventory_path) - - if node == null: - return - - if is_inside_tree(): - assert(node is InventoryGrid) - - self.inventory = node - update_configuration_warnings() + get: + return inventory_path + set(new_inv_path): + inventory_path = new_inv_path + var node: Node = get_node_or_null(inventory_path) + + if node == null: + return + + if is_inside_tree(): + assert(node is InventoryGrid) + + self.inventory = node + update_configuration_warnings() @export var default_item_texture: Texture2D : - get: - return default_item_texture - set(new_default_item_texture): - default_item_texture = new_default_item_texture - _refresh() + get: + return default_item_texture + set(new_default_item_texture): + default_item_texture = new_default_item_texture + _refresh() @export var stretch_item_sprites: bool = true : - get: - return stretch_item_sprites - set(new_stretch_item_sprites): - stretch_item_sprites = new_stretch_item_sprites - _refresh() + get: + return stretch_item_sprites + set(new_stretch_item_sprites): + stretch_item_sprites = new_stretch_item_sprites + _refresh() @export var drag_sprite_z_index: int = 1 var inventory: InventoryGrid = null : - get: - return inventory - set(new_inventory): - if inventory == new_inventory: - return - - _select(null) - - _disconnect_inventory_signals() - inventory = new_inventory - _connect_inventory_signals() - - _refresh() -var _gloot_undo_redo = null -var _grabbed_ctrl_inventory_item = null -var _grab_offset: Vector2 -var _ctrl_inventory_item_script = preload("ctrl_inventory_item_rect.gd") -var _drag_sprite: WeakRef = weakref(null) + get: + return inventory + set(new_inventory): + if inventory == new_inventory: + return + + _select(null) + + _disconnect_inventory_signals() + inventory = new_inventory + _connect_inventory_signals() + + _refresh() var _ctrl_item_container: WeakRef = weakref(null) +var _ctrl_drop_zone: CtrlDropZone var _selected_item: InventoryItem = null -var _gloot: Node = null func _get_configuration_warnings() -> PackedStringArray: - if inventory_path.is_empty(): - return PackedStringArray([ - "This node is not linked to an inventory, so it can't display any content.\n" + \ - "Set the inventory_path property to point to an InventoryGrid node."]) - return PackedStringArray() + if inventory_path.is_empty(): + return PackedStringArray([ + "This node is not linked to an inventory, so it can't display any content.\n" + \ + "Set the inventory_path property to point to an InventoryGrid node."]) + return PackedStringArray() func _ready() -> void: - _gloot = _get_gloot() - - if Engine.is_editor_hint(): - # Clean up, in case it is duplicated in the editor - var ctrl_item_container = _ctrl_item_container.get_ref() - if ctrl_item_container: - ctrl_item_container.queue_free() - if _drag_sprite.get_ref(): - _drag_sprite.get_ref().queue_free() - - var ctrl_item_container = Control.new() - ctrl_item_container.size_flags_horizontal = SIZE_EXPAND_FILL - ctrl_item_container.size_flags_vertical = SIZE_EXPAND_FILL - ctrl_item_container.anchor_right = 1.0 - ctrl_item_container.anchor_bottom = 1.0 - add_child(ctrl_item_container) - _ctrl_item_container = weakref(ctrl_item_container) - - var drag_sprite = Sprite2D.new() - drag_sprite.centered = false - drag_sprite.z_index = drag_sprite_z_index - drag_sprite.hide() - add_child(drag_sprite) - _drag_sprite = weakref(drag_sprite) - - if has_node(inventory_path): - self.inventory = get_node_or_null(inventory_path) - - _refresh() - if !Engine.is_editor_hint() && _gloot: - _gloot.item_dropped.connect(Callable(self, "_on_item_dropped")) - - -func _get_gloot() -> Node: - # This is a "temporary" hack until a better solution is found! - # This is a tool script that is also executed inside the editor, where the "GLoot" singleton is - # not visible - leading to errors inside the editor. - # To work around that, we obtain the singleton by name. - return get_tree().root.get_node_or_null("GLoot") + if Engine.is_editor_hint(): + # Clean up, in case it is duplicated in the editor + var ctrl_item_container = _ctrl_item_container.get_ref() + if ctrl_item_container: + ctrl_item_container.queue_free() + + var ctrl_item_container = Control.new() + ctrl_item_container.size_flags_horizontal = SIZE_EXPAND_FILL + ctrl_item_container.size_flags_vertical = SIZE_EXPAND_FILL + ctrl_item_container.anchor_right = 1.0 + ctrl_item_container.anchor_bottom = 1.0 + add_child(ctrl_item_container) + _ctrl_item_container = weakref(ctrl_item_container) + + _ctrl_drop_zone = CtrlDropZone.new() + _ctrl_drop_zone.dragable_dropped.connect(_on_dragable_dropped) + _ctrl_drop_zone.size = size + resized.connect(func(): _ctrl_drop_zone.size = size) + CtrlDragable.dragable_grabbed.connect(func(dragable: CtrlDragable, grab_position: Vector2): + _ctrl_drop_zone.activate() + ) + CtrlDragable.dragable_dropped.connect(func(dragable: CtrlDragable, zone: CtrlDropZone, drop_position: Vector2): + _ctrl_drop_zone.deactivate() + ) + _ctrl_drop_zone.mouse_entered.connect(_on_drop_zone_mouse_entered) + _ctrl_drop_zone.mouse_exited.connect(_on_drop_zone_mouse_exited) + add_child(_ctrl_drop_zone) + _ctrl_drop_zone.deactivate() + + ctrl_item_container.resized.connect(func(): _ctrl_drop_zone.size = ctrl_item_container.size) + + if has_node(inventory_path): + self.inventory = get_node_or_null(inventory_path) + + _refresh() func _connect_inventory_signals() -> void: - if !inventory: - return + if !inventory: + return - if !inventory.contents_changed.is_connected(Callable(self, "_refresh")): - inventory.contents_changed.connect(Callable(self, "_refresh")) - if !inventory.item_modified.is_connected(Callable(self, "_on_item_modified")): - inventory.item_modified.connect(Callable(self, "_on_item_modified")) - if !inventory.size_changed.is_connected(Callable(self, "_on_inventory_resized")): - inventory.size_changed.connect(Callable(self, "_on_inventory_resized")) - if !inventory.item_removed.is_connected(Callable(self, "_on_item_removed")): - inventory.item_removed.connect(Callable(self, "_on_item_removed")) + if !inventory.contents_changed.is_connected(_refresh): + inventory.contents_changed.connect(_refresh) + if !inventory.item_modified.is_connected(_on_item_modified): + inventory.item_modified.connect(_on_item_modified) + if !inventory.size_changed.is_connected(_on_inventory_resized): + inventory.size_changed.connect(_on_inventory_resized) + if !inventory.item_removed.is_connected(_on_item_removed): + inventory.item_removed.connect(_on_item_removed) func _disconnect_inventory_signals() -> void: - if !inventory: - return + if !inventory: + return - if inventory.contents_changed.is_connected(Callable(self, "_refresh")): - inventory.contents_changed.disconnect(Callable(self, "_refresh")) - if inventory.item_modified.is_connected(Callable(self, "_on_item_modified")): - inventory.item_modified.disconnect(Callable(self, "_on_item_modified")) - if inventory.size_changed.is_connected(Callable(self, "_on_inventory_resized")): - inventory.size_changed.disconnect(Callable(self, "_on_inventory_resized")) - if inventory.item_removed.is_connected(Callable(self, "_on_item_removed")): - inventory.item_removed.disconnect(Callable(self, "_on_item_removed")) + if inventory.contents_changed.is_connected(_refresh): + inventory.contents_changed.disconnect(_refresh) + if inventory.item_modified.is_connected(_on_item_modified): + inventory.item_modified.disconnect(_on_item_modified) + if inventory.size_changed.is_connected(_on_inventory_resized): + inventory.size_changed.disconnect(_on_inventory_resized) + if inventory.item_removed.is_connected(_on_item_removed): + inventory.item_removed.disconnect(_on_item_removed) func _on_item_modified(_item: InventoryItem) -> void: - _refresh() + _refresh() func _on_inventory_resized() -> void: - _refresh() + _refresh() func _on_item_removed(_item: InventoryItem) -> void: - if _item == _selected_item: - _select(null) + if _item == _selected_item: + _select(null) func _refresh() -> void: - _refresh_grid_container() - _clear_list() - _populate_list() - queue_redraw() - - -func _process(_delta) -> void: - var drag_sprite = _drag_sprite.get_ref() - if drag_sprite && drag_sprite.visible: - drag_sprite.global_position = get_global_mouse_position() - _grab_offset + _refresh_grid_container() + _clear_list() + _populate_list() + queue_redraw() func _draw() -> void: - if !inventory: - return - if draw_grid: - _draw_grid(Vector2.ZERO, inventory.size.x, inventory.size.y, field_dimensions, item_spacing) + if !inventory: + return + if draw_grid: + _draw_grid(Vector2.ZERO, inventory.size.x, inventory.size.y, field_dimensions, item_spacing) func _draw_grid(pos: Vector2, w: int, h: int, fsize: Vector2, spacing: int) -> void: - if w <= 0 || h <= 0 || spacing < 0: - return - - if spacing <= 1: - var rect = Rect2(pos, _get_inventory_size_px()) - draw_rect(rect, grid_color, false) - for i in range(w): - var from: Vector2 = Vector2(i * fsize.x, 0) + pos - var to: Vector2 = Vector2(i * fsize.x, rect.size.y) + pos - from += Vector2(spacing, 0) - to += Vector2(spacing, 0) - draw_line(from, to, grid_color) - for j in range(h): - var from: Vector2 = Vector2(0, j * fsize.y) + pos - var to: Vector2 = Vector2(rect.size.x, j * fsize.y) + pos - from += Vector2(0, spacing) - to += Vector2(0, spacing) - draw_line(from, to, grid_color) - else: - for i in range(w): - for j in range(h): - var field_pos = pos + Vector2(i * fsize.x, j * fsize.y) + Vector2(i, j) * spacing - var field_rect = Rect2(field_pos, fsize) - draw_rect(field_rect, grid_color, false) + if w <= 0 || h <= 0 || spacing < 0: + return + + if spacing <= 1: + var rect = Rect2(pos, _get_inventory_size_px()) + draw_rect(rect, grid_color, false) + for i in range(w): + var from: Vector2 = Vector2(i * fsize.x, 0) + pos + var to: Vector2 = Vector2(i * fsize.x, rect.size.y) + pos + from += Vector2(spacing, 0) + to += Vector2(spacing, 0) + draw_line(from, to, grid_color) + for j in range(h): + var from: Vector2 = Vector2(0, j * fsize.y) + pos + var to: Vector2 = Vector2(rect.size.x, j * fsize.y) + pos + from += Vector2(0, spacing) + to += Vector2(0, spacing) + draw_line(from, to, grid_color) + else: + for i in range(w): + for j in range(h): + var field_pos = pos + Vector2(i * fsize.x, j * fsize.y) + Vector2(i, j) * spacing + var field_rect = Rect2(field_pos, fsize) + draw_rect(field_rect, grid_color, false) func _get_inventory_size_px() -> Vector2: - var result := Vector2(inventory.size.x * field_dimensions.x, \ - inventory.size.y * field_dimensions.y) + var result := Vector2(inventory.size.x * field_dimensions.x, \ + inventory.size.y * field_dimensions.y) - # Also take item spacing into consideration - result += Vector2(inventory.size - Vector2i.ONE) * item_spacing + # Also take item spacing into consideration + result += Vector2(inventory.size - Vector2i.ONE) * item_spacing - return result + return result func _refresh_grid_container() -> void: - if !inventory: - return + if !inventory: + return - custom_minimum_size = _get_inventory_size_px() - size = custom_minimum_size + custom_minimum_size = _get_inventory_size_px() + size = custom_minimum_size func _clear_list() -> void: - var ctrl_item_container = _ctrl_item_container.get_ref() - if !ctrl_item_container: - return + var ctrl_item_container = _ctrl_item_container.get_ref() + if !ctrl_item_container: + return - for ctrl_inventory_item in ctrl_item_container.get_children(): - ctrl_item_container.remove_child(ctrl_inventory_item) - ctrl_inventory_item.queue_free() - - _grabbed_ctrl_inventory_item = null + for ctrl_inventory_item in ctrl_item_container.get_children(): + ctrl_item_container.remove_child(ctrl_inventory_item) + ctrl_inventory_item.queue_free() func _populate_list() -> void: - var ctrl_item_container = _ctrl_item_container.get_ref() - if inventory == null || ctrl_item_container == null: - return - - for item in inventory.get_items(): - var ctrl_inventory_item = _ctrl_inventory_item_script.new() - ctrl_inventory_item.ctrl_inventory = self - ctrl_inventory_item.texture = default_item_texture - ctrl_inventory_item.item = item - ctrl_inventory_item.grabbed.connect(Callable(self, "_on_item_grab")) - ctrl_inventory_item.activated.connect(Callable(self, "_on_item_activated")) - ctrl_inventory_item.mouse_entered.connect(Callable(self, "_on_item_mouse_entered").bind(ctrl_inventory_item)) - ctrl_inventory_item.mouse_exited.connect(Callable(self, "_on_item_mouse_exited").bind(ctrl_inventory_item)) - ctrl_item_container.add_child(ctrl_inventory_item) - - _refresh_selection() + var ctrl_item_container = _ctrl_item_container.get_ref() + if inventory == null || ctrl_item_container == null: + return + + for item in inventory.get_items(): + var ctrl_inventory_item = CtrlInventoryItemRect.new() + ctrl_inventory_item.texture = default_item_texture + ctrl_inventory_item.item = item + ctrl_inventory_item.drag_z_index = drag_sprite_z_index + ctrl_inventory_item.grabbed.connect(_on_item_grab.bind(ctrl_inventory_item)) + ctrl_inventory_item.dropped.connect(_on_item_drop.bind(ctrl_inventory_item)) + ctrl_inventory_item.activated.connect(_on_item_activated.bind(ctrl_inventory_item)) + ctrl_inventory_item.mouse_entered.connect(_on_item_mouse_entered.bind(ctrl_inventory_item)) + ctrl_inventory_item.mouse_exited.connect(_on_item_mouse_exited.bind(ctrl_inventory_item)) + ctrl_inventory_item.size = _get_item_sprite_size(item) + + ctrl_inventory_item.position = _get_field_position(inventory.get_item_position(item)) + if !stretch_item_sprites: + # Position the item centered when it's not streched + ctrl_inventory_item.position += _get_unstreched_sprite_offset(item) + + ctrl_item_container.add_child(ctrl_inventory_item) + + _refresh_selection() func _refresh_selection() -> void: - if !draw_selections: - return - - if !_ctrl_item_container.get_ref(): - return - - for ctrl_item in _ctrl_item_container.get_ref().get_children(): - ctrl_item.selected = ctrl_item.item && (ctrl_item.item == _selected_item) - ctrl_item.selection_bg_color = selection_color - - -func _on_item_grab(ctrl_inventory_item, offset: Vector2) -> void: - _select(null) - _grabbed_ctrl_inventory_item = ctrl_inventory_item - _grabbed_ctrl_inventory_item.hide() - _grab_offset = offset - if _gloot: - _gloot._grabbed_inventory_item = get_grabbed_item() - _gloot._grab_offset = _grab_offset - var drag_sprite = _drag_sprite.get_ref() - if drag_sprite: - drag_sprite.texture = ctrl_inventory_item.texture - if drag_sprite.texture == null: - drag_sprite.texture = default_item_texture - if stretch_item_sprites: - var texture_size: Vector2 = drag_sprite.texture.get_size() - var streched_size: Vector2 = _get_streched_item_sprite_size(ctrl_inventory_item.item) - drag_sprite.scale = streched_size / texture_size - drag_sprite.show() - - -func _get_streched_item_sprite_size(item: InventoryItem) -> Vector2: - var item_size := inventory.get_item_size(item) - var sprite_size := Vector2(item_size) * field_dimensions + if !draw_selections: + return - # Also take item spacing into consideration - sprite_size += (Vector2(item_size) - Vector2.ONE) * item_spacing + if !_ctrl_item_container.get_ref(): + return - return sprite_size + for ctrl_item in _ctrl_item_container.get_ref().get_children(): + ctrl_item.selected = ctrl_item.item && (ctrl_item.item == _selected_item) + ctrl_item.selection_bg_color = selection_color -func _on_item_activated(ctrl_inventory_item) -> void: - var item = ctrl_inventory_item.item - if !item: - return +func _on_item_grab(offset: Vector2, ctrl_inventory_item: CtrlInventoryItemRect) -> void: + _select(null) - _grabbed_ctrl_inventory_item = null - if _drag_sprite.get_ref(): - _drag_sprite.get_ref().hide() - inventory_item_activated.emit(item) +func _on_item_drop(zone: CtrlDropZone, drop_position: Vector2, ctrl_inventory_item: CtrlInventoryItemRect) -> void: + var item = ctrl_inventory_item.item + # The item might have been freed in case the item stack has been moved and merged with another + # stack. + if is_instance_valid(item) and inventory.has_item(item): + _select(item) -func _on_item_mouse_entered(ctrl_inventory_item) -> void: - item_mouse_entered.emit(ctrl_inventory_item.item) +func _get_item_sprite_size(item: InventoryItem) -> Vector2: + if stretch_item_sprites: + return _get_streched_item_sprite_size(item) + else: + return item.get_texture().get_size() -func _on_item_mouse_exited(ctrl_inventory_item) -> void: - item_mouse_exited.emit(ctrl_inventory_item.item) - - -func _select(item: InventoryItem) -> void: - if item == _selected_item: - return - - _selected_item = item - _refresh_selection() - selection_changed.emit() +func _get_streched_item_sprite_size(item: InventoryItem) -> Vector2: + var item_size := inventory.get_item_size(item) + var sprite_size := Vector2(item_size) * field_dimensions + # Also take item spacing into consideration + sprite_size += (Vector2(item_size) - Vector2.ONE) * item_spacing -# Using _input instead of _gui_input because _gui_input is only called for "mouse released" -# (InputEventMouseButton.pressed==false) events if the same control previously triggered the "mouse -# pressed" event (InputEventMouseButton.pressed==true). -# This makes dragging items from one CtrlInventoryGrid to another impossible to implement with -# _gui_input. -func _input(event: InputEvent) -> void: - if !(event is InputEventMouseButton): - return + return sprite_size - if !_grabbed_ctrl_inventory_item: - return - var mb_event: InputEventMouseButton = event - if mb_event.is_pressed() || mb_event.button_index != MOUSE_BUTTON_LEFT: - return +func _get_unstreched_sprite_offset(item: InventoryItem) -> Vector2: + var texture = item.get_texture() + if texture == null: + texture = default_item_texture + if texture == null: + return Vector2.ZERO + return (_get_streched_item_sprite_size(item) - texture.get_size()) / 2 - _handle_item_release(_grabbed_ctrl_inventory_item.item) +func _on_item_activated(ctrl_inventory_item: CtrlInventoryItemRect) -> void: + var item = ctrl_inventory_item.item + if !item: + return -func _handle_item_release(item: InventoryItem) -> void: - _grabbed_ctrl_inventory_item.show() + inventory_item_activated.emit(item) - if _gloot: - _gloot._grabbed_inventory_item = null - var global_grabbed_item_pos := _get_grabbed_item_global_pos() - if _is_hovering(global_grabbed_item_pos): - _handle_item_move(item, global_grabbed_item_pos) - else: - _handle_item_drop(item, global_grabbed_item_pos) +func _on_item_mouse_entered(ctrl_inventory_item) -> void: + item_mouse_entered.emit(ctrl_inventory_item.item) - # The item might have been freed in case the item stack has been moved and merged with another - # stack. - if is_instance_valid(item) and inventory.has_item(item): - _select(item) - _grabbed_ctrl_inventory_item = null - if _drag_sprite.get_ref(): - _drag_sprite.get_ref().hide() +func _on_item_mouse_exited(ctrl_inventory_item) -> void: + item_mouse_exited.emit(ctrl_inventory_item.item) -func _handle_item_move(item: InventoryItem, global_grabbed_item_pos: Vector2) -> void: - var field_coords = get_field_coords(global_grabbed_item_pos) - if inventory.rect_free(Rect2i(field_coords, inventory.get_item_size(item)), item): - _move_item(item, field_coords) - elif inventory is InventoryGridStacked: - _merge_item(item, field_coords) +func _select(item: InventoryItem) -> void: + if item == _selected_item: + return + _selected_item = item + _refresh_selection() + selection_changed.emit() -func _handle_item_drop(item: InventoryItem, global_grabbed_item_pos: Vector2) -> void: - # Using WeakRefs for the item_dropped signals, as items might be freed at some point of dropping - # (when merging with other items) - var wr_item := weakref(item) - item_dropped.emit(wr_item, global_grabbed_item_pos) - if !Engine.is_editor_hint() && _gloot: - _gloot.item_dropped.emit(wr_item, global_grabbed_item_pos) +func _on_drop_zone_mouse_entered() -> void: + if CtrlDragable._grabbed_dragable == null: + return + var _grabbed_ctrl := (CtrlDragable._grabbed_dragable as CtrlInventoryItemRect) + if _grabbed_ctrl == null || _grabbed_ctrl.item == null: + return + CtrlInventoryItemRect.override_preview_size(_get_item_sprite_size(_grabbed_ctrl.item)) -func _get_grabbed_item_global_pos() -> Vector2: - return get_global_mouse_position() - _grab_offset + (field_dimensions / 2) +func _on_drop_zone_mouse_exited() -> void: + CtrlInventoryItemRect.restore_preview_size() -func _on_item_dropped(wr_item: WeakRef, global_drop_pos: Vector2) -> void: - var item: InventoryItem = wr_item.get_ref() - if item == null: - return - if !_is_hovering(global_drop_pos): - return +func _on_dragable_dropped(dragable: CtrlDragable, drop_position: Vector2) -> void: + var item: InventoryItem = dragable.item + if item == null: + return - if !inventory: - return + if !inventory: + return - var source_inventory: InventoryGrid = item.get_inventory() - if source_inventory.item_protoset != inventory.item_protoset: - return + if inventory.has_item(item): + _handle_item_move(item, drop_position) + else: + _handle_item_transfer(item, drop_position) - var field_coords = get_field_coords(global_drop_pos) - source_inventory.transfer_to(item, inventory, field_coords) +func _handle_item_move(item: InventoryItem, drop_position: Vector2) -> void: + var field_coords = get_field_coords(drop_position + (field_dimensions / 2)) + if inventory.rect_free(Rect2i(field_coords, inventory.get_item_size(item)), item): + _move_item(item, field_coords) + elif inventory is InventoryGridStacked: + _merge_item(item, field_coords) -func _is_hovering(global_pos: Vector2) -> bool: - return get_global_rect().has_point(global_pos) +func _handle_item_transfer(item: InventoryItem, drop_position: Vector2) -> void: + var source_inventory: InventoryGrid = item.get_inventory() + + var field_coords = get_field_coords(drop_position + (field_dimensions / 2)) + if source_inventory != null: + if source_inventory.item_protoset != inventory.item_protoset: + return + source_inventory.transfer_to(item, inventory, field_coords) + else: + inventory.add_item_at(item, field_coords) -func get_field_coords(global_pos: Vector2) -> Vector2i: - var local_pos = global_pos - get_global_rect().position - # We have to consider the item spacing when calculating field coordinates, thus we expand the - # size of each field by Vector2(item_spacing, item_spacing). - var field_dimensions_ex = field_dimensions + Vector2(item_spacing, item_spacing) +func get_field_coords(local_pos: Vector2) -> Vector2i: + # We have to consider the item spacing when calculating field coordinates, thus we expand the + # size of each field by Vector2(item_spacing, item_spacing). + var field_dimensions_ex = field_dimensions + Vector2(item_spacing, item_spacing) - # We also don't want the item spacing to disturb snapping to the closest field, so we add half - # the spacing to the local coordinates. - var local_pos_ex = local_pos + Vector2(item_spacing, item_spacing) / 2 + # We also don't want the item spacing to disturb snapping to the closest field, so we add half + # the spacing to the local coordinates. + var local_pos_ex = local_pos + (Vector2(item_spacing, item_spacing) / 2) - var x: int = local_pos_ex.x / (field_dimensions_ex.x) - var y: int = local_pos_ex.y / (field_dimensions_ex.y) - return Vector2i(x, y) + var x: int = local_pos_ex.x / (field_dimensions_ex.x) + var y: int = local_pos_ex.y / (field_dimensions_ex.y) + return Vector2i(x, y) func get_selected_inventory_item() -> InventoryItem: - return _selected_item + return _selected_item -# TODO: Find a better way for undoing/redoing item movements -func _move_item(item: InventoryItem, position: Vector2i) -> void: - if _gloot_undo_redo: - _gloot_undo_redo.move_inventory_item(inventory, item, position) - else: - inventory.move_item_to(item, position) +func _move_item(item: InventoryItem, move_position: Vector2i) -> void: + if Engine.is_editor_hint(): + GlootUndoRedo.move_inventory_item(inventory, item, move_position) + else: + inventory.move_item_to(item, move_position) - -# TODO: Find a better way for undoing/redoing item merges + func _merge_item(item_src: InventoryItem, position: Vector2i) -> void: - var item_dst = (inventory as InventoryGridStacked)._get_mergable_item_at(item_src, position) - if item_dst == null: - return + var item_dst = (inventory as InventoryGridStacked)._get_mergable_item_at(item_src, position) + if item_dst == null: + return - if _gloot_undo_redo: - _gloot_undo_redo.join_inventory_items(inventory, item_dst, item_src) - else: - (inventory as InventoryGridStacked).join(item_dst, item_src) + if Engine.is_editor_hint(): + GlootUndoRedo.join_inventory_items(inventory, item_dst, item_src) + else: + (inventory as InventoryGridStacked).join(item_dst, item_src) func _get_field_position(field_coords: Vector2i) -> Vector2: - var field_position = Vector2(field_coords.x * field_dimensions.x, \ - field_coords.y * field_dimensions.y) - field_position += Vector2(item_spacing * field_coords) - return field_position + var field_position = Vector2(field_coords.x * field_dimensions.x, \ + field_coords.y * field_dimensions.y) + field_position += Vector2(item_spacing * field_coords) + return field_position func _get_global_field_position(field_coords: Vector2i) -> Vector2: - return _get_field_position(field_coords) + global_position - - -func get_grabbed_item() -> InventoryItem: - if _grabbed_ctrl_inventory_item: - return _grabbed_ctrl_inventory_item.item - - return null + return _get_field_position(field_coords) + global_position func deselect_inventory_item() -> void: - _select(null) + _select(null) func select_inventory_item(item: InventoryItem) -> void: - _select(item) + _select(item) diff --git a/addons/gloot/ui/ctrl_inventory_grid_ex.gd b/addons/gloot/ui/ctrl_inventory_grid_ex.gd index 74368044..5344e3f3 100644 --- a/addons/gloot/ui/ctrl_inventory_grid_ex.gd +++ b/addons/gloot/ui/ctrl_inventory_grid_ex.gd @@ -1,4 +1,5 @@ @tool +@icon("res://addons/gloot/images/icon_ctrl_inventory_grid.svg") class_name CtrlInventoryGridEx extends CtrlInventoryGrid @@ -48,6 +49,7 @@ func _dequeue_highlight(): func _refresh() -> void: super._refresh() + _refresh_field_background_grid() func _refresh_selection() -> void: @@ -101,16 +103,8 @@ func _create_selection_panel() -> void: _set_panel_style(_selection_panel, selection_style) _selection_panel.visible = (_selected_item != null) && (selection_style != null) _selection_panel.mouse_filter = Control.MOUSE_FILTER_IGNORE - _selection_panel.mouse_entered.connect(Callable(self, "_on_selection_mouse_entered")) - _selection_panel.mouse_exited.connect(Callable(self, "_on_selection_mouse_exited")) - - -func _on_selection_mouse_entered() -> void: - item_mouse_entered.emit(_selected_item) - - -func _on_selection_mouse_exited() -> void: - item_mouse_exited.emit(_selected_item) + _selection_panel.mouse_entered.connect(func(): item_mouse_entered.emit(_selected_item)) + _selection_panel.mouse_exited.connect(func(): item_mouse_exited.emit(_selected_item)) func _set_panel_style(panel: Panel, style: StyleBox) -> void: @@ -124,7 +118,7 @@ func _ready() -> void: _create_selection_panel() _create_field_background_grid() - selection_changed.connect(Callable(self, "_on_selection_changed")) + selection_changed.connect(_on_selection_changed) func _on_selection_changed() -> void: @@ -145,16 +139,14 @@ func _on_inventory_resized() -> void: func _input(event) -> void: - super._input(event) - if !(event is InputEventMouseMotion): return if !inventory: return var hovered_field_coords := Vector2i(-1, -1) - if _is_hovering(get_global_mouse_position()): - hovered_field_coords = get_field_coords(get_global_mouse_position()) + if _is_hovering(get_local_mouse_position()): + hovered_field_coords = get_field_coords(get_local_mouse_position()) _reset_highlights() if !field_highlighted_style: @@ -187,17 +179,21 @@ func _highlight_grabbed_item(style: StyleBox) -> bool: if !grabbed_item: return false - var global_grabbed_item_pos: Vector2 = _get_global_grabbed_item_global_pos() + var global_grabbed_item_pos: Vector2 = _get_global_grabbed_item_local_pos() if !_is_hovering(global_grabbed_item_pos): return false - var grabbed_item_coords := get_field_coords(global_grabbed_item_pos) + var grabbed_item_coords := get_field_coords(global_grabbed_item_pos + (field_dimensions / 2)) var item_size := inventory.get_item_size(grabbed_item) var rect := Rect2i(grabbed_item_coords, item_size) _highlight_rect(rect, style, true) return true +func _is_hovering(local_pos: Vector2) -> bool: + return get_rect().has_point(local_pos) + + func _highlight_item(item: InventoryItem, style: StyleBox) -> bool: if !item || !style: return false @@ -228,14 +224,13 @@ func _highlight_rect(rect: Rect2i, style: StyleBox, queue_for_reset: bool) -> vo func _get_global_grabbed_item() -> InventoryItem: - var grabbed_item: InventoryItem = get_grabbed_item() - if !grabbed_item && _gloot: - grabbed_item = _gloot._grabbed_inventory_item - return grabbed_item + if CtrlDragable.get_grabbed_dragable() == null: + return null + return (CtrlDragable.get_grabbed_dragable() as CtrlInventoryItemRect).item -func _get_global_grabbed_item_global_pos() -> Vector2: - if _gloot && _gloot._grabbed_inventory_item: - return get_global_mouse_position() - _gloot._grab_offset + (field_dimensions / 2) +func _get_global_grabbed_item_local_pos() -> Vector2: + if CtrlDragable.get_grabbed_dragable(): + return get_local_mouse_position() - CtrlDragable.get_grab_offset() return Vector2(-1, -1) diff --git a/addons/gloot/ui/ctrl_inventory_item_rect.gd b/addons/gloot/ui/ctrl_inventory_item_rect.gd index 971befc6..60512568 100644 --- a/addons/gloot/ui/ctrl_inventory_item_rect.gd +++ b/addons/gloot/ui/ctrl_inventory_item_rect.gd @@ -1,66 +1,78 @@ class_name CtrlInventoryItemRect -extends Control +extends "res://addons/gloot/ui/ctrl_dragable.gd" const StacksConstraint = preload("res://addons/gloot/core/constraints/stacks_constraint.gd") -signal grabbed(offset) signal activated var item: InventoryItem : get: return item set(new_item): + if item == new_item: + return + + _disconnect_item_signals() + _connect_item_signals(new_item) + item = new_item - if item && ctrl_inventory: - var texture_path = item.get_property(CtrlInventory.KEY_IMAGE) - if texture_path: - texture = load(texture_path) - _refresh() -var ctrl_inventory + if item: + texture = item.get_texture() + else: + texture = null var texture: Texture2D : get: return texture set(new_texture): + if new_texture == texture: + return texture = new_texture + if texture != null: + size = texture.get_size() queue_redraw() var selected: bool = false : get: return selected set(new_selected): + if new_selected == selected: + return selected = new_selected queue_redraw() var selection_bg_color: Color = Color.GRAY : get: return selection_bg_color set(new_selection_bg_color): + if new_selection_bg_color == selection_bg_color: + return selection_bg_color = new_selection_bg_color queue_redraw() +var item_slot: ItemSlot +static var _stored_preview_size: Vector2 +static var _stored_preview_offset: Vector2 -func _refresh() -> void: - _refresh_size() - _refresh_pos() - - -func _refresh_size() -> void: - if ctrl_inventory.stretch_item_sprites: - size = ctrl_inventory._get_streched_item_sprite_size(item) - else: - size = texture.get_size() - - -func _refresh_pos() -> void: - var item_pos: Vector2 = _get_item_position() +func _connect_item_signals(new_item: InventoryItem) -> void: + if new_item == null: + return - position = ctrl_inventory._get_field_position(item_pos) + if !new_item.protoset_changed.is_connected(queue_redraw): + new_item.protoset_changed.connect(queue_redraw) + if !new_item.prototype_id_changed.is_connected(queue_redraw): + new_item.prototype_id_changed.connect(queue_redraw) + if !new_item.properties_changed.is_connected(queue_redraw): + new_item.properties_changed.connect(queue_redraw) - if !ctrl_inventory.stretch_item_sprites: - # Position the item centered when it's not streched - position += _get_unstreched_sprite_offset() +func _disconnect_item_signals() -> void: + if item == null: + return -func _get_unstreched_sprite_offset() -> Vector2: - return (ctrl_inventory._get_streched_item_sprite_size(item) - texture.get_size()) / 2 + if item.protoset_changed.is_connected(queue_redraw): + item.protoset_changed.disconnect(queue_redraw) + if item.prototype_id_changed.is_connected(queue_redraw): + item.prototype_id_changed.disconnect(queue_redraw) + if item.properties_changed.is_connected(queue_redraw): + item.properties_changed.disconnect(queue_redraw) func _get_item_size() -> Vector2: @@ -76,11 +88,42 @@ func _get_item_position() -> Vector2: func _ready() -> void: - if item && ctrl_inventory: - _refresh() + drag_preview = CtrlInventoryItemRect.new() + + +func drag_start() -> void: + if drag_preview != null: + drag_preview.item = item + drag_preview.texture = texture + drag_preview.size = size + super.drag_start() + + +static func override_preview_size(s: Vector2) -> void: + if CtrlDragable._grabbed_dragable == null: + return + var _grabbed_ctrl := (CtrlDragable._grabbed_dragable as CtrlInventoryItemRect) + if _grabbed_ctrl.item == null || _grabbed_ctrl.drag_preview == null: + return + _stored_preview_size = _grabbed_ctrl.drag_preview.size + _stored_preview_offset = CtrlDragable._grab_offset + CtrlDragable._grab_offset *= s/_grabbed_ctrl.drag_preview.size + _grabbed_ctrl.drag_preview.size = s + + +static func restore_preview_size() -> void: + if CtrlDragable._grabbed_dragable == null: + return + var _grabbed_ctrl := (CtrlDragable._grabbed_dragable as CtrlInventoryItemRect) + if _grabbed_ctrl.item == null || _grabbed_ctrl.drag_preview == null: + return + _grabbed_ctrl.drag_preview.size = _stored_preview_size + CtrlDragable._grab_offset = _stored_preview_offset func _draw() -> void: + if is_dragged(): + return var rect = Rect2(Vector2.ZERO, size) _draw_selection(rect) _draw_texture(rect) @@ -96,8 +139,6 @@ func _draw_texture(rect: Rect2): if texture: var src_rect: Rect2 = Rect2(0, 0, texture.get_width(), texture.get_height()) draw_texture_rect_region(texture, rect, src_rect) - else: - draw_rect(rect, Color.WHITE, false) func _draw_stack_size(rect: Rect2): @@ -122,6 +163,7 @@ func _draw_stack_size(rect: Rect2): func _gui_input(event: InputEvent) -> void: + super._gui_input(event) if !(event is InputEventMouseButton): return @@ -131,8 +173,4 @@ func _gui_input(event: InputEvent) -> void: if mb_event.double_click: if get_global_rect().has_point(get_global_mouse_position()): - activated.emit(self) - elif mb_event.is_pressed(): - if get_global_rect().has_point(get_global_mouse_position()): - var offset: Vector2 = get_global_mouse_position() - get_global_rect().position - grabbed.emit(self, offset) + activated.emit() diff --git a/addons/gloot/ui/ctrl_inventory_stacked.gd b/addons/gloot/ui/ctrl_inventory_stacked.gd index f1452b2f..67ea8bd5 100644 --- a/addons/gloot/ui/ctrl_inventory_stacked.gd +++ b/addons/gloot/ui/ctrl_inventory_stacked.gd @@ -1,77 +1,78 @@ @tool +@icon("res://addons/gloot/images/icon_ctrl_inventory_stacked.svg") class_name CtrlInventoryStacked extends CtrlInventory @export var progress_bar_visible: bool = true : - get: - return progress_bar_visible - set(new_progress_bar_visible): - progress_bar_visible = new_progress_bar_visible - if _progress_bar: - _progress_bar.visible = progress_bar_visible + get: + return progress_bar_visible + set(new_progress_bar_visible): + progress_bar_visible = new_progress_bar_visible + if _progress_bar: + _progress_bar.visible = progress_bar_visible @export var label_visible: bool = true : - get: - return label_visible - set(new_label_visible): - label_visible = new_label_visible - if _label: - _label.visible = label_visible + get: + return label_visible + set(new_label_visible): + label_visible = new_label_visible + if _label: + _label.visible = label_visible var _progress_bar: ProgressBar var _label: Label func _ready(): - super._ready() - - _progress_bar = ProgressBar.new() - _progress_bar.size_flags_horizontal = SIZE_EXPAND_FILL - _progress_bar.show_percentage = false - _progress_bar.visible = progress_bar_visible - _progress_bar.custom_minimum_size.y = 20 - _vbox_container.add_child(_progress_bar) + super._ready() + + _progress_bar = ProgressBar.new() + _progress_bar.size_flags_horizontal = SIZE_EXPAND_FILL + _progress_bar.show_percentage = false + _progress_bar.visible = progress_bar_visible + _progress_bar.custom_minimum_size.y = 20 + _vbox_container.add_child(_progress_bar) - _label = Label.new() - _label.anchor_right = 1.0 - _label.anchor_bottom = 1.0 - _label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER - _label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER - _progress_bar.add_child(_label) + _label = Label.new() + _label.anchor_right = 1.0 + _label.anchor_bottom = 1.0 + _label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + _progress_bar.add_child(_label) - _refresh() + _refresh() func _connect_inventory_signals() -> void: - if !inventory: - return + if !inventory: + return - super._connect_inventory_signals() + super._connect_inventory_signals() - if !inventory.capacity_changed.is_connected(Callable(self, "_refresh")): - inventory.capacity_changed.connect(Callable(self, "_refresh")) - if !inventory.occupied_space_changed.is_connected(Callable(self, "_refresh")): - inventory.occupied_space_changed.connect(Callable(self, "_refresh")) + if !inventory.capacity_changed.is_connected(_refresh): + inventory.capacity_changed.connect(_refresh) + if !inventory.occupied_space_changed.is_connected(_refresh): + inventory.occupied_space_changed.connect(_refresh) func _disconnect_inventory_signals() -> void: - if !inventory: - return + if !inventory: + return - super._disconnect_inventory_signals() + super._disconnect_inventory_signals() - if !inventory.capacity_changed.is_connected(Callable(self, "_refresh")): - inventory.capacity_changed.disconnect(Callable(self, "_refresh")) - if !inventory.occupied_space_changed.is_connected(Callable(self, "_refresh")): - inventory.occupied_space_changed.disconnect(Callable(self, "_refresh")) + if !inventory.capacity_changed.is_connected(_refresh): + inventory.capacity_changed.disconnect(_refresh) + if !inventory.occupied_space_changed.is_connected(_refresh): + inventory.occupied_space_changed.disconnect(_refresh) func _refresh(): - super._refresh() - if _label: - _label.visible = label_visible - _label.text = "%d/%d" % [inventory.occupied_space, inventory.capacity] - if _progress_bar: - _progress_bar.visible = progress_bar_visible - _progress_bar.min_value = 0 - _progress_bar.max_value = inventory.capacity - _progress_bar.value = inventory.occupied_space + super._refresh() + if _label: + _label.visible = label_visible + _label.text = "%d/%d" % [inventory.occupied_space, inventory.capacity] + if _progress_bar: + _progress_bar.visible = progress_bar_visible + _progress_bar.min_value = 0 + _progress_bar.max_value = inventory.capacity + _progress_bar.value = inventory.occupied_space diff --git a/addons/gloot/ui/ctrl_item_slot.gd b/addons/gloot/ui/ctrl_item_slot.gd index 6f43db9e..ef4a8309 100644 --- a/addons/gloot/ui/ctrl_item_slot.gd +++ b/addons/gloot/ui/ctrl_item_slot.gd @@ -1,44 +1,68 @@ @tool +@icon("res://addons/gloot/images/icon_ctrl_item_slot.svg") class_name CtrlItemSlot extends Control +const CtrlInventoryRect = preload("res://addons/gloot/ui/ctrl_inventory_item_rect.gd") +const CtrlDropZone = preload("res://addons/gloot/ui/ctrl_drop_zone.gd") +const CtrlDragable = preload("res://addons/gloot/ui/ctrl_dragable.gd") + @export var item_slot_path: NodePath : get: return item_slot_path set(new_item_slot_path): + if item_slot_path == new_item_slot_path: + return item_slot_path = new_item_slot_path var node: Node = get_node_or_null(item_slot_path) if node == null: + _clear() return if is_inside_tree(): - assert(node is ItemSlot) + assert(node is ItemSlotBase) - self.item_slot = node + item_slot = node + _refresh() update_configuration_warnings() @export var default_item_icon: Texture2D : get: return default_item_icon set(new_default_item_icon): + if default_item_icon == new_default_item_icon: + return default_item_icon = new_default_item_icon _refresh() +@export var icon_scaling: Vector2 = Vector2.ONE : + get: + return icon_scaling + set(new_icon_scaling): + if icon_scaling == new_icon_scaling: + return + icon_scaling = new_icon_scaling + if _ctrl_inventory_item_rect && _ctrl_inventory_item_rect.texture: + _ctrl_inventory_item_rect.custom_minimum_size = _ctrl_inventory_item_rect.texture.get_size() * icon_scaling @export var item_texture_visible: bool = true : get: return item_texture_visible set(new_item_texture_visible): + if item_texture_visible == new_item_texture_visible: + return item_texture_visible = new_item_texture_visible - if _texture_rect: - _texture_rect.visible = item_texture_visible + if _ctrl_inventory_item_rect: + _ctrl_inventory_item_rect.visible = item_texture_visible @export var label_visible: bool = true : get: return label_visible set(new_label_visible): + if label_visible == new_label_visible: + return label_visible = new_label_visible if _label: _label.visible = label_visible -var item_slot: ItemSlot : +var item_slot: ItemSlotBase : get: return item_slot set(new_item_slot): @@ -51,16 +75,16 @@ var item_slot: ItemSlot : _refresh() var _hbox_container: HBoxContainer -var _texture_rect: TextureRect +var _ctrl_inventory_item_rect: CtrlInventoryRect var _label: Label -var _gloot: Node = null +var _ctrl_drop_zone: CtrlDropZone func _get_configuration_warnings() -> PackedStringArray: if item_slot_path.is_empty(): return PackedStringArray([ "This node is not linked to an item slot, so it can't display any content.\n" + \ - "Set the item_slot_path property to point to an ItemSlot node."]) + "Set the item_slot_path property to point to an ItemSlotBase node."]) return PackedStringArray() @@ -68,87 +92,114 @@ func _connect_item_slot_signals() -> void: if !item_slot: return - if !item_slot.item_set.is_connected(Callable(self, "_on_item_set")): - item_slot.item_set.connect(Callable(self, "_on_item_set")) - if !item_slot.item_cleared.is_connected(Callable(self, "_refresh")): - item_slot.item_cleared.connect(Callable(self, "_refresh")) - if !item_slot.inventory_changed.is_connected(Callable(self, "_on_inventory_changed")): - item_slot.inventory_changed.connect(Callable(self, "_on_inventory_changed")) + if !item_slot.item_equipped.is_connected(_refresh): + item_slot.item_equipped.connect(_refresh) + if !item_slot.cleared.is_connected(_refresh): + item_slot.cleared.connect(_refresh) func _disconnect_item_slot_signals() -> void: if !item_slot: return - if item_slot.item_set.is_connected(Callable(self, "_on_item_set")): - item_slot.item_set.disconnect(Callable(self, "_on_item_set")) - if item_slot.item_cleared.is_connected(Callable(self, "_refresh")): - item_slot.item_cleared.disconnect(Callable(self, "_refresh")) - if item_slot.inventory_changed.is_connected(Callable(self, "_on_inventory_changed")): - item_slot.inventory_changed.disconnect(Callable(self, "_on_inventory_changed")) - - -func _on_item_set(_item: InventoryItem) -> void: - _refresh() - - -func _on_inventory_changed(_inventory: Inventory) -> void: - _refresh() + if item_slot.item_equipped.is_connected(_refresh): + item_slot.item_equipped.disconnect(_refresh) + if item_slot.cleared.is_connected(_refresh): + item_slot.cleared.disconnect(_refresh) func _ready(): - _gloot = _get_gloot() - if Engine.is_editor_hint(): # Clean up, in case it is duplicated in the editor if _hbox_container: _hbox_container.queue_free() + var node: Node = get_node_or_null(item_slot_path) + if is_inside_tree() && node: + assert(node is ItemSlotBase) + item_slot = node + _hbox_container = HBoxContainer.new() _hbox_container.size_flags_horizontal = SIZE_EXPAND_FILL _hbox_container.size_flags_vertical = SIZE_EXPAND_FILL add_child(_hbox_container) - - _texture_rect = TextureRect.new() - _texture_rect.visible = item_texture_visible - _hbox_container.add_child(_texture_rect) + _hbox_container.resized.connect(func(): size = _hbox_container.size) + + _ctrl_inventory_item_rect = CtrlInventoryRect.new() + _ctrl_inventory_item_rect.visible = item_texture_visible + _ctrl_inventory_item_rect.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN + _ctrl_inventory_item_rect.size_flags_vertical = Control.SIZE_SHRINK_BEGIN + _ctrl_inventory_item_rect.item_slot = item_slot + _ctrl_inventory_item_rect.resized.connect(func(): + custom_minimum_size = _ctrl_inventory_item_rect.size + size = _ctrl_inventory_item_rect.size + ) + _hbox_container.add_child(_ctrl_inventory_item_rect) + + _ctrl_drop_zone = CtrlDropZone.new() + _ctrl_drop_zone.dragable_dropped.connect(_on_dragable_dropped) + _ctrl_drop_zone.size = size + resized.connect(func(): _ctrl_drop_zone.size = size) + _ctrl_drop_zone.mouse_entered.connect(_on_drop_zone_mouse_entered) + _ctrl_drop_zone.mouse_exited.connect(_on_drop_zone_mouse_exited) + CtrlDragable.dragable_grabbed.connect(_on_any_dragable_grabbed) + CtrlDragable.dragable_dropped.connect(_on_any_dragable_dropped) + add_child(_ctrl_drop_zone) + _ctrl_drop_zone.deactivate() _label = Label.new() _label.visible = label_visible _hbox_container.add_child(_label) - var node: Node = get_node_or_null(item_slot_path) - if is_inside_tree() && node: - assert(node is ItemSlot) - self.item_slot = node + size = _hbox_container.size + _hbox_container.resized.connect(func(): size = _hbox_container.size) _refresh() - if !Engine.is_editor_hint() && _gloot: - _gloot.item_dropped.connect(Callable(self, "_on_item_dropped")) -func _get_gloot() -> Node: - # This is a "temporary" hack until a better solution is found! - # This is a tool script that is also executed inside the editor, where the "GLoot" singleton is - # not visible - leading to errors inside the editor. - # To work around that, we obtain the singleton by name. - return get_tree().root.get_node_or_null("GLoot") +func _on_dragable_dropped(dragable: CtrlDragable, drop_position: Vector2) -> void: + var item = (dragable as CtrlInventoryItemRect).item - -func _get_singleton() -> Node: - return null - - -func _on_item_dropped(wr_item: WeakRef, global_drop_pos: Vector2) -> void: - var item: InventoryItem = wr_item.get_ref() if !item: return if !item_slot: return - var slot_rect = get_global_rect() - if slot_rect.has_point(get_global_mouse_position()) && item_slot.can_hold_item(item): - item_slot.item = item + if !item_slot.can_hold_item(item): + return + + if item == item_slot.get_item(): + return + + item_slot.equip(item) + + +func _on_drop_zone_mouse_entered() -> void: + if CtrlDragable._grabbed_dragable == null: + return + var _grabbed_ctrl := (CtrlDragable._grabbed_dragable as CtrlInventoryItemRect) + if _grabbed_ctrl == null || _grabbed_ctrl.texture == null: + return + CtrlInventoryItemRect.override_preview_size(_grabbed_ctrl.texture.get_size() * icon_scaling) + + +func _on_drop_zone_mouse_exited() -> void: + CtrlInventoryItemRect.restore_preview_size() + + +func _on_any_dragable_grabbed(dragable: CtrlDragable, grab_position: Vector2): + _ctrl_drop_zone.activate() + + +func _on_any_dragable_dropped(dragable: CtrlDragable, zone: CtrlDropZone, drop_position: Vector2): + _ctrl_drop_zone.deactivate() + + # Unequip from other slots + if zone == _ctrl_drop_zone || zone == null: + return + var ctrl_inventory_item_rect := (dragable as CtrlInventoryItemRect) + if ctrl_inventory_item_rect.item_slot: + ctrl_inventory_item_rect.item_slot.clear() func _refresh() -> void: @@ -157,19 +208,26 @@ func _refresh() -> void: if item_slot == null: return - if item_slot.item == null: + if item_slot.get_item() == null: return - var item = item_slot.item + var item = item_slot.get_item() if _label: _label.text = item.get_property(CtrlInventory.KEY_NAME, item.prototype_id) - if _texture_rect: - _texture_rect.texture = item.get_texture() + if _ctrl_inventory_item_rect: + _ctrl_inventory_item_rect.item = item + if item.get_texture(): + _ctrl_inventory_item_rect.texture = item.get_texture() + else: + _ctrl_inventory_item_rect.texture = default_item_icon + + if _ctrl_inventory_item_rect.texture: + _ctrl_inventory_item_rect.custom_minimum_size = _ctrl_inventory_item_rect.texture.get_size() * icon_scaling func _clear() -> void: if _label: _label.text = "" - if _texture_rect: - _texture_rect.texture = null + if _ctrl_inventory_item_rect: + _ctrl_inventory_item_rect.item = null diff --git a/addons/gloot/ui/ctrl_item_slot_ex.gd b/addons/gloot/ui/ctrl_item_slot_ex.gd index 3e111e4e..eb8df188 100644 --- a/addons/gloot/ui/ctrl_item_slot_ex.gd +++ b/addons/gloot/ui/ctrl_item_slot_ex.gd @@ -1,4 +1,5 @@ @tool +@icon("res://addons/gloot/images/icon_ctrl_item_slot.svg") class_name CtrlItemSlotEx extends CtrlItemSlot @@ -17,6 +18,14 @@ extends CtrlItemSlot var _background_panel: Panel +func _ready(): + super._ready() + resized.connect(func(): + if _background_panel: + _background_panel.size = size + ) + + func _refresh() -> void: super._refresh() _update_background() diff --git a/addons/markdownlabel/LICENSE b/addons/markdownlabel/LICENSE new file mode 100644 index 00000000..78503da8 --- /dev/null +++ b/addons/markdownlabel/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Daenvil + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/addons/markdownlabel/README.md b/addons/markdownlabel/README.md index b68508ed..35265970 100644 --- a/addons/markdownlabel/README.md +++ b/addons/markdownlabel/README.md @@ -46,8 +46,7 @@ My initial use case that lead me to do this was to directly include text from fi Simply add a MarkdownLabel to the scene and write its `markdown_text` field in Markdown format. In the RichTextLabel properties: -- **`bbcode_enabled` property must be enabled**. -- Do not touch the `text` property, since it's internally used by MarkdownLabel to properly format its text. +- Do not touch neither the `bbcode_enabled` nor the `text` property, since they are internally used by MarkdownLabel to properly format its text. Both properties are hidden from the editor to prevent mistakenly editing them. - You can use the rest of its properties as normal. You can still use BBCode tags that don't have a Markdown equivalent, such as `[color=green]underlined text[/color]`, allowing you to have the full functionality of RichTextLabel with the simplicity and readibility of Markdown. @@ -58,7 +57,6 @@ You can still use BBCode tags that don't have a Markdown equivalent, such as `[c ### Basic syntax The basic Markdown syntax works in the standard way: - ``` Markdown text ................ -> BBCode equivalent -------------------------------||------------------ @@ -92,7 +90,7 @@ multiline codeblock .......... -> multiline codeblock MarkdownLabel supports headers, although RichTextLabel doesn't. By default, a line defined as a header will have its font size scaled by a pre-defined amount. -To define a line as a header, begin it with any number of consecutive hash symbols (#) and follow it with the title of your header. The number of hash symbols defines the level of the header. The maximum supported level is six.. +To define a line as a header, begin it with any number of consecutive hash symbols (#) and follow it with the title of your header. The number of hash symbols defines the level of the header. The maximum supported level is six. Example: ``` @@ -113,19 +111,25 @@ Of course, you can also use basic formatting within the headers (e.g. `### Heade ### Links -Links follow the standard Markdown syntax of `[text to display](example.com)`. Additionally, you can add tooltips to your links with `[text to display](example.com "Some tooltip")`. +Links follow the standard Markdown syntax of `[text to display](https://example.com)`. Additionally, you can add tooltips to your links with `[text to display](https://example.com "Some tooltip")`. + +"Autolinks" are also supported with their standard syntax: ``, and `` for mail autolinks. + +Links created this way will be automatically handled by MarkdownLabel, implemented their expected behaviour: -"Autolinks" are also supported with their standard syntax: ``, and `` for mail autolinks. +- Valid header anchors (such as the ones in [Contents](#contents)) will make MarkdownLabel scroll to their header's position. +- Valid URLs and emails will be opened according to the user's settings (usually, using their default browser). +- Links that do not match any of the above conditions will be interpreted as a URL by prefixing them with "https://". E.g. `[link](example.com)` will link to "https://example.com". -Keep in mind that, in Godot, **links do nothing by default**. MarkdownLabel treats them the say way (may be changed in the future). See the [RichTextLabel reference](https://docs.godotengine.org/en/stable/tutorials/ui/bbcode_in_richtextlabel.html#doc-bbcode-in-richtextlabel-handling-url-tag-clicks) for more info. +This behavior can be disabled using the `automatic_links` property (enabled by default). ``` Markdown text .............................. -> BBCode equivalent ---------------------------------------------||------------------ -[this is a link](example.com) .............. -> [url=example.com]this is a link[/url] -[this is a link](example.com "Example page") -> [hint=Example url][url=example.com]this is a link[/url][/hint] - .............................. -> [url]example.com[/url] - ......................... -> [url=mailto:mail@example.com]mail@example.com[/url] +[this is a link](https://example.com) .............. -> [url=https://example.com]this is a link[/url] +[this is a link](https://example.com "Example page") -> [hint=Example url][url=https://example.com]this is a link[/url][/hint] + .............................. -> [url]https://example.com[/url] + ................................. -> [url=mailto:mail@example.com]mail@example.com[/url] ``` ### Images diff --git a/addons/markdownlabel/markdownlabel.gd b/addons/markdownlabel/markdownlabel.gd index ca88cfa9..a48e0008 100644 --- a/addons/markdownlabel/markdownlabel.gd +++ b/addons/markdownlabel/markdownlabel.gd @@ -20,10 +20,13 @@ const _ESCAPE_PLACEHOLDER := ";$\uFFFD:%s$;" const _ESCAPEABLE_CHARACTERS := "\\*_~`[]()\"<>#-+.!" const _ESCAPEABLE_CHARACTERS_REGEX := "[\\\\\\*\\_\\~`\\[\\]\\(\\)\\\"\\<\\>#\\-\\+\\.\\!]" -# Public: +#region Public: ## The text to be displayed in Markdown format. @export_multiline var markdown_text: String : set = _set_markdown_text +## If enabled, links will be automatically handled by this node, without needing to manually connect them. Valid header anchors will make the label scroll to that header's position. Valid URLs and e-mails will be opened according to the user's default settings. +@export var automatic_links := true + @export_group("Header formats") ## Formatting options for level-1 headers @export var h1 := H1Format.new() : set = _set_h1_format @@ -37,20 +40,27 @@ const _ESCAPEABLE_CHARACTERS_REGEX := "[\\\\\\*\\_\\~`\\[\\]\\(\\)\\\"\\<\\>#\\- @export var h5 := H5Format.new() : set = _set_h5_format ## Formatting options for level-6 headers @export var h6 := H6Format.new() : set = _set_h6_format +#endregion -# Private: +#region Private: var _converted_text: String var _indent_level: int var _escaped_characters_map := {} +var _current_paragraph: int = 0 +var _header_anchor_paragraph := {} +var _header_anchor_count := {} var _within_table := false var _table_row := -1 var _line_break := true var _debug_mode := false +#endregion -# Built-in methods: +#region Built-in methods: func _init(markdown_text: String = "") -> void: bbcode_enabled = true self.markdown_text = markdown_text + if automatic_links: + meta_clicked.connect(_on_meta_clicked) func _ready() -> void: h1.connect("_updated",_update) @@ -70,18 +80,39 @@ func _ready() -> void: #else: #pass -# Should hide properties in the editor, not working for some reason: -#func _validate_property(property: Dictionary): -# print(property.name) -# if property.name in ["bbcode_enabled", "text"]: -# property.usage = PROPERTY_USAGE_NO_EDITOR +func _on_meta_clicked(meta: Variant) -> void: + if not automatic_links: + return + if typeof(meta) != TYPE_STRING: + return + if meta.begins_with("#") and meta in _header_anchor_paragraph: + self.scroll_to_paragraph(_header_anchor_paragraph[meta]) + return + var url_pattern := RegEx.new() + url_pattern.compile("^(ftp|http|https):\\/\\/[^\\s\\\"]+$") + var result := url_pattern.search(meta) + if not result: + url_pattern.compile("^mailto:[^\\s]+@[^\\s]+\\.[^\\s]+$") + result = url_pattern.search(meta) + if result: + OS.shell_open(meta) + return + OS.shell_open("https://" + meta) + +func _validate_property(property: Dictionary): + # Hide these properties in the editor: + if property.name in ["bbcode_enabled", "text"]: + property.usage = PROPERTY_USAGE_NO_EDITOR + +#endregion -# Public methods: +#region Public methods: ## Reads the specified file and displays it as markdown. -func display_file(file_path: String): +func display_file(file_path: String) -> void: markdown_text = FileAccess.get_file_as_string(file_path) +#endregion -#Private methods: +#region Private methods: func _update() -> void: text = _convert_markdown(markdown_text) queue_redraw() @@ -136,16 +167,18 @@ func _convert_markdown(source_text = "") -> String: for line in lines: line = line.trim_suffix("\r") - _debug("Parsing line: '%s'"%line) + _debug("Parsing line: '%s'" % line) within_code_block = within_tilde_block or within_backtick_block if iline > 0 and _line_break: _converted_text += "\n" + _current_paragraph += 1 _line_break = true iline+=1 if not within_tilde_block and _denotes_fenced_code_block(line,"`"): if within_backtick_block: if line.strip_edges().length() >= current_code_block_char_count: _converted_text = _converted_text.trim_suffix("\n") + _current_paragraph -= 1 _converted_text += "[/code]" within_backtick_block = false _debug("... closing backtick block") @@ -160,6 +193,7 @@ func _convert_markdown(source_text = "") -> String: if within_tilde_block: if line.strip_edges().length() >= current_code_block_char_count: _converted_text = _converted_text.trim_suffix("\n") + _current_paragraph -= 1 _converted_text += "[/code]" within_tilde_block = false _debug("... closing tilde block") @@ -365,13 +399,13 @@ func _convert_markdown(source_text = "") -> String: break n_spaces+=1 var header_format: Resource = _get_header_format(n) - var n_digits := str(header_format.font_size).length() var _start := result.get_start() var opening_tags := _get_header_tags(header_format) _processed_line = _processed_line.erase(_start,n+n_spaces).insert(_start,opening_tags) var _end := result.get_end() _processed_line = _processed_line.insert(_end-(n+n_spaces)+opening_tags.length(),_get_header_tags(header_format,true)) _debug("... header level %d"%n) + _header_anchor_paragraph[_get_header_reference(result.get_string())] = _current_paragraph else: break @@ -382,8 +416,8 @@ func _convert_markdown(source_text = "") -> String: # end for line loop # Close any remaining open list: _debug("... end of text, closing all opened lists") - for i in range(_indent_level,-1,-1): - _converted_text += "[/%s]"%indent_types[i] + for i in range(_indent_level, -1, -1): + _converted_text += "[/%s]" % indent_types[i] # Close any remaining open tables: _debug("... end of text, closing all opened tables") if _within_table: @@ -398,16 +432,16 @@ func _convert_markdown(source_text = "") -> String: func _process_list_syntax(line: String, indent_spaces: Array, indent_types: Array) -> String: var processed_line := "" if line.length() == 0 and _indent_level >= 0: - for i in range(_indent_level,-1,-1): + for i in range(_indent_level, -1, -1): _converted_text += "[/%s]" % indent_types[_indent_level] - _indent_level-=1 + _indent_level -= 1 indent_spaces.pop_back() indent_types.pop_back() _converted_text += "\n" _debug("... empty line, closing all list tags") return "" if _indent_level == -1: - if line.length() > 2 and line[0] in "-*+" and line[1]==" ": + if line.length() > 2 and line[0] in "-*+" and line[1] == " ": _indent_level = 0 indent_spaces.append(0) indent_types.append("ul") @@ -444,9 +478,9 @@ func _process_list_syntax(line: String, indent_spaces: Array, indent_types: Arra _debug("... opening list at level %d and adding element"%_indent_level) break else: - for i in range(_indent_level,-1,-1): + for i in range(_indent_level, -1, -1): if n_s < indent_spaces[i]: - _converted_text += "[/%s]"%indent_types[_indent_level] + _converted_text += "[/%s]" % indent_types[_indent_level] _indent_level -= 1 indent_spaces.pop_back() indent_types.pop_back() @@ -454,7 +488,7 @@ func _process_list_syntax(line: String, indent_spaces: Array, indent_types: Arra break _converted_text += "\n" processed_line = line.substr(n_s+2) - _debug("...closing lists down to level %d and adding element"%_indent_level) + _debug("...closing lists down to level %d and adding element" % _indent_level) break elif _char in "123456789": if line.length() > n_s+3 and line[n_s+1] == "." and line[n_s+2] == " ": @@ -481,7 +515,7 @@ func _process_list_syntax(line: String, indent_spaces: Array, indent_types: Arra break _converted_text += "\n" processed_line = line.substr(n_s+3) - _debug("...closing lists down to level %d and adding element"%_indent_level) + _debug("... closing lists down to level %d and adding element"%_indent_level) break #end for _char loop if processed_line.is_empty(): @@ -597,3 +631,14 @@ func _get_header_tags(header_format: Resource, closing := false) -> String: if header_format.is_underlined: tags += "[u]" return tags + +func _get_header_reference(header_string: String): + var anchor := "#" + header_string.lstrip("#").strip_edges().to_lower().replace(" ","-") + if anchor in _header_anchor_count: + _header_anchor_count[anchor] += 1 + anchor += "-" + str(_header_anchor_count[anchor]-1) + else: + _header_anchor_count[anchor] = 1 + return anchor + +#endregion diff --git a/addons/markdownlabel/plugin.cfg b/addons/markdownlabel/plugin.cfg index 77a744cb..5d989e6e 100644 --- a/addons/markdownlabel/plugin.cfg +++ b/addons/markdownlabel/plugin.cfg @@ -3,5 +3,5 @@ name="MarkdownLabel" description="A custom node that extends RichTextLabel to use Markdown instead of BBCode." author="Daenvil" -version="0.9.0" +version="1.1.0" script="plugin.gd" diff --git a/enemy.tscn b/enemy.tscn deleted file mode 100644 index 71363b19..00000000 --- a/enemy.tscn +++ /dev/null @@ -1,130 +0,0 @@ -[gd_scene load_steps=15 format=3 uid="uid://b2r6nh12wv41k"] - -[ext_resource type="Script" path="res://Scripts/Enemy.gd" id="1_eb130"] -[ext_resource type="PackedScene" uid="uid://mu6nbyuq02o5" path="res://enemy_corpse.tscn" id="2_vyld4"] -[ext_resource type="Script" path="res://Scripts/StateMachine.gd" id="3_68hce"] -[ext_resource type="Script" path="res://Scripts/EnemyAttack.gd" id="4_mt4kh"] -[ext_resource type="Script" path="res://Scripts/EnemyIdle.gd" id="5_bvewq"] -[ext_resource type="Script" path="res://Scripts/EnemyFollow.gd" id="6_0jpem"] -[ext_resource type="Script" path="res://Scripts/EnemyStats.gd" id="7_p4tru"] -[ext_resource type="Texture2D" uid="uid://cy56wx4qynp3m" path="res://Textures/enemy.png" id="8_wgh4n"] -[ext_resource type="Script" path="res://Scripts/Detection.gd" id="9_fj2x0"] -[ext_resource type="Shader" path="res://transparent_lighting.gdshader" id="10_c1y3v"] - -[sub_resource type="SphereShape3D" id="SphereShape3D_uyii8"] -radius = 0.357674 - -[sub_resource type="BoxShape3D" id="BoxShape3D_kv6xp"] -size = Vector3(0.35, 0.35, 0.35) - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_vr552"] -render_priority = 0 -shader = ExtResource("10_c1y3v") -shader_parameter/color = Color(1, 0.266667, 0.0509804, 1) -shader_parameter/energy = 1.0 -shader_parameter/tex = ExtResource("8_wgh4n") - -[sub_resource type="QuadMesh" id="QuadMesh_bbnvr"] -lightmap_size_hint = Vector2i(7, 7) -material = SubResource("ShaderMaterial_vr552") -size = Vector2(0.5, 0.5) -orientation = 1 - -[node name="Enemy" type="CharacterBody3D" groups=["Enemies"]] -collision_layer = 2 -collision_mask = 15 -wall_min_slide_angle = 0.0 -floor_constant_speed = true -script = ExtResource("1_eb130") -stats = NodePath("EnemyStats") -corpse_scene = ExtResource("2_vyld4") - -[node name="NavigationAgent3D" type="NavigationAgent3D" parent="."] -path_desired_distance = 0.5 -target_desired_distance = 0.5 -path_max_distance = 0.51 -avoidance_enabled = true -debug_enabled = true - -[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("initial_state")] -script = ExtResource("3_68hce") -initial_state = NodePath("EnemyIdle") - -[node name="EnemyAttack" type="Node3D" parent="StateMachine" node_paths=PackedStringArray("attack_timer")] -script = ExtResource("4_mt4kh") -stats = NodePath("../../EnemyStats") -attack_timer = NodePath("AttackCooldown") -enemy = NodePath("../..") - -[node name="AttackCooldown" type="Timer" parent="StateMachine/EnemyAttack"] - -[node name="EnemyIdle" type="Node3D" parent="StateMachine" node_paths=PackedStringArray("nav_agent", "moving_timer")] -script = ExtResource("5_bvewq") -nav_agent = NodePath("../../NavigationAgent3D") -stats = NodePath("../../EnemyStats") -enemy = NodePath("../..") -move_distance = 50.0 -moving_timer = NodePath("MovingCooldown") - -[node name="MovingCooldown" type="Timer" parent="StateMachine/EnemyIdle"] -wait_time = 4.0 - -[node name="EnemyFollow" type="Node3D" parent="StateMachine" node_paths=PackedStringArray("nav_agent", "enemy", "pathfinding_timer")] -script = ExtResource("6_0jpem") -nav_agent = NodePath("../../NavigationAgent3D") -enemy = NodePath("../..") -enemyCol = NodePath("../../CollisionShape3D") -stats = NodePath("../../EnemyStats") -pathfinding_timer = NodePath("Timer") - -[node name="Timer" type="Timer" parent="StateMachine/EnemyFollow"] -wait_time = 0.2 -autostart = true - -[node name="EnemyStats" type="Node" parent="."] -script = ExtResource("7_p4tru") -melee_damage = 20.0 -melee_range = 1.5 -health = 100.0 -moveSpeed = 1.0 -idle_move_speed = 0.5 -sightRange = 200.0 -senseRange = 50.0 -hearingRange = 1000.0 - -[node name="Detection" type="Node3D" parent="."] -script = ExtResource("9_fj2x0") -stats = NodePath("../EnemyStats") - -[node name="Sprite3D" type="Sprite3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0275174, 0) -visible = false -layers = 16 -gi_mode = 0 -pixel_size = 0.05 -billboard = 1 -shaded = true -double_sided = false -texture = ExtResource("8_wgh4n") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -visible = false -shape = SubResource("SphereShape3D_uyii8") -disabled = true - -[node name="CollisionShape3D2" type="CollisionShape3D" parent="."] -shape = SubResource("BoxShape3D_kv6xp") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.20019, 0) -layers = 16 -cast_shadow = 0 -gi_mode = 0 -mesh = SubResource("QuadMesh_bbnvr") - -[connection signal="timeout" from="StateMachine/EnemyAttack/AttackCooldown" to="StateMachine/EnemyAttack" method="_on_attack_cooldown_timeout"] -[connection signal="timeout" from="StateMachine/EnemyIdle/MovingCooldown" to="StateMachine/EnemyIdle" method="_on_moving_cooldown_timeout"] -[connection signal="timeout" from="StateMachine/EnemyFollow/Timer" to="StateMachine/EnemyFollow" method="_on_timer_timeout"] -[connection signal="player_spotted" from="Detection" to="StateMachine/EnemyAttack" method="_on_detection_player_spotted"] -[connection signal="player_spotted" from="Detection" to="StateMachine/EnemyIdle" method="_on_detection_player_spotted"] -[connection signal="player_spotted" from="Detection" to="StateMachine/EnemyFollow" method="_on_detection_player_spotted"] diff --git a/hud.tscn b/hud.tscn index f18f969e..7bdde054 100644 --- a/hud.tscn +++ b/hud.tscn @@ -1,11 +1,10 @@ -[gd_scene load_steps=22 format=3 uid="uid://clhj525tmme3k"] +[gd_scene load_steps=21 format=3 uid="uid://clhj525tmme3k"] [ext_resource type="FontFile" uid="uid://chm7lbcdeyo0h" path="res://Roboto-Bold.ttf" id="1_pxloi"] [ext_resource type="Script" path="res://Scripts/hud.gd" id="1_s3xoj"] [ext_resource type="Script" path="res://Scripts/NonHUDclick.gd" id="2_kpbhl"] -[ext_resource type="Script" path="res://addons/gloot/core/inventory_grid_stacked.gd" id="2_pq7em"] [ext_resource type="Texture2D" uid="uid://7hppy1l45loq" path="res://Textures/bar_progress.png" id="3_83uwt"] -[ext_resource type="Resource" uid="uid://bvrl0obu5ejqq" path="res://ItemProtosets.tres" id="3_jmlkb"] +[ext_resource type="Resource" uid="uid://clehtt4tyqvdy" path="res://ItemProtosets.tres" id="3_jmlkb"] [ext_resource type="Texture2D" uid="uid://dcgwgmsmi7mjn" path="res://Textures/bar_border.png" id="3_y43f5"] [ext_resource type="Texture2D" uid="uid://tdebfxkpwiva" path="res://Textures/leftarm.png" id="4_wt5t7"] [ext_resource type="Texture2D" uid="uid://8pdm2gvd1v3n" path="res://Textures/leftleg.png" id="5_si2ot"] @@ -13,24 +12,21 @@ [ext_resource type="Texture2D" uid="uid://1alnt17qsyd7" path="res://Textures/rightarm.png" id="7_td8gu"] [ext_resource type="Texture2D" uid="uid://t7ny2gtgqll8" path="res://Textures/head.png" id="8_vb8fm"] [ext_resource type="Texture2D" uid="uid://c1begynwustlp" path="res://Textures/torso.png" id="9_4u4ej"] -[ext_resource type="Script" path="res://addons/gloot/ui/ctrl_inventory_grid_ex.gd" id="11_m0x1l"] -[ext_resource type="Texture2D" uid="uid://cwmsngeoc631h" path="res://Textures/Screenshot_167.png" id="13_hab4t"] [ext_resource type="Script" path="res://Scripts/CraftingMenu.gd" id="14_g3fif"] [ext_resource type="PackedScene" uid="uid://cpcn3qq8okj12" path="res://item_craft_button.tscn" id="15_otw1a"] [ext_resource type="ButtonGroup" uid="uid://bcjuavqvre6mk" path="res://crafting_recipes_button_group.tres" id="16_2oloe"] +[ext_resource type="PackedScene" uid="uid://bgswuol251m3u" path="res://Scenes/Overmap/Overmap.tscn" id="19_oomhy"] +[ext_resource type="PackedScene" uid="uid://e0ebcv1n8jnq" path="res://Scenes/InventoryWindow.tscn" id="20_0l505"] +[ext_resource type="PackedScene" uid="uid://ckuh2s0nvwg0x" path="res://Scenes/GameOver.tscn" id="20_jlthm"] [sub_resource type="Theme" id="Theme_xn5t2"] default_font = ExtResource("1_pxloi") default_font_size = 0 -[sub_resource type="Theme" id="Theme_1as7c"] -default_font = ExtResource("1_pxloi") -default_font_size = 13 - [sub_resource type="StyleBoxLine" id="StyleBoxLine_xekk0"] color = Color(1, 1, 1, 1) -[node name="HUD" type="CanvasLayer"] +[node name="HUD" type="CanvasLayer" node_paths=PackedStringArray("inventoryWindow", "overmap")] script = ExtResource("1_s3xoj") head_health = NodePath("Doll/Head") right_arm_health = NodePath("Doll/Rightarm") @@ -39,18 +35,14 @@ torso_health = NodePath("Doll/Torso") right_leg_health = NodePath("Doll/Rightleg") left_leg_health = NodePath("Doll/Leftleg") stamina_HUD = NodePath("StaminaLevel") -ammo_HUD = NodePath("Ammo") +ammo_HUD_left = NodePath("AmmoVisuals/LeftAmmo") +ammo_HUD_right = NodePath("AmmoVisuals/RightAmmo") healthy_color = Color(0, 0.635294, 0, 1) damaged_color = Color(0.635294, 0, 0, 1) -proximity_inventory = NodePath("InventoryGridStackedProx") -proximity_inventory_control = NodePath("CtrlInventoryGridExProx") -inventory_control = NodePath("CtrlInventoryGridEx") -inventory = NodePath("InventoryGridStacked") +inventoryWindow = NodePath("InventoryWindow") building_menu = NodePath("BuildingMenu") crafting_menu = NodePath("CraftingMenu") -tooltip = NodePath("Tooltip") -tooltip_item_name = NodePath("Tooltip/Panel/ItemName") -tooltip_item_description = NodePath("Tooltip/Panel2/Description") +overmap = NodePath("Overmap") progress_bar = NodePath("ProgressBar") progress_bar_filling = NodePath("ProgressBar/Node2D/Filling") progress_bar_timer = NodePath("ProgressBar/ProgressBarTimer") @@ -105,44 +97,57 @@ theme_override_font_sizes/font_size = 49 text = "100%" vertical_alignment = 1 -[node name="Ammo" type="Label" parent="."] +[node name="StaminaLevel" type="Label" parent="."] +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_left = 256.0 +offset_top = -64.0 +offset_right = 381.0 +offset_bottom = -3.0 +grow_vertical = 0 +theme = SubResource("Theme_xn5t2") +theme_override_colors/font_color = Color(0.741176, 0.482353, 0, 1) +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 6 +theme_override_fonts/font = ExtResource("1_pxloi") +theme_override_font_sizes/font_size = 49 +text = "100%" +vertical_alignment = 1 + +[node name="AmmoVisuals" type="HBoxContainer" parent="."] anchors_preset = 3 anchor_left = 1.0 anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 -offset_left = -232.0 -offset_top = -56.0 -offset_right = -16.0 -offset_bottom = 5.0 +offset_left = -486.0 +offset_top = -58.0 grow_horizontal = 0 grow_vertical = 0 + +[node name="LeftAmmo" type="Label" parent="AmmoVisuals"] +layout_mode = 2 theme = SubResource("Theme_xn5t2") theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_outline_color = Color(0, 0, 0, 1) theme_override_constants/outline_size = 6 theme_override_fonts/font = ExtResource("1_pxloi") theme_override_font_sizes/font_size = 49 -text = "999/999" +text = "L: 999/999" horizontal_alignment = 2 vertical_alignment = 1 -[node name="StaminaLevel" type="Label" parent="."] -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -offset_left = 256.0 -offset_top = -64.0 -offset_right = 381.0 -offset_bottom = -3.0 -grow_vertical = 0 +[node name="RightAmmo" type="Label" parent="AmmoVisuals"] +layout_mode = 2 theme = SubResource("Theme_xn5t2") -theme_override_colors/font_color = Color(0.741176, 0.482353, 0, 1) +theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_outline_color = Color(0, 0, 0, 1) theme_override_constants/outline_size = 6 theme_override_fonts/font = ExtResource("1_pxloi") theme_override_font_sizes/font_size = 49 -text = "100%" +text = "R: 999/999" +horizontal_alignment = 2 vertical_alignment = 1 [node name="Time" type="Label" parent="."] @@ -205,48 +210,6 @@ position = Vector2(85.25, -113.375) scale = Vector2(0.75, 0.75) texture = ExtResource("9_4u4ej") -[node name="InventoryGridStacked" type="Node" parent="."] -script = ExtResource("2_pq7em") -item_protoset = ExtResource("3_jmlkb") - -[node name="InventoryGridStackedProx" type="Node" parent="."] -script = ExtResource("2_pq7em") -size = Vector2i(30, 10) -item_protoset = ExtResource("3_jmlkb") - -[node name="CtrlInventoryGridEx" type="Control" parent="."] -visible = false -custom_minimum_size = Vector2(320, 320) -layout_mode = 3 -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -offset_left = 383.0 -offset_top = -322.0 -offset_right = 703.0 -offset_bottom = -2.0 -grow_vertical = 0 -script = ExtResource("11_m0x1l") -selection_color = Color(0.745098, 0.745098, 0.745098, 0.941176) -inventory_path = NodePath("../InventoryGridStacked") -default_item_texture = ExtResource("13_hab4t") - -[node name="CtrlInventoryGridExProx" type="Control" parent="."] -visible = false -custom_minimum_size = Vector2(240, 80) -layout_mode = 3 -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -offset_left = 711.0 -offset_top = -80.0 -offset_right = 951.0 -grow_vertical = 0 -script = ExtResource("11_m0x1l") -field_dimensions = Vector2(8, 8) -inventory_path = NodePath("../InventoryGridStackedProx") -default_item_texture = ExtResource("13_hab4t") - [node name="BuildingMenu" type="GridContainer" parent="."] visible = false offset_right = 186.0 @@ -257,57 +220,6 @@ columns = 4 layout_mode = 2 text = "Concrete" -[node name="Tooltip" type="Control" parent="."] -visible = false -layout_mode = 3 -anchors_preset = 0 -offset_right = 242.0 -offset_bottom = 115.0 -pivot_offset = Vector2(0, 173) -size_flags_horizontal = 3 -size_flags_vertical = 3 -tooltip_text = "kjkgkjghkjjhkg" - -[node name="Panel" type="Panel" parent="Tooltip"] -layout_mode = 2 -offset_left = 1.0 -offset_top = 1.0 -offset_right = 241.0 -offset_bottom = 33.0 -size_flags_vertical = 3 - -[node name="ItemName" type="Label" parent="Tooltip/Panel"] -layout_mode = 0 -offset_right = 240.0 -offset_bottom = 32.0 -theme_override_colors/font_color = Color(0.921569, 0.596078, 0, 1) -theme_override_colors/font_outline_color = Color(0, 0, 0, 1) -theme_override_constants/outline_size = 4 -theme_override_fonts/font = ExtResource("1_pxloi") -theme_override_font_sizes/font_size = 20 -text = "Item name" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="Panel2" type="Panel" parent="Tooltip"] -layout_mode = 2 -offset_left = 1.0 -offset_top = 35.0 -offset_right = 241.0 -offset_bottom = 115.0 -size_flags_vertical = 3 - -[node name="Description" type="Label" parent="Tooltip/Panel2"] -layout_mode = 0 -offset_right = 240.0 -offset_bottom = 32.0 -theme = SubResource("Theme_1as7c") -theme_override_colors/font_outline_color = Color(0, 0, 0, 1) -theme_override_constants/outline_size = 4 -theme_override_fonts/font = ExtResource("1_pxloi") -theme_override_font_sizes/font_size = 13 -text = "Item description" - [node name="CraftingMenu" type="Panel" parent="." groups=["CraftingMenu"]] visible = false anchors_preset = 8 @@ -417,13 +329,26 @@ text = "Required items " autowrap_mode = 3 +[node name="Overmap" parent="." instance=ExtResource("19_oomhy")] +visible = false + +[node name="InventoryWindow" parent="." instance=ExtResource("20_0l505")] +visible = false +anchors_preset = -1 +anchor_left = 0.1 +anchor_top = 0.1 +anchor_right = 0.9 +anchor_bottom = 0.9 + +[node name="GameOver" parent="." instance=ExtResource("20_jlthm")] +visible = false + [connection signal="timeout" from="ProgressBar/ProgressBarTimer" to="." method="_on_progress_bar_timer_timeout"] [connection signal="mouse_entered" from="OutsideOfHUD" to="OutsideOfHUD" method="_on_mouse_entered"] [connection signal="mouse_exited" from="OutsideOfHUD" to="OutsideOfHUD" method="_on_mouse_exited"] -[connection signal="item_mouse_entered" from="CtrlInventoryGridEx" to="." method="_on_inventory_item_mouse_entered"] -[connection signal="item_mouse_exited" from="CtrlInventoryGridEx" to="." method="_on_inventory_item_mouse_exited"] -[connection signal="item_mouse_entered" from="CtrlInventoryGridExProx" to="." method="_on_inventory_item_mouse_entered"] -[connection signal="item_mouse_exited" from="CtrlInventoryGridExProx" to="." method="_on_inventory_item_mouse_exited"] [connection signal="button_down" from="BuildingMenu/Concrete" to="." method="_on_concrete_button_down"] [connection signal="start_craft" from="CraftingMenu" to="." method="_on_crafting_menu_start_craft"] [connection signal="pressed" from="CraftingMenu/Panel/StartCraftingButton" to="CraftingMenu" method="_on_start_crafting_button_pressed"] +[connection signal="change_level_pressed" from="Overmap" to="." method="_on_overmap_change_level_pressed"] +[connection signal="item_was_cleared" from="InventoryWindow" to="." method="_on_inventory_window_item_was_cleared"] +[connection signal="item_was_equipped" from="InventoryWindow" to="." method="_on_inventory_window_item_was_equipped"] diff --git a/level.tscn b/level.tscn deleted file mode 100644 index 7e8d7595..00000000 --- a/level.tscn +++ /dev/null @@ -1,11274 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://mvp8pvy00mrm"] - -[ext_resource type="Material" uid="uid://buj4ukj1oh4pq" path="res://Materials/floor1.tres" id="1_wumyq"] - -[sub_resource type="BoxMesh" id="BoxMesh_febld"] -material = ExtResource("1_wumyq") - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_3b7ih"] -points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5) - -[node name="Level" type="Node3D"] - -[node name="Node3D" type="StaticBody3D" parent="."] -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D2" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D2"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D3" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D3"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D3"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D4" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D4"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D4"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D5" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D5"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D5"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D6" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D6"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D6"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D7" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D7"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D7"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D8" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D8"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D8"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D9" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D9"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D9"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D10" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D10"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D10"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D11" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D11"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D11"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D12" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D12"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D12"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D13" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D13"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D13"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D14" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D14"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D14"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D15" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D15"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D15"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D16" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D16"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D16"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D17" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D17"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D17"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D18" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D18"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D18"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D19" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D19"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D19"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D20" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D20"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D20"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D21" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D21"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D21"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D22" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D22"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D22"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D23" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D23"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D23"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D24" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D24"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D24"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D25" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D25"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D25"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D26" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D26"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D26"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D27" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D27"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D27"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D28" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D28"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D28"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D29" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D29"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D29"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D30" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D30"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D30"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D31" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D31"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D31"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D32" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D32"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D32"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D33" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D33"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D33"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D34" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D34"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D34"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D35" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D35"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D35"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D36" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D36"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D36"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D37" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D37"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D37"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D38" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D38"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D38"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D39" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D39"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D39"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D40" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D40"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D40"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D41" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D41"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D41"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D42" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D42"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D42"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D43" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D43"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D43"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D44" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D44"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D44"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D45" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D45"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D45"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D46" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D46"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D46"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D47" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D47"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D47"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D48" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D48"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D48"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D49" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D49"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D49"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D50" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D50"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D50"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D51" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D51"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D51"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D52" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D52"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D52"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D53" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D53"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D53"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D54" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D54"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D54"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D55" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D55"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D55"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D56" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D56"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D56"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D57" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D57"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D57"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D58" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D58"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D58"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D59" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D59"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D59"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D60" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D60"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D60"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D61" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D61"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D61"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D62" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D62"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D62"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D63" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D63"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D63"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D64" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D64"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D64"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D65" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D65"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D65"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D66" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D66"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D66"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D67" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D67"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D67"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D68" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D68"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D68"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D69" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D69"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D69"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D70" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D70"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D70"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D71" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D71"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D71"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D72" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D72"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D72"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D73" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D73"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D73"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D74" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D74"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D74"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D75" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D75"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D75"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D76" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D76"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D76"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D77" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D77"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D77"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D78" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D78"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D78"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D79" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D79"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D79"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D80" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D80"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D80"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D81" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D81"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D81"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D82" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D82"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D82"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D83" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D83"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D83"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D84" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D84"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D84"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D85" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D85"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D85"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D86" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D86"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D86"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D87" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D87"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D87"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D88" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D88"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D88"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D89" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D89"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D89"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D90" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D90"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D90"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D91" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D91"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D91"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D92" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D92"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D92"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D93" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D93"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D93"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D94" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D94"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D94"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D95" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D95"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D95"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D96" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D96"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D96"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D97" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D97"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D97"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D98" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D98"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D98"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D99" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D99"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D99"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D100" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D100"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D100"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D101" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D101"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D101"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D102" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D102"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D102"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D103" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D103"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D103"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D104" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D104"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D104"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D105" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D105"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D105"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D106" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D106"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D106"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D107" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D107"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D107"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D108" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D108"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D108"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D109" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D109"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D109"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D110" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D110"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D110"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D111" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D111"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D111"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D112" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D112"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D112"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D113" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D113"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D113"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D114" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D114"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D114"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D115" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D115"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D115"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D116" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D116"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D116"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D117" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D117"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D117"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D118" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D118"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D118"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D119" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D119"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D119"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D120" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D120"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D120"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D121" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D121"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D121"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D122" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D122"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D122"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D123" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D123"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D123"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D124" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D124"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D124"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D125" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D125"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D125"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D126" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D126"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D126"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D127" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D127"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D127"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D128" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D128"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D128"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D129" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D129"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D129"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D130" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D130"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D130"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D131" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D131"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D131"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D132" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D132"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D132"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D133" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D133"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D133"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D134" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D134"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D134"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D135" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D135"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D135"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D136" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D136"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D136"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D137" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D137"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D137"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D138" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D138"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D138"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D139" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D139"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D139"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D140" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D140"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D140"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D141" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D141"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D141"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D142" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D142"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D142"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D143" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D143"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D143"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D144" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D144"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D144"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D145" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D145"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D145"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D146" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D146"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D146"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D147" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D147"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D147"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D148" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D148"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D148"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D149" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D149"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D149"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D150" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D150"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D150"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D151" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D151"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D151"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D152" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D152"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D152"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D153" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D153"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D153"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D154" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D154"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D154"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D155" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D155"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D155"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D156" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D156"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D156"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D157" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D157"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D157"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D158" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D158"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D158"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D159" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D159"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D159"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D160" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D160"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D160"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D161" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D161"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D161"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D162" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D162"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D162"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D163" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D163"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D163"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D164" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D164"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D164"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D165" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D165"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D165"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D166" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D166"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D166"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D167" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D167"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D167"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D168" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D168"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D168"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D169" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D169"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D169"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D170" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D170"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D170"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D171" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D171"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D171"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D172" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D172"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D172"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D173" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D173"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D173"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D174" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D174"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D174"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D175" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D175"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D175"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D176" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D176"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D176"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D177" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D177"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D177"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D178" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D178"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D178"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D179" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D179"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D179"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D180" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D180"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D180"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D181" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D181"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D181"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D182" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D182"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D182"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D183" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D183"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D183"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D184" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D184"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D184"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D185" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D185"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D185"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D186" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D186"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D186"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D187" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D187"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D187"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D188" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D188"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D188"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D189" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D189"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D189"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D190" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D190"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D190"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D191" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D191"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D191"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D192" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D192"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D192"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D193" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D193"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D193"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D194" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D194"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D194"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D195" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D195"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D195"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D196" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D196"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D196"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D197" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D197"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D197"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D198" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D198"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D198"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D199" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D199"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D199"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D200" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D200"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D200"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D201" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D201"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D201"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D202" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D202"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D202"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D203" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D203"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D203"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D204" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D204"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D204"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D205" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D205"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D205"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D206" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D206"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D206"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D207" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D207"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D207"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D208" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D208"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D208"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D209" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D209"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D209"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D210" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D210"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D210"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D211" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D211"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D211"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D212" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D212"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D212"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D213" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D213"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D213"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D214" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D214"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D214"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D215" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D215"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D215"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D216" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D216"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D216"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D217" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D217"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D217"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D218" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D218"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D218"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D219" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D219"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D219"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D220" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D220"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D220"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D221" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D221"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D221"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D222" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D222"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D222"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D223" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D223"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D223"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D224" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D224"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D224"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D225" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D225"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D225"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D226" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D226"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D226"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D227" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D227"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D227"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D228" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D228"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D228"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D229" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D229"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D229"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D230" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D230"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D230"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D231" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D231"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D231"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D232" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D232"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D232"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D233" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D233"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D233"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D234" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D234"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D234"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D235" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D235"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D235"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D236" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D236"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D236"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D237" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D237"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D237"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D238" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D238"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D238"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D239" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D239"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D239"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D240" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D240"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D240"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D241" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D241"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D241"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D242" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D242"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D242"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D243" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D243"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D243"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D244" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D244"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D244"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D245" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D245"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D245"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D246" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D246"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D246"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D247" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D247"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D247"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D248" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D248"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D248"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D249" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D249"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D249"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D250" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D250"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D250"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D251" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D251"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D251"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D252" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D252"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D252"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D253" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D253"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D253"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D254" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D254"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D254"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D255" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D255"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D255"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D256" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D256"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D256"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D257" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D257"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D257"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D258" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D258"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D258"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D259" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D259"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D259"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D260" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D260"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D260"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D261" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D261"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D261"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D262" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D262"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D262"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D263" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D263"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D263"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D264" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D264"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D264"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D265" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D265"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D265"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D266" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D266"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D266"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D267" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D267"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D267"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D268" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D268"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D268"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D269" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D269"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D269"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D270" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D270"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D270"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D271" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D271"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D271"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D272" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D272"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D272"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D273" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D273"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D273"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D274" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D274"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D274"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D275" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D275"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D275"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D276" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D276"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D276"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D277" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D277"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D277"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D278" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D278"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D278"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D279" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D279"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D279"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D280" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D280"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D280"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D281" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D281"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D281"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D282" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D282"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D282"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D283" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D283"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D283"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D284" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D284"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D284"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D285" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D285"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D285"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D286" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D286"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D286"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D287" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D287"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D287"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D288" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 8) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D288"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D288"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D289" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D289"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D289"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D290" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D290"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D290"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D291" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D291"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D291"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D292" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D292"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D292"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D293" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D293"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D293"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D294" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D294"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D294"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D295" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D295"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D295"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D296" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D296"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D296"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D297" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D297"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D297"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D298" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D298"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D298"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D299" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D299"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D299"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D300" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D300"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D300"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D301" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D301"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D301"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D302" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D302"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D302"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D303" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D303"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D303"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D304" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D304"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D304"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D305" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D305"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D305"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D306" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D306"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D306"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D307" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D307"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D307"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D308" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D308"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D308"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D309" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D309"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D309"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D310" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D310"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D310"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D311" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D311"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D311"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D312" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D312"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D312"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D313" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D313"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D313"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D314" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D314"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D314"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D315" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D315"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D315"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D316" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D316"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D316"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D317" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D317"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D317"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D318" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D318"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D318"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D319" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D319"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D319"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D320" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 9) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D320"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D320"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D321" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D321"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D321"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D322" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D322"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D322"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D323" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D323"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D323"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D324" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D324"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D324"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D325" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D325"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D325"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D326" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D326"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D326"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D327" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D327"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D327"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D328" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D328"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D328"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D329" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D329"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D329"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D330" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D330"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D330"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D331" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D331"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D331"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D332" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D332"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D332"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D333" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D333"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D333"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D334" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D334"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D334"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D335" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D335"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D335"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D336" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D336"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D336"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D337" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D337"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D337"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D338" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D338"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D338"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D339" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D339"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D339"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D340" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D340"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D340"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D341" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D341"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D341"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D342" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D342"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D342"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D343" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D343"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D343"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D344" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D344"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D344"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D345" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D345"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D345"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D346" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D346"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D346"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D347" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D347"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D347"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D348" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D348"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D348"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D349" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D349"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D349"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D350" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D350"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D350"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D351" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D351"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D351"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D352" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 10) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D352"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D352"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D353" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D353"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D353"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D354" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D354"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D354"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D355" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D355"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D355"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D356" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D356"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D356"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D357" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D357"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D357"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D358" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D358"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D358"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D359" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D359"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D359"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D360" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D360"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D360"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D361" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D361"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D361"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D362" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D362"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D362"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D363" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D363"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D363"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D364" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D364"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D364"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D365" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D365"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D365"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D366" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D366"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D366"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D367" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D367"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D367"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D368" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D368"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D368"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D369" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D369"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D369"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D370" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D370"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D370"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D371" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D371"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D371"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D372" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D372"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D372"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D373" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D373"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D373"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D374" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D374"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D374"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D375" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D375"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D375"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D376" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D376"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D376"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D377" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D377"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D377"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D378" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D378"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D378"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D379" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D379"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D379"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D380" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D380"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D380"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D381" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D381"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D381"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D382" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D382"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D382"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D383" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D383"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D383"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D384" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 11) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D384"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D384"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D385" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D385"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D385"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D386" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D386"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D386"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D387" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D387"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D387"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D388" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D388"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D388"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D389" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D389"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D389"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D390" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D390"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D390"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D391" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D391"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D391"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D392" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D392"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D392"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D393" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D393"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D393"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D394" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D394"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D394"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D395" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D395"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D395"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D396" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D396"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D396"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D397" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D397"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D397"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D398" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D398"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D398"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D399" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D399"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D399"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D400" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D400"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D400"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D401" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D401"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D401"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D402" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D402"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D402"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D403" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D403"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D403"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D404" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D404"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D404"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D405" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D405"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D405"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D406" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D406"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D406"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D407" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D407"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D407"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D408" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D408"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D408"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D409" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D409"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D409"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D410" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D410"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D410"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D411" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D411"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D411"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D412" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D412"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D412"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D413" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D413"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D413"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D414" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D414"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D414"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D415" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D415"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D415"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D416" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 12) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D416"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D416"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D417" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D417"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D417"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D418" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D418"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D418"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D419" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D419"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D419"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D420" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D420"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D420"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D421" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D421"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D421"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D422" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D422"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D422"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D423" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D423"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D423"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D424" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D424"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D424"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D425" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D425"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D425"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D426" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D426"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D426"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D427" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D427"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D427"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D428" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D428"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D428"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D429" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D429"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D429"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D430" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D430"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D430"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D431" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D431"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D431"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D432" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D432"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D432"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D433" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D433"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D433"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D434" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D434"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D434"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D435" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D435"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D435"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D436" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D436"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D436"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D437" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D437"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D437"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D438" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D438"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D438"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D439" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D439"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D439"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D440" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D440"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D440"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D441" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D441"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D441"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D442" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D442"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D442"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D443" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D443"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D443"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D444" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D444"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D444"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D445" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D445"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D445"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D446" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D446"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D446"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D447" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D447"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D447"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D448" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 13) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D448"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D448"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D449" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D449"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D449"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D450" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D450"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D450"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D451" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D451"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D451"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D452" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D452"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D452"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D453" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D453"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D453"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D454" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D454"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D454"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D455" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D455"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D455"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D456" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D456"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D456"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D457" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D457"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D457"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D458" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D458"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D458"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D459" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D459"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D459"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D460" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D460"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D460"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D461" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D461"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D461"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D462" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D462"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D462"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D463" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D463"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D463"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D464" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D464"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D464"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D465" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D465"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D465"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D466" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D466"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D466"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D467" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D467"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D467"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D468" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D468"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D468"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D469" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D469"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D469"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D470" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D470"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D470"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D471" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D471"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D471"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D472" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D472"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D472"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D473" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D473"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D473"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D474" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D474"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D474"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D475" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D475"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D475"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D476" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D476"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D476"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D477" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D477"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D477"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D478" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D478"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D478"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D479" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D479"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D479"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D480" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 14) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D480"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D480"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D481" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D481"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D481"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D482" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D482"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D482"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D483" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D483"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D483"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D484" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D484"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D484"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D485" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D485"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D485"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D486" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D486"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D486"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D487" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D487"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D487"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D488" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D488"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D488"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D489" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D489"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D489"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D490" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D490"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D490"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D491" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D491"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D491"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D492" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D492"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D492"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D493" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D493"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D493"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D494" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D494"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D494"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D495" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D495"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D495"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D496" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D496"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D496"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D497" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D497"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D497"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D498" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D498"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D498"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D499" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D499"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D499"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D500" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D500"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D500"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D501" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D501"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D501"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D502" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D502"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D502"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D503" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D503"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D503"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D504" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D504"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D504"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D505" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D505"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D505"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D506" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D506"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D506"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D507" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D507"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D507"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D508" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D508"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D508"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D509" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D509"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D509"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D510" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D510"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D510"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D511" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D511"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D511"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D512" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 15) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D512"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D512"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D513" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D513"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D513"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D514" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D514"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D514"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D515" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D515"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D515"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D516" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D516"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D516"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D517" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D517"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D517"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D518" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D518"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D518"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D519" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D519"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D519"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D520" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D520"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D520"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D521" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D521"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D521"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D522" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D522"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D522"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D523" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D523"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D523"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D524" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D524"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D524"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D525" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D525"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D525"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D526" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D526"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D526"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D527" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D527"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D527"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D528" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D528"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D528"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D529" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D529"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D529"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D530" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D530"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D530"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D531" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D531"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D531"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D532" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D532"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D532"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D533" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D533"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D533"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D534" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D534"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D534"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D535" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D535"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D535"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D536" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D536"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D536"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D537" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D537"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D537"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D538" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D538"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D538"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D539" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D539"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D539"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D540" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D540"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D540"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D541" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D541"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D541"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D542" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D542"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D542"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D543" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D543"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D543"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D544" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 16) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D544"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D544"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D545" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D545"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D545"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D546" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D546"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D546"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D547" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D547"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D547"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D548" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D548"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D548"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D549" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D549"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D549"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D550" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D550"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D550"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D551" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D551"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D551"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D552" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D552"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D552"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D553" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D553"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D553"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D554" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D554"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D554"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D555" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D555"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D555"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D556" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D556"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D556"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D557" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D557"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D557"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D558" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D558"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D558"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D559" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D559"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D559"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D560" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D560"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D560"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D561" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D561"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D561"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D562" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D562"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D562"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D563" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D563"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D563"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D564" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D564"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D564"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D565" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D565"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D565"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D566" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D566"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D566"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D567" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D567"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D567"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D568" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D568"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D568"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D569" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D569"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D569"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D570" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D570"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D570"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D571" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D571"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D571"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D572" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D572"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D572"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D573" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D573"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D573"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D574" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D574"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D574"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D575" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D575"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D575"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D576" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 17) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D576"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D576"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D577" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D577"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D577"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D578" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D578"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D578"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D579" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D579"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D579"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D580" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D580"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D580"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D581" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D581"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D581"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D582" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D582"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D582"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D583" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D583"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D583"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D584" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D584"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D584"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D585" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D585"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D585"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D586" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D586"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D586"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D587" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D587"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D587"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D588" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D588"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D588"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D589" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D589"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D589"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D590" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D590"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D590"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D591" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D591"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D591"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D592" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D592"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D592"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D593" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D593"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D593"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D594" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D594"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D594"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D595" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D595"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D595"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D596" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D596"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D596"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D597" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D597"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D597"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D598" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D598"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D598"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D599" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D599"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D599"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D600" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D600"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D600"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D601" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D601"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D601"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D602" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D602"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D602"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D603" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D603"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D603"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D604" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D604"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D604"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D605" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D605"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D605"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D606" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D606"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D606"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D607" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D607"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D607"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D608" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 18) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D608"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D608"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D609" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D609"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D609"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D610" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D610"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D610"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D611" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D611"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D611"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D612" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D612"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D612"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D613" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D613"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D613"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D614" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D614"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D614"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D615" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D615"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D615"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D616" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D616"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D616"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D617" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D617"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D617"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D618" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D618"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D618"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D619" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D619"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D619"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D620" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D620"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D620"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D621" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D621"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D621"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D622" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D622"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D622"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D623" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D623"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D623"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D624" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D624"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D624"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D625" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D625"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D625"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D626" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D626"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D626"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D627" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D627"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D627"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D628" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D628"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D628"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D629" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D629"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D629"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D630" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D630"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D630"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D631" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D631"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D631"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D632" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D632"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D632"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D633" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D633"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D633"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D634" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D634"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D634"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D635" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D635"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D635"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D636" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D636"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D636"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D637" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D637"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D637"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D638" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D638"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D638"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D639" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D639"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D639"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D640" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 19) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D640"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D640"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D641" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D641"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D641"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D642" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D642"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D642"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D643" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D643"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D643"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D644" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D644"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D644"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D645" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D645"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D645"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D646" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D646"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D646"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D647" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D647"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D647"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D648" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D648"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D648"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D649" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D649"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D649"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D650" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D650"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D650"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D651" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D651"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D651"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D652" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D652"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D652"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D653" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D653"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D653"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D654" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D654"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D654"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D655" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D655"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D655"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D656" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D656"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D656"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D657" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D657"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D657"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D658" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D658"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D658"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D659" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D659"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D659"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D660" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D660"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D660"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D661" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D661"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D661"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D662" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D662"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D662"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D663" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D663"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D663"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D664" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D664"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D664"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D665" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D665"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D665"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D666" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D666"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D666"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D667" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D667"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D667"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D668" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D668"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D668"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D669" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D669"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D669"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D670" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D670"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D670"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D671" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D671"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D671"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D672" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 20) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D672"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D672"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D673" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D673"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D673"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D674" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D674"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D674"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D675" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D675"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D675"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D676" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D676"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D676"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D677" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D677"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D677"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D678" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D678"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D678"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D679" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D679"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D679"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D680" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D680"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D680"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D681" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D681"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D681"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D682" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D682"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D682"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D683" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D683"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D683"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D684" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D684"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D684"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D685" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D685"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D685"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D686" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D686"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D686"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D687" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D687"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D687"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D688" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D688"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D688"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D689" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D689"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D689"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D690" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D690"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D690"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D691" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D691"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D691"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D692" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D692"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D692"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D693" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D693"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D693"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D694" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D694"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D694"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D695" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D695"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D695"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D696" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D696"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D696"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D697" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D697"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D697"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D698" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D698"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D698"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D699" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D699"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D699"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D700" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D700"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D700"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D701" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D701"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D701"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D702" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D702"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D702"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D703" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D703"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D703"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D704" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 21) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D704"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D704"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D705" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D705"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D705"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D706" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D706"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D706"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D707" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D707"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D707"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D708" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D708"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D708"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D709" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D709"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D709"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D710" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D710"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D710"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D711" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D711"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D711"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D712" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D712"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D712"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D713" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D713"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D713"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D714" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D714"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D714"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D715" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D715"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D715"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D716" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D716"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D716"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D717" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D717"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D717"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D718" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D718"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D718"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D719" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D719"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D719"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D720" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D720"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D720"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D721" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D721"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D721"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D722" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D722"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D722"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D723" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D723"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D723"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D724" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D724"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D724"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D725" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D725"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D725"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D726" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D726"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D726"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D727" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D727"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D727"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D728" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D728"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D728"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D729" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D729"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D729"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D730" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D730"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D730"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D731" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D731"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D731"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D732" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D732"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D732"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D733" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D733"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D733"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D734" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D734"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D734"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D735" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D735"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D735"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D736" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 22) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D736"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D736"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D737" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D737"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D737"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D738" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D738"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D738"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D739" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D739"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D739"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D740" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D740"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D740"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D741" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D741"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D741"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D742" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D742"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D742"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D743" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D743"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D743"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D744" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D744"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D744"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D745" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D745"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D745"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D746" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D746"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D746"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D747" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D747"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D747"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D748" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D748"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D748"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D749" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D749"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D749"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D750" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D750"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D750"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D751" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D751"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D751"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D752" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D752"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D752"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D753" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D753"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D753"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D754" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D754"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D754"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D755" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D755"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D755"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D756" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D756"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D756"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D757" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D757"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D757"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D758" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D758"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D758"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D759" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D759"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D759"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D760" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D760"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D760"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D761" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D761"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D761"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D762" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D762"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D762"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D763" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D763"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D763"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D764" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D764"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D764"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D765" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D765"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D765"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D766" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D766"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D766"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D767" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D767"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D767"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D768" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 23) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D768"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D768"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D769" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D769"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D769"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D770" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D770"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D770"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D771" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D771"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D771"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D772" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D772"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D772"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D773" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D773"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D773"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D774" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D774"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D774"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D775" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D775"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D775"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D776" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D776"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D776"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D777" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D777"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D777"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D778" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D778"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D778"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D779" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D779"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D779"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D780" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D780"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D780"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D781" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D781"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D781"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D782" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D782"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D782"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D783" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D783"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D783"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D784" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D784"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D784"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D785" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D785"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D785"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D786" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D786"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D786"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D787" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D787"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D787"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D788" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D788"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D788"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D789" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D789"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D789"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D790" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D790"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D790"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D791" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D791"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D791"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D792" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D792"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D792"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D793" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D793"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D793"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D794" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D794"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D794"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D795" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D795"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D795"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D796" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D796"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D796"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D797" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D797"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D797"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D798" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D798"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D798"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D799" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D799"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D799"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D800" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 24) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D800"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D800"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D801" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D801"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D801"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D802" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D802"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D802"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D803" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D803"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D803"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D804" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D804"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D804"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D805" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D805"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D805"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D806" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D806"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D806"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D807" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D807"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D807"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D808" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D808"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D808"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D809" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D809"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D809"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D810" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D810"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D810"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D811" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D811"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D811"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D812" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D812"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D812"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D813" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D813"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D813"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D814" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D814"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D814"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D815" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D815"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D815"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D816" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D816"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D816"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D817" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D817"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D817"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D818" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D818"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D818"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D819" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D819"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D819"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D820" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D820"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D820"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D821" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D821"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D821"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D822" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D822"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D822"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D823" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D823"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D823"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D824" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D824"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D824"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D825" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D825"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D825"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D826" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D826"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D826"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D827" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D827"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D827"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D828" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D828"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D828"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D829" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D829"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D829"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D830" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D830"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D830"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D831" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D831"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D831"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D832" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 25) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D832"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D832"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D833" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D833"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D833"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D834" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D834"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D834"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D835" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D835"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D835"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D836" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D836"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D836"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D837" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D837"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D837"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D838" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D838"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D838"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D839" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D839"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D839"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D840" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D840"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D840"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D841" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D841"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D841"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D842" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D842"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D842"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D843" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D843"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D843"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D844" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D844"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D844"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D845" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D845"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D845"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D846" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D846"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D846"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D847" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D847"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D847"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D848" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D848"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D848"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D849" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D849"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D849"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D850" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D850"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D850"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D851" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D851"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D851"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D852" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D852"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D852"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D853" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D853"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D853"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D854" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D854"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D854"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D855" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D855"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D855"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D856" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D856"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D856"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D857" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D857"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D857"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D858" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D858"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D858"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D859" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D859"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D859"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D860" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D860"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D860"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D861" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D861"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D861"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D862" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D862"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D862"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D863" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D863"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D863"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D864" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 26) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D864"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D864"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D865" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D865"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D865"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D866" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D866"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D866"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D867" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D867"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D867"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D868" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D868"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D868"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D869" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D869"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D869"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D870" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D870"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D870"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D871" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D871"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D871"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D872" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D872"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D872"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D873" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D873"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D873"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D874" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D874"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D874"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D875" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D875"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D875"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D876" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D876"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D876"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D877" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D877"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D877"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D878" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D878"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D878"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D879" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D879"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D879"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D880" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D880"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D880"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D881" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D881"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D881"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D882" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D882"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D882"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D883" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D883"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D883"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D884" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D884"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D884"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D885" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D885"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D885"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D886" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D886"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D886"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D887" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D887"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D887"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D888" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D888"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D888"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D889" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D889"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D889"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D890" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D890"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D890"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D891" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D891"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D891"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D892" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D892"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D892"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D893" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D893"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D893"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D894" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D894"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D894"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D895" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D895"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D895"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D896" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 27) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D896"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D896"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D897" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D897"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D897"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D898" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D898"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D898"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D899" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D899"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D899"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D900" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D900"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D900"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D901" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D901"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D901"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D902" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D902"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D902"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D903" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D903"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D903"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D904" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D904"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D904"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D905" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D905"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D905"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D906" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D906"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D906"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D907" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D907"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D907"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D908" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D908"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D908"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D909" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D909"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D909"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D910" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D910"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D910"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D911" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D911"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D911"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D912" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D912"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D912"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D913" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D913"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D913"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D914" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D914"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D914"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D915" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D915"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D915"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D916" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D916"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D916"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D917" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D917"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D917"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D918" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D918"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D918"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D919" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D919"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D919"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D920" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D920"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D920"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D921" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D921"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D921"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D922" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D922"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D922"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D923" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D923"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D923"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D924" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D924"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D924"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D925" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D925"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D925"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D926" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D926"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D926"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D927" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D927"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D927"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D928" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 28) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D928"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D928"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D929" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D929"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D929"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D930" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D930"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D930"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D931" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D931"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D931"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D932" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D932"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D932"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D933" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D933"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D933"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D934" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D934"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D934"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D935" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D935"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D935"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D936" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D936"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D936"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D937" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D937"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D937"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D938" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D938"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D938"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D939" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D939"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D939"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D940" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D940"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D940"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D941" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D941"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D941"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D942" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D942"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D942"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D943" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D943"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D943"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D944" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D944"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D944"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D945" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D945"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D945"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D946" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D946"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D946"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D947" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D947"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D947"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D948" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D948"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D948"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D949" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D949"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D949"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D950" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D950"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D950"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D951" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D951"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D951"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D952" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D952"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D952"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D953" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D953"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D953"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D954" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D954"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D954"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D955" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D955"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D955"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D956" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D956"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D956"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D957" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D957"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D957"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D958" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D958"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D958"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D959" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D959"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D959"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D960" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 29) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D960"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D960"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D961" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D961"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D961"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D962" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D962"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D962"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D963" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D963"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D963"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D964" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D964"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D964"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D965" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D965"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D965"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D966" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D966"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D966"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D967" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D967"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D967"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D968" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D968"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D968"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D969" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D969"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D969"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D970" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D970"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D970"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D971" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D971"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D971"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D972" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D972"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D972"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D973" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D973"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D973"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D974" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D974"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D974"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D975" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D975"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D975"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D976" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D976"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D976"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D977" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D977"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D977"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D978" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D978"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D978"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D979" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D979"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D979"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D980" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D980"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D980"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D981" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D981"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D981"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D982" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D982"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D982"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D983" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D983"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D983"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D984" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D984"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D984"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D985" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D985"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D985"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D986" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D986"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D986"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D987" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D987"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D987"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D988" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D988"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D988"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D989" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D989"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D989"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D990" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D990"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D990"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D991" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D991"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D991"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D992" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 30) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D992"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D992"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D993" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D993"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D993"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D994" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D994"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D994"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D995" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D995"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D995"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D996" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D996"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D996"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D997" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D997"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D997"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D998" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D998"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D998"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D999" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D999"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D999"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1000" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1000"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1000"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1001" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1001"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1001"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1002" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1002"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1002"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1003" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1003"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1003"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1004" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1004"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1004"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1005" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1005"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1005"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1006" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1006"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1006"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1007" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1007"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1007"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1008" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1008"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1008"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1009" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1009"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1009"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1010" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1010"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1010"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1011" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1011"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1011"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1012" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1012"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1012"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1013" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1013"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1013"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1014" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1014"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1014"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1015" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1015"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1015"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1016" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1016"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1016"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1017" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1017"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1017"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1018" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1018"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1018"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1019" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1019"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1019"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1020" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1020"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1020"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1021" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1021"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1021"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1022" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1022"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1022"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1023" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1023"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1023"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") - -[node name="Node3D1024" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31, 0, 31) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D1024"] -mesh = SubResource("BoxMesh_febld") -skeleton = NodePath("../..") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D1024"] -shape = SubResource("ConvexPolygonShape3D_3b7ih") diff --git a/level2.tscn b/level2.tscn deleted file mode 100644 index 1a66526d..00000000 --- a/level2.tscn +++ /dev/null @@ -1,328 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://c7do3egbjpogv"] - -[ext_resource type="Material" uid="uid://biuyl58gd7g7v" path="res://Materials/wall1.tres" id="1_hbj18"] -[ext_resource type="Material" uid="uid://pdqqtb1s8g6n" path="res://Materials/stairs1.tres" id="2_05h7x"] - -[sub_resource type="BoxMesh" id="BoxMesh_qd30e"] -material = ExtResource("1_hbj18") - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_c4sfh"] -points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5) - -[sub_resource type="PrismMesh" id="PrismMesh_xurh4"] -material = ExtResource("2_05h7x") -left_to_right = 1.0 - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_pol87"] -points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5) - -[node name="Level" type="Node3D"] - -[node name="StaticBody3D" type="StaticBody3D" parent="."] -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D9" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D9"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D9"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D10" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D10"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D10"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D11" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D11"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D11"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D12" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D12"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D12"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D13" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D13"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D13"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D14" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D14"] -mesh = SubResource("PrismMesh_xurh4") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D14"] -shape = SubResource("ConvexPolygonShape3D_pol87") - -[node name="StaticBody3D15" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D15"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D15"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D28" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D28"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D28"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D16" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D16"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D16"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D17" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D17"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D17"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D18" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D18"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D18"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D19" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D19"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D19"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D20" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D20"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D20"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D21" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D21"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D21"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D22" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D22"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D22"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D23" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D23"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D23"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D24" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D24"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D24"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D25" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D25"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D25"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D26" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D26"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D26"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D27" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D27"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D27"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D2" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D2"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D2"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D3" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D3"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D3"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D4" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D4"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D4"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D5" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D5"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D5"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D6" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D6"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D6"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D29" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D29"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D29"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D30" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D30"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D30"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D31" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D31"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D31"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D7" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D7"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D7"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D8" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D8"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D8"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") diff --git a/level3.tscn b/level3.tscn deleted file mode 100644 index 75e8a800..00000000 --- a/level3.tscn +++ /dev/null @@ -1,638 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://cph4p1itsdmo2"] - -[ext_resource type="Material" uid="uid://biuyl58gd7g7v" path="res://Materials/wall1.tres" id="1_7o3o8"] -[ext_resource type="Material" uid="uid://pdqqtb1s8g6n" path="res://Materials/stairs1.tres" id="2_atugm"] - -[sub_resource type="BoxMesh" id="BoxMesh_qd30e"] -material = ExtResource("1_7o3o8") - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_c4sfh"] -points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5) - -[sub_resource type="PrismMesh" id="PrismMesh_xurh4"] -material = ExtResource("2_atugm") -left_to_right = 1.0 - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_pol87"] -points = PackedVector3Array(0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5) - -[node name="Level" type="Node3D"] - -[node name="StaticBody3D" type="StaticBody3D" parent="."] -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D9" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D9"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D9"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D59" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D59"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D59"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D60" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D60"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D60"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D61" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D61"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D61"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D62" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D62"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D62"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D10" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D10"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D10"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D11" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D11"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D11"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D12" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D12"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D12"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D13" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D13"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D13"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D58" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D58"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D58"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D14" type="StaticBody3D" parent="."] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D14"] -mesh = SubResource("PrismMesh_xurh4") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D14"] -shape = SubResource("ConvexPolygonShape3D_pol87") - -[node name="StaticBody3D15" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 0) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D15"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D15"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D28" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D28"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D28"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D16" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D16"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D16"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D17" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D17"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D17"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D29" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D29"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D29"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D30" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D30"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D30"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D31" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D31"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D31"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D32" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D32"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D32"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D33" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D33"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D33"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D34" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D34"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D34"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D35" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D35"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D35"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D36" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D36"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D36"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D37" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D37"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D37"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D38" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D38"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D38"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D39" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D39"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D39"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D40" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D40"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D40"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D41" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D41"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D41"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D42" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D42"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D42"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D43" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D43"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D43"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D44" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D44"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D44"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D45" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D45"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D45"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D46" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D46"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D46"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D47" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D47"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D47"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D48" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D48"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D48"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D49" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D49"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D49"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D50" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D50"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D50"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D51" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D51"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D51"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D52" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D52"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D52"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D53" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D53"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D53"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D54" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D54"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D54"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D55" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D55"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D55"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D56" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D56"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D56"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D57" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D57"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D57"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D18" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D18"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D18"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D19" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D19"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D19"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D20" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D20"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D20"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D21" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D21"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D21"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D22" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D22"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D22"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D23" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D23"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D23"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D24" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D24"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D24"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D25" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D25"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D25"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D26" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D26"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D26"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D27" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D27"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D27"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D2" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D2"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D2"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D3" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D3"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D3"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D4" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D4"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D4"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D5" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 4) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D5"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D5"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D6" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D6"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D6"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D7" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 6) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D7"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D7"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") - -[node name="StaticBody3D8" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7) -metadata/_edit_group_ = true - -[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D8"] -mesh = SubResource("BoxMesh_qd30e") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D8"] -shape = SubResource("ConvexPolygonShape3D_c4sfh") diff --git a/level_generation.tscn b/level_generation.tscn index a2d14974..76f1e341 100644 --- a/level_generation.tscn +++ b/level_generation.tscn @@ -1,18 +1,15 @@ -[gd_scene load_steps=31 format=3 uid="uid://drl78uuphij1l"] +[gd_scene load_steps=26 format=3 uid="uid://drl78uuphij1l"] [ext_resource type="Script" path="res://LevelGenerator.gd" id="1_i8qa4"] [ext_resource type="Script" path="res://LevelManager.gd" id="2_gm6x7"] -[ext_resource type="PackedScene" uid="uid://cpaa3ui52a23c" path="res://Blocks/grass_001.tscn" id="2_plpeq"] -[ext_resource type="PackedScene" uid="uid://b5b2f24f6emf3" path="res://Blocks/concrete_wall001.tscn" id="3_1oyl1"] -[ext_resource type="PackedScene" uid="uid://cmjjw8pjtidpj" path="res://Blocks/concrete_wall002.tscn" id="4_pf75o"] -[ext_resource type="PackedScene" uid="uid://dnsl5rk6de7na" path="res://Blocks/Stairs_to_N001.tscn" id="5_4om2c"] -[ext_resource type="PackedScene" uid="uid://db73ys0cw3b2i" path="res://Blocks/Stairs_to_E001.tscn" id="6_x7pv6"] +[ext_resource type="PackedScene" uid="uid://b2r6nh12wv41k" path="res://Defaults/Mobs/mob.tscn" id="2_jhj6h"] +[ext_resource type="PackedScene" uid="uid://mu6nbyuq02o5" path="res://Defaults/Mobs/mob_corpse.tscn" id="3_l8ooc"] +[ext_resource type="PackedScene" uid="uid://cpmwu7v1r8cg8" path="res://Defaults/Furniture/FurniturePhysics.tscn" id="4_30bqp"] +[ext_resource type="PackedScene" uid="uid://cm4n8cljiij4w" path="res://Defaults/Furniture/FurnitureStatic.tscn" id="5_cakgt"] [ext_resource type="Script" path="res://Scripts/BuildManager.gd" id="6_y7rk5"] -[ext_resource type="PackedScene" uid="uid://dotb8dsoarufo" path="res://Blocks/Stairs_to_S001.tscn" id="7_nhyjt"] [ext_resource type="Script" path="res://Scripts/player.gd" id="8_gposs"] -[ext_resource type="PackedScene" uid="uid://h2antxtbvel4" path="res://Blocks/Stairs_to_W001.tscn" id="8_l45yd"] [ext_resource type="Script" path="res://Scripts/Camera.gd" id="9_gi6l6"] -[ext_resource type="Texture2D" uid="uid://8uwpq1ai8qi4" path="res://Textures/survivor.png" id="10_alql8"] +[ext_resource type="Texture2D" uid="uid://db0xwhrm0sliq" path="res://Defaults/Player/player_300.png" id="10_ghgoh"] [ext_resource type="Script" path="res://Scripts/PlayerShooting.gd" id="11_6i2sa"] [ext_resource type="PackedScene" uid="uid://doyjc25kl7104" path="res://bullet_line.tscn" id="12_dip38"] [ext_resource type="AudioStream" uid="uid://gdwwxc0yvg5g" path="res://Sounds/Weapons/Shooting/pistol_shot.wav" id="13_fjasp"] @@ -37,12 +34,6 @@ agent_height = 0.5 agent_radius = 0.3 agent_max_slope = 46.0 -[sub_resource type="BoxMesh" id="BoxMesh_yaev1"] -size = Vector3(64, 32, 1) - -[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_uf01n"] -points = PackedVector3Array(32, 16, 0.5, 32, 16, -0.5, -32, 16, 0.5, 32, -16, 0.5, 32, -16, -0.5, -32, 16, -0.5, -32, -16, 0.5, -32, -16, -0.5) - [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7gsdb"] albedo_color = Color(0, 1, 0, 1) @@ -53,10 +44,9 @@ size = Vector3(0.3, 1, 0.55) points = PackedVector3Array(0.15, 0.15, 0.275, -0.15, 0.15, 0.275, 0.15, -0.5, 0.275, 0.15, 0.15, -0.275, -0.15, 0.15, -0.275, -0.15, -0.5, 0.275, 0.15, -0.5, -0.275, -0.15, -0.5, -0.275) [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_136pt"] -streams_count = 1 playback_mode = 1 random_pitch = 1.2 -random_volume_offset_db = 0.0 +streams_count = 1 stream_0/stream = ExtResource("13_fjasp") stream_0/weight = 1.0 @@ -70,8 +60,11 @@ radius = 1.5 [node name="LevelGenerator" type="Node3D" parent="TacticalMap" node_paths=PackedStringArray("level_manager") groups=["level_generator"]] script = ExtResource("1_i8qa4") +defaultMob = ExtResource("2_jhj6h") +defaultItem = ExtResource("3_l8ooc") +defaultFurniturePhysics = ExtResource("4_30bqp") +defaultFurnitureStatic = ExtResource("5_cakgt") level_manager = NodePath("../NavigationRegion3D/LevelManager") -block_scenes = Array[PackedScene]([ExtResource("2_plpeq"), ExtResource("3_1oyl1"), ExtResource("4_pf75o"), ExtResource("5_4om2c"), ExtResource("6_x7pv6"), ExtResource("7_nhyjt"), ExtResource("8_l45yd")]) default_level_json = "res://Mods/Core/Maps/Generichouse.json" [node name="WorldEnvironment" type="WorldEnvironment" parent="TacticalMap"] @@ -89,52 +82,6 @@ navigation_mesh = SubResource("NavigationMesh_3licq") [node name="Props" type="Node3D" parent="TacticalMap/NavigationRegion3D"] -[node name="TestWalls" type="Node3D" parent="TacticalMap/NavigationRegion3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 14) - -[node name="TestWall" type="StaticBody3D" parent="TacticalMap/NavigationRegion3D/TestWalls"] - -[node name="MeshInstance3D" type="MeshInstance3D" parent="TacticalMap/NavigationRegion3D/TestWalls/TestWall"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 0, 19) -mesh = SubResource("BoxMesh_yaev1") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="TacticalMap/NavigationRegion3D/TestWalls/TestWall"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 0, 19) -shape = SubResource("ConvexPolygonShape3D_uf01n") - -[node name="TestWall2" type="StaticBody3D" parent="TacticalMap/NavigationRegion3D/TestWalls"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -65) - -[node name="MeshInstance3D" type="MeshInstance3D" parent="TacticalMap/NavigationRegion3D/TestWalls/TestWall2"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 0, 19) -mesh = SubResource("BoxMesh_yaev1") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="TacticalMap/NavigationRegion3D/TestWalls/TestWall2"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 0, 19) -shape = SubResource("ConvexPolygonShape3D_uf01n") - -[node name="TestWall3" type="StaticBody3D" parent="TacticalMap/NavigationRegion3D/TestWalls"] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1, 0, -28) - -[node name="MeshInstance3D" type="MeshInstance3D" parent="TacticalMap/NavigationRegion3D/TestWalls/TestWall3"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 0, 19) -mesh = SubResource("BoxMesh_yaev1") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="TacticalMap/NavigationRegion3D/TestWalls/TestWall3"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 0, 19) -shape = SubResource("ConvexPolygonShape3D_uf01n") - -[node name="TestWall4" type="StaticBody3D" parent="TacticalMap/NavigationRegion3D/TestWalls"] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -66, 0, -28) - -[node name="MeshInstance3D" type="MeshInstance3D" parent="TacticalMap/NavigationRegion3D/TestWalls/TestWall4"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 0, 19) -mesh = SubResource("BoxMesh_yaev1") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="TacticalMap/NavigationRegion3D/TestWalls/TestWall4"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 0, 19) -shape = SubResource("ConvexPolygonShape3D_uf01n") - [node name="LevelManager" type="Node3D" parent="TacticalMap/NavigationRegion3D"] script = ExtResource("2_gm6x7") @@ -145,11 +92,13 @@ hud = NodePath("../../HUD") [node name="Entities" type="Node3D" parent="TacticalMap"] [node name="Enemies" type="Node3D" parent="TacticalMap/Entities"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4043, 0, -8.78679) [node name="Projectiles" type="Node3D" parent="TacticalMap/Entities"] [node name="Player" type="CharacterBody3D" parent="TacticalMap/Entities" node_paths=PackedStringArray("sprite") groups=["Players"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 15) +collision_mask = 3 floor_constant_speed = true floor_max_angle = 0.872665 script = ExtResource("8_gposs") @@ -189,30 +138,36 @@ spot_angle = 83.32 spot_angle_attenuation = 0.183011 [node name="Sprite3D" type="Sprite3D" parent="TacticalMap/Entities/Player"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.277026, 0) +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -0.277026, 0) pixel_size = 0.002 -billboard = 1 -double_sided = false -no_depth_test = true -texture = ExtResource("10_alql8") +texture = ExtResource("10_ghgoh") -[node name="Shooting" type="Node3D" parent="TacticalMap/Entities/Player" node_paths=PackedStringArray("attack_cooldown", "reload_timer", "shoot_audio_player", "reload_audio_player")] +[node name="Shooting" type="Node3D" parent="TacticalMap/Entities/Player" node_paths=PackedStringArray("left_attack_cooldown", "right_attack_cooldown", "left_reload_timer", "right_reload_timer", "shoot_audio_player", "reload_audio_player")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.25, 0) script = ExtResource("11_6i2sa") bullet_damage = 25.0 bullet_line_scene = ExtResource("12_dip38") -attack_cooldown = NodePath("AttackCD") -reload_timer = NodePath("ReloadTime") +left_attack_cooldown = NodePath("Left_attack_cooldown") +right_attack_cooldown = NodePath("Right_attack_cooldown") +left_reload_timer = NodePath("Left_reload_timer") +right_reload_timer = NodePath("Right_reload_timer") player = NodePath("..") hud = NodePath("../../../../HUD") shoot_audio_player = NodePath("ShootAudio") shoot_audio_randomizer = SubResource("AudioStreamRandomizer_136pt") reload_audio_player = NodePath("ReloadAudio") -[node name="AttackCD" type="Timer" parent="TacticalMap/Entities/Player/Shooting"] +[node name="Left_attack_cooldown" type="Timer" parent="TacticalMap/Entities/Player/Shooting"] +one_shot = true + +[node name="Left_reload_timer" type="Timer" parent="TacticalMap/Entities/Player/Shooting"] +wait_time = 5.0 +one_shot = true + +[node name="Right_attack_cooldown" type="Timer" parent="TacticalMap/Entities/Player/Shooting"] one_shot = true -[node name="ReloadTime" type="Timer" parent="TacticalMap/Entities/Player/Shooting"] +[node name="Right_reload_timer" type="Timer" parent="TacticalMap/Entities/Player/Shooting"] wait_time = 5.0 one_shot = true @@ -249,9 +204,12 @@ transform = Transform3D(-0.946576, 0, -0.32248, 0, 1, 0, 0.32248, 0, -0.946576, [connection signal="update_doll" from="TacticalMap/Entities/Player" to="HUD" method="_on_player_update_doll"] [connection signal="update_stamina_HUD" from="TacticalMap/Entities/Player" to="HUD" method="_on_player_update_stamina_hud"] [connection signal="ammo_changed" from="TacticalMap/Entities/Player/Shooting" to="HUD" method="_on_shooting_ammo_changed"] -[connection signal="timeout" from="TacticalMap/Entities/Player/Shooting/ReloadTime" to="TacticalMap/Entities/Player/Shooting" method="_on_reload_time_timeout"] +[connection signal="timeout" from="TacticalMap/Entities/Player/Shooting/Left_reload_timer" to="TacticalMap/Entities/Player/Shooting" method="_on_left_reload_time_timeout"] +[connection signal="timeout" from="TacticalMap/Entities/Player/Shooting/Right_reload_timer" to="TacticalMap/Entities/Player/Shooting" method="_on_right_reload_time_timeout"] [connection signal="add_to_proximity_inventory" from="TacticalMap/Entities/Player/ItemDetector" to="HUD" method="_on_item_detector_add_to_proximity_inventory"] [connection signal="area_entered" from="TacticalMap/Entities/Player/ItemDetector" to="TacticalMap/Entities/Player/ItemDetector" method="_on_area_entered"] [connection signal="area_exited" from="TacticalMap/Entities/Player/ItemDetector" to="TacticalMap/Entities/Player/ItemDetector" method="_on_area_exited"] [connection signal="remove_from_proximity_inventory" from="TacticalMap/Entities/Player/ItemDetector" to="HUD" method="_on_item_detector_remove_from_proximity_inventory"] [connection signal="construction_chosen" from="HUD" to="TacticalMap/BuildManager" method="_on_hud_construction_chosen"] +[connection signal="item_equipment_slot_was_cleared" from="HUD" to="TacticalMap/Entities/Player/Shooting" method="_on_hud_item_equipment_slot_was_cleared"] +[connection signal="item_was_equipped" from="HUD" to="TacticalMap/Entities/Player/Shooting" method="_on_hud_item_was_equipped"] diff --git a/project.godot b/project.godot index b363ba2b..65f59b44 100644 --- a/project.godot +++ b/project.godot @@ -12,17 +12,18 @@ config_version=5 config/name="CataX" run/main_scene="res://scene_selector.tscn" -config/features=PackedStringArray("4.1", "Forward Plus") +config/features=PackedStringArray("4.2", "Forward Plus") config/icon="res://icon.svg" [autoload] Nakama="res://addons/com.heroiclabs.nakama/Nakama.gd" +Helper="*res://Scripts/Helper.gd" +Gamedata="*res://Scripts/gamedata.gd" GLoot="*res://addons/gloot/gloot_autoload.gd" ItemManager="*res://Scripts/item_manager.gd" General="*res://Scripts/general.gd" CraftingRecipesManager="*res://Scripts/crafting_recipes_manager.gd" -Helper="*res://Scripts/Helper.gd" [display] @@ -37,6 +38,27 @@ movie_writer/movie_file="D:/CataX resources/catax.avi" enabled=PackedStringArray("res://addons/gloot/plugin.cfg", "res://addons/markdownlabel/plugin.cfg") +[file_customization] + +folder_colors={ +"res://Blocks/": "orange", +"res://Documentation/": "teal", +"res://Images/": "pink", +"res://Mods/": "purple", +"res://Scenes/": "red", +"res://Scenes/ContentManager/": "yellow", +"res://Scenes/ContentManager/Custom_Editors/": "red", +"res://Scenes/ContentManager/Custom_Editors/Scripts/": "green", +"res://Scenes/ContentManager/Custom_Editors/TacticalMapEditor/Scripts/": "green", +"res://Scenes/ContentManager/Custom_Widgets/": "purple", +"res://Scenes/ContentManager/Custom_Widgets/Scripts/": "green", +"res://Scenes/ContentManager/Mapeditor/": "blue", +"res://Scenes/ContentManager/Scripts/": "green", +"res://Scenes/Overmap/Scripts/": "green", +"res://Scripts/": "green", +"res://addons/": "gray" +} + [input] up={ @@ -59,11 +81,6 @@ right={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null) ] } -click={ -"deadzone": 0.5, -"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(286, 8),"global_position":Vector2(290, 51),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) -] -} zoom_in={ "deadzone": 0.5, "events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(120, 6),"global_position":Vector2(124, 49),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null) @@ -89,11 +106,6 @@ build_menu={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":66,"key_label":0,"unicode":98,"echo":false,"script":null) ] } -right_click={ -"deadzone": 0.5, -"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(124, 12),"global_position":Vector2(128, 55),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) -] -} reload_weapon={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"echo":false,"script":null) @@ -109,6 +121,21 @@ interact={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null) ] } +overmap={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":77,"key_label":0,"unicode":109,"echo":false,"script":null) +] +} +click_left={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(130, 29),"global_position":Vector2(135, 79),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +click_right={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(281, 16),"global_position":Vector2(286, 66),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} [layer_names] diff --git a/scene_selector.tscn b/scene_selector.tscn index cac7b86a..c18c0f62 100644 --- a/scene_selector.tscn +++ b/scene_selector.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://Scripts/scene_selector.gd" id="1_a5yxj"] [ext_resource type="FontFile" uid="uid://chm7lbcdeyo0h" path="res://Roboto-Bold.ttf" id="1_sue5h"] -[node name="SceneSelector" type="Control" node_paths=PackedStringArray("option_levels")] +[node name="SceneSelector" type="Control" node_paths=PackedStringArray("load_game_list")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -11,7 +11,7 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_a5yxj") -option_levels = NodePath("OptionButton") +load_game_list = NodePath("LoadGameList") [node name="PlayDemo" type="Button" parent="."] layout_mode = 1 @@ -23,16 +23,16 @@ theme_override_fonts/font = ExtResource("1_sue5h") theme_override_font_sizes/font_size = 60 text = "Play demo" -[node name="ViewLevel" type="Button" parent="."] +[node name="LoadGameButton" type="Button" parent="."] layout_mode = 1 offset_top = 378.0 offset_right = 453.0 offset_bottom = 457.0 theme_override_fonts/font = ExtResource("1_sue5h") theme_override_font_sizes/font_size = 25 -text = "View selected level ---->>>" +text = "Load game ---->>>" -[node name="OptionButton" type="OptionButton" parent="."] +[node name="LoadGameList" type="OptionButton" parent="."] layout_mode = 1 offset_left = 477.0 offset_top = 378.0 @@ -48,6 +48,16 @@ offset_bottom = 553.0 theme_override_font_sizes/font_size = 25 text = "Help" +[node name="ContentManagerButton" type="Button" parent="."] +layout_mode = 0 +offset_left = 477.0 +offset_top = 474.0 +offset_right = 865.0 +offset_bottom = 553.0 +theme_override_font_sizes/font_size = 25 +text = "Content Manager" + [connection signal="pressed" from="PlayDemo" to="." method="_on_play_demo_pressed"] -[connection signal="pressed" from="ViewLevel" to="." method="_on_view_level_pressed"] +[connection signal="pressed" from="LoadGameButton" to="." method="_on_load_game_button_pressed"] [connection signal="pressed" from="HelpButton" to="." method="_on_help_button_pressed"] +[connection signal="button_up" from="ContentManagerButton" to="." method="_on_content_manager_button_button_up"]