summaryrefslogtreecommitdiff
path: root/Reusable Scenes
diff options
context:
space:
mode:
authoraltaf-creator <dev@altafcreator.com>2025-10-20 01:43:48 +0800
committeraltaf-creator <dev@altafcreator.com>2025-10-20 01:43:48 +0800
commit466bec0b724632f6dd2e1555a7bd58ffc1dd0458 (patch)
treed6645ea11914edeec645299fa497a9e542dbaec7 /Reusable Scenes
Jam version.
Diffstat (limited to 'Reusable Scenes')
-rw-r--r--Reusable Scenes/0/enemy.tscn193
-rw-r--r--Reusable Scenes/0/tree.tscn455
-rw-r--r--Reusable Scenes/1/bg_tree.tscn60
-rw-r--r--Reusable Scenes/1/enemy_archer.tscn194
-rw-r--r--Reusable Scenes/1/grappleables.tscn41
-rw-r--r--Reusable Scenes/1/tree.tscn250
-rw-r--r--Reusable Scenes/1/trunk.tscn35
-rw-r--r--Reusable Scenes/2/enemy_bow.tscn100
-rw-r--r--Reusable Scenes/2/enemy_club.tscn301
-rw-r--r--Reusable Scenes/Masks/grapple_mask.tscn38
-rw-r--r--Reusable Scenes/Masks/speed_mask.tscn15
-rw-r--r--Reusable Scenes/Masks/spirit_mask.tscn13
-rw-r--r--Reusable Scenes/Projectiles/projectile_arrow.tscn66
-rw-r--r--Reusable Scenes/Projectiles/projectile_arrow_enemy.tscn68
-rw-r--r--Reusable Scenes/Projectiles/projectile_blowpipe.tscn56
-rw-r--r--Reusable Scenes/Weapons/weapon_bow.tscn124
-rw-r--r--Reusable Scenes/Weapons/weapon_machette.tscn127
-rw-r--r--Reusable Scenes/chest.tscn276
-rw-r--r--Reusable Scenes/death_area.tscn18
-rw-r--r--Reusable Scenes/player.tscn247
-rw-r--r--Reusable Scenes/torch.tscn49
-rw-r--r--Reusable Scenes/torch_spirit.tscn50
22 files changed, 2776 insertions, 0 deletions
diff --git a/Reusable Scenes/0/enemy.tscn b/Reusable Scenes/0/enemy.tscn
new file mode 100644
index 0000000..0765b5e
--- /dev/null
+++ b/Reusable Scenes/0/enemy.tscn
@@ -0,0 +1,193 @@
+[gd_scene load_steps=18 format=3 uid="uid://dqw3tqg5374ui"]
+
+[ext_resource type="Script" uid="uid://c5warxls18mds" path="res://Scripts/Entity.gd" id="1_uu6qt"]
+[ext_resource type="Texture2D" uid="uid://d3plfj75jmmyu" path="res://Assets/Visuals/isostri.png" id="2_lxnsa"]
+[ext_resource type="Script" uid="uid://n2vodoxhopnr" path="res://Scripts/Enemy AI/ShoreAI.gd" id="2_twxkf"]
+[ext_resource type="Texture2D" uid="uid://yfecq14wfrpc" path="res://Assets/Visuals/righttri.png" id="3_t7yj4"]
+[ext_resource type="Texture2D" uid="uid://ddxbrkfa7i5n" path="res://Assets/Visuals/hexagon.png" id="3_uu6qt"]
+[ext_resource type="PackedScene" uid="uid://bdws5hhfuef84" path="res://Reusable Scenes/Masks/speed_mask.tscn" id="4_lxnsa"]
+[ext_resource type="PackedScene" uid="uid://c3nbowvq6g4ah" path="res://Reusable Scenes/Weapons/weapon_machette.tscn" id="6_h27ao"]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_twxkf"]
+radius = 722.224
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_lrpdk"]
+radius = 73.0616
+
+[sub_resource type="Gradient" id="Gradient_twxkf"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.3074, 0.53, 0.33708, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_lrpdk"]
+gradient = SubResource("Gradient_twxkf")
+width = 26
+
+[sub_resource type="Gradient" id="Gradient_lxnsa"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.299315, 0.19351, 0.158235, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_uu6qt"]
+gradient = SubResource("Gradient_lxnsa")
+width = 26
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_h27ao"]
+radius = 13.0
+height = 80.0
+
+[sub_resource type="Animation" id="Animation_h27ao"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("SpriteGroup/Foot:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-9, 27)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("SpriteGroup/Foot2:position")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(9, 27)]
+}
+
+[sub_resource type="Animation" id="Animation_uu6qt"]
+resource_name = "walk"
+length = 0.8
+loop_mode = 1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("SpriteGroup/Foot:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.0666667, 0.166667, 0.233333, 0.333333, 0.4, 0.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-9, 27), Vector2(-6, 25), Vector2(-3, 24), Vector2(2, 24), Vector2(6, 26), Vector2(9, 27), Vector2(-9, 27)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("SpriteGroup/Foot2:position")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.400847, 0.4759, 0.560019, 0.626686, 0.726686, 0.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(9, 27), Vector2(-9, 27), Vector2(-6, 25), Vector2(-3, 24), Vector2(2, 24), Vector2(6, 26), Vector2(9, 27)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_twxkf"]
+_data = {
+&"RESET": SubResource("Animation_h27ao"),
+&"walk": SubResource("Animation_uu6qt")
+}
+
+[node name="EnemyShore" type="RigidBody2D"]
+collision_layer = 32768
+lock_rotation = true
+script = ExtResource("1_uu6qt")
+max_health = 20
+
+[node name="EnemyShoreAI" type="Node" parent="." node_paths=PackedStringArray("weapon", "sprite", "animator")]
+script = ExtResource("2_twxkf")
+weapon = NodePath("../weapon_machette")
+sprite = NodePath("../SpriteGroup")
+animator = NodePath("../AnimationPlayer")
+
+[node name="AttackCooldown" type="Timer" parent="EnemyShoreAI"]
+wait_time = 1.5
+
+[node name="DetectArea" type="Area2D" parent="."]
+collision_layer = 3
+collision_mask = 3
+collision_priority = 2.0
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="DetectArea"]
+shape = SubResource("CircleShape2D_twxkf")
+
+[node name="AttackArea" type="Area2D" parent="."]
+collision_layer = 3
+collision_mask = 3
+collision_priority = 2.0
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="AttackArea"]
+shape = SubResource("CircleShape2D_lrpdk")
+debug_color = Color(0.937978, 1.20327e-05, 0.625666, 0.42)
+
+[node name="SpriteGroup" type="Node2D" parent="."]
+
+[node name="Foot" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.219311, 0.47227, 8.66354e-07, 1)
+position = Vector2(-9, 27)
+rotation = 3.14159
+scale = Vector2(0.015, -0.00680612)
+texture = ExtResource("2_lxnsa")
+
+[node name="Foot2" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.219311, 0.47227, 8.66354e-07, 1)
+position = Vector2(9, 27)
+rotation = 3.14159
+scale = Vector2(0.015, -0.00680612)
+texture = ExtResource("2_lxnsa")
+
+[node name="Sprite2D" type="Sprite2D" parent="SpriteGroup"]
+position = Vector2(0, 3)
+scale = Vector2(1, 36.43)
+texture = SubResource("GradientTexture1D_lrpdk")
+
+[node name="Sprite2D3" type="Sprite2D" parent="SpriteGroup"]
+position = Vector2(0, 14.6075)
+scale = Vector2(1, 13.215)
+texture = SubResource("GradientTexture1D_uu6qt")
+
+[node name="Sprite2D2" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.46, 0.3611, 0.322, 1)
+position = Vector2(0, -35)
+rotation = 3.14159
+scale = Vector2(0.0277332, 0.0277332)
+texture = ExtResource("3_uu6qt")
+
+[node name="Righttri" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.458824, 0.360784, 0.317647, 1)
+position = Vector2(-7.87, -8.115)
+scale = Vector2(0.01, 0.0138965)
+texture = ExtResource("3_t7yj4")
+
+[node name="SpeedMask" parent="SpriteGroup" instance=ExtResource("4_lxnsa")]
+process_mode = 4
+position = Vector2(6, -34)
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+visible = false
+position = Vector2(0, -9.44)
+shape = SubResource("CapsuleShape2D_h27ao")
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+&"": SubResource("AnimationLibrary_twxkf")
+}
+
+[node name="weapon_machette" parent="." instance=ExtResource("6_h27ao")]
+position = Vector2(23, -4)
+scale = Vector2(1, 1)
+mask = 2
+disable_aft_atk = true
+
+[connection signal="timeout" from="EnemyShoreAI/AttackCooldown" to="EnemyShoreAI" method="_on_attack_cooldown_timeout"]
+[connection signal="body_entered" from="DetectArea" to="EnemyShoreAI" method="_on_area_2d_body_entered"]
+[connection signal="body_entered" from="AttackArea" to="EnemyShoreAI" method="_on_attack_area_body_entered"]
+[connection signal="body_exited" from="AttackArea" to="EnemyShoreAI" method="_on_attack_area_body_exited"]
diff --git a/Reusable Scenes/0/tree.tscn b/Reusable Scenes/0/tree.tscn
new file mode 100644
index 0000000..6f2f258
--- /dev/null
+++ b/Reusable Scenes/0/tree.tscn
@@ -0,0 +1,455 @@
+[gd_scene load_steps=8 format=3 uid="uid://ceukarr4k0tni"]
+
+[ext_resource type="Texture2D" uid="uid://ddxbrkfa7i5n" path="res://Assets/Visuals/hexagon.png" id="1_b54q5"]
+
+[sub_resource type="Gradient" id="Gradient_gnif3"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.6, 0.4245, 0.21, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_lwy2l"]
+gradient = SubResource("Gradient_gnif3")
+width = 32
+
+[sub_resource type="Gradient" id="Gradient_34bfm"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.78, 0.56589, 0.3042, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_ovrsl"]
+gradient = SubResource("Gradient_34bfm")
+width = 32
+
+[sub_resource type="Gradient" id="Gradient_hbaan"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.488555, 0.689084, 0.041547, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_he5fp"]
+gradient = SubResource("Gradient_hbaan")
+width = 32
+
+[node name="Tree" type="Node2D"]
+modulate = Color(0.676879, 0.676879, 0.676879, 1)
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+modulate = Color(0.552956, 0.552956, 0.552956, 1)
+scale = Vector2(1.4375, 103)
+texture = SubResource("GradientTexture1D_lwy2l")
+offset = Vector2(0, -0.5)
+
+[node name="Sprite2D2" type="Sprite2D" parent="."]
+modulate = Color(0.552956, 0.552956, 0.552956, 1)
+position = Vector2(0, -103)
+rotation = -0.0977911
+scale = Vector2(1.2731, 99.8124)
+texture = SubResource("GradientTexture1D_ovrsl")
+offset = Vector2(0, -0.5)
+
+[node name="Sprite2D3" type="Sprite2D" parent="."]
+modulate = Color(0.552956, 0.552956, 0.552956, 1)
+position = Vector2(-9, -201)
+rotation = -0.207685
+scale = Vector2(1.21439, 99.8695)
+texture = SubResource("GradientTexture1D_lwy2l")
+offset = Vector2(0, -0.5)
+
+[node name="Sprite2D4" type="Sprite2D" parent="."]
+modulate = Color(0.552956, 0.552956, 0.552956, 1)
+position = Vector2(-29, -297)
+rotation = -0.324123
+scale = Vector2(1.06719, 85.8361)
+texture = SubResource("GradientTexture1D_ovrsl")
+offset = Vector2(0, -0.5)
+
+[node name="mainNode2D3" type="Node2D" parent="."]
+modulate = Color(0.828197, 0.828197, 0.828197, 1)
+position = Vector2(-51, -381)
+rotation = 0.159562
+scale = Vector2(-0.645606, 0.645606)
+
+[node name="Sprite2D5" type="Sprite2D" parent="mainNode2D3"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="mainNode2D3"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="mainNode2D3"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="mainNode2D4" type="Node2D" parent="."]
+modulate = Color(0.828197, 0.828197, 0.828197, 1)
+position = Vector2(-51, -381)
+rotation = -0.346071
+scale = Vector2(-0.740513, 0.740513)
+
+[node name="Sprite2D5" type="Sprite2D" parent="mainNode2D4"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="mainNode2D4"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="mainNode2D4"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Node2D7" type="Node2D" parent="."]
+modulate = Color(0.629675, 0.629675, 0.629675, 1)
+position = Vector2(-51, -381)
+rotation = -0.105893
+scale = Vector2(-0.740513, 0.740513)
+
+[node name="Sprite2D5" type="Sprite2D" parent="Node2D7"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="Node2D7"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="Node2D7"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Node2D10" type="Node2D" parent="."]
+modulate = Color(0.629675, 0.629675, 0.629675, 1)
+position = Vector2(-51, -381)
+rotation = -0.738354
+scale = Vector2(-0.740513, 0.740513)
+
+[node name="Sprite2D5" type="Sprite2D" parent="Node2D10"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="Node2D10"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="Node2D10"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="mainNode2D5" type="Node2D" parent="."]
+modulate = Color(0.828197, 0.828197, 0.828197, 1)
+position = Vector2(-51, -381)
+rotation = -1.08139
+scale = Vector2(-0.638031, 0.638031)
+
+[node name="Sprite2D5" type="Sprite2D" parent="mainNode2D5"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="mainNode2D5"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="mainNode2D5"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="mainNode2D" type="Node2D" parent="."]
+modulate = Color(0.828197, 0.828197, 0.828197, 1)
+position = Vector2(-56, -379)
+rotation = -0.545855
+scale = Vector2(0.630668, 0.630668)
+
+[node name="Sprite2D5" type="Sprite2D" parent="mainNode2D"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="mainNode2D"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="mainNode2D"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Node2D9" type="Node2D" parent="."]
+modulate = Color(0.629675, 0.629675, 0.629675, 1)
+position = Vector2(-56, -379)
+rotation = 0.380499
+scale = Vector2(0.744016, 0.744016)
+
+[node name="Sprite2D5" type="Sprite2D" parent="Node2D9"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="Node2D9"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="Node2D9"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Node2D8" type="Node2D" parent="."]
+modulate = Color(0.629675, 0.629675, 0.629675, 1)
+position = Vector2(-56, -379)
+rotation = -0.252739
+scale = Vector2(0.744016, 0.744016)
+
+[node name="Sprite2D5" type="Sprite2D" parent="Node2D8"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="Node2D8"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="Node2D8"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="mainNode2D2" type="Node2D" parent="."]
+modulate = Color(0.828197, 0.828197, 0.828197, 1)
+position = Vector2(-56, -379)
+rotation = 0.0687167
+scale = Vector2(0.727442, 0.727442)
+
+[node name="Sprite2D5" type="Sprite2D" parent="mainNode2D2"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="mainNode2D2"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="mainNode2D2"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Node2D11" type="Node2D" parent="."]
+modulate = Color(0.629675, 0.629675, 0.629675, 1)
+position = Vector2(-68, -397)
+rotation = 0.950834
+scale = Vector2(0.626913, 0.628772)
+
+[node name="Sprite2D5" type="Sprite2D" parent="Node2D11"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="Node2D11"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="Node2D11"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="mainNode2D6" type="Node2D" parent="."]
+modulate = Color(0.828197, 0.828197, 0.828197, 1)
+position = Vector2(-56, -379)
+rotation = 0.73046
+scale = Vector2(0.664961, 0.703489)
+
+[node name="Sprite2D5" type="Sprite2D" parent="mainNode2D6"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="mainNode2D6"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="mainNode2D6"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Node2D12" type="Node2D" parent="."]
+modulate = Color(0.629675, 0.629675, 0.629675, 1)
+position = Vector2(-68, -397)
+rotation = 1.97748
+scale = Vector2(0.630013, -0.631886)
+
+[node name="Sprite2D5" type="Sprite2D" parent="Node2D12"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="Node2D12"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="Node2D12"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="mainNode2D8" type="Node2D" parent="."]
+modulate = Color(0.828197, 0.828197, 0.828197, 1)
+position = Vector2(-68, -397)
+rotation = 1.63903
+scale = Vector2(0.559908, -0.561572)
+
+[node name="Sprite2D5" type="Sprite2D" parent="mainNode2D8"]
+rotation = 0.111521
+scale = Vector2(4.10644, 36.4106)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D6" type="Sprite2D" parent="mainNode2D8"]
+position = Vector2(-123, -16)
+rotation = -0.25386
+scale = Vector2(2.81758, 32.1459)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Sprite2D7" type="Sprite2D" parent="mainNode2D8"]
+position = Vector2(-203, 6)
+rotation = -0.826959
+scale = Vector2(2.51917, 25.9537)
+texture = SubResource("GradientTexture1D_he5fp")
+offset = Vector2(-16, -0.5)
+
+[node name="Hexagon" type="Sprite2D" parent="."]
+modulate = Color(0.227159, 0.158365, 0.102112, 1)
+position = Vector2(-77, -378)
+rotation = 2.16671
+scale = Vector2(0.0515273, 0.0515273)
+texture = ExtResource("1_b54q5")
+
+[node name="Hexagon2" type="Sprite2D" parent="Hexagon"]
+modulate = Color(0.712129, 0.712129, 0.712129, 1)
+position = Vector2(272.679, -136.34)
+scale = Vector2(0.172528, 0.172528)
+texture = ExtResource("1_b54q5")
+
+[node name="Hexagon3" type="Sprite2D" parent="Hexagon"]
+modulate = Color(0.712129, 0.712129, 0.712129, 1)
+position = Vector2(62.926, -314.63)
+scale = Vector2(0.172528, 0.172528)
+texture = ExtResource("1_b54q5")
+
+[node name="Hexagon2" type="Sprite2D" parent="."]
+modulate = Color(0.306236, 0.218686, 0.147156, 1)
+position = Vector2(-35, -401)
+rotation = 0.266443
+scale = Vector2(0.0515273, 0.0515273)
+texture = ExtResource("1_b54q5")
+
+[node name="Hexagon2" type="Sprite2D" parent="Hexagon2"]
+modulate = Color(0.712129, 0.712129, 0.712129, 1)
+position = Vector2(272.679, -136.34)
+scale = Vector2(0.172528, 0.172528)
+texture = ExtResource("1_b54q5")
+
+[node name="Hexagon3" type="Sprite2D" parent="Hexagon2"]
+modulate = Color(0.712129, 0.712129, 0.712129, 1)
+position = Vector2(62.926, -314.63)
+scale = Vector2(0.172528, 0.172528)
+texture = ExtResource("1_b54q5")
+
+[node name="Hexagon3" type="Sprite2D" parent="."]
+modulate = Color(0.238132, 0.166711, 0.108316, 1)
+position = Vector2(-71, -417)
+rotation = -0.147981
+scale = Vector2(0.0391577, 0.0391577)
+texture = ExtResource("1_b54q5")
+
+[node name="Hexagon2" type="Sprite2D" parent="Hexagon3"]
+modulate = Color(0.712129, 0.712129, 0.712129, 1)
+position = Vector2(272.679, -136.34)
+scale = Vector2(0.172528, 0.172528)
+texture = ExtResource("1_b54q5")
+
+[node name="Hexagon3" type="Sprite2D" parent="Hexagon3"]
+modulate = Color(0.712129, 0.712129, 0.712129, 1)
+position = Vector2(62.926, -314.63)
+scale = Vector2(0.172528, 0.172528)
+texture = ExtResource("1_b54q5")
diff --git a/Reusable Scenes/1/bg_tree.tscn b/Reusable Scenes/1/bg_tree.tscn
new file mode 100644
index 0000000..7670692
--- /dev/null
+++ b/Reusable Scenes/1/bg_tree.tscn
@@ -0,0 +1,60 @@
+[gd_scene load_steps=3 format=3 uid="uid://beucb04e2mvm7"]
+
+[sub_resource type="Gradient" id="Gradient_y0prk"]
+offsets = PackedFloat32Array(0.0210843)
+colors = PackedColorArray(0.0705882, 0.0901961, 0.0627451, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_0nkm3"]
+gradient = SubResource("Gradient_y0prk")
+width = 64
+
+[node name="BGTree" type="Node2D"]
+z_index = -90
+scale = Vector2(0.78, 0.78)
+
+[node name="Sprite" type="Sprite2D" parent="."]
+position = Vector2(68, -426)
+scale = Vector2(3.125, 916)
+texture = SubResource("GradientTexture1D_0nkm3")
+
+[node name="Sprite2" type="Sprite2D" parent="."]
+position = Vector2(-1.33514e-05, -202)
+rotation = 0.270581
+scale = Vector2(1.33656, 427.101)
+texture = SubResource("GradientTexture1D_0nkm3")
+
+[node name="Sprite3" type="Sprite2D" parent="."]
+position = Vector2(153, -146)
+rotation = -0.239004
+scale = Vector2(1.33656, 427.101)
+texture = SubResource("GradientTexture1D_0nkm3")
+
+[node name="Sprite4" type="Sprite2D" parent="."]
+position = Vector2(-148, 20)
+rotation = 0.873128
+scale = Vector2(1.33656, 427.101)
+texture = SubResource("GradientTexture1D_0nkm3")
+
+[node name="Sprite5" type="Sprite2D" parent="."]
+position = Vector2(-84, -703)
+rotation = 2.24277
+scale = Vector2(1.33656, 427.101)
+texture = SubResource("GradientTexture1D_0nkm3")
+
+[node name="Sprite6" type="Sprite2D" parent="."]
+position = Vector2(-71.9999, -954)
+rotation = 3.12576
+scale = Vector2(9.45908, 322.896)
+texture = SubResource("GradientTexture1D_0nkm3")
+
+[node name="Sprite7" type="Sprite2D" parent="."]
+position = Vector2(285, -920)
+rotation = 2.85721
+scale = Vector2(7.69613, 391.078)
+texture = SubResource("GradientTexture1D_0nkm3")
+
+[node name="Sprite8" type="Sprite2D" parent="."]
+position = Vector2(-349, -1070)
+rotation = 3.25921
+scale = Vector2(6.84112, 358.914)
+texture = SubResource("GradientTexture1D_0nkm3")
diff --git a/Reusable Scenes/1/enemy_archer.tscn b/Reusable Scenes/1/enemy_archer.tscn
new file mode 100644
index 0000000..9dbfa11
--- /dev/null
+++ b/Reusable Scenes/1/enemy_archer.tscn
@@ -0,0 +1,194 @@
+[gd_scene load_steps=17 format=3 uid="uid://s27nyuw0bl5a"]
+
+[ext_resource type="Script" uid="uid://c5warxls18mds" path="res://Scripts/Entity.gd" id="1_wgldt"]
+[ext_resource type="Script" uid="uid://cahhmhibcdjcd" path="res://Scripts/Enemy AI/JungleAI.gd" id="2_8a6jk"]
+[ext_resource type="Texture2D" uid="uid://d3plfj75jmmyu" path="res://Assets/Visuals/isostri.png" id="3_oyvi1"]
+[ext_resource type="Texture2D" uid="uid://ddxbrkfa7i5n" path="res://Assets/Visuals/hexagon.png" id="4_b2uf7"]
+[ext_resource type="PackedScene" uid="uid://ccij302qcrvo1" path="res://Reusable Scenes/Masks/grapple_mask.tscn" id="5_wyw0d"]
+[ext_resource type="Script" uid="uid://bfmc8st4ss7om" path="res://Scripts/Weapons/Bow.gd" id="6_8a6jk"]
+[ext_resource type="PackedScene" uid="uid://dxemwyiy4it0g" path="res://Reusable Scenes/Projectiles/projectile_blowpipe.tscn" id="7_eb30r"]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_twxkf"]
+radius = 722.224
+
+[sub_resource type="Gradient" id="Gradient_wyw0d"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.299315, 0.19351, 0.158235, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_8a6jk"]
+gradient = SubResource("Gradient_wyw0d")
+width = 26
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_h27ao"]
+radius = 13.0
+height = 80.0
+
+[sub_resource type="Animation" id="Animation_h27ao"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("SpriteGroup/Foot2:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(9, 27)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("SpriteGroup/Foot:position")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-9, 27)]
+}
+
+[sub_resource type="Animation" id="Animation_uu6qt"]
+resource_name = "walk"
+length = 0.8
+loop_mode = 1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("SpriteGroup/Foot2:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.400847, 0.4759, 0.560019, 0.626686, 0.726686, 0.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(9, 27), Vector2(-9, 27), Vector2(-6, 25), Vector2(-3, 24), Vector2(2, 24), Vector2(6, 26), Vector2(9, 27)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("SpriteGroup/Foot:position")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.0666667, 0.166667, 0.233333, 0.333333, 0.4, 0.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-9, 27), Vector2(-6, 25), Vector2(-3, 24), Vector2(2, 24), Vector2(6, 26), Vector2(9, 27), Vector2(-9, 27)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_twxkf"]
+_data = {
+&"RESET": SubResource("Animation_h27ao"),
+&"walk": SubResource("Animation_uu6qt")
+}
+
+[sub_resource type="Gradient" id="Gradient_8a6jk"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.479943, 0.67, 0.1742, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_eb30r"]
+gradient = SubResource("Gradient_8a6jk")
+width = 26
+
+[node name="EnemyPewPew" type="RigidBody2D"]
+collision_layer = 49152
+collision_mask = 49153
+lock_rotation = true
+script = ExtResource("1_wgldt")
+max_health = 20
+
+[node name="EnemyJungleAI" type="Node" parent="." node_paths=PackedStringArray("weapon", "pivot", "sprite")]
+script = ExtResource("2_8a6jk")
+weapon = NodePath("../HandPivot/Node2D/Blowpipe")
+pivot = NodePath("../HandPivot")
+sprite = NodePath("../SpriteGroup")
+
+[node name="AttackCooldown" type="Timer" parent="EnemyJungleAI"]
+wait_time = 3.0
+
+[node name="DetectArea" type="Area2D" parent="."]
+collision_layer = 3
+collision_mask = 3
+collision_priority = 2.0
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="DetectArea"]
+shape = SubResource("CircleShape2D_twxkf")
+
+[node name="SpriteGroup" type="Node2D" parent="."]
+
+[node name="Foot" type="Sprite2D" parent="SpriteGroup"]
+position = Vector2(-9, 27)
+rotation = 3.14159
+scale = Vector2(0.58, 7.46)
+texture = SubResource("GradientTexture1D_8a6jk")
+
+[node name="Foot2" type="Sprite2D" parent="SpriteGroup"]
+position = Vector2(9, 27)
+rotation = 3.14159
+scale = Vector2(0.58, 7.46)
+texture = SubResource("GradientTexture1D_8a6jk")
+
+[node name="Sprite2D" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.40565, 0.61, 0.2013, 1)
+position = Vector2(0, -1)
+scale = Vector2(0.0406463, -0.0390693)
+texture = ExtResource("3_oyvi1")
+
+[node name="Sprite2D2" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.46, 0.3611, 0.322, 1)
+position = Vector2(0, -41.776)
+rotation = 3.14159
+scale = Vector2(0.0277332, 0.0277332)
+texture = ExtResource("4_b2uf7")
+
+[node name="GrappleMask" parent="SpriteGroup" instance=ExtResource("5_wyw0d")]
+process_mode = 4
+position = Vector2(5, -41.776)
+scale = Vector2(0.886033, 0.886033)
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(0, -9.44)
+shape = SubResource("CapsuleShape2D_h27ao")
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+&"": SubResource("AnimationLibrary_twxkf")
+}
+
+[node name="HandPivot" type="Node2D" parent="."]
+position = Vector2(6, -37)
+rotation = 3.15381
+
+[node name="Node2D" type="Node2D" parent="HandPivot"]
+
+[node name="Blowpipe" type="Node2D" parent="HandPivot/Node2D"]
+rotation = 1.23375
+script = ExtResource("6_8a6jk")
+arrow = ExtResource("7_eb30r")
+speed = 3000.0
+
+[node name="Blowpipe" type="Sprite2D" parent="HandPivot/Node2D/Blowpipe"]
+position = Vector2(23.7122, 8.17715)
+rotation = 1.90784
+scale = Vector2(0.143513, -51.7945)
+texture = SubResource("GradientTexture1D_eb30r")
+
+[node name="Blowpipe2" type="Sprite2D" parent="HandPivot/Node2D/Blowpipe"]
+modulate = Color(0.80687, 0.80687, 0.80687, 1)
+position = Vector2(23.2316, 9.20714)
+rotation = 1.90784
+scale = Vector2(0.0541076, -52.0008)
+texture = SubResource("GradientTexture1D_eb30r")
+
+[node name="Sprite2D2" type="Sprite2D" parent="HandPivot"]
+modulate = Color(0.46, 0.3611, 0.322, 1)
+position = Vector2(0, 30.32)
+rotation = 3.14159
+scale = Vector2(0.011008, 0.0118146)
+texture = ExtResource("4_b2uf7")
+
+[connection signal="timeout" from="EnemyJungleAI/AttackCooldown" to="EnemyJungleAI" method="_on_attack_cooldown_timeout"]
+[connection signal="body_entered" from="DetectArea" to="EnemyJungleAI" method="_on_detect_area_body_entered"]
diff --git a/Reusable Scenes/1/grappleables.tscn b/Reusable Scenes/1/grappleables.tscn
new file mode 100644
index 0000000..5ce1f7a
--- /dev/null
+++ b/Reusable Scenes/1/grappleables.tscn
@@ -0,0 +1,41 @@
+[gd_scene load_steps=7 format=3 uid="uid://b3ev1xafiwmib"]
+
+[ext_resource type="Script" uid="uid://c8n5trpan30g0" path="res://Scripts/Level Specific/Grappleable.gd" id="1_3f7s8"]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_pytih"]
+size = Vector2(50, 50)
+
+[sub_resource type="Gradient" id="Gradient_3f7s8"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.4564, 0.697331, 1, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_v4k01"]
+gradient = SubResource("Gradient_3f7s8")
+width = 50
+
+[sub_resource type="Gradient" id="Gradient_adc2f"]
+offsets = PackedFloat32Array(0)
+colors = PackedColorArray(0.48, 0.33024, 0.1056, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_mpo1i"]
+gradient = SubResource("Gradient_adc2f")
+width = 50
+
+[node name="Grappleables" type="StaticBody2D" node_paths=PackedStringArray("highlighter")]
+z_index = 1024
+collision_layer = 8
+collision_mask = 8
+script = ExtResource("1_3f7s8")
+highlighter = NodePath("Sprite2D2")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+shape = SubResource("RectangleShape2D_pytih")
+
+[node name="Sprite2D2" type="Sprite2D" parent="."]
+visible = false
+scale = Vector2(1.13976, 56.9881)
+texture = SubResource("GradientTexture1D_v4k01")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+scale = Vector2(1, 50)
+texture = SubResource("GradientTexture1D_mpo1i")
diff --git a/Reusable Scenes/1/tree.tscn b/Reusable Scenes/1/tree.tscn
new file mode 100644
index 0000000..8c5985b
--- /dev/null
+++ b/Reusable Scenes/1/tree.tscn
@@ -0,0 +1,250 @@
+[gd_scene load_steps=16 format=3 uid="uid://cb6tymujjkw6k"]
+
+[sub_resource type="Gradient" id="Gradient_34bfm"]
+offsets = PackedFloat32Array(0.470779)
+colors = PackedColorArray(0.276666, 0.442989, 0.0883189, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_ovrsl"]
+gradient = SubResource("Gradient_34bfm")
+width = 64
+
+[sub_resource type="Gradient" id="Gradient_ovrsl"]
+offsets = PackedFloat32Array(0.470779)
+colors = PackedColorArray(0.57, 0.5472, 0.114, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_he5fp"]
+gradient = SubResource("Gradient_ovrsl")
+width = 64
+
+[sub_resource type="Gradient" id="Gradient_gnif3"]
+offsets = PackedFloat32Array(0.470779)
+colors = PackedColorArray(0.335918, 0.25971, 0.020719, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_lwy2l"]
+gradient = SubResource("Gradient_gnif3")
+width = 64
+
+[sub_resource type="Gradient" id="Gradient_lwy2l"]
+offsets = PackedFloat32Array(0.493976)
+colors = PackedColorArray(0.298791, 0.229838, 0.0164207, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_nj2yk"]
+gradient = SubResource("Gradient_lwy2l")
+width = 64
+
+[sub_resource type="Gradient" id="Gradient_hbaan"]
+offsets = PackedFloat32Array(0.493976)
+colors = PackedColorArray(0.37784, 0.293431, 0.0262073, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_mykqc"]
+gradient = SubResource("Gradient_hbaan")
+width = 64
+
+[sub_resource type="Gradient" id="Gradient_7pswh"]
+offsets = PackedFloat32Array(0.470779)
+colors = PackedColorArray(0.353547, 0.56, 0.1176, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_34bfm"]
+gradient = SubResource("Gradient_7pswh")
+width = 64
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_hbaan"]
+gradient = SubResource("Gradient_34bfm")
+width = 64
+
+[sub_resource type="Gradient" id="Gradient_he5fp"]
+offsets = PackedFloat32Array(0.470779)
+colors = PackedColorArray(0.454855, 0.716912, 0.148735, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_u05pv"]
+gradient = SubResource("Gradient_he5fp")
+width = 64
+
+[node name="Tree" type="Node2D"]
+
+[node name="Sprite2D16" type="Sprite2D" parent="."]
+position = Vector2(-200.468, -228)
+scale = Vector2(0.109864, 176.688)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D17" type="Sprite2D" parent="."]
+position = Vector2(-200.468, -143)
+rotation = 0.785398
+scale = Vector2(0.299702, 19.181)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D17" type="Sprite2D" parent="Sprite2D17"]
+scale = Vector2(0.54, 0.54)
+texture = SubResource("GradientTexture1D_he5fp")
+
+[node name="Sprite2D18" type="Sprite2D" parent="."]
+position = Vector2(-124.389, -193.656)
+scale = Vector2(0.109864, 176.688)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D19" type="Sprite2D" parent="."]
+position = Vector2(-124.389, -108.656)
+rotation = 0.785398
+scale = Vector2(0.299702, 19.181)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D17" type="Sprite2D" parent="Sprite2D19"]
+scale = Vector2(0.54, 0.54)
+texture = SubResource("GradientTexture1D_he5fp")
+
+[node name="Sprite2D20" type="Sprite2D" parent="."]
+position = Vector2(78.6109, -211.656)
+scale = Vector2(0.109864, 176.688)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D21" type="Sprite2D" parent="."]
+position = Vector2(78.6109, -126.656)
+rotation = 0.785398
+scale = Vector2(0.299702, 19.181)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D17" type="Sprite2D" parent="Sprite2D21"]
+scale = Vector2(0.54, 0.54)
+texture = SubResource("GradientTexture1D_he5fp")
+
+[node name="Sprite2D22" type="Sprite2D" parent="."]
+position = Vector2(192.611, -283.656)
+scale = Vector2(0.109864, 176.688)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D23" type="Sprite2D" parent="."]
+position = Vector2(192.611, -198.656)
+rotation = 0.785398
+scale = Vector2(0.299702, 19.181)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D17" type="Sprite2D" parent="Sprite2D23"]
+scale = Vector2(0.54, 0.54)
+texture = SubResource("GradientTexture1D_he5fp")
+
+[node name="Sprite2D24" type="Sprite2D" parent="."]
+position = Vector2(141.611, -146.656)
+scale = Vector2(0.109864, 176.688)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D25" type="Sprite2D" parent="."]
+position = Vector2(141.611, -61.6563)
+rotation = 0.785398
+scale = Vector2(0.299702, 19.181)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D17" type="Sprite2D" parent="Sprite2D25"]
+scale = Vector2(0.54, 0.54)
+texture = SubResource("GradientTexture1D_he5fp")
+
+[node name="Sprite2D7" type="Sprite2D" parent="."]
+position = Vector2(-7.45212, -157.75)
+scale = Vector2(1.20312, 437.5)
+texture = SubResource("GradientTexture1D_lwy2l")
+
+[node name="Sprite2D2" type="Sprite2D" parent="."]
+position = Vector2(-33.6079, -5.36407)
+rotation = 0.785398
+scale = Vector2(1.53232, 118.21)
+texture = SubResource("GradientTexture1D_lwy2l")
+
+[node name="Sprite2D4" type="Sprite2D" parent="."]
+position = Vector2(-26.9521, -55)
+rotation = 0.261799
+scale = Vector2(0.836327, 83.2208)
+texture = SubResource("GradientTexture1D_lwy2l")
+
+[node name="Sprite2D3" type="Sprite2D" parent="."]
+position = Vector2(79.1762, -2.12842)
+rotation = -0.785398
+scale = Vector2(0.884306, 204.687)
+texture = SubResource("GradientTexture1D_lwy2l")
+
+[node name="Sprite2D5" type="Sprite2D" parent="."]
+position = Vector2(-34.9521, -38)
+rotation = 0.261799
+scale = Vector2(0.296305, 115.218)
+texture = SubResource("GradientTexture1D_nj2yk")
+
+[node name="Sprite2D6" type="Sprite2D" parent="."]
+position = Vector2(-20.9521, -235.195)
+scale = Vector2(0.296305, 301.609)
+texture = SubResource("GradientTexture1D_nj2yk")
+
+[node name="Sprite2D27" type="Sprite2D" parent="."]
+position = Vector2(5.04791, -178)
+scale = Vector2(0.148153, 409.805)
+texture = SubResource("GradientTexture1D_nj2yk")
+
+[node name="Sprite2D30" type="Sprite2D" parent="."]
+position = Vector2(82.4558, 4.96503)
+rotation = -0.785398
+scale = Vector2(0.138365, 169.916)
+texture = SubResource("GradientTexture1D_nj2yk")
+
+[node name="Sprite2D26" type="Sprite2D" parent="."]
+position = Vector2(-12.9521, -136)
+scale = Vector2(0.214702, 367.805)
+texture = SubResource("GradientTexture1D_mykqc")
+
+[node name="Sprite2D29" type="Sprite2D" parent="."]
+position = Vector2(21.0479, -119)
+scale = Vector2(0.214702, 367.805)
+texture = SubResource("GradientTexture1D_mykqc")
+
+[node name="Sprite2D28" type="Sprite2D" parent="."]
+position = Vector2(77.9427, -29.1052)
+rotation = -0.785398
+scale = Vector2(0.214702, 158.799)
+texture = SubResource("GradientTexture1D_mykqc")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+position = Vector2(-106.952, -362)
+rotation = 0.261799
+scale = Vector2(3.72656, 230.75)
+texture = SubResource("GradientTexture1D_34bfm")
+
+[node name="Sprite2D13" type="Sprite2D" parent="."]
+position = Vector2(-105.617, -250.513)
+rotation = 0.261799
+scale = Vector2(4.66797, 16)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D8" type="Sprite2D" parent="."]
+position = Vector2(63.9229, -291.312)
+rotation = -0.261799
+scale = Vector2(3.75391, 161.375)
+texture = SubResource("GradientTexture1D_34bfm")
+
+[node name="Sprite2D14" type="Sprite2D" parent="."]
+position = Vector2(82.8082, -220.936)
+rotation = -0.261799
+scale = Vector2(3.75275, 15.576)
+texture = SubResource("GradientTexture1D_hbaan")
+
+[node name="Sprite2D11" type="Sprite2D" parent="."]
+position = Vector2(-48.6709, -398)
+scale = Vector2(2.50879, 133.344)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D9" type="Sprite2D" parent="."]
+position = Vector2(-13.7334, -434.656)
+scale = Vector2(3.1582, 176.688)
+texture = SubResource("GradientTexture1D_34bfm")
+
+[node name="Sprite2D15" type="Sprite2D" parent="."]
+position = Vector2(11.3291, -499.5)
+scale = Vector2(2.10937, 17)
+texture = SubResource("GradientTexture1D_u05pv")
+
+[node name="Sprite2D12" type="Sprite2D" parent="."]
+position = Vector2(98.0479, -357)
+rotation = -0.261799
+scale = Vector2(1.86157, 66.5)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Sprite2D10" type="Sprite2D" parent="."]
+position = Vector2(112.048, -402)
+rotation = -0.261799
+scale = Vector2(2.37598, 122.344)
+texture = SubResource("GradientTexture1D_34bfm")
diff --git a/Reusable Scenes/1/trunk.tscn b/Reusable Scenes/1/trunk.tscn
new file mode 100644
index 0000000..a286a7c
--- /dev/null
+++ b/Reusable Scenes/1/trunk.tscn
@@ -0,0 +1,35 @@
+[gd_scene load_steps=3 format=3 uid="uid://b186mjdwnwe2y"]
+
+[sub_resource type="Gradient" id="Gradient_y0prk"]
+offsets = PackedFloat32Array(0.0210843)
+colors = PackedColorArray(0.0705882, 0.0901961, 0.0627451, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_0nkm3"]
+gradient = SubResource("Gradient_y0prk")
+width = 64
+
+[node name="Trunk" type="Node2D"]
+z_index = -90
+
+[node name="Sprite" type="Sprite2D" parent="."]
+position = Vector2(68, -426)
+scale = Vector2(3.125, 916)
+texture = SubResource("GradientTexture1D_0nkm3")
+
+[node name="Sprite2" type="Sprite2D" parent="."]
+position = Vector2(-1.33514e-05, -202)
+rotation = 0.270581
+scale = Vector2(1.33656, 427.101)
+texture = SubResource("GradientTexture1D_0nkm3")
+
+[node name="Sprite3" type="Sprite2D" parent="."]
+position = Vector2(153, -146)
+rotation = -0.239004
+scale = Vector2(1.33656, 427.101)
+texture = SubResource("GradientTexture1D_0nkm3")
+
+[node name="Sprite4" type="Sprite2D" parent="."]
+position = Vector2(-148, 20)
+rotation = 0.873128
+scale = Vector2(1.33656, 427.101)
+texture = SubResource("GradientTexture1D_0nkm3")
diff --git a/Reusable Scenes/2/enemy_bow.tscn b/Reusable Scenes/2/enemy_bow.tscn
new file mode 100644
index 0000000..b4b3a0a
--- /dev/null
+++ b/Reusable Scenes/2/enemy_bow.tscn
@@ -0,0 +1,100 @@
+[gd_scene load_steps=10 format=3 uid="uid://kqrot8twq6bc"]
+
+[ext_resource type="Script" uid="uid://c5warxls18mds" path="res://Scripts/Entity.gd" id="1_q82xt"]
+[ext_resource type="Script" uid="uid://cahhmhibcdjcd" path="res://Scripts/Enemy AI/JungleAI.gd" id="2_ty7ky"]
+[ext_resource type="Texture2D" uid="uid://d3plfj75jmmyu" path="res://Assets/Visuals/isostri.png" id="3_2n5mq"]
+[ext_resource type="Texture2D" uid="uid://ddxbrkfa7i5n" path="res://Assets/Visuals/hexagon.png" id="4_1vai4"]
+[ext_resource type="PackedScene" uid="uid://cnyxp6p68vtv7" path="res://Reusable Scenes/Masks/spirit_mask.tscn" id="5_g0tc6"]
+[ext_resource type="PackedScene" uid="uid://bxax2unw3ay8d" path="res://Reusable Scenes/Weapons/weapon_bow.tscn" id="6_g0tc6"]
+[ext_resource type="PackedScene" uid="uid://bqma5drxh7smh" path="res://Reusable Scenes/Projectiles/projectile_arrow_enemy.tscn" id="7_g57nf"]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_twxkf"]
+radius = 722.224
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_h27ao"]
+radius = 13.0
+height = 80.0
+
+[node name="EnemyBow" type="RigidBody2D"]
+collision_layer = 49152
+collision_mask = 49153
+lock_rotation = true
+script = ExtResource("1_q82xt")
+max_health = 15
+
+[node name="EnemyJungleAI" type="Node" parent="." node_paths=PackedStringArray("weapon", "pivot", "sprite")]
+script = ExtResource("2_ty7ky")
+weapon = NodePath("../HandPivot/Node2D/weapon_bow")
+pivot = NodePath("../HandPivot")
+sprite = NodePath("../SpriteGroup")
+
+[node name="AttackCooldown" type="Timer" parent="EnemyJungleAI"]
+wait_time = 3.0
+
+[node name="DetectArea" type="Area2D" parent="."]
+collision_layer = 3
+collision_mask = 3
+collision_priority = 2.0
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="DetectArea"]
+shape = SubResource("CircleShape2D_twxkf")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(0, -9.44)
+shape = SubResource("CapsuleShape2D_h27ao")
+
+[node name="SpriteGroup" type="Node2D" parent="."]
+
+[node name="Foot" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.45, 0.291, 0.2115, 1)
+position = Vector2(-11, 25)
+rotation = 3.14159
+scale = Vector2(0.0160481, -0.0110911)
+texture = ExtResource("3_2n5mq")
+
+[node name="Foot2" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.45, 0.291, 0.2115, 1)
+position = Vector2(11, 25)
+rotation = 3.14159
+scale = Vector2(0.0160481, -0.0110911)
+texture = ExtResource("3_2n5mq")
+
+[node name="Sprite2D" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.919515, 0.481937, 1.92523e-07, 1)
+position = Vector2(0, -1)
+scale = Vector2(0.0406463, -0.0390693)
+texture = ExtResource("3_2n5mq")
+
+[node name="Sprite2D2" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.278431, 0.54902, 0.976471, 1)
+position = Vector2(0, -41.776)
+rotation = 3.14159
+scale = Vector2(0.0277332, 0.0277332)
+texture = ExtResource("4_1vai4")
+
+[node name="SpiritMask" parent="SpriteGroup" instance=ExtResource("5_g0tc6")]
+process_mode = 4
+position = Vector2(4, -40)
+scale = Vector2(0.861963, 0.861963)
+
+[node name="HandPivot" type="Node2D" parent="."]
+position = Vector2(6, -20)
+rotation = -1.27211
+
+[node name="Node2D" type="Node2D" parent="HandPivot"]
+position = Vector2(0, 21.618)
+
+[node name="weapon_bow" parent="HandPivot/Node2D" instance=ExtResource("6_g0tc6")]
+position = Vector2(1.25521, 6.24639)
+scale = Vector2(0.999572, 0.999572)
+arrow = ExtResource("7_g57nf")
+
+[node name="Sprite2D2" type="Sprite2D" parent="HandPivot"]
+modulate = Color(0.278431, 0.54902, 0.976471, 1)
+position = Vector2(0.525334, 42.9968)
+rotation = 3.14159
+scale = Vector2(0.011008, 0.0118146)
+texture = ExtResource("4_1vai4")
+
+[connection signal="timeout" from="EnemyJungleAI/AttackCooldown" to="EnemyJungleAI" method="_on_attack_cooldown_timeout"]
+[connection signal="body_entered" from="DetectArea" to="EnemyJungleAI" method="_on_detect_area_body_entered"]
diff --git a/Reusable Scenes/2/enemy_club.tscn b/Reusable Scenes/2/enemy_club.tscn
new file mode 100644
index 0000000..761b04e
--- /dev/null
+++ b/Reusable Scenes/2/enemy_club.tscn
@@ -0,0 +1,301 @@
+[gd_scene load_steps=21 format=3 uid="uid://b8x6g2np2nf8j"]
+
+[ext_resource type="Script" uid="uid://c5warxls18mds" path="res://Scripts/Entity.gd" id="1_14gxe"]
+[ext_resource type="Script" uid="uid://n2vodoxhopnr" path="res://Scripts/Enemy AI/ShoreAI.gd" id="2_161nh"]
+[ext_resource type="Texture2D" uid="uid://d3plfj75jmmyu" path="res://Assets/Visuals/isostri.png" id="3_k4axu"]
+[ext_resource type="Texture2D" uid="uid://ddxbrkfa7i5n" path="res://Assets/Visuals/hexagon.png" id="4_bn6nu"]
+[ext_resource type="PackedScene" uid="uid://cnyxp6p68vtv7" path="res://Reusable Scenes/Masks/spirit_mask.tscn" id="6_srfke"]
+[ext_resource type="Script" uid="uid://ckd00ra2lp1xo" path="res://Scripts/Weapons/Melee.gd" id="6_tuc36"]
+[ext_resource type="Texture2D" uid="uid://dch6veuf65i6h" path="res://Assets/Visuals/club.svg" id="7_tuc36"]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_twxkf"]
+radius = 722.224
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_lrpdk"]
+radius = 43.0116
+
+[sub_resource type="Gradient" id="Gradient_srfke"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(1, 1, 1, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_tuc36"]
+gradient = SubResource("Gradient_srfke")
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_h27ao"]
+radius = 13.0
+height = 80.0
+
+[sub_resource type="Animation" id="Animation_h27ao"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("SpriteGroup/Foot:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-9, 27)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("SpriteGroup/Foot2:position")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(9, 27)]
+}
+
+[sub_resource type="Animation" id="Animation_uu6qt"]
+resource_name = "walk"
+length = 0.8
+loop_mode = 1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("SpriteGroup/Foot:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.0666667, 0.166667, 0.233333, 0.333333, 0.4, 0.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-9, 27), Vector2(-6, 25), Vector2(-3, 24), Vector2(2, 24), Vector2(6, 26), Vector2(9, 27), Vector2(-9, 27)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("SpriteGroup/Foot2:position")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.400847, 0.4759, 0.560019, 0.626686, 0.726686, 0.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(9, 27), Vector2(-9, 27), Vector2(-6, 25), Vector2(-3, 24), Vector2(2, 24), Vector2(6, 26), Vector2(9, 27)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_twxkf"]
+_data = {
+&"RESET": SubResource("Animation_h27ao"),
+&"walk": SubResource("Animation_uu6qt")
+}
+
+[sub_resource type="Animation" id="Animation_6amt5"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Area2D:monitoring")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+
+[sub_resource type="Animation" id="Animation_x1mjv"]
+resource_name = "swing"
+length = 0.3
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.133333, 0.166667),
+"transitions": PackedFloat32Array(0.189465, 0.189465, 5.27803),
+"update": 0,
+"values": [0.0, 1.95477, 0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Area2D:monitoring")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.166667),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+
+[sub_resource type="Animation" id="Animation_4lcuo"]
+resource_name = "swing_flip"
+length = 0.3
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.133333, 0.166667),
+"transitions": PackedFloat32Array(0.189465, 0.189465, 5.27803),
+"update": 0,
+"values": [0.0, -1.95477, 0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Area2D:monitoring")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.173523),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_4lcuo"]
+_data = {
+&"RESET": SubResource("Animation_6amt5"),
+&"swing": SubResource("Animation_x1mjv"),
+&"swing_flip": SubResource("Animation_4lcuo")
+}
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_x1mjv"]
+size = Vector2(16.567, 67.304)
+
+[node name="EnemyClub" type="RigidBody2D"]
+collision_layer = 32768
+lock_rotation = true
+script = ExtResource("1_14gxe")
+max_health = 15
+
+[node name="EnemyShoreAI" type="Node" parent="." node_paths=PackedStringArray("weapon", "sprite", "animator")]
+script = ExtResource("2_161nh")
+weapon = NodePath("../weapon_club")
+sprite = NodePath("../SpriteGroup")
+animator = NodePath("../AnimationPlayer")
+
+[node name="AttackCooldown" type="Timer" parent="EnemyShoreAI"]
+wait_time = 1.5
+
+[node name="DetectArea" type="Area2D" parent="."]
+collision_layer = 3
+collision_mask = 3
+collision_priority = 2.0
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="DetectArea"]
+shape = SubResource("CircleShape2D_twxkf")
+
+[node name="AttackArea" type="Area2D" parent="."]
+collision_layer = 3
+collision_mask = 3
+collision_priority = 2.0
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="AttackArea"]
+shape = SubResource("CircleShape2D_lrpdk")
+debug_color = Color(0.937978, 1.20327e-05, 0.625666, 0.42)
+
+[node name="SpriteGroup" type="Node2D" parent="."]
+
+[node name="Foot" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.45, 0.291, 0.2115, 1)
+position = Vector2(-9, 27)
+rotation = 3.14159
+scale = Vector2(0.0160481, -0.009)
+texture = ExtResource("3_k4axu")
+
+[node name="Foot2" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.45, 0.291, 0.2115, 1)
+position = Vector2(9, 27)
+rotation = 3.14159
+scale = Vector2(0.0160481, -0.009)
+texture = ExtResource("3_k4axu")
+
+[node name="Sprite2D3" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.733805, 0.379615, 1.92523e-07, 1)
+position = Vector2(-2, 1)
+scale = Vector2(0.0700947, -36.2594)
+skew = 0.148353
+texture = SubResource("GradientTexture1D_tuc36")
+
+[node name="Sprite2D" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.919515, 0.481937, 1.92523e-07, 1)
+position = Vector2(0, -1)
+scale = Vector2(0.074875, -33.474)
+texture = SubResource("GradientTexture1D_tuc36")
+
+[node name="Sprite2D2" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.278431, 0.54902, 0.976471, 1)
+position = Vector2(0, -41.776)
+rotation = 3.14159
+scale = Vector2(0.0277332, 0.0277332)
+texture = ExtResource("4_bn6nu")
+
+[node name="SpiritMask" parent="SpriteGroup" instance=ExtResource("6_srfke")]
+process_mode = 4
+position = Vector2(4, -40)
+scale = Vector2(0.861963, 0.861963)
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(0, -9.44)
+shape = SubResource("CapsuleShape2D_h27ao")
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+&"": SubResource("AnimationLibrary_twxkf")
+}
+
+[node name="weapon_club" type="Node2D" parent="." node_paths=PackedStringArray("animator", "area")]
+position = Vector2(22, -12)
+scale = Vector2(0.648004, 0.648004)
+script = ExtResource("6_tuc36")
+animator = NodePath("AnimationPlayer")
+atk = 1
+area = NodePath("Area2D")
+mask = 2
+disable_aft_atk = true
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="weapon_club"]
+libraries = {
+&"": SubResource("AnimationLibrary_4lcuo")
+}
+
+[node name="Machette" type="Sprite2D" parent="weapon_club"]
+position = Vector2(5, -14)
+rotation = 0.322494
+scale = Vector2(0.0442815, 0.0599862)
+texture = ExtResource("7_tuc36")
+flip_h = true
+
+[node name="Area2D" type="Area2D" parent="weapon_club"]
+collision_mask = 32769
+monitoring = false
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="weapon_club/Area2D"]
+position = Vector2(8, -25)
+rotation = 0.327302
+scale = Vector2(1.03252, 1.07461)
+shape = SubResource("RectangleShape2D_x1mjv")
+
+[connection signal="timeout" from="EnemyShoreAI/AttackCooldown" to="EnemyShoreAI" method="_on_attack_cooldown_timeout"]
+[connection signal="body_entered" from="DetectArea" to="EnemyShoreAI" method="_on_area_2d_body_entered"]
+[connection signal="body_entered" from="AttackArea" to="EnemyShoreAI" method="_on_attack_area_body_entered"]
+[connection signal="body_exited" from="AttackArea" to="EnemyShoreAI" method="_on_attack_area_body_exited"]
+[connection signal="body_entered" from="weapon_club/Area2D" to="weapon_club" method="_on_area_2d_body_entered"]
diff --git a/Reusable Scenes/Masks/grapple_mask.tscn b/Reusable Scenes/Masks/grapple_mask.tscn
new file mode 100644
index 0000000..c987d1a
--- /dev/null
+++ b/Reusable Scenes/Masks/grapple_mask.tscn
@@ -0,0 +1,38 @@
+[gd_scene load_steps=3 format=3 uid="uid://ccij302qcrvo1"]
+
+[ext_resource type="Script" uid="uid://cxy2ovjxwgtco" path="res://Scripts/Mask/GrappleMask.gd" id="1_1ftcc"]
+[ext_resource type="Texture2D" uid="uid://csuuxeq47s64g" path="res://Assets/Visuals/mask1.svg" id="2_1ftcc"]
+
+[node name="GrappleMask" type="Node2D" node_paths=PackedStringArray("area", "area_detect", "line")]
+script = ExtResource("1_1ftcc")
+area = NodePath("Area2D")
+area_detect = NodePath("DetectArea2D")
+line = NodePath("Line2D")
+grapple_speed = 700.0
+
+[node name="Line2D" type="Line2D" parent="."]
+points = PackedVector2Array(0, 0, 0, 0)
+default_color = Color(0.5002, 0.82, 0.5535, 1)
+
+[node name="Mask1" type="Sprite2D" parent="."]
+scale = Vector2(0.0315916, 0.0315916)
+texture = ExtResource("2_1ftcc")
+
+[node name="Area2D" type="Area2D" parent="."]
+collision_layer = 8
+collision_mask = 8
+monitoring = false
+
+[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Area2D"]
+polygon = PackedVector2Array(0, 0, 600, -50, 600, 50)
+
+[node name="DetectArea2D" type="Area2D" parent="."]
+collision_layer = 8
+collision_mask = 8
+
+[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DetectArea2D"]
+polygon = PackedVector2Array(0, 0, 600, -50, 600, 50)
+
+[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]
+[connection signal="body_entered" from="DetectArea2D" to="." method="_on_detect_area_2d_body_entered"]
+[connection signal="body_exited" from="DetectArea2D" to="." method="_on_detect_area_2d_body_exited"]
diff --git a/Reusable Scenes/Masks/speed_mask.tscn b/Reusable Scenes/Masks/speed_mask.tscn
new file mode 100644
index 0000000..77aa644
--- /dev/null
+++ b/Reusable Scenes/Masks/speed_mask.tscn
@@ -0,0 +1,15 @@
+[gd_scene load_steps=3 format=3 uid="uid://bdws5hhfuef84"]
+
+[ext_resource type="Script" uid="uid://dpjuboxc5u855" path="res://Scripts/Mask/SpeedMask.gd" id="1_b643j"]
+[ext_resource type="Texture2D" uid="uid://c604bwm7ckesc" path="res://Assets/Visuals/mask0.svg" id="1_jn1gf"]
+
+[node name="SpeedMask" type="Node2D"]
+script = ExtResource("1_b643j")
+
+[node name="Mask0" type="Sprite2D" parent="."]
+scale = Vector2(0.0315916, 0.0315916)
+texture = ExtResource("1_jn1gf")
+
+[node name="Cooldown" type="Timer" parent="."]
+
+[connection signal="timeout" from="Cooldown" to="." method="_on_cooldown_timeout"]
diff --git a/Reusable Scenes/Masks/spirit_mask.tscn b/Reusable Scenes/Masks/spirit_mask.tscn
new file mode 100644
index 0000000..17278d1
--- /dev/null
+++ b/Reusable Scenes/Masks/spirit_mask.tscn
@@ -0,0 +1,13 @@
+[gd_scene load_steps=2 format=3 uid="uid://cnyxp6p68vtv7"]
+
+[ext_resource type="Texture2D" uid="uid://dc1dirxeqtb14" path="res://Assets/Visuals/mask2.svg" id="1_0r3qt"]
+
+[node name="SpiritMask" type="Node2D"]
+
+[node name="Mask2" type="Sprite2D" parent="."]
+scale = Vector2(0.0315916, 0.0315916)
+texture = ExtResource("1_0r3qt")
+
+[node name="Cooldown" type="Timer" parent="."]
+
+[connection signal="timeout" from="Cooldown" to="." method="_on_cooldown_timeout"]
diff --git a/Reusable Scenes/Projectiles/projectile_arrow.tscn b/Reusable Scenes/Projectiles/projectile_arrow.tscn
new file mode 100644
index 0000000..6c11703
--- /dev/null
+++ b/Reusable Scenes/Projectiles/projectile_arrow.tscn
@@ -0,0 +1,66 @@
+[gd_scene load_steps=7 format=3 uid="uid://ga1t2xdk30mw"]
+
+[ext_resource type="Texture2D" uid="uid://d3plfj75jmmyu" path="res://Assets/Visuals/isostri.png" id="1_6fl6o"]
+[ext_resource type="Script" uid="uid://i4wpiugtk5qi" path="res://Scripts/Weapons/Projectile.gd" id="1_n1enl"]
+
+[sub_resource type="Gradient" id="Gradient_n1enl"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.46, 0.33304, 0.1426, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_lyoxt"]
+gradient = SubResource("Gradient_n1enl")
+width = 16
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_n1enl"]
+size = Vector2(8.375, 9.5)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_lyoxt"]
+size = Vector2(64, 4)
+
+[node name="projectile_arrow" type="RigidBody2D" node_paths=PackedStringArray("sprite")]
+collision_layer = 4
+collision_mask = 0
+lock_rotation = true
+linear_damp = 0.5
+script = ExtResource("1_n1enl")
+sprite = NodePath("SpriteGroup")
+atk = 3
+
+[node name="SpriteGroup" type="Node2D" parent="."]
+
+[node name="Sprite2D" type="Sprite2D" parent="SpriteGroup"]
+scale = Vector2(3.86172, 3.86172)
+texture = SubResource("GradientTexture1D_lyoxt")
+
+[node name="Sprite2D2" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.864675, 0.864675, 0.864675, 1)
+position = Vector2(38, 2.84217e-14)
+rotation = 1.5708
+scale = Vector2(0.0142072, 0.0142072)
+texture = ExtResource("1_6fl6o")
+
+[node name="Sprite2D3" type="Sprite2D" parent="SpriteGroup"]
+position = Vector2(-29.4284, 1.46863e-08)
+rotation = 1.5708
+scale = Vector2(0.0103315, 0.0167413)
+texture = ExtResource("1_6fl6o")
+
+[node name="Sprite2D4" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.429416, 0.429416, 0.429416, 1)
+position = Vector2(-34, 0)
+rotation = 1.5708
+scale = Vector2(0.00324931, 0.0103863)
+texture = ExtResource("1_6fl6o")
+
+[node name="Area2D" type="Area2D" parent="SpriteGroup"]
+collision_mask = 32769
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="SpriteGroup/Area2D"]
+position = Vector2(35, 0)
+shape = SubResource("RectangleShape2D_n1enl")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(3, 0)
+shape = SubResource("RectangleShape2D_lyoxt")
+
+[connection signal="body_entered" from="SpriteGroup/Area2D" to="." method="_on_area_2d_body_entered"]
diff --git a/Reusable Scenes/Projectiles/projectile_arrow_enemy.tscn b/Reusable Scenes/Projectiles/projectile_arrow_enemy.tscn
new file mode 100644
index 0000000..8c6be28
--- /dev/null
+++ b/Reusable Scenes/Projectiles/projectile_arrow_enemy.tscn
@@ -0,0 +1,68 @@
+[gd_scene load_steps=7 format=3 uid="uid://bqma5drxh7smh"]
+
+[ext_resource type="Script" uid="uid://i4wpiugtk5qi" path="res://Scripts/Weapons/Projectile.gd" id="1_4rwv7"]
+[ext_resource type="Texture2D" uid="uid://d3plfj75jmmyu" path="res://Assets/Visuals/isostri.png" id="2_k8ime"]
+
+[sub_resource type="Gradient" id="Gradient_n1enl"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.46, 0.33304, 0.1426, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_lyoxt"]
+gradient = SubResource("Gradient_n1enl")
+width = 16
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_n1enl"]
+size = Vector2(8.375, 9.5)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_lyoxt"]
+size = Vector2(64, 4)
+
+[node name="projectile_arrow" type="RigidBody2D" node_paths=PackedStringArray("sprite")]
+collision_layer = 4
+collision_mask = 0
+gravity_scale = 0.0
+lock_rotation = true
+linear_damp = 0.5
+script = ExtResource("1_4rwv7")
+sprite = NodePath("SpriteGroup")
+atk = 2
+
+[node name="SpriteGroup" type="Node2D" parent="."]
+
+[node name="Sprite2D" type="Sprite2D" parent="SpriteGroup"]
+scale = Vector2(3.86172, 3.86172)
+texture = SubResource("GradientTexture1D_lyoxt")
+
+[node name="Sprite2D2" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.864675, 0.864675, 0.864675, 1)
+position = Vector2(38, 2.84217e-14)
+rotation = 1.5708
+scale = Vector2(0.0142072, 0.0142072)
+texture = ExtResource("2_k8ime")
+
+[node name="Sprite2D3" type="Sprite2D" parent="SpriteGroup"]
+position = Vector2(-29.4284, 1.46863e-08)
+rotation = 1.5708
+scale = Vector2(0.0103315, 0.0167413)
+texture = ExtResource("2_k8ime")
+
+[node name="Sprite2D4" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.429416, 0.429416, 0.429416, 1)
+position = Vector2(-34, 0)
+rotation = 1.5708
+scale = Vector2(0.00324931, 0.0103863)
+texture = ExtResource("2_k8ime")
+
+[node name="Area2D" type="Area2D" parent="SpriteGroup"]
+collision_layer = 3
+collision_mask = 3
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="SpriteGroup/Area2D"]
+position = Vector2(35, 0)
+shape = SubResource("RectangleShape2D_n1enl")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(3, 0)
+shape = SubResource("RectangleShape2D_lyoxt")
+
+[connection signal="body_entered" from="SpriteGroup/Area2D" to="." method="_on_area_2d_body_entered"]
diff --git a/Reusable Scenes/Projectiles/projectile_blowpipe.tscn b/Reusable Scenes/Projectiles/projectile_blowpipe.tscn
new file mode 100644
index 0000000..36586e3
--- /dev/null
+++ b/Reusable Scenes/Projectiles/projectile_blowpipe.tscn
@@ -0,0 +1,56 @@
+[gd_scene load_steps=7 format=3 uid="uid://dxemwyiy4it0g"]
+
+[ext_resource type="Script" uid="uid://i4wpiugtk5qi" path="res://Scripts/Weapons/Projectile.gd" id="1_aj88w"]
+[ext_resource type="Texture2D" uid="uid://d3plfj75jmmyu" path="res://Assets/Visuals/isostri.png" id="2_73e50"]
+
+[sub_resource type="Gradient" id="Gradient_aj88w"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.250467, 0.26, 0.208, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_73e50"]
+gradient = SubResource("Gradient_aj88w")
+width = 16
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_n1enl"]
+size = Vector2(8.1875, 4)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_lyoxt"]
+size = Vector2(47, 4)
+
+[node name="projectile_arrow" type="RigidBody2D" node_paths=PackedStringArray("sprite")]
+collision_layer = 0
+collision_mask = 0
+lock_rotation = true
+linear_damp = 0.5
+script = ExtResource("1_aj88w")
+sprite = NodePath("SpriteGroup")
+atk = 1
+
+[node name="SpriteGroup" type="Node2D" parent="."]
+
+[node name="Sprite2D" type="Sprite2D" parent="SpriteGroup"]
+position = Vector2(-6.44688, 0)
+scale = Vector2(3.05586, 3.86172)
+texture = SubResource("GradientTexture1D_73e50")
+
+[node name="Sprite2D2" type="Sprite2D" parent="SpriteGroup"]
+modulate = Color(0.3375, 0.45, 0.3675, 1)
+position = Vector2(20, 4.12115e-12)
+rotation = 1.5708
+scale = Vector2(0.00713689, 0.00713689)
+texture = ExtResource("2_73e50")
+
+[node name="Area2D" type="Area2D" parent="SpriteGroup"]
+position = Vector2(-14, 0)
+collision_layer = 2
+collision_mask = 2
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="SpriteGroup/Area2D"]
+position = Vector2(34.9062, 0)
+shape = SubResource("RectangleShape2D_n1enl")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(-5.5, 0)
+shape = SubResource("RectangleShape2D_lyoxt")
+
+[connection signal="body_entered" from="SpriteGroup/Area2D" to="." method="_on_area_2d_body_entered"]
diff --git a/Reusable Scenes/Weapons/weapon_bow.tscn b/Reusable Scenes/Weapons/weapon_bow.tscn
new file mode 100644
index 0000000..88bdc75
--- /dev/null
+++ b/Reusable Scenes/Weapons/weapon_bow.tscn
@@ -0,0 +1,124 @@
+[gd_scene load_steps=9 format=3 uid="uid://bxax2unw3ay8d"]
+
+[ext_resource type="Script" uid="uid://bfmc8st4ss7om" path="res://Scripts/Weapons/Bow.gd" id="1_vshgr"]
+[ext_resource type="PackedScene" uid="uid://ga1t2xdk30mw" path="res://Reusable Scenes/Projectiles/projectile_arrow.tscn" id="2_u2d6r"]
+
+[sub_resource type="Gradient" id="Gradient_77kik"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(1, 1, 1, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_wpec3"]
+gradient = SubResource("Gradient_77kik")
+width = 16
+
+[sub_resource type="Gradient" id="Gradient_v63fu"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(1, 1, 1, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_ngbqm"]
+gradient = SubResource("Gradient_v63fu")
+width = 16
+
+[sub_resource type="Gradient" id="Gradient_wpec3"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.49, 0.352637, 0.2058, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_v63fu"]
+gradient = SubResource("Gradient_wpec3")
+width = 16
+
+[node name="weapon_bow" type="Node2D"]
+scale = Vector2(1.327, 1.327)
+script = ExtResource("1_vshgr")
+arrow = ExtResource("2_u2d6r")
+speed = 2000.0
+
+[node name="String" type="Sprite2D" parent="."]
+scale = Vector2(3.125, 2)
+texture = SubResource("GradientTexture1D_wpec3")
+
+[node name="Wood5" type="Sprite2D" parent="."]
+position = Vector2(-25.7941, -0.838106)
+rotation = 0.785398
+scale = Vector2(1.08287, 3.96)
+texture = SubResource("GradientTexture1D_ngbqm")
+offset = Vector2(5.57, 0)
+
+[node name="Wood6" type="Sprite2D" parent="."]
+position = Vector2(-14, 10)
+rotation = 0.261799
+scale = Vector2(1.11435, 3.96)
+texture = SubResource("GradientTexture1D_ngbqm")
+offset = Vector2(5.57, 0)
+
+[node name="Wood7" type="Sprite2D" parent="."]
+position = Vector2(14, 10)
+rotation = 2.87979
+scale = Vector2(1.11435, 3.96)
+texture = SubResource("GradientTexture1D_ngbqm")
+offset = Vector2(5.57, 0)
+
+[node name="Wood8" type="Sprite2D" parent="."]
+position = Vector2(25.6208, -0.620809)
+rotation = 2.35619
+scale = Vector2(1.15562, 3.96)
+texture = SubResource("GradientTexture1D_ngbqm")
+offset = Vector2(5.57, 0)
+
+[node name="Wood9" type="Sprite2D" parent="."]
+position = Vector2(-26.582, -1.32556)
+rotation = 2.61799
+scale = Vector2(0.574072, 4.297)
+texture = SubResource("GradientTexture1D_ngbqm")
+offset = Vector2(5.57, 0)
+
+[node name="Wood10" type="Sprite2D" parent="."]
+position = Vector2(26.5944, -1.33392)
+rotation = 0.523599
+scale = Vector2(0.566984, 4.19)
+texture = SubResource("GradientTexture1D_ngbqm")
+offset = Vector2(5.57, 0)
+
+[node name="Wood0" type="Sprite2D" parent="."]
+position = Vector2(-26.4977, -1.37424)
+rotation = 2.61799
+scale = Vector2(0.533634, 3.07)
+texture = SubResource("GradientTexture1D_v63fu")
+offset = Vector2(5.57, 0)
+
+[node name="Wood" type="Sprite2D" parent="."]
+position = Vector2(-25.4223, -0.466283)
+rotation = 0.785398
+scale = Vector2(1.04412, 3.07)
+texture = SubResource("GradientTexture1D_v63fu")
+offset = Vector2(5.57, 0)
+
+[node name="Wood2" type="Sprite2D" parent="."]
+position = Vector2(-14, 10)
+rotation = 0.261799
+scale = Vector2(1.11435, 3.07)
+texture = SubResource("GradientTexture1D_v63fu")
+offset = Vector2(5.57, 0)
+
+[node name="Wood3" type="Sprite2D" parent="."]
+position = Vector2(14, 10)
+rotation = 2.87979
+scale = Vector2(1.11435, 3.07)
+texture = SubResource("GradientTexture1D_v63fu")
+offset = Vector2(5.57, 0)
+
+[node name="Wood4" type="Sprite2D" parent="."]
+position = Vector2(25.3273, -0.327266)
+rotation = -3.92699
+scale = Vector2(1.12503, 3.07)
+texture = SubResource("GradientTexture1D_v63fu")
+offset = Vector2(5.57, 0)
+
+[node name="Wood1" type="Sprite2D" parent="."]
+position = Vector2(26.525, -1.374)
+rotation = 0.523599
+scale = Vector2(0.533634, 3.07)
+texture = SubResource("GradientTexture1D_v63fu")
+offset = Vector2(5.57, 0)
+
+[node name="Timer" type="Timer" parent="."]
diff --git a/Reusable Scenes/Weapons/weapon_machette.tscn b/Reusable Scenes/Weapons/weapon_machette.tscn
new file mode 100644
index 0000000..cd91614
--- /dev/null
+++ b/Reusable Scenes/Weapons/weapon_machette.tscn
@@ -0,0 +1,127 @@
+[gd_scene load_steps=8 format=3 uid="uid://c3nbowvq6g4ah"]
+
+[ext_resource type="Script" uid="uid://ckd00ra2lp1xo" path="res://Scripts/Weapons/Melee.gd" id="1_6amt5"]
+[ext_resource type="Texture2D" uid="uid://cnxhxrmheing2" path="res://Assets/Visuals/machette.svg" id="1_x1mjv"]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_x1mjv"]
+size = Vector2(12.0543, 48.3603)
+
+[sub_resource type="Animation" id="Animation_6amt5"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Area2D:monitoring")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+
+[sub_resource type="Animation" id="Animation_x1mjv"]
+resource_name = "swing"
+length = 0.3
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.133333, 0.166667),
+"transitions": PackedFloat32Array(0.189465, 0.189465, 5.27803),
+"update": 0,
+"values": [0.0, 1.95477, 0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Area2D:monitoring")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.3),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+
+[sub_resource type="Animation" id="Animation_4lcuo"]
+resource_name = "swing_flip"
+length = 0.3
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.133333, 0.166667),
+"transitions": PackedFloat32Array(0.189465, 0.189465, 5.27803),
+"update": 0,
+"values": [0.0, -1.95477, 0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Area2D:monitoring")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.173523),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_4lcuo"]
+_data = {
+&"RESET": SubResource("Animation_6amt5"),
+&"swing": SubResource("Animation_x1mjv"),
+&"swing_flip": SubResource("Animation_4lcuo")
+}
+
+[node name="weapon_machette" type="Node2D" node_paths=PackedStringArray("animator", "area")]
+scale = Vector2(-1, 1)
+script = ExtResource("1_6amt5")
+animator = NodePath("AnimationPlayer")
+atk = 2
+area = NodePath("Area2D")
+mask = 3
+
+[node name="Machette" type="Sprite2D" parent="."]
+position = Vector2(7.9399, -24.7176)
+scale = Vector2(0.0588337, 0.0588337)
+texture = ExtResource("1_x1mjv")
+flip_h = true
+
+[node name="Area2D" type="Area2D" parent="."]
+collision_mask = 32769
+monitoring = false
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
+position = Vector2(11, -31)
+rotation = 0.327302
+shape = SubResource("RectangleShape2D_x1mjv")
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+&"": SubResource("AnimationLibrary_4lcuo")
+}
+
+[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]
diff --git a/Reusable Scenes/chest.tscn b/Reusable Scenes/chest.tscn
new file mode 100644
index 0000000..905f0b0
--- /dev/null
+++ b/Reusable Scenes/chest.tscn
@@ -0,0 +1,276 @@
+[gd_scene load_steps=14 format=3 uid="uid://b80iwxixd6rbp"]
+
+[ext_resource type="Texture2D" uid="uid://404lglxh4v01" path="res://Assets/Visuals/chest_top.svg" id="1_owt0a"]
+[ext_resource type="Script" uid="uid://buli338mi1oqs" path="res://Scripts/MaskChest.gd" id="1_pe0kk"]
+[ext_resource type="Texture2D" uid="uid://0bdflx18poa5" path="res://Assets/Visuals/chest_open.svg" id="2_bkju7"]
+[ext_resource type="Texture2D" uid="uid://csnls3yqqe646" path="res://Assets/Visuals/shiny.svg" id="4_o6r41"]
+[ext_resource type="PackedScene" uid="uid://bdws5hhfuef84" path="res://Reusable Scenes/Masks/speed_mask.tscn" id="4_ro4cy"]
+[ext_resource type="PackedScene" uid="uid://ccij302qcrvo1" path="res://Reusable Scenes/Masks/grapple_mask.tscn" id="6_52pyd"]
+[ext_resource type="PackedScene" uid="uid://cnyxp6p68vtv7" path="res://Reusable Scenes/Masks/spirit_mask.tscn" id="7_vmul4"]
+
+[sub_resource type="Gradient" id="Gradient_o4wei"]
+offsets = PackedFloat32Array(0, 0.9, 0.9, 1)
+colors = PackedColorArray(0.36, 0.2988, 0.2376, 1, 0.360784, 0.298039, 0.239216, 1, 0.95, 0.754933, 0.114, 1, 0.94902, 0.756863, 0.113725, 1)
+
+[sub_resource type="GradientTexture2D" id="GradientTexture2D_owt0a"]
+gradient = SubResource("Gradient_o4wei")
+fill = 2
+fill_from = Vector2(0.5, 0.5)
+
+[sub_resource type="Animation" id="Animation_ro4cy"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("ChestOpen:visible")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("MaskNode/SpeedMask:visible")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("MaskNode:position")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(13, -33)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("MaskNode:visible")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("ChestTop:visible")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("MaskNode/Shiny:modulate")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 0)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("MaskNode/Shiny:rotation")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+
+[sub_resource type="Animation" id="Animation_o6r41"]
+resource_name = "mask_reveal"
+length = 3.0
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("ChestOpen:visible")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("MaskNode/SpeedMask:visible")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 3),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("MaskNode:position")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(0.329877, 0.329877),
+"update": 0,
+"values": [Vector2(13, -33), Vector2(13, -177)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("MaskNode:visible")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 3),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("ChestTop:visible")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("MaskNode/Shiny:modulate")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 2, 3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("MaskNode/Shiny:rotation")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 3),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.872665]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_52pyd"]
+_data = {
+&"RESET": SubResource("Animation_ro4cy"),
+&"mask_reveal": SubResource("Animation_o6r41")
+}
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_ro4cy"]
+size = Vector2(251.884, 122.158)
+
+[node name="Chest" type="Node2D" node_paths=PackedStringArray("masks", "animator", "area")]
+z_index = -3
+script = ExtResource("1_pe0kk")
+masks = [NodePath("MaskNode/SpeedMask"), NodePath("MaskNode/GrappleMask"), NodePath("MaskNode/SpeedMask"), NodePath("MaskNode/SpiritMask")]
+animator = NodePath("AnimationPlayer")
+area = NodePath("Area2D")
+
+[node name="Sprite2D3" type="Sprite2D" parent="."]
+modulate = Color(0.481789, 0.481789, 0.481789, 1)
+z_index = -1
+position = Vector2(80.52, -32)
+texture = SubResource("GradientTexture2D_owt0a")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+z_index = -1
+position = Vector2(-30, -32)
+texture = SubResource("GradientTexture2D_owt0a")
+
+[node name="Sprite2D2" type="Sprite2D" parent="."]
+z_index = -1
+position = Vector2(30, -32)
+texture = SubResource("GradientTexture2D_owt0a")
+
+[node name="ChestTop" type="Sprite2D" parent="."]
+position = Vector2(25.14, -69.67)
+scale = Vector2(0.116, 0.116)
+texture = ExtResource("1_owt0a")
+
+[node name="ChestOpen" type="Sprite2D" parent="."]
+visible = false
+z_index = -3
+position = Vector2(66, -96)
+scale = Vector2(0.141854, 0.141854)
+texture = ExtResource("2_bkju7")
+
+[node name="MaskNode" type="Node2D" parent="."]
+z_index = -2
+position = Vector2(13, -33)
+
+[node name="Shiny" type="Sprite2D" parent="MaskNode"]
+modulate = Color(1, 1, 1, 0)
+scale = Vector2(0.19, 0.19)
+texture = ExtResource("4_o6r41")
+
+[node name="SpeedMask" parent="MaskNode" instance=ExtResource("4_ro4cy")]
+process_mode = 4
+scale = Vector2(1.50522, 1.50522)
+
+[node name="GrappleMask" parent="MaskNode" instance=ExtResource("6_52pyd")]
+process_mode = 4
+visible = false
+scale = Vector2(1.505, 1.505)
+
+[node name="SpiritMask" parent="MaskNode" instance=ExtResource("7_vmul4")]
+process_mode = 4
+visible = false
+scale = Vector2(1.505, 1.505)
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+&"": SubResource("AnimationLibrary_52pyd")
+}
+
+[node name="Area2D" type="Area2D" parent="."]
+collision_layer = 3
+collision_mask = 2
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
+position = Vector2(-9, -90.5997)
+scale = Vector2(1.48005, 1.48005)
+shape = SubResource("RectangleShape2D_ro4cy")
+
+[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]
diff --git a/Reusable Scenes/death_area.tscn b/Reusable Scenes/death_area.tscn
new file mode 100644
index 0000000..12fe8b8
--- /dev/null
+++ b/Reusable Scenes/death_area.tscn
@@ -0,0 +1,18 @@
+[gd_scene load_steps=3 format=3 uid="uid://711q12yjfsni"]
+
+[ext_resource type="Script" uid="uid://c6a1wljfwd8jm" path="res://Scripts/Level Specific/DeathZone.gd" id="1_wf6mn"]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_o5i5b"]
+size = Vector2(1143, 674)
+
+[node name="DeathArea" type="Area2D"]
+collision_layer = 2
+collision_mask = 2
+monitoring = false
+script = ExtResource("1_wf6mn")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(-26.5, -17)
+shape = SubResource("RectangleShape2D_o5i5b")
+
+[connection signal="body_entered" from="." to="." method="_on_body_entered"]
diff --git a/Reusable Scenes/player.tscn b/Reusable Scenes/player.tscn
new file mode 100644
index 0000000..1ae0e47
--- /dev/null
+++ b/Reusable Scenes/player.tscn
@@ -0,0 +1,247 @@
+[gd_scene load_steps=21 format=3 uid="uid://dekoq72ls5rnf"]
+
+[ext_resource type="Script" uid="uid://c5warxls18mds" path="res://Scripts/Entity.gd" id="1_ifhme"]
+[ext_resource type="Script" uid="uid://d1e1dfcab58lk" path="res://Scripts/Player/PlayerMovement.gd" id="1_w8pxy"]
+[ext_resource type="Script" uid="uid://f4kopug5xiuj" path="res://Scripts/Player/PlayerAction.gd" id="2_em046"]
+[ext_resource type="PackedScene" uid="uid://bxax2unw3ay8d" path="res://Reusable Scenes/Weapons/weapon_bow.tscn" id="4_86q6v"]
+[ext_resource type="Script" uid="uid://dovejm1jxwfrp" path="res://Scripts/Player/PlayerDeath.gd" id="4_wnqlv"]
+[ext_resource type="Script" uid="uid://bmx4fy618slwb" path="res://Scripts/Player/PlayerInventory.gd" id="5_fgtho"]
+[ext_resource type="Texture2D" uid="uid://cmxkvsvtsocfj" path="res://Assets/Visuals/player.svg" id="6_7tym2"]
+[ext_resource type="Script" uid="uid://ckd00ra2lp1xo" path="res://Scripts/Weapons/Melee.gd" id="8_7tym2"]
+[ext_resource type="PackedScene" uid="uid://bdws5hhfuef84" path="res://Reusable Scenes/Masks/speed_mask.tscn" id="9_5skjw"]
+[ext_resource type="Texture2D" uid="uid://cnxhxrmheing2" path="res://Assets/Visuals/machette.svg" id="9_w5cjy"]
+[ext_resource type="PackedScene" uid="uid://ccij302qcrvo1" path="res://Reusable Scenes/Masks/grapple_mask.tscn" id="10_qit7a"]
+[ext_resource type="PackedScene" uid="uid://cnyxp6p68vtv7" path="res://Reusable Scenes/Masks/spirit_mask.tscn" id="11_3f77a"]
+
+[sub_resource type="Gradient" id="Gradient_w8pxy"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.227451, 0.152941, 0.117647, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_bf1ey"]
+gradient = SubResource("Gradient_w8pxy")
+width = 40
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_7tym2"]
+size = Vector2(33, 79.54)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_x1mjv"]
+size = Vector2(16.567, 67.304)
+
+[sub_resource type="Animation" id="Animation_6amt5"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Area2D:monitoring")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+
+[sub_resource type="Animation" id="Animation_x1mjv"]
+resource_name = "swing"
+length = 0.3
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.133333, 0.166667),
+"transitions": PackedFloat32Array(0.189465, 0.189465, 5.27803),
+"update": 0,
+"values": [0.0, 1.95477, 0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Area2D:monitoring")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.166667),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+
+[sub_resource type="Animation" id="Animation_4lcuo"]
+resource_name = "swing_flip"
+length = 0.3
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.133333, 0.166667),
+"transitions": PackedFloat32Array(0.189465, 0.189465, 5.27803),
+"update": 0,
+"values": [0.0, -1.95477, 0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Area2D:monitoring")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.173523),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_4lcuo"]
+_data = {
+&"RESET": SubResource("Animation_6amt5"),
+&"swing": SubResource("Animation_x1mjv"),
+&"swing_flip": SubResource("Animation_4lcuo")
+}
+
+[node name="Player" type="CharacterBody2D"]
+collision_layer = 2
+collision_mask = 32769
+script = ExtResource("1_ifhme")
+is_player = true
+
+[node name="Action" type="Node" parent="." node_paths=PackedStringArray("plr_sprite", "hand_pivot", "curr_weapon", "machette_pivot", "machette")]
+script = ExtResource("2_em046")
+plr_sprite = NodePath("../Player")
+hand_pivot = NodePath("../HandPivot")
+curr_weapon = NodePath("../HandPivot/Hand/weapon_bow")
+machette_pivot = NodePath("../HandPivot/Hand/machette_pivot")
+machette = NodePath("../HandPivot/Hand/machette_pivot/weapon_machette")
+
+[node name="Cooldown" type="Timer" parent="Action"]
+wait_time = 0.35
+
+[node name="PlayerMovement" type="Node" parent="." node_paths=PackedStringArray("character", "plr_sprite", "mask_node", "hand_pivot", "cape")]
+script = ExtResource("1_w8pxy")
+character = NodePath("..")
+speed = 400.0
+jump_vel = -700.0
+plr_sprite = NodePath("../Player")
+mask_node = NodePath("../MaskNode")
+hand_pivot = NodePath("../HandPivot")
+cape = NodePath("../Sprite2D")
+skew_min = 12.7
+skew_max = 33.1
+skew_maxmax = 77.1
+lerp_step_on = 0.5
+lerp_step_off = 0.1
+
+[node name="PlayerDeath" type="Node" parent="." node_paths=PackedStringArray("player")]
+script = ExtResource("4_wnqlv")
+player = NodePath("..")
+
+[node name="PlayerInventory" type="Node" parent="." node_paths=PackedStringArray("action", "machette_pivot", "bow", "machette", "masks")]
+script = ExtResource("5_fgtho")
+action = NodePath("../Action")
+machette_pivot = NodePath("../HandPivot/Hand/machette_pivot")
+bow = NodePath("../HandPivot/Hand/weapon_bow")
+machette = NodePath("../HandPivot/Hand/machette_pivot/weapon_machette")
+machette_cooldown = 0.001
+masks = [NodePath("../MaskNode/SpeedMask"), NodePath("../MaskNode/GrappleMask"), NodePath("../MaskNode/SpiritMask")]
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+z_index = -1
+position = Vector2(0.49, -52.7323)
+scale = Vector2(0.791, 54.329)
+skew = 1.24093
+texture = SubResource("GradientTexture1D_bf1ey")
+offset = Vector2(0, 0.5)
+
+[node name="Player" type="Sprite2D" parent="."]
+z_index = -1
+position = Vector2(0.27, -45.7323)
+scale = Vector2(0.101044, 0.101044)
+texture = ExtResource("6_7tym2")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(2, -40.3)
+shape = SubResource("RectangleShape2D_7tym2")
+
+[node name="HandPivot" type="Node2D" parent="."]
+z_index = 1
+position = Vector2(4, -42.7323)
+
+[node name="Hand" type="Node2D" parent="HandPivot"]
+position = Vector2(0, 16.58)
+
+[node name="weapon_bow" parent="HandPivot/Hand" instance=ExtResource("4_86q6v")]
+z_index = -1
+
+[node name="machette_pivot" type="Node2D" parent="HandPivot/Hand"]
+visible = false
+rotation = 1.45211
+
+[node name="weapon_machette" type="Node2D" parent="HandPivot/Hand/machette_pivot" node_paths=PackedStringArray("animator", "area")]
+process_mode = 4
+z_index = -1
+scale = Vector2(1.31089, 1.31089)
+script = ExtResource("8_7tym2")
+animator = NodePath("AnimationPlayer")
+atk = 5
+area = NodePath("Area2D")
+mask = 32769
+
+[node name="Machette" type="Sprite2D" parent="HandPivot/Hand/machette_pivot/weapon_machette"]
+position = Vector2(9.99098, -29.5384)
+scale = Vector2(0.0699978, 0.0677614)
+texture = ExtResource("9_w5cjy")
+flip_h = true
+
+[node name="Area2D" type="Area2D" parent="HandPivot/Hand/machette_pivot/weapon_machette"]
+collision_mask = 32769
+monitoring = false
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="HandPivot/Hand/machette_pivot/weapon_machette/Area2D"]
+position = Vector2(18.1714, -45.1211)
+rotation = 0.327302
+shape = SubResource("RectangleShape2D_x1mjv")
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="HandPivot/Hand/machette_pivot/weapon_machette"]
+libraries = {
+&"": SubResource("AnimationLibrary_4lcuo")
+}
+speed_scale = 1.569
+
+[node name="MaskNode" type="Node2D" parent="."]
+z_index = -1
+position = Vector2(8, -64.7323)
+scale = Vector2(0.878783, 0.878783)
+
+[node name="SpeedMask" parent="MaskNode" instance=ExtResource("9_5skjw")]
+process_mode = 4
+visible = false
+
+[node name="GrappleMask" parent="MaskNode" instance=ExtResource("10_qit7a")]
+process_mode = 4
+visible = false
+
+[node name="SpiritMask" parent="MaskNode" instance=ExtResource("11_3f77a")]
+process_mode = 4
+visible = false
+
+[connection signal="entity_death" from="." to="PlayerDeath" method="_on_player_entity_death"]
+[connection signal="timeout" from="Action/Cooldown" to="Action" method="_on_cooldown_timeout"]
+[connection signal="body_entered" from="HandPivot/Hand/machette_pivot/weapon_machette/Area2D" to="HandPivot/Hand/machette_pivot/weapon_machette" method="_on_area_2d_body_entered"]
diff --git a/Reusable Scenes/torch.tscn b/Reusable Scenes/torch.tscn
new file mode 100644
index 0000000..1d95f43
--- /dev/null
+++ b/Reusable Scenes/torch.tscn
@@ -0,0 +1,49 @@
+[gd_scene load_steps=7 format=3 uid="uid://cmimydllnd6ny"]
+
+[ext_resource type="Texture2D" uid="uid://ddxbrkfa7i5n" path="res://Assets/Visuals/hexagon.png" id="1_ai0p8"]
+[ext_resource type="Texture2D" uid="uid://d3plfj75jmmyu" path="res://Assets/Visuals/isostri.png" id="2_i33rf"]
+
+[sub_resource type="Gradient" id="Gradient_34bfm"]
+offsets = PackedFloat32Array(0)
+colors = PackedColorArray(0.44, 0.34078, 0.2948, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_ovrsl"]
+gradient = SubResource("Gradient_34bfm")
+
+[sub_resource type="Gradient" id="Gradient_gnif3"]
+colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1)
+
+[sub_resource type="GradientTexture2D" id="GradientTexture2D_ai0p8"]
+gradient = SubResource("Gradient_gnif3")
+fill = 1
+fill_from = Vector2(0.5, 0.5)
+fill_to = Vector2(0.9, 0.2)
+metadata/_snap_enabled = true
+
+[node name="Torch" type="Node2D"]
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+position = Vector2(0.259716, -51.4739)
+scale = Vector2(0.0664067, 101.938)
+texture = SubResource("GradientTexture1D_ovrsl")
+
+[node name="Hexagon" type="Sprite2D" parent="."]
+modulate = Color(1, 0.441, 0.22, 1)
+light_mask = 2
+position = Vector2(-1.7404, -115.474)
+scale = Vector2(0.0440846, 0.0470261)
+texture = ExtResource("1_ai0p8")
+
+[node name="Hexagon2" type="Sprite2D" parent="."]
+modulate = Color(1, 0.792, 0.22, 1)
+light_mask = 2
+position = Vector2(-1.74028, -119.474)
+scale = Vector2(0.0327629, 0.0317369)
+texture = ExtResource("2_i33rf")
+
+[node name="PointLight2D" type="PointLight2D" parent="."]
+position = Vector2(2.25972, -114.474)
+scale = Vector2(7.85187, 8.79769)
+color = Color(0.980853, 0.476805, 0, 1)
+energy = 1.76
+texture = SubResource("GradientTexture2D_ai0p8")
diff --git a/Reusable Scenes/torch_spirit.tscn b/Reusable Scenes/torch_spirit.tscn
new file mode 100644
index 0000000..20d0f3c
--- /dev/null
+++ b/Reusable Scenes/torch_spirit.tscn
@@ -0,0 +1,50 @@
+[gd_scene load_steps=7 format=3 uid="uid://b65q8eid6235v"]
+
+[ext_resource type="Texture2D" uid="uid://ddxbrkfa7i5n" path="res://Assets/Visuals/hexagon.png" id="1_l8os2"]
+[ext_resource type="Texture2D" uid="uid://d3plfj75jmmyu" path="res://Assets/Visuals/isostri.png" id="2_aloei"]
+
+[sub_resource type="Gradient" id="Gradient_l8os2"]
+offsets = PackedFloat32Array(1)
+colors = PackedColorArray(0.48, 0.40456, 0.3696, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_aloei"]
+gradient = SubResource("Gradient_l8os2")
+
+[sub_resource type="Gradient" id="Gradient_gnif3"]
+colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1)
+
+[sub_resource type="GradientTexture2D" id="GradientTexture2D_ai0p8"]
+gradient = SubResource("Gradient_gnif3")
+fill = 1
+fill_from = Vector2(0.5, 0.5)
+fill_to = Vector2(0.9, 0.2)
+metadata/_snap_enabled = true
+
+[node name="Torch" type="Node2D"]
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+light_mask = 2
+position = Vector2(0.259716, -51.4739)
+scale = Vector2(0.0664067, 101.938)
+texture = SubResource("GradientTexture1D_aloei")
+
+[node name="Hexagon" type="Sprite2D" parent="."]
+modulate = Color(0.504758, 0.605776, 1, 1)
+light_mask = 2
+position = Vector2(-1.7404, -115.474)
+scale = Vector2(0.0440846, 0.0470261)
+texture = ExtResource("1_l8os2")
+
+[node name="Hexagon2" type="Sprite2D" parent="."]
+modulate = Color(0.978268, 0.716035, 1, 1)
+light_mask = 2
+position = Vector2(-1.74028, -119.474)
+scale = Vector2(0.0327629, 0.0317369)
+texture = ExtResource("2_aloei")
+
+[node name="PointLight2D" type="PointLight2D" parent="."]
+position = Vector2(2.25972, -114.474)
+scale = Vector2(7.85187, 8.79769)
+color = Color(0.587118, 0.583572, 1, 1)
+energy = 1.76
+texture = SubResource("GradientTexture2D_ai0p8")