a game about throwing hammers made for the github game off
reorganize level system (some of my levels werent even in the pool :cry:)
bendn 2022-12-10
parent fe41467 · commit fd62d4a
-rw-r--r--Main.tscn27
-rw-r--r--levels/LevelManager.gd92
-rw-r--r--levels/Start.gd5
-rw-r--r--levels/Start.tscn1
-rw-r--r--levels/rand/0/0.tscn (renamed from levels/rand/02.tscn)0
-rw-r--r--levels/rand/0/1.tscn (renamed from levels/rand/03.tscn)0
-rw-r--r--levels/rand/0/2.tscn (renamed from levels/rand/01.tscn)0
-rw-r--r--levels/rand/1/0.tscn (renamed from levels/rand/04.tscn)0
-rw-r--r--levels/rand/1/1.tscn (renamed from levels/rand/19.tscn)0
-rw-r--r--levels/rand/10/0.tscn (renamed from levels/rand/18.tscn)0
-rw-r--r--levels/rand/10/1.tscn (renamed from levels/rand/13.tscn)0
-rw-r--r--levels/rand/11/0.tscn (renamed from levels/rand/14.tscn)0
-rw-r--r--levels/rand/12/0.tscn (renamed from levels/rand/15.tscn)0
-rw-r--r--levels/rand/13/0.tscn (renamed from levels/rand/16.tscn)0
-rw-r--r--levels/rand/14/0.tscn (renamed from levels/rand/17.tscn)0
-rw-r--r--levels/rand/14/1.tscn34
-rw-r--r--levels/rand/2/0.tscn (renamed from levels/rand/20.tscn)0
-rw-r--r--levels/rand/2/1.tscn (renamed from levels/rand/05.tscn)0
-rw-r--r--levels/rand/3/0.tscn (renamed from levels/rand/06.tscn)0
-rw-r--r--levels/rand/4/0.tscn (renamed from levels/rand/21.tscn)0
-rw-r--r--levels/rand/4/1.tscn (renamed from levels/rand/07.tscn)0
-rw-r--r--levels/rand/5/0.tscn (renamed from levels/rand/08.tscn)0
-rw-r--r--levels/rand/6/0.tscn (renamed from levels/rand/09.tscn)0
-rw-r--r--levels/rand/7/0.tscn (renamed from levels/rand/10.tscn)0
-rw-r--r--levels/rand/8/0.tscn (renamed from levels/rand/22.tscn)0
-rw-r--r--levels/rand/8/1.tscn (renamed from levels/rand/11.tscn)0
-rw-r--r--levels/rand/9/0.tscn (renamed from levels/rand/12.tscn)0
27 files changed, 95 insertions, 64 deletions
diff --git a/Main.tscn b/Main.tscn
index b8c964d..41c83e3 100644
--- a/Main.tscn
+++ b/Main.tscn
@@ -1,27 +1,9 @@
-[gd_scene load_steps=25 format=3 uid="uid://06slp4crd6oj"]
+[gd_scene load_steps=7 format=3 uid="uid://06slp4crd6oj"]
[ext_resource type="Script" path="res://Main.gd" id="1_l4fqe"]
[ext_resource type="PackedScene" uid="uid://cl03k3yc8fxkt" path="res://player/player.tscn" id="1_ug1uc"]
[ext_resource type="PackedScene" uid="uid://dqxnsdq67j23x" path="res://levels/Start.tscn" id="2_vg2cv"]
[ext_resource type="Script" path="res://levels/LevelManager.gd" id="3_yuvn4"]
-[ext_resource type="PackedScene" uid="uid://bujj6au21fw2" path="res://levels/rand/01.tscn" id="4_e4ceh"]
-[ext_resource type="PackedScene" uid="uid://yl0khissgys3" path="res://levels/rand/02.tscn" id="5_vqiwr"]
-[ext_resource type="PackedScene" uid="uid://cc2cke0h0rq2" path="res://levels/rand/03.tscn" id="6_v5xvb"]
-[ext_resource type="PackedScene" uid="uid://byccymelwvur8" path="res://levels/rand/04.tscn" id="7_rihcm"]
-[ext_resource type="PackedScene" uid="uid://hr0ueup48w71" path="res://levels/rand/05.tscn" id="8_5a36k"]
-[ext_resource type="PackedScene" uid="uid://887jva236kjn" path="res://levels/rand/06.tscn" id="9_3vmkv"]
-[ext_resource type="PackedScene" uid="uid://dsjel2dj0wjo2" path="res://levels/rand/07.tscn" id="10_7n0bw"]
-[ext_resource type="PackedScene" uid="uid://s1lsinwfques" path="res://levels/rand/08.tscn" id="11_skonw"]
-[ext_resource type="PackedScene" uid="uid://e4kinwyx5821" path="res://levels/rand/09.tscn" id="12_5n213"]
-[ext_resource type="PackedScene" uid="uid://dd74d1a4uirhr" path="res://levels/rand/10.tscn" id="13_ni5ug"]
-[ext_resource type="PackedScene" uid="uid://dip1l1cd8s8p0" path="res://levels/rand/11.tscn" id="14_uubx2"]
-[ext_resource type="PackedScene" uid="uid://bfpc41oqcf0qw" path="res://levels/rand/12.tscn" id="15_x5iyq"]
-[ext_resource type="PackedScene" uid="uid://ml0vpr107gc8" path="res://levels/rand/13.tscn" id="16_xq64q"]
-[ext_resource type="PackedScene" uid="uid://cpg5dac48jhj0" path="res://levels/rand/14.tscn" id="17_c4kk1"]
-[ext_resource type="PackedScene" uid="uid://bk6x0rwnfcnax" path="res://levels/rand/15.tscn" id="18_mpe1f"]
-[ext_resource type="PackedScene" uid="uid://dcbnac3k5c2bh" path="res://levels/rand/16.tscn" id="19_ko67h"]
-[ext_resource type="PackedScene" uid="uid://pk206siyyege" path="res://levels/rand/17.tscn" id="20_f85eu"]
-[ext_resource type="PackedScene" uid="uid://dbcrx23xsfrlp" path="res://levels/rand/18.tscn" id="21_rvdjm"]
[ext_resource type="PackedScene" uid="uid://bnsgjilr4mn10" path="res://ui/hud/hud.tscn" id="23_5dqpk"]
[ext_resource type="PackedScene" uid="uid://bn6ky6p73m8ql" path="res://ui/death.tscn" id="24_4kagl"]
@@ -33,16 +15,11 @@ script = ExtResource("1_l4fqe")
position = Vector2(128, 96)
death = NodePath("../death/death")
-[node name="Start" parent="." instance=ExtResource("2_vg2cv")]
-layer_0/tile_data = PackedInt32Array(131072, 0, 1, 196608, 0, 1, 262144, 262144, 1, 327680, 196608, 1, 393216, 196608, 2, 589824, 196608, 0, 655360, 196608, 1, 720896, 262144, 2, 786432, 0, 1, 851968, 0, 1, 917504, 0, 1, 983040, 0, 2, 983041, 65536, 2, 2, 65536, 0, 983042, 327680, 3, 3, 65536, 0, 983043, 65536, 3, 4, 65536, 0, 983044, 65536, 3, 5, 327680, 0, 983045, 65536, 3, 6, 131072, 3, 393222, 0, 0, 524294, 0, 1, 589830, 0, 2, 983046, 131072, 3, 524295, 65536, 1, 589831, 65536, 2, 393224, 65536, 0, 458760, 65536, 1, 524296, 65536, 1, 589832, 65536, 2, 9, 0, 0, 393225, 131072, 0, 458761, 131072, 1, 524297, 131072, 1, 589833, 131072, 2, 983049, 0, 3, 10, 327680, 0, 983050, 65536, 3, 11, 65536, 3, 983051, 65536, 3, 12, 393216, 0, 983052, 65536, 3, 13, 65536, 0, 983053, 65536, 3, 14, 65536, 0, 983054, 65536, 3, 15, 131072, 0, 65551, 458752, 1, 131087, 196608, 1, 196623, 196608, 1, 262159, 196608, 1, 327695, 196608, 1, 393231, 196608, 2, 589839, 196608, 0, 655375, 196608, 1, 720911, 196608, 1, 786447, 196608, 1, 851983, 196608, 1, 917519, 196608, 1, 983055, 458752, 3, 65536, 0, 1, 0, 0, 0, 1, 65536, 0, 458758, 0, 1, 393223, 65536, 0, 458759, 65536, 1, 917516, 196609, 0, 917517, 262145, 0, 851982, 196609, 0, 917518, 327681, 0, 917505, 65536, 1, 917506, 131072, 1, 851970, 131072, 0, 851969, 327680, 2, 786433, 131072, 1, 720897, 131072, 0, 786439, 0, 0, 786440, 327680, 0, 851976, 131072, 2, 851975, 0, 2, 786441, 131072, 3, 393220, 196608, 2, 327684, 196608, 1, 262148, 458752, 1, 393228, 196608, 0, 458764, 196608, 1, 524300, 196608, 1, 589836, 196608, 2, 262147, 65536, 2, 262146, 65536, 2, 262145, 65536, 2, 196609, 65536, 1, 131073, 65536, 1, 65537, 65536, 1, 65538, 65536, 1, 131074, 65536, 1, 196610, 65536, 1, 65539, 65536, 1, 131075, 65536, 1, 196611, 65536, 1, 196612, 131072, 1, 131076, 327680, 1, 131077, 131072, 2, 65540, 65536, 1, 65548, 0, 1, 65549, 327680, 1, 131085, 458752, 1, 131084, 0, 2, 196621, 196608, 2, 65550, 65536, 2, 65546, 131072, 1, 131082, 131072, 2, 65545, 0, 1, 131081, 262144, 1, 196617, 196608, 2, 65541, 131072, 1)
-
-[node name="LevelManager" type="Node" parent="." node_paths=PackedStringArray("current_level", "player")]
+[node name="LevelManager" type="Node" parent="." node_paths=PackedStringArray("player")]
unique_name_in_owner = true
script = ExtResource("3_yuvn4")
-current_level = NodePath("../Start")
start = ExtResource("2_vg2cv")
player = NodePath("../player")
-levels = [ExtResource("4_e4ceh"), ExtResource("5_vqiwr"), ExtResource("6_v5xvb"), ExtResource("7_rihcm"), ExtResource("8_5a36k"), ExtResource("9_3vmkv"), ExtResource("10_7n0bw"), ExtResource("11_skonw"), ExtResource("12_5n213"), ExtResource("13_ni5ug"), ExtResource("14_uubx2"), ExtResource("15_x5iyq"), ExtResource("16_xq64q"), ExtResource("17_c4kk1"), ExtResource("18_mpe1f"), ExtResource("19_ko67h"), ExtResource("20_f85eu"), ExtResource("21_rvdjm")]
[node name="Camera" type="Camera2D" parent="."]
offset = Vector2(128, 128)
diff --git a/levels/LevelManager.gd b/levels/LevelManager.gd
index daa1bb2..2d4b1b1 100644
--- a/levels/LevelManager.gd
+++ b/levels/LevelManager.gd
@@ -16,8 +16,8 @@ var completed_levels: Array[Vector2i] = []
## Maze size
@export var size := Vector2i(10, 10)
-## ASSIGN TO Start.tscn
-@export var current_level: TileMap
+## The current level
+var current_level: TileMap
@export var start: PackedScene
@export var player: Player
@onready var main := get_parent() as Node2D
@@ -26,19 +26,46 @@ var lvl_position := Vector2i(-1, -1)
## Timer used for debouncing multiple door enters. (some kind of physics bug there is probably a tracker for but i havent found it)
var t: SceneTreeTimer
-@export var levels: Array[PackedScene]
-
-## type: PackedScene[15][∞]
-var sorted := [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]
+## type: PackedScene[14][∞]
+var levels := []
func _init() -> void:
Globals.levelmanager = self
func _ready() -> void:
+ populate_levels()
gen_map()
- lvl_position = size / 2
Events.change_level.connect(go)
- print_map_pretty()
+ if OS.is_debug_build():
+ # show sorted levels
+ for i in len(levels):
+ print(i, ":", " [")
+ for l in levels[i]:
+ print(l.resource_path.indent("\t"))
+ print("],")
+
+ # show the map
+ var string := ""
+ for row in map:
+ for item in row:
+ if "Start" in item.resource_path:
+ string += "na "
+ else:
+ string += "%02d " % item.get_state().get_node_property_value(0, 1)
+ string += "\n"
+ print(string)
+
+ # show the maze (for visual discrepancy parsing)
+ string = ""
+ for row in maze.maze:
+ for item in row:
+ string += "%02d " % item
+ string += "\n"
+ print(string)
+ lvl_position = size / 2
+ current_level = start.instantiate()
+ current_level.enabled_walls = maze.get_cellv(lvl_position)
+ main.call_deferred(&"add_child", (current_level))
## Goes to the next room in [param to] direction.
func go(to: Vector2i) -> void:
@@ -60,34 +87,31 @@ func go(to: Vector2i) -> void:
else:
prints("welcome to", current_level.name)
-## Prints out the map prettily.
-## eg: [codeblock]
-## 14 16 04 08 08 10
-## 15 04 07 04 04 06
-## 12 09 12 05 11 05
-## 15 08 07 St 05 13
-## 12 08 06 15 02 05
-## 15 08 07 08 07 09
-## [/codeblock]
-func print_map_pretty() -> void:
- var string := ""
- for row in map:
- for item in row:
- string += str(item.get_state().get_node_name(0)).substr(0, 2) + " "
- string += "\n"
- print(string)
-
-## Split levels into [url=https://kidscancode.org/blog/img/cells_4bit.png]4bit wall[/url] groups.
-func sort_levels():
- for level in levels:
- # property idx 1 is the enabled walls
- # if prop is not overriden, default to 0
- var n: int = 0 if level.get_state().get_node_property_count(0) == 1 else level.get_state().get_node_property_value(0, 1)
- sorted[n].append(level)
+
+# apparently lambdas cant do it
+func __inner_populate_loop(path := "res://levels/rand"):
+ var dir := DirAccess.open(path)
+ dir.list_dir_begin()
+ var file_name := dir.get_next()
+ while not file_name.is_empty():
+ if dir.current_is_dir():
+ __inner_populate_loop(path.path_join(file_name))
+ else:
+ file_name = file_name.trim_suffix('.remap') # <---- NEW
+ var level: PackedScene = load(path.path_join(file_name)) as PackedScene
+ # Split levels into wall groups groups.
+ levels[level.get_state().get_node_property_value(0, 1)].append(level)
+ file_name = dir.get_next()
+
+## Populates the levels array
+func populate_levels() -> void:
+ levels.clear()
+ levels = [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]
+ __inner_populate_loop()
+
## Generates the maze.
func gen_map() -> void:
- sort_levels()
maze = Maze.new(size)
maze.image.save_png("res://maze.png")
lvl_position = size / 2
@@ -95,7 +119,7 @@ func gen_map() -> void:
for row in maze.maze:
var map_row: Array[PackedScene] = []
for i in row:
- map_row.append(sorted[i][randi() % len(sorted[i])])
+ map_row.append(levels[i][randi() % len(levels[i])])
map.append(map_row)
map[lvl_position.x][lvl_position.y] = start
world_generated.emit(maze)
diff --git a/levels/Start.gd b/levels/Start.gd
index ec8c441..7db6e77 100644
--- a/levels/Start.gd
+++ b/levels/Start.gd
@@ -1,11 +1,6 @@
extends Level
func _ready() -> void:
- var lm: LevelManager = Globals.levelmanager
- var maze: Maze = lm.maze
- if !maze:
- maze = await lm.world_generated
- enabled_walls = (maze.get_cellv(lm.size / 2))
const wm := {
Vector2i.UP: [Vector2i(7, 0), Vector2i(8, 0)],
Vector2i.DOWN: [Vector2i(7, 15), Vector2i(8, 15)],
diff --git a/levels/Start.tscn b/levels/Start.tscn
index f3ab013..a925958 100644
--- a/levels/Start.tscn
+++ b/levels/Start.tscn
@@ -6,3 +6,4 @@
[node name="Start" instance=ExtResource("1_qw36g")]
layer_0/tile_data = PackedInt32Array(131072, 0, 1, 196608, 0, 1, 262144, 262144, 1, 327680, 196608, 1, 393216, 196608, 2, 589824, 196608, 0, 655360, 196608, 1, 720896, 262144, 2, 786432, 0, 1, 851968, 0, 1, 917504, 0, 1, 983040, 0, 2, 983041, 65536, 2, 2, 65536, 0, 983042, 327680, 3, 3, 65536, 0, 983043, 65536, 3, 4, 65536, 0, 983044, 65536, 3, 5, 327680, 0, 983045, 65536, 3, 6, 131072, 3, 393222, 0, 0, 524294, 0, 1, 589830, 0, 2, 983046, 131072, 3, 524295, 65536, 1, 589831, 65536, 2, 393224, 65536, 0, 458760, 65536, 1, 524296, 65536, 1, 589832, 65536, 2, 9, 0, 0, 393225, 131072, 0, 458761, 131072, 1, 524297, 131072, 1, 589833, 131072, 2, 983049, 0, 3, 10, 327680, 0, 983050, 65536, 3, 11, 65536, 3, 983051, 65536, 3, 12, 393216, 0, 983052, 65536, 3, 13, 65536, 0, 983053, 65536, 3, 14, 65536, 0, 983054, 65536, 3, 15, 131072, 0, 65551, 458752, 1, 131087, 196608, 1, 196623, 196608, 1, 262159, 196608, 1, 327695, 196608, 1, 393231, 196608, 2, 589839, 196608, 0, 655375, 196608, 1, 720911, 196608, 1, 786447, 196608, 1, 851983, 196608, 1, 917519, 196608, 1, 983055, 458752, 3, 65536, 0, 1, 0, 0, 0, 1, 65536, 0, 458758, 0, 1, 393223, 65536, 0, 458759, 65536, 1, 917516, 196609, 0, 917517, 262145, 0, 851982, 196609, 0, 917518, 327681, 0, 917505, 65536, 1, 917506, 131072, 1, 851970, 131072, 0, 851969, 327680, 2, 786433, 131072, 1, 720897, 131072, 0, 786439, 0, 0, 786440, 327680, 0, 851976, 131072, 2, 851975, 0, 2, 786441, 131072, 3, 393220, 196608, 2, 327684, 196608, 1, 262148, 458752, 1, 393228, 196608, 0, 458764, 196608, 1, 524300, 196608, 1, 589836, 196608, 2, 262147, 65536, 2, 262146, 65536, 2, 262145, 65536, 2, 196609, 65536, 1, 131073, 65536, 1, 65537, 65536, 1, 65538, 65536, 1, 131074, 65536, 1, 196610, 65536, 1, 65539, 65536, 1, 131075, 65536, 1, 196611, 65536, 1, 196612, 131072, 1, 131076, 327680, 1, 131077, 131072, 2, 65541, 131072, 1, 65540, 65536, 1, 65548, 0, 1, 65549, 327680, 1, 131085, 458752, 1, 131084, 0, 2, 196621, 196608, 2, 65550, 65536, 2, 65546, 131072, 1, 131082, 131072, 2, 65545, 0, 1, 131081, 262144, 1, 196617, 196608, 2)
script = ExtResource("2_dhcq0")
+enabled_walls = 0
diff --git a/levels/rand/02.tscn b/levels/rand/0/0.tscn
index 4d8b77c..4d8b77c 100644
--- a/levels/rand/02.tscn
+++ b/levels/rand/0/0.tscn
diff --git a/levels/rand/03.tscn b/levels/rand/0/1.tscn
index d4cc759..d4cc759 100644
--- a/levels/rand/03.tscn
+++ b/levels/rand/0/1.tscn
diff --git a/levels/rand/01.tscn b/levels/rand/0/2.tscn
index 1355203..1355203 100644
--- a/levels/rand/01.tscn
+++ b/levels/rand/0/2.tscn
diff --git a/levels/rand/04.tscn b/levels/rand/1/0.tscn
index 01237dc..01237dc 100644
--- a/levels/rand/04.tscn
+++ b/levels/rand/1/0.tscn
diff --git a/levels/rand/19.tscn b/levels/rand/1/1.tscn
index 3abfd77..3abfd77 100644
--- a/levels/rand/19.tscn
+++ b/levels/rand/1/1.tscn
diff --git a/levels/rand/18.tscn b/levels/rand/10/0.tscn
index c8f9a7c..c8f9a7c 100644
--- a/levels/rand/18.tscn
+++ b/levels/rand/10/0.tscn
diff --git a/levels/rand/13.tscn b/levels/rand/10/1.tscn
index 55c6dd2..55c6dd2 100644
--- a/levels/rand/13.tscn
+++ b/levels/rand/10/1.tscn
diff --git a/levels/rand/14.tscn b/levels/rand/11/0.tscn
index 085b07d..085b07d 100644
--- a/levels/rand/14.tscn
+++ b/levels/rand/11/0.tscn
diff --git a/levels/rand/15.tscn b/levels/rand/12/0.tscn
index e012792..e012792 100644
--- a/levels/rand/15.tscn
+++ b/levels/rand/12/0.tscn
diff --git a/levels/rand/16.tscn b/levels/rand/13/0.tscn
index 6789641..6789641 100644
--- a/levels/rand/16.tscn
+++ b/levels/rand/13/0.tscn
diff --git a/levels/rand/17.tscn b/levels/rand/14/0.tscn
index da37d30..da37d30 100644
--- a/levels/rand/17.tscn
+++ b/levels/rand/14/0.tscn
diff --git a/levels/rand/14/1.tscn b/levels/rand/14/1.tscn
new file mode 100644
index 0000000..ea01161
--- /dev/null
+++ b/levels/rand/14/1.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=5 format=3 uid="uid://bukvnwy6paasr"]
+
+[ext_resource type="PackedScene" uid="uid://dxx21fiom4ef1" path="res://levels/Level.tscn" id="1_otvl3"]
+[ext_resource type="PackedScene" uid="uid://b0s1su8xjtxdj" path="res://enemys/wrencher.tscn" id="2_d40ci"]
+[ext_resource type="PackedScene" uid="uid://dup8mgagrc2b6" path="res://world/moving_platform/moving_platform.tscn" id="3_y8t4g"]
+
+[sub_resource type="Curve2D" id="Curve2D_nauqg"]
+_data = {
+"points": PackedVector2Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193)
+}
+point_count = 2
+
+[node name="17" instance=ExtResource("1_otvl3")]
+layer_0/tile_data = PackedInt32Array(131072, 196608, 1, 196608, 196608, 1, 262144, 196608, 1, 327680, 196608, 1, 393216, 196608, 1, 589824, 196608, 1, 655360, 196608, 1, 720896, 196608, 1, 786432, 262144, 2, 851968, 0, 1, 917504, 0, 1, 983040, 0, 2, 983041, 65536, 2, 2, 65536, 3, 983042, 327680, 3, 3, 65536, 3, 983043, 65536, 3, 4, 65536, 3, 983044, 65536, 3, 5, 65536, 3, 983045, 65536, 3, 6, 131072, 3, 983046, 65536, 3, 9, 0, 3, 983049, 65536, 3, 10, 65536, 3, 983050, 65536, 3, 11, 65536, 3, 983051, 65536, 3, 12, 65536, 3, 983052, 65536, 3, 13, 65536, 3, 983053, 393216, 3, 14, 65536, 3, 983054, 65536, 2, 15, 458752, 0, 65551, 196608, 1, 131087, 196608, 1, 196623, 196608, 1, 262159, 196608, 1, 327695, 196608, 1, 393231, 196608, 1, 589839, 196608, 1, 655375, 196608, 1, 720911, 196608, 1, 786447, 458752, 2, 851983, 131072, 1, 917519, 131072, 1, 983055, 131072, 2, 65536, 196608, 1, 0, 262144, 0, 1, 65536, 3, 458752, 196608, 1, 524288, 196608, 1, 786433, 131072, 0, 917505, 327680, 2, 851969, 131072, 1, 917506, 131072, 0, 983047, 65536, 3, 983048, 65536, 3, 524303, 196608, 1, 458767, 196608, 1, 917518, 65536, 1, 851982, 393216, 2, 786446, 0, 0, 851981, 0, 0, 917517, 0, 1, 262149, 0, 2, 262150, 131072, 2, 196614, 131072, 0, 196613, 0, 0, 327689, 0, 0, 393225, 0, 2, 393226, 131072, 2, 327690, 131072, 0, 458757, 0, 0, 458758, 131072, 0, 524294, 131072, 2, 524293, 0, 2, 589833, 0, 0, 655369, 0, 2, 655370, 131072, 2, 589834, 131072, 0, 786437, 0, 0, 851973, 0, 2, 851974, 131072, 2, 786438, 131072, 0, 851977, 196608, 3, 196617, 0, 3, 196618, 131072, 3, 327692, 0, 0, 327693, 131072, 0, 393229, 131072, 2, 393228, 0, 2, 196610, 0, 0, 196611, 131072, 0, 262147, 131072, 2, 262146, 0, 2, 524290, 0, 3, 524291, 131072, 3, 655362, 0, 3, 655363, 131072, 3, 655372, 0, 3, 655373, 131072, 3, 524300, 0, 3, 524301, 131072, 3)
+enabled_walls = 14
+
+[node name="Wrencher" parent="Enemys" index="0" instance=ExtResource("2_d40ci")]
+position = Vector2(187, 235)
+max_health = 7
+
+[node name="Wrencher2" parent="Enemys" index="1" instance=ExtResource("2_d40ci")]
+position = Vector2(21, 107)
+rotation = 1.57079
+max_health = 2
+
+[node name="Wrencher3" parent="Enemys" index="2" instance=ExtResource("2_d40ci")]
+position = Vector2(235, 63)
+rotation = 4.71238
+max_health = 3
+
+[node name="MovingPlatform" parent="." index="1" instance=ExtResource("3_y8t4g")]
+position = Vector2(128, 245)
+curve = SubResource("Curve2D_nauqg")
+playback_speed = 0.3
diff --git a/levels/rand/20.tscn b/levels/rand/2/0.tscn
index 9236691..9236691 100644
--- a/levels/rand/20.tscn
+++ b/levels/rand/2/0.tscn
diff --git a/levels/rand/05.tscn b/levels/rand/2/1.tscn
index e9717fc..e9717fc 100644
--- a/levels/rand/05.tscn
+++ b/levels/rand/2/1.tscn
diff --git a/levels/rand/06.tscn b/levels/rand/3/0.tscn
index 191944f..191944f 100644
--- a/levels/rand/06.tscn
+++ b/levels/rand/3/0.tscn
diff --git a/levels/rand/21.tscn b/levels/rand/4/0.tscn
index c107978..c107978 100644
--- a/levels/rand/21.tscn
+++ b/levels/rand/4/0.tscn
diff --git a/levels/rand/07.tscn b/levels/rand/4/1.tscn
index 848ecd5..848ecd5 100644
--- a/levels/rand/07.tscn
+++ b/levels/rand/4/1.tscn
diff --git a/levels/rand/08.tscn b/levels/rand/5/0.tscn
index e7de10b..e7de10b 100644
--- a/levels/rand/08.tscn
+++ b/levels/rand/5/0.tscn
diff --git a/levels/rand/09.tscn b/levels/rand/6/0.tscn
index 263f0e9..263f0e9 100644
--- a/levels/rand/09.tscn
+++ b/levels/rand/6/0.tscn
diff --git a/levels/rand/10.tscn b/levels/rand/7/0.tscn
index a01370f..a01370f 100644
--- a/levels/rand/10.tscn
+++ b/levels/rand/7/0.tscn
diff --git a/levels/rand/22.tscn b/levels/rand/8/0.tscn
index abbce81..abbce81 100644
--- a/levels/rand/22.tscn
+++ b/levels/rand/8/0.tscn
diff --git a/levels/rand/11.tscn b/levels/rand/8/1.tscn
index ebf3ae3..ebf3ae3 100644
--- a/levels/rand/11.tscn
+++ b/levels/rand/8/1.tscn
diff --git a/levels/rand/12.tscn b/levels/rand/9/0.tscn
index df6621a..df6621a 100644
--- a/levels/rand/12.tscn
+++ b/levels/rand/9/0.tscn