interactable area and chest

pull/2/head
Sascha 2024-06-06 09:43:15 +07:00
parent 2a218d4d6f
commit 6f22839c0e
21 changed files with 489 additions and 85 deletions

@ -1,7 +1,11 @@
[gd_scene load_steps=11 format=4 uid="uid://bkh0th4s2lkcq"]
[gd_scene load_steps=21 format=4 uid="uid://bkh0th4s2lkcq"]
[ext_resource type="Texture2D" uid="uid://dvkrw7iq1wb3d" path="res://resources/models/dungeon/dungeon_texture.png" id="1_3aqkg"]
[ext_resource type="Script" path="res://scripts/chest.gd" id="1_jught"]
[ext_resource type="PackedScene" uid="uid://dt6h2uw768kid" path="res://resources/models/dungeon/coin_stack_medium.gltf" id="2_resnj"]
[ext_resource type="Script" path="res://scripts/interaction_area.gd" id="3_hc073"]
[ext_resource type="AudioStream" uid="uid://0ciymc2gsrej" path="res://resources/audio/chest_open.mp3" id="4_4q6dc"]
[ext_resource type="AudioStream" uid="uid://djf2sghx7jiqx" path="res://resources/audio/take_gold.mp3" id="6_dsxoh"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p1j55"]
resource_name = "texture"
@ -81,15 +85,173 @@ points = PackedVector3Array(-0.107852, -0.178405, 1.14663, 0.620402, 0.631019, 1
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_jo100"]
points = PackedVector3Array(-0.601464, 0.00410026, -0.579101, -0.780496, -2.38419e-07, -0.489792, -0.756106, 0.6, -0.473792, 0.756106, 0.6, -0.473792, -0.756106, 0.6, 0.471062, 0.780496, -2.38419e-07, -0.489792, -0.628065, 0.00283438, 0.577834, 0.756106, 0.6, 0.471062, 0.780496, -2.38419e-07, 0.485541, 0.610178, 0.512188, -0.587813, -0.634558, 0.512209, 0.583578, -0.780496, -2.38419e-07, 0.485541, -0.610178, 0.512188, -0.587813, 0.601464, 0.00410026, -0.579101, 0.634558, 0.512209, 0.583578, 0.535759, 0.0977865, 0.63093, -0.535892, 0.0977351, 0.631081, 0.628065, 0.00283438, 0.577834)
[sub_resource type="SphereShape3D" id="SphereShape3D_rt4xi"]
radius = 3.0
[sub_resource type="Animation" id="Animation_6mglt"]
resource_name = "open"
length = 2.3
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("chest/chest_lid:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.4995, 1.4985),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(-1.309, 0, 0)]
}
tracks/1/type = "audio"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("FSX")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("4_4q6dc")
}],
"times": PackedFloat32Array(0)
}
tracks/1/use_blend = true
[sub_resource type="Animation" id="Animation_8vvhc"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("chest/chest_lid:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("coin_stack_medium:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("coin_stack_medium:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_dfx3x"]
resource_name = "close"
length = 2.3
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("chest/chest_lid:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1.4985),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(-1.309, 0, 0), Vector3(0, 0, 0)]
}
tracks/1/type = "audio"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("FSX")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("4_4q6dc")
}],
"times": PackedFloat32Array(0)
}
tracks/1/use_blend = true
[sub_resource type="Animation" id="Animation_p5ip6"]
resource_name = "take_gold"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("coin_stack_medium:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2997, 0.5994),
"transitions": PackedFloat32Array(1, 1, 0.5),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0.6, 0), Vector3(0, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("coin_stack_medium:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/2/type = "audio"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("FSX")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("6_dsxoh")
}],
"times": PackedFloat32Array(0.3663)
}
tracks/2/use_blend = true
[sub_resource type="AnimationLibrary" id="AnimationLibrary_joilv"]
_data = {
"RESET": SubResource("Animation_8vvhc"),
"close": SubResource("Animation_dfx3x"),
"open": SubResource("Animation_6mglt"),
"take_gold": SubResource("Animation_p5ip6")
}
[node name="Chest" type="Node3D"]
script = ExtResource("1_jught")
state = 2
[node name="coin_stack_medium" parent="." instance=ExtResource("2_resnj")]
transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 0, 0)
[node name="chest" type="MeshInstance3D" parent="."]
mesh = SubResource("ArrayMesh_r7iwd")
skeleton = NodePath("")
[node name="chest_lid" type="RigidBody3D" parent="chest"]
transform = Transform3D(1, 0, 0, 0, 0.258819, 0.965926, 0, -0.965926, 0.258819, 0, 0.5, -0.564883)
[node name="chest_lid" type="StaticBody3D" parent="chest"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -0.564883)
[node name="chest_lid" type="MeshInstance3D" parent="chest/chest_lid"]
mesh = SubResource("ArrayMesh_ce6sc")
@ -105,3 +267,24 @@ shape = SubResource("ConvexPolygonShape3D_leqax")
[node name="CollisionShape3D" type="CollisionShape3D" parent="chest/StaticBody3D"]
shape = SubResource("ConvexPolygonShape3D_jo100")
[node name="InteractionArea" type="Area3D" parent="."]
collision_layer = 0
collision_mask = 4
script = ExtResource("3_hc073")
action_name = "open"
[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractionArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("SphereShape3D_rt4xi")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_joilv")
}
[node name="FSX" type="AudioStreamPlayer3D" parent="."]
bus = &"SFX"
[connection signal="body_entered" from="InteractionArea" to="InteractionArea" method="_on_body_entered"]
[connection signal="body_exited" from="InteractionArea" to="InteractionArea" method="_on_body_exited"]

@ -1,4 +1,4 @@
[gd_scene load_steps=13 format=4 uid="uid://cxwpwnl17j7wd"]
[gd_scene load_steps=12 format=4 uid="uid://c8tec0l3liet0"]
[ext_resource type="Texture2D" uid="uid://dvkrw7iq1wb3d" path="res://resources/models/dungeon/dungeon_texture.png" id="1_36wbj"]
[ext_resource type="Script" path="res://scripts/chest.gd" id="1_eabtu"]
@ -82,9 +82,6 @@ points = PackedVector3Array(-0.107852, -0.178405, 1.14663, 0.620402, 0.631019, 1
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_jo100"]
points = PackedVector3Array(-0.601464, 0.00410026, -0.579101, -0.780496, -2.38419e-07, -0.489792, -0.756106, 0.6, -0.473792, 0.756106, 0.6, -0.473792, -0.756106, 0.6, 0.471062, 0.780496, -2.38419e-07, -0.489792, -0.628065, 0.00283438, 0.577834, 0.756106, 0.6, 0.471062, 0.780496, -2.38419e-07, 0.485541, 0.610178, 0.512188, -0.587813, -0.634558, 0.512209, 0.583578, -0.780496, -2.38419e-07, 0.485541, -0.610178, 0.512188, -0.587813, 0.601464, 0.00410026, -0.579101, 0.634558, 0.512209, 0.583578, 0.535759, 0.0977865, 0.63093, -0.535892, 0.0977351, 0.631081, 0.628065, 0.00283438, 0.577834)
[sub_resource type="SphereShape3D" id="SphereShape3D_ckb4i"]
radius = 2.0
[node name="Chest_with_Gold" type="RigidBody3D"]
collision_layer = 0
collision_mask = 4
@ -117,7 +114,4 @@ shape = SubResource("ConvexPolygonShape3D_jo100")
[node name="coin_stack_medium" parent="chest" instance=ExtResource("2_phmxy")]
transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 0, 0)
[node name="InteractRadius" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_ckb4i")
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://daqtia6ln838s"]
[ext_resource type="Script" path="res://scripts/interaction_area.gd" id="1_m1y0h"]
[node name="Area3D" type="Area3D"]
collision_layer = 0
collision_mask = 4
script = ExtResource("1_m1y0h")
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
[connection signal="body_exited" from="." to="." method="_on_body_exited"]

@ -0,0 +1,20 @@
[gd_scene load_steps=3 format=3 uid="uid://b23cxmfx1hioo"]
[ext_resource type="Script" path="res://scripts/interaction_manager.gd" id="1_cc3nr"]
[ext_resource type="Theme" uid="uid://b3faaa6kmpthu" path="res://resources/themes/standard_theme.tres" id="1_i2bdl"]
[node name="InteractionManager" type="Node2D"]
script = ExtResource("1_cc3nr")
[node name="Label" type="Label" parent="."]
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -75.0
offset_right = 75.0
offset_bottom = 23.0
grow_horizontal = 2
theme = ExtResource("1_i2bdl")
text = "[E] or [Y] to interact"
horizontal_alignment = 1
vertical_alignment = 1

@ -31663,43 +31663,43 @@ bones/0/name = "root"
bones/0/parent = -1
bones/0/rest = Transform3D(1, 0, 2.38419e-07, 0, 1, 0, -2.38419e-07, 0, 1, 0, 0, 0)
bones/0/enabled = true
bones/0/position = Vector3(0, 0.000121526, 0)
bones/0/position = Vector3(0, 2.41992e-05, 0)
bones/0/rotation = Quaternion(-1.16323e-11, 0.000338143, 2.01478e-11, 1)
bones/0/scale = Vector3(1, 1, 1)
bones/1/name = "hips"
bones/1/parent = 0
bones/1/rest = Transform3D(1, 0, -2.38419e-07, 0, 1, 0, 2.38419e-07, 0, 1, 0, 0.405663, 0)
bones/1/enabled = true
bones/1/position = Vector3(-4.83338e-19, 0.377602, -1.15236e-25)
bones/1/rotation = Quaternion(0.000323529, 0.0430087, -5.88971e-05, 0.999075)
bones/1/position = Vector3(-7.38028e-20, 0.37912, 4.99586e-19)
bones/1/rotation = Quaternion(0.000325067, 0.0430087, -5.8962e-05, 0.999075)
bones/1/scale = Vector3(1, 1, 1)
bones/2/name = "spine"
bones/2/parent = 1
bones/2/rest = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, -1.42109e-14, 0, 1, 0, 0.191978, 0)
bones/2/enabled = true
bones/2/position = Vector3(0, 0.191978, 0)
bones/2/rotation = Quaternion(0.000391297, 0.000311601, 2.56913e-06, 1)
bones/2/rotation = Quaternion(0.000396529, -0.000289032, 4.72153e-05, 1)
bones/2/scale = Vector3(1, 1, 1)
bones/3/name = "chest"
bones/3/parent = 2
bones/3/rest = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.374988, 0)
bones/3/enabled = true
bones/3/position = Vector3(0, 0.374988, 0)
bones/3/rotation = Quaternion(0.000149023, -9.25788e-05, 8.7603e-05, 1)
bones/3/rotation = Quaternion(0.000159246, -0.000103164, 3.32076e-05, 1)
bones/3/scale = Vector3(1, 1, 1)
bones/4/name = "upperarm.l"
bones/4/parent = 3
bones/4/rest = Transform3D(0.0572842, 0.998357, -3.57628e-07, -3.57628e-07, 4.76837e-07, 1, 0.998357, -0.0572841, 4.76837e-07, 0.212007, 0.134132, 8.40246e-08)
bones/4/enabled = true
bones/4/position = Vector3(0.212005, 0.134099, -0.000163966)
bones/4/rotation = Quaternion(-0.552527, -0.0628344, -0.65543, 0.511054)
bones/4/position = Vector3(0.211948, 0.13407, -0.000148596)
bones/4/rotation = Quaternion(-0.55649, -0.05814, -0.63764, 0.529485)
bones/4/scale = Vector3(0.999999, 0.999999, 1)
bones/5/name = "lowerarm.l"
bones/5/parent = 4
bones/5/rest = Transform3D(0.993887, 0.110402, -1.19007e-07, -0.110402, 0.993887, 3.28831e-09, 1.18643e-07, 9.87045e-09, 1, -3.21966e-09, 0.241897, -1.19406e-07)
bones/5/enabled = true
bones/5/position = Vector3(-3.21966e-09, 0.241897, -1.19406e-07)
bones/5/rotation = Quaternion(1.49383e-08, -5.48466e-08, -0.479221, 0.877694)
bones/5/rotation = Quaternion(2.54806e-08, -5.37804e-08, -0.51068, 0.859771)
bones/5/scale = Vector3(1, 1, 1)
bones/6/name = "wrist.l"
bones/6/parent = 5
@ -31713,14 +31713,14 @@ bones/7/parent = 6
bones/7/rest = Transform3D(1, 1.09104e-05, 2.66204e-07, -1.09104e-05, 1, -2.40181e-09, -2.66204e-07, 2.39891e-09, 1, 9.08162e-13, 0.0738258, 2.22045e-16)
bones/7/enabled = true
bones/7/position = Vector3(9.08162e-13, 0.0738258, 2.22045e-16)
bones/7/rotation = Quaternion(-0.315857, -0.33068, 0.13427, 0.879123)
bones/7/rotation = Quaternion(-0.320803, -0.333883, 0.148833, 0.87376)
bones/7/scale = Vector3(1, 1, 1)
bones/8/name = "handslot.l"
bones/8/parent = 7
bones/8/rest = Transform3D(-1.19209e-07, 1, -2.22045e-16, -1, -1.19209e-07, -4.55307e-09, -4.55307e-09, -2.22045e-16, 1, 8.34815e-10, 0.0961251, -0.0575001)
bones/8/enabled = true
bones/8/position = Vector3(5.50255e-10, 0.0961252, -0.0575)
bones/8/rotation = Quaternion(0.00147644, 0.00183216, -0.700464, 0.713684)
bones/8/rotation = Quaternion(0.000275242, 0.000655316, -0.7049, 0.709306)
bones/8/scale = Vector3(1, 1, 1)
bones/9/name = "1H_Sword_Offhand"
bones/9/parent = 8
@ -31761,15 +31761,15 @@ bones/14/name = "upperarm.r"
bones/14/parent = 3
bones/14/rest = Transform3D(0.0572841, -0.998357, 4.47035e-07, 5.06639e-07, 4.17232e-07, 1, -0.998357, -0.0572842, 4.76837e-07, -0.212007, 0.134132, 8.40246e-08)
bones/14/enabled = true
bones/14/position = Vector3(-0.211923, 0.134058, -0.000142039)
bones/14/rotation = Quaternion(-0.611953, 0.0826341, 0.62799, 0.473617)
bones/14/position = Vector3(-0.21198, 0.134087, -0.000157408)
bones/14/rotation = Quaternion(-0.614501, 0.078681, 0.613368, 0.489875)
bones/14/scale = Vector3(0.999999, 0.999999, 1)
bones/15/name = "lowerarm.r"
bones/15/parent = 14
bones/15/rest = Transform3D(0.993887, -0.110402, 1.19007e-07, 0.110402, 0.993887, 3.28831e-09, -1.18643e-07, 9.87045e-09, 1, -7.12186e-11, 0.241897, -1.19406e-07)
bones/15/enabled = true
bones/15/position = Vector3(-7.12186e-11, 0.241897, -1.19406e-07)
bones/15/rotation = Quaternion(2.94223e-08, 4.73025e-08, 0.50259, 0.864525)
bones/15/rotation = Quaternion(1.41217e-08, 6.13461e-08, 0.532996, 0.846118)
bones/15/scale = Vector3(1, 1, 1)
bones/16/name = "wrist.r"
bones/16/parent = 15
@ -31783,14 +31783,14 @@ bones/17/parent = 16
bones/17/rest = Transform3D(1, -1.09104e-05, -1.78637e-07, 1.09104e-05, 1, -2.40084e-09, 1.78637e-07, 2.39889e-09, 1, 1.33227e-15, 0.0738258, 2.22045e-16)
bones/17/enabled = true
bones/17/position = Vector3(1.33227e-15, 0.0738258, 2.22045e-16)
bones/17/rotation = Quaternion(-0.314677, 0.305344, -0.215132, 0.872618)
bones/17/rotation = Quaternion(-0.319393, 0.309859, -0.230593, 0.865333)
bones/17/scale = Vector3(1, 1, 1)
bones/18/name = "handslot.r"
bones/18/parent = 17
bones/18/rest = Transform3D(-1.19209e-07, -1, 2.22045e-16, 1, -1.19209e-07, -4.55301e-09, 4.55301e-09, -2.22045e-16, 1, -8.34815e-10, 0.0961251, -0.0575001)
bones/18/enabled = true
bones/18/position = Vector3(-1.55245e-08, 0.0961251, -0.0575)
bones/18/rotation = Quaternion(0.00408105, 0.00498637, 0.701992, 0.712156)
bones/18/rotation = Quaternion(0.00124669, 0.0016181, 0.704974, 0.70923)
bones/18/scale = Vector3(1, 1, 1)
bones/19/name = "1H_Sword"
bones/19/parent = 18
@ -31811,7 +31811,7 @@ bones/21/parent = 3
bones/21/rest = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.268797, 0)
bones/21/enabled = true
bones/21/position = Vector3(0, 0.268797, 0)
bones/21/rotation = Quaternion(-0.000444694, -0.0316317, 5.30677e-05, 0.9995)
bones/21/rotation = Quaternion(-0.000435698, -0.0311305, 2.28049e-05, 0.999515)
bones/21/scale = Vector3(1, 1, 1)
bones/22/name = "Knight_Helmet"
bones/22/parent = 21
@ -31831,71 +31831,71 @@ bones/24/name = "upperleg.l"
bones/24/parent = 1
bones/24/rest = Transform3D(1, -1.42215e-07, -2.65602e-08, -1.43052e-07, -0.999396, -0.0347412, -2.16035e-08, 0.0347411, -0.999398, 0.170945, 0.113587, 1.39233e-08)
bones/24/enabled = true
bones/24/position = Vector3(0.170945, 0.113587, 0.000332375)
bones/24/rotation = Quaternion(0.991297, 0.0828455, 0.0772256, 0.0671017)
bones/24/position = Vector3(0.170945, 0.113587, 5.75323e-05)
bones/24/rotation = Quaternion(0.991697, 0.0828187, 0.0768218, 0.0614492)
bones/24/scale = Vector3(1, 1, 1)
bones/25/name = "lowerleg.l"
bones/25/parent = 24
bones/25/rest = Transform3D(1, 1.6129e-07, 1.20856e-07, -1.3212e-07, 0.977433, -0.211248, -1.52201e-07, 0.211248, 0.977433, 3.57982e-09, 0.227077, -6.13986e-09)
bones/25/enabled = true
bones/25/position = Vector3(3.57982e-09, 0.227077, -6.13986e-09)
bones/25/rotation = Quaternion(0.338143, 5.85639e-08, -2.39959e-07, 0.941095)
bones/25/rotation = Quaternion(0.327776, 5.96002e-08, -2.26571e-07, 0.944755)
bones/25/scale = Vector3(1, 1, 1)
bones/26/name = "foot.l"
bones/26/parent = 25
bones/26/rest = Transform3D(1, 4.64335e-08, 6.01239e-08, -7.59277e-08, 0.585515, 0.810661, 2.4383e-09, -0.810662, 0.585514, 1.83222e-10, 0.149437, 9.66537e-10)
bones/26/enabled = true
bones/26/position = Vector3(1.83222e-10, 0.149437, 9.66537e-10)
bones/26/rotation = Quaternion(-0.591901, -0.203368, 0.066273, 0.777111)
bones/26/rotation = Quaternion(-0.584909, -0.204047, 0.0640241, 0.782398)
bones/26/scale = Vector3(1, 1, 0.999999)
bones/27/name = "toes.l"
bones/27/parent = 26
bones/27/rest = Transform3D(-1, -1.75424e-09, 1.51741e-07, -1.10452e-07, 0.694106, -0.719873, -1.04062e-07, -0.719873, -0.694106, -2.1306e-10, 0.16565, 5.17174e-09)
bones/27/enabled = true
bones/27/position = Vector3(-2.1306e-10, 0.16565, 5.17174e-09)
bones/27/rotation = Quaternion(-9.81783e-09, 0.920355, -0.391084, 7.8284e-08)
bones/27/rotation = Quaternion(-9.81294e-09, 0.920355, -0.391084, 7.82799e-08)
bones/27/scale = Vector3(1, 1, 1)
bones/28/name = "upperleg.r"
bones/28/parent = 1
bones/28/rest = Transform3D(1, 1.49611e-07, -6.08626e-08, 1.47406e-07, -0.999396, -0.0347412, -6.60234e-08, 0.0347411, -0.999398, -0.170945, 0.113587, 1.39233e-08)
bones/28/enabled = true
bones/28/position = Vector3(-0.170945, 0.113587, -0.000332344)
bones/28/rotation = Quaternion(0.993671, -0.0319328, 0.030236, 0.103365)
bones/28/position = Vector3(-0.170945, 0.113587, -5.75007e-05)
bones/28/rotation = Quaternion(0.994084, -0.0316526, 0.0303498, 0.099372)
bones/28/scale = Vector3(1, 1, 1)
bones/29/name = "lowerleg.r"
bones/29/parent = 28
bones/29/rest = Transform3D(1, -1.6129e-07, -1.20856e-07, 1.3212e-07, 0.977433, -0.211248, 1.52201e-07, 0.211248, 0.977433, -3.57982e-09, 0.227077, -6.13986e-09)
bones/29/enabled = true
bones/29/position = Vector3(-3.57982e-09, 0.227077, -6.13986e-09)
bones/29/rotation = Quaternion(0.389819, -6.07636e-08, 2.72684e-07, 0.920892)
bones/29/rotation = Quaternion(0.377137, -6.0943e-08, 2.63572e-07, 0.926158)
bones/29/scale = Vector3(1, 1, 1)
bones/30/name = "foot.r"
bones/30/parent = 29
bones/30/rest = Transform3D(1, -1.55132e-07, 2.93521e-07, -1.47115e-07, 0.585515, 0.810661, -2.97621e-07, -0.810662, 0.585514, -1.83221e-10, 0.149437, 9.66542e-10)
bones/30/enabled = true
bones/30/position = Vector3(-1.83221e-10, 0.149437, 9.66542e-10)
bones/30/rotation = Quaternion(-0.619068, 0.112917, -0.0186948, 0.776953)
bones/30/rotation = Quaternion(-0.613984, 0.113126, -0.0175029, 0.780974)
bones/30/scale = Vector3(1, 1, 0.999999)
bones/31/name = "toes.r"
bones/31/parent = 30
bones/31/rest = Transform3D(-1, 1.75425e-09, -1.51741e-07, 1.10452e-07, 0.694106, -0.719873, 1.04062e-07, -0.719873, -0.694106, 2.13058e-10, 0.16565, 5.17174e-09)
bones/31/enabled = true
bones/31/position = Vector3(2.13058e-10, 0.16565, 5.17174e-09)
bones/31/rotation = Quaternion(3.01755e-08, 0.920321, -0.391164, -6.94879e-08)
bones/31/rotation = Quaternion(3.03024e-08, 0.920283, -0.391254, -6.95318e-08)
bones/31/scale = Vector3(1, 1, 1)
bones/32/name = "kneeIK.l"
bones/32/parent = 0
bones/32/rest = Transform3D(1, -2.59151e-07, -3.89414e-07, -3.89414e-07, 0, -1, 2.59151e-07, 1, 0, 0.170945, 0.29231, 0.575812)
bones/32/enabled = true
bones/32/position = Vector3(0.170945, 0.29234, 0.575842)
bones/32/position = Vector3(0.170945, 0.292574, 0.576076)
bones/32/rotation = Quaternion(0.707107, -2.29309e-07, -4.60484e-08, 0.707107)
bones/32/scale = Vector3(1, 1, 1)
bones/33/name = "control-toe-roll.l"
bones/33/parent = 0
bones/33/rest = Transform3D(1, 1.99485e-07, -3.55271e-14, 3.55271e-14, 0, 1, 1.99485e-07, -1, 0, 0.170945, 0.0259903, 0.245789)
bones/33/enabled = true
bones/33/position = Vector3(0.202077, 0.0270646, 0.206499)
bones/33/rotation = Quaternion(-0.708087, -7.04115e-08, -7.06461e-08, 0.706125)
bones/33/position = Vector3(0.202077, 0.0260981, 0.20424)
bones/33/rotation = Quaternion(-0.705425, -7.06765e-08, -7.03851e-08, 0.708785)
bones/33/scale = Vector3(1, 1, 1)
bones/34/name = "control-heel-roll.l"
bones/34/parent = 33
@ -31936,15 +31936,15 @@ bones/39/name = "kneeIK.r"
bones/39/parent = 0
bones/39/rest = Transform3D(1, -2.59151e-07, 1.50996e-07, 1.50996e-07, 0, -1, 2.59151e-07, 1, 0, -0.170945, 0.29231, 0.575812)
bones/39/enabled = true
bones/39/position = Vector3(-0.170945, 0.29234, 0.575842)
bones/39/position = Vector3(-0.170945, 0.292574, 0.576076)
bones/39/rotation = Quaternion(0.707107, -3.82453e-08, 1.45016e-07, 0.707107)
bones/39/scale = Vector3(1, 1, 1)
bones/40/name = "control-toe-roll.r"
bones/40/parent = 0
bones/40/rest = Transform3D(1, 1.99485e-07, 0, 0, 0, 1, 1.99485e-07, -1, 0, -0.170945, 0.0259903, 0.245789)
bones/40/enabled = true
bones/40/position = Vector3(-0.170945, 0.0263623, 0.243382)
bones/40/rotation = Quaternion(-0.704773, -7.07744e-08, -7.02843e-08, 0.709433)
bones/40/position = Vector3(-0.170945, 0.0259013, 0.245703)
bones/40/rotation = Quaternion(-0.707008, -7.05389e-08, -7.05187e-08, 0.707206)
bones/40/scale = Vector3(1, 1, 1)
bones/41/name = "control-heel-roll.r"
bones/41/parent = 40
@ -31992,8 +31992,8 @@ bones/47/name = "handIK.l"
bones/47/parent = 0
bones/47/rest = Transform3D(-2.38419e-07, 1, 0, 0, 0, 1, 1, 2.38419e-07, 0, 0.713181, 1.10676, 2.54914e-07)
bones/47/enabled = true
bones/47/position = Vector3(0.520733, 0.768148, -0.0567701)
bones/47/rotation = Quaternion(0.795256, 0.00162756, 0.606272, 0.000384112)
bones/47/position = Vector3(0.520733, 0.781964, -0.0566607)
bones/47/rotation = Quaternion(0.79535, 0.00174166, 0.606148, 0.000416028)
bones/47/scale = Vector3(1, 1, 1)
bones/48/name = "elbowIK.r"
bones/48/parent = 0
@ -32006,12 +32006,12 @@ bones/49/name = "handIK.r"
bones/49/parent = 0
bones/49/rest = Transform3D(1.19209e-07, -1, -1.19209e-07, 0, -1.19209e-07, 1, -1, -1.19209e-07, 0, -0.713182, 1.10676, -8.51573e-08)
bones/49/enabled = true
bones/49/position = Vector3(-0.510854, 0.768148, 0.0598484)
bones/49/rotation = Quaternion(0.759123, -0.00140932, -0.650946, 0.00012078)
bones/49/position = Vector3(-0.510854, 0.781964, 0.0599578)
bones/49/rotation = Quaternion(0.759224, -0.00152137, -0.650828, 0.000159227)
bones/49/scale = Vector3(1, 1, 1)
[node name="1H_Sword_Offhand" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(-0.00182128, 0.263614, 0.964626, 0.999857, -0.015716, 0.00618367, 0.0167906, 0.9645, -0.263547, 0.512196, 0.615056, -0.0028324)
transform = Transform3D(-0.00272315, 0.263916, 0.964541, 0.999987, -0.00319168, 0.00369743, 0.00405475, 0.96454, -0.263904, 0.512751, 0.630897, -0.000571791)
visible = false
bone_name = "1H_Sword_Offhand"
bone_idx = 9
@ -32021,7 +32021,7 @@ mesh = SubResource("ArrayMesh_rvosg")
skeleton = NodePath("")
[node name="Badge_Shield" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(-0.00182126, 0.263613, 0.964626, 0.999857, -0.0157186, 0.00618434, 0.0167932, 0.9645, -0.263546, 0.662567, 0.61602, -0.0439154)
transform = Transform3D(-0.00272312, 0.263916, 0.964541, 0.999987, -0.00319421, 0.0036981, 0.00405737, 0.96454, -0.263904, 0.663108, 0.631473, -0.0417104)
visible = false
bone_name = "Badge_Shield"
bone_idx = 10
@ -32031,7 +32031,7 @@ mesh = SubResource("ArrayMesh_0xags")
skeleton = NodePath("")
[node name="Rectangle_Shield" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(-0.00182126, 0.263613, 0.964626, 0.999857, -0.0157186, 0.00618434, 0.0167932, 0.9645, -0.263546, 0.662567, 0.61602, -0.0439154)
transform = Transform3D(-0.00272312, 0.263916, 0.964541, 0.999987, -0.00319421, 0.0036981, 0.00405737, 0.96454, -0.263904, 0.663108, 0.631473, -0.0417104)
visible = false
bone_name = "Rectangle_Shield"
bone_idx = 11
@ -32041,7 +32041,7 @@ mesh = SubResource("ArrayMesh_qr44s")
skeleton = NodePath("")
[node name="Round_Shield" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(-0.00182126, 0.263613, 0.964626, 0.999857, -0.0157186, 0.00618434, 0.0167932, 0.9645, -0.263546, 0.662567, 0.61602, -0.0439154)
transform = Transform3D(-0.00272312, 0.263916, 0.964541, 0.999987, -0.00319421, 0.0036981, 0.00405737, 0.96454, -0.263904, 0.663108, 0.631473, -0.0417104)
bone_name = "Round_Shield"
bone_idx = 12
@ -32050,7 +32050,7 @@ mesh = SubResource("ArrayMesh_bb24p")
skeleton = NodePath("")
[node name="Spike_Shield" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(-0.00182126, 0.263613, 0.964626, 0.999857, -0.0157186, 0.00618434, 0.0167932, 0.9645, -0.263546, 0.662567, 0.61602, -0.0439154)
transform = Transform3D(-0.00272312, 0.263916, 0.964541, 0.999987, -0.00319421, 0.0036981, 0.00405737, 0.96454, -0.263904, 0.663108, 0.631473, -0.0417104)
bone_name = "Spike_Shield"
bone_idx = 13
@ -32059,7 +32059,7 @@ mesh = SubResource("ArrayMesh_jnwr3")
skeleton = NodePath("")
[node name="1H_Sword" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(-0.00114109, -0.164274, 0.986413, 0.999935, -0.011309, -0.000727692, 0.0112754, 0.986349, 0.164276, -0.496977, 0.619048, 0.138688)
transform = Transform3D(0.00085545, -0.155294, 0.987867, 0.999996, -0.00245593, -0.00125288, 0.00262118, 0.987864, 0.155291, -0.496188, 0.635042, 0.141202)
bone_name = "1H_Sword"
bone_idx = 19
@ -32078,7 +32078,7 @@ shape = SubResource("CapsuleShape3D_nge0l")
disabled = true
[node name="2H_Sword" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(-0.00114111, -0.164274, 0.986413, 0.999935, -0.011309, -0.000727678, 0.0112755, 0.986349, 0.164276, -0.496977, 0.619048, 0.138688)
transform = Transform3D(0.000855434, -0.155294, 0.987867, 0.999996, -0.00245595, -0.00125287, 0.00262119, 0.987864, 0.155291, -0.496188, 0.635042, 0.141202)
bone_name = "2H_Sword"
bone_idx = 20
@ -32087,7 +32087,7 @@ mesh = SubResource("ArrayMesh_ys2n7")
skeleton = NodePath("")
[node name="Knight_Helmet" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(0.999715, -9.50403e-05, 0.0238818, 0.000115347, 1, -0.000848912, -0.0238817, 0.000851424, 0.999714, 0.000125442, 1.18795, 0.00110022)
transform = Transform3D(0.99972, -1.14772e-05, 0.0236623, 3.27237e-05, 1, -0.000897519, -0.0236623, 0.000898042, 0.99972, 9.60435e-05, 1.18937, 0.00111621)
bone_name = "Knight_Helmet"
bone_idx = 22
@ -32106,7 +32106,7 @@ transform = Transform3D(-0.999711, 2.27778e-05, 0.024046, 5.34939e-07, 1, -0.000
shape = SubResource("CapsuleShape3D_i3cyd")
[node name="Knight_Cape" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(0.996204, 6.0286e-05, 0.0870478, 9.08447e-05, 0.999998, -0.00173222, -0.0870477, 0.00173355, 0.996203, 0.00012099, 1.18795, 0.00107768)
transform = Transform3D(0.99631, 8.17928e-05, 0.0858299, 7.00531e-05, 0.999998, -0.00176614, -0.0858299, 0.00176563, 0.996308, 9.31756e-05, 1.18937, 0.00109404)
visible = false
bone_name = "Knight_Cape"
bone_idx = 23
@ -32148,7 +32148,7 @@ libraries = {
tree_root = SubResource("AnimationNodeStateMachine_vnar2")
anim_player = NodePath("../AnimationPlayer")
parameters/current_length = 1.06667
parameters/current_position = 0.760561
parameters/current_position = 0.280315
parameters/current_delta = 0.0166667
parameters/conditions/blocking = false
parameters/conditions/grounded = false
@ -32188,14 +32188,14 @@ parameters/Hit_B/current_length = 0.866667
parameters/Hit_B/current_position = 0.866667
parameters/Hit_B/current_delta = 0.0202171
parameters/IWR/current_length = 1.06667
parameters/IWR/current_position = 0.760561
parameters/IWR/current_position = 0.280315
parameters/IWR/current_delta = 0.0166667
parameters/IWR/blend_position = Vector2(-0.000645578, 0.0027101)
parameters/IWR/0/current_length = 1.06667
parameters/IWR/0/current_position = 0.760561
parameters/IWR/0/current_position = 0.280315
parameters/IWR/0/current_delta = 0.0166667
parameters/IWR/1/current_length = 0.8
parameters/IWR/1/current_position = 0.761431
parameters/IWR/1/current_position = 0.547855
parameters/IWR/1/current_delta = 0.0166667
parameters/IWR/2/current_length = 1.06667
parameters/IWR/2/current_position = 0.475417
@ -32204,7 +32204,7 @@ parameters/IWR/3/current_length = 0.8
parameters/IWR/3/current_position = 0.446801
parameters/IWR/3/current_delta = 0.0166667
parameters/IWR/4/current_length = 0.8
parameters/IWR/4/current_position = 0.761431
parameters/IWR/4/current_position = 0.547855
parameters/IWR/4/current_delta = 0.0166667
parameters/Interact/current_length = 1.3
parameters/Interact/current_position = 1.3

@ -20,11 +20,20 @@ config/icon="res://resources/images/icon.svg"
buses/default_bus_layout="res://resources/bus_layout.tres"
[autoload]
GameManager="*res://scripts/game_manager.gd"
InteractionManager="*res://packed-scenes/interaction_manager.tscn"
[display]
window/size/viewport_width=1280
window/size/viewport_height=800
[global_group]
player=""
[gui]
theme/default_font_antialiasing=2
@ -82,6 +91,12 @@ Menue={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
interact={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":true,"script":null)
]
}
[layer_names]

Binary file not shown.

@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://0ciymc2gsrej"
path="res://.godot/imported/chest_open.mp3-527742db8328017b26f22aa35ab77efb.mp3str"
[deps]
source_file="res://resources/audio/chest_open.mp3"
dest_files=["res://.godot/imported/chest_open.mp3-527742db8328017b26f22aa35ab77efb.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://djf2sghx7jiqx"
path="res://.godot/imported/take_gold.mp3-6027e0e71842f377fe471d639cc3b647.mp3str"
[deps]
source_file="res://resources/audio/take_gold.mp3"
dest_files=["res://.godot/imported/take_gold.mp3-6027e0e71842f377fe471d639cc3b647.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

@ -0,0 +1,34 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://cselyshqqly1d"
path="res://.godot/imported/Kenney Future Narrow.ttf-bea8e736bf70a9a1e87e37b4b3ea3264.fontdata"
[deps]
source_file="res://resources/fonts/Kenney Future Narrow.ttf"
dest_files=["res://.godot/imported/Kenney Future Narrow.ttf-bea8e736bf70a9a1e87e37b4b3ea3264.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=1
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

@ -0,0 +1,19 @@
[gd_resource type="Theme" load_steps=3 format=3 uid="uid://b3faaa6kmpthu"]
[ext_resource type="FontFile" uid="uid://cselyshqqly1d" path="res://resources/fonts/Kenney Future Narrow.ttf" id="1_0we5y"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_7nnf0"]
[resource]
Label/colors/font_color = Color(1, 1, 1, 1)
Label/colors/font_outline_color = Color(0, 0, 0, 1)
Label/colors/font_shadow_color = Color(0, 0, 0, 0)
Label/constants/line_spacing = 3
Label/constants/outline_size = 0
Label/constants/shadow_offset_x = 1
Label/constants/shadow_offset_y = 1
Label/constants/shadow_outline_size = 1
Label/font_sizes/font_size = 16
Label/fonts/font = ExtResource("1_0we5y")
Label/styles/normal = SubResource("StyleBoxEmpty_7nnf0")
ProgressBar/fonts/font = ExtResource("1_0we5y")

@ -1,4 +1,4 @@
[gd_scene load_steps=15 format=3 uid="uid://b1i4juq2u7pwk"]
[gd_scene load_steps=16 format=3 uid="uid://b1i4juq2u7pwk"]
[ext_resource type="Environment" uid="uid://d31wkt76cft8k" path="res://resources/world_environment.tres" id="1_03qki"]
[ext_resource type="Script" path="res://scripts/game_manager.gd" id="1_kvi4c"]
@ -8,7 +8,8 @@
[ext_resource type="PackedScene" uid="uid://d1vowjv6aed2s" path="res://packed-scenes/ui.tscn" id="9_ah8u8"]
[ext_resource type="MeshLibrary" uid="uid://bs0yqy7xhugol" path="res://resources/level_mesh_library.tres" id="9_dr0le"]
[ext_resource type="Script" path="res://scripts/enemy_controller.gd" id="11_137ne"]
[ext_resource type="PackedScene" uid="uid://cxwpwnl17j7wd" path="res://packed-scenes/chest_with_gold.tscn" id="11_jv844"]
[ext_resource type="PackedScene" uid="uid://bkh0th4s2lkcq" path="res://packed-scenes/chest.tscn" id="12_ead6y"]
[ext_resource type="Script" path="res://scripts/audio_manager.gd" id="12_o8q33"]
[ext_resource type="PackedScene" uid="uid://boygkamfqg6l6" path="res://packed-scenes/skeleton_warrior.tscn" id="13_8a4e7"]
[ext_resource type="AudioStream" uid="uid://ct7s1kjvm5k1" path="res://resources/music/sad_guitar.mp3" id="13_r2hxi"]
[ext_resource type="AudioStream" uid="uid://cw7nrvkf3iyvx" path="res://resources/voice/game_over.ogg" id="14_765i1"]
@ -32,11 +33,10 @@ shadow_enabled = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 49.8991, 25.834, -30.0061)
size = Vector3(10000, 10000, 1000)
[node name="GameManager" type="Node3D" parent="." node_paths=PackedStringArray("player")]
[node name="GameManager" type="Node3D" parent="."]
script = ExtResource("1_kvi4c")
player = NodePath("../Player")
[node name="Player" parent="." node_paths=PackedStringArray("model") instance=ExtResource("14_bpicj")]
[node name="Player" parent="." node_paths=PackedStringArray("model") groups=["player"] instance=ExtResource("14_bpicj")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.8595, 1.08565, 11.6001)
maximum_health = 100
maximum_stamina = 100
@ -68,7 +68,7 @@ data = {
mesh_library = ExtResource("9_dr0le")
bake_navigation = true
data = {
"cells": PackedInt32Array(65532, 0, 0, 65530, 0, 0, 0, 0, 0, 2, 0, 8, 6, 0, 0, 65533, 5, 0, 65535, 5, 0, 1, 5, 0, 5, 5, 0, 65534, 0, 1, 4, 0, 2, 65531, 5, 3, 3, 5, 4, 65527, 7, 655360, 65528, 65534, 655360, 65524, 4, 1048576, 65524, 2, 1048576, 65526, 65534, 0, 65528, 65525, 655360, 65530, 65525, 655360, 65532, 65525, 655360, 65528, 65521, 655360, 65530, 65521, 655360, 65532, 65521, 655360, 65534, 65521, 655361, 65534, 65525, 655361, 0, 65521, 655360, 2, 65521, 655368, 4, 65521, 655360, 0, 65525, 655360, 2, 65525, 8, 4, 65525, 655360, 4, 65520, 1048576, 0, 65520, 1048576, 4, 65518, 1048576, 0, 65518, 1048576, 4, 65516, 5, 0, 65516, 1048581, 2, 65516, 6, 18, 65521, 5, 16, 65521, 0, 14, 65521, 0, 12, 65521, 0, 10, 65521, 0, 8, 65521, 0, 6, 65521, 0, 6, 65525, 0, 8, 65525, 0, 10, 65525, 0, 12, 65525, 0, 18, 65523, 1441792, 18, 65525, 1441792, 18, 65527, 1441792, 14, 65525, 5, 14, 65527, 1441792, 14, 65529, 1441795, 18, 65529, 1441792, 65524, 65534, 655360, 65524, 0, 5, 65520, 0, 655365, 65522, 0, 655360, 65522, 65534, 655365, 65520, 65534, 1048576, 65520, 65532, 1048576, 65522, 65532, 1048576, 65522, 65530, 1048578, 65520, 65530, 1048578, 65521, 65528, 9, 65522, 65525, 1048581, 65520, 65526, 1441792, 65524, 65524, 1048585, 65526, 65523, 1441797, 65526, 65521, 1048581, 65520, 65523, 1048581, 65522, 65523, 3, 65526, 65525, 6, 65525, 65526, 1441792, 65527, 65526, 1441792, 65525, 65528, 1441792, 65527, 65528, 1441792, 65527, 65530, 1441797, 65525, 65530, 655365, 11, 1, 1048576, 11, 3, 1441792, 11, 5, 1048576, 8, 0, 1441797, 8, 65534, 1048581, 65529, 5, 1048581, 65529, 7, 1441797, 65520, 65524, 1441803, 65522, 65526, 1441803, 14, 65531, 655365, 18, 65531, 1441797, 16, 65531, 655366, 15, 65532, 1048576, 17, 65532, 1048576, 15, 65534, 1441797, 12, 65534, 1048581, 13, 65534, 11, 17, 0, 1441797, 14, 0, 1048581, 15, 0, 11, 12, 0, 1441792, 12, 2, 1441792, 14, 2, 1441792, 14, 4, 1441792, 12, 4, 1441792, 14, 6, 1441792, 12, 6, 1441792, 14, 8, 1048576, 14, 10, 1441797, 8, 10, 655365, 8, 5, 5, 6, 5, 11, 8, 7, 1441792, 8, 8, 1441803, 11, 6, 1441803, 12, 8, 1441797, 11, 8, 655365, 10, 10, 655364, 12, 10, 655364, 65529, 65534, 5, 65529, 0, 655365, 11, 65534, 5, 9, 65534, 11, 11, 0, 1441803, 11, 65535, 1441803, 17, 65534, 1441800, 65524, 7, 655365, 65526, 7, 655371, 65524, 6, 1048587, 18, 65535, 0, 18, 65532, 0, 20, 65532, 0, 20, 65535, 0, 22, 65532, 0, 22, 65535, 0, 24, 65532, 5, 24, 65535, 1441797, 24, 65533, 1441803, 2, 65531, 9, 1, 65529, 1441798, 3, 65533, 1441798, 1, 65527, 1441792, 3, 65529, 1441792, 3, 65527, 1441792, 1, 65533, 1441792, 3, 65535, 1441792, 1, 65535, 1441792, 1, 65525, 1441803, 3, 65525, 1441803)
"cells": PackedInt32Array(65532, 0, 0, 65530, 0, 0, 0, 0, 0, 2, 0, 8, 6, 0, 0, 65533, 5, 0, 65535, 5, 0, 1, 5, 0, 5, 5, 0, 65534, 0, 1, 4, 0, 2, 65531, 5, 3, 3, 5, 4, 65527, 7, 655360, 65528, 65534, 655360, 65524, 4, 1048576, 65524, 2, 1048576, 65526, 65534, 0, 65528, 65525, 655360, 65530, 65525, 655360, 65532, 65525, 655360, 65528, 65521, 655360, 65530, 65521, 655360, 65532, 65521, 655360, 65534, 65521, 655361, 65534, 65525, 655361, 0, 65521, 655360, 2, 65521, 655368, 4, 65521, 655360, 0, 65525, 655360, 2, 65525, 8, 4, 65525, 655360, 4, 65520, 1048576, 0, 65520, 1048576, 4, 65518, 1048576, 0, 65518, 1048576, 4, 65516, 5, 0, 65516, 1048581, 2, 65516, 6, 18, 65521, 5, 16, 65521, 0, 14, 65521, 0, 12, 65521, 0, 10, 65521, 0, 8, 65521, 0, 6, 65521, 0, 6, 65525, 0, 8, 65525, 0, 10, 65525, 0, 12, 65525, 0, 18, 65523, 1441792, 18, 65525, 1441792, 18, 65527, 1441792, 14, 65525, 5, 14, 65527, 1441792, 14, 65529, 1441795, 18, 65529, 1441792, 65524, 65534, 655360, 65524, 0, 5, 65520, 0, 655365, 65522, 0, 655360, 65522, 65534, 655365, 65520, 65534, 1048576, 65520, 65532, 1048576, 65522, 65532, 1048576, 65522, 65530, 1048578, 65520, 65530, 1048578, 65521, 65528, 9, 65522, 65525, 1048581, 65520, 65526, 1441792, 65524, 65524, 1048585, 65526, 65523, 1441797, 65526, 65521, 1048581, 65520, 65523, 1048581, 65522, 65523, 3, 65525, 65526, 1441792, 65527, 65526, 1441792, 65525, 65528, 1441792, 65527, 65528, 1441792, 65527, 65530, 1441797, 65525, 65530, 655365, 11, 1, 1048576, 11, 3, 1441792, 11, 5, 1048576, 8, 0, 1441797, 8, 65534, 1048581, 65529, 5, 1048581, 65529, 7, 1441797, 65520, 65524, 1441803, 65522, 65526, 1441803, 14, 65531, 655365, 18, 65531, 1441797, 16, 65531, 655366, 15, 65532, 1048576, 17, 65532, 1048576, 15, 65534, 1441797, 12, 65534, 1048581, 13, 65534, 11, 17, 0, 1441797, 14, 0, 1048581, 15, 0, 11, 12, 0, 1441792, 12, 2, 1441792, 14, 2, 1441792, 14, 4, 1441792, 12, 4, 1441792, 14, 6, 1441792, 12, 6, 1441792, 14, 8, 1048576, 14, 10, 1441797, 8, 10, 655365, 8, 5, 5, 6, 5, 11, 8, 7, 1441792, 8, 8, 1441803, 11, 6, 1441803, 12, 8, 1441797, 11, 8, 655365, 10, 10, 655364, 12, 10, 655364, 65529, 65534, 5, 65529, 0, 655365, 11, 65534, 5, 9, 65534, 11, 11, 0, 1441803, 11, 65535, 1441803, 17, 65534, 1441800, 65524, 7, 655365, 65526, 7, 655371, 65524, 6, 1048587, 18, 65535, 0, 18, 65532, 0, 20, 65532, 0, 20, 65535, 0, 22, 65532, 0, 22, 65535, 0, 24, 65532, 5, 24, 65535, 1441797, 24, 65533, 1441803, 2, 65531, 9, 1, 65529, 1441798, 3, 65533, 1441798, 1, 65527, 1441792, 3, 65529, 1441792, 3, 65527, 1441792, 1, 65533, 1441792, 3, 65535, 1441792, 1, 65535, 1441792, 1, 65525, 1441803, 3, 65525, 1441803, 65526, 65525, 8)
}
[node name="Items" type="Node" parent="Level"]
@ -94,11 +94,14 @@ transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -6.616
[node name="torch_mounted7" parent="Level/Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -12.6168, 2.9024, 10.7441)
[node name="Chest" parent="Level/Items" instance=ExtResource("11_jv844")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -19.1302, 1.43253, -15.7101)
[node name="Chest" parent="Level/Items" instance=ExtResource("12_ead6y")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -19.0017, 1.36992, -13.4815)
[node name="Chest2" parent="Level/Items" instance=ExtResource("12_ead6y")]
transform = Transform3D(-0.361299, 0, -0.93245, 0, 1, 0, 0.93245, 0, -0.361299, 46.7428, 1.38847, -3.1036)
[node name="Chest2" parent="Level/Items" instance=ExtResource("11_jv844")]
transform = Transform3D(-0.409254, 0, 0.91242, 0, 1, 0, -0.91242, 0, -0.409254, 47.2703, 1.43253, -5.02911)
[node name="Chest3" parent="Level/Items" instance=ExtResource("12_ead6y")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.5198, 1.06351, 0.974984)
[node name="Enemies" type="Node" parent="." node_paths=PackedStringArray("player")]
script = ExtResource("11_137ne")
@ -115,11 +118,14 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.8284, 1.36247, 0.242004)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.9955, 1.36247, -12.0637)
[node name="Audio" type="Node" parent="."]
script = ExtResource("12_o8q33")
[node name="BackgroundMusic" type="AudioStreamPlayer" parent="Audio"]
stream = ExtResource("13_r2hxi")
autoplay = true
bus = &"Music"
[node name="Voice" type="AudioStreamPlayer" parent="Audio"]
stream = ExtResource("14_765i1")
[connection signal="game_over" from="Player" to="Audio" method="_on_player_game_over"]
[connection signal="player_loaded" from="Player" to="GameManager" method="_on_player_player_loaded"]

@ -0,0 +1,7 @@
extends Node
@onready var background_music: AudioStreamPlayer = $BackgroundMusic
@onready var voice: AudioStreamPlayer = $Voice
func _on_player_game_over() -> void:
voice.play()

@ -1,16 +1,37 @@
class_name Chest_with_Gold
class_name Chest
extends Item
@onready var chest_lid: RigidBody3D = $chest/chest_lid
@onready var chest_lid: StaticBody3D = $chest/chest_lid
@onready var interaction_area: InteractionArea = $InteractionArea
@onready var animation_player: AnimationPlayer = $AnimationPlayer
@export var gold_amount := 10
var is_empty := false
func _ready() -> void:
state_changed.connect(_on_state_changed)
interaction_area.interact = Callable(self, "_on_interact")
if gold_amount == 0: is_empty = true
func _on_body_entered(body: Node) -> void:
if body is Player:
state = States.opened
func _on_interact() -> void:
match state:
States.closed:
state = States.opened
States.opened:
if is_empty:
state = States.closed
else:
is_empty = true
GameManager.player.gold += gold_amount
state = States.looted
States.looted:
state = States.closed
func _on_state_changed(new_state: States) -> void:
match new_state:
States.opened:
chest_lid.rotate_x(-75)
animation_player.play("open")
States.closed:
animation_player.play("close")
States.looted:
animation_player.play("take_gold")

@ -1,16 +1,13 @@
extends Node3D
var timer: float
var timer_max := 1.0
@export var player: Player
@onready var voice: AudioStreamPlayer = $"../Audio/Voice"
@onready var player : Player = get_tree().get_first_node_in_group("player")
func _ready() -> void:
print("Hallo Felix")
player.game_over.connect(_on_game_over)
func _on_game_over() -> void:
print("Game Over!")
voice.play()
#TODO: Show Game Over screen with gold
func _on_player_player_loaded() -> void:
player.game_over.connect(_on_game_over)

@ -0,0 +1,13 @@
class_name InteractionArea
extends Area3D
@export var action_name := "interact"
var interact: Callable = func():
pass
func _on_body_entered(_body: Node3D) -> void:
InteractionManager.register_area(self)
func _on_body_exited(_body: Node3D) -> void:
InteractionManager.unregister_area(self)

@ -0,0 +1,43 @@
extends Node2D
@onready var player : Player = get_tree().get_first_node_in_group("player")
@onready var label: Label = $Label
const base_text = "[E] or [Y] to "
var active_areas := []
var can_interact := true
func register_area(area: InteractionArea) -> void:
active_areas.push_back(area)
func unregister_area(area: InteractionArea) -> void:
var index = active_areas.find(area)
if index != -1:
active_areas.remove_at(index)
func _process(_delta: float) -> void:
if active_areas.size() > 0 and can_interact:
active_areas.sort_custom(_sort_by_distance_to_player)
var active_area = active_areas[0] as InteractionArea
label.text = base_text + active_area.action_name
label.global_position = Vector2(active_area.global_position.x, active_area.global_position.y)
label.global_position.y -= 36
label.global_position.x -= label.size.x / 2
label.show()
else:
label.hide()
func _sort_by_distance_to_player(area1: Area3D, area2: Area3D) -> Area3D:
var area1_to_player = player.global_position.distance_to(area1.global_position)
var area2_to_player = player.global_position.distance_to(area2.global_position)
return area1_to_player < area2_to_player
func _input(event: InputEvent) -> void:
if event.is_action_pressed("interact") and can_interact:
if active_areas.size() > 0:
can_interact = false
label.hide()
await active_areas[0].interact.call()
can_interact = true

@ -10,10 +10,11 @@ enum States {
idle,
closed,
opened,
looted,
destroyed
}
var state = States.idle:
@export var state = States.idle:
get:
return state
set(value):

@ -25,11 +25,13 @@ var gold := 0:
signal gold_changed(current_gold)
signal game_over()
signal player_loaded()
func _ready() -> void:
health = maximum_health
stamina = maximum_stamina
state_changed.connect(_on_state_changed)
player_loaded.emit()
func _on_state_changed(new_state: States) -> void:
match new_state: