[gd_scene load_steps=36 format=3 uid="uid://bwe2jdmvinhqd"] [ext_resource type="Script" uid="uid://buwh0g1ga2aka" path="res://src/player/player.gd" id="1_npueo"] [ext_resource type="Script" uid="uid://cx1yt0drthpw3" path="res://src/player/camera_controller.gd" id="2_veeqv"] [ext_resource type="PackedScene" uid="uid://cc102xko0u6yj" path="res://src/equipment/point_spray/point_spray.tscn" id="3_6wgkm"] [ext_resource type="PackedScene" uid="uid://d2hnxr5l6w2x4" path="res://src/equipment/wide_spray/wide_spray.tscn" id="3_ibq07"] [ext_resource type="Script" uid="uid://cwy3akimaeib" path="res://src/player/tool_mount.gd" id="3_jiejy"] [ext_resource type="PackedScene" uid="uid://dq1x21tq06dud" path="res://src/ui/hud/player_hud.tscn" id="5_jvafu"] [ext_resource type="PackedScene" uid="uid://qknkdy6aics1" path="res://src/equipment/toothbrush/toothbrush.tscn" id="6_o822w"] [ext_resource type="Script" uid="uid://b1vyq7e81nyt0" path="res://src/player/headbob_controller.gd" id="7_x42xx"] [ext_resource type="Script" uid="uid://ecrhsueph7at" path="res://src/player/footsteps/footstep_controller.gd" id="9_hja65"] [ext_resource type="Script" uid="uid://brqa2wbtaspw4" path="res://src/player/footsteps/foot_controller.gd" id="9_l271a"] [ext_resource type="AudioStream" uid="uid://di0e1l1l6l3qc" path="res://assets/sfx/footsteps/metal/metal1.wav" id="10_jcdrv"] [ext_resource type="AudioStream" uid="uid://bv00dudic2mvp" path="res://assets/sfx/footsteps/metal/metal3.wav" id="11_hja65"] [ext_resource type="AudioStream" uid="uid://befqnsqlbpca7" path="res://assets/sfx/footsteps/metal/metal5.wav" id="12_5shm8"] [ext_resource type="AudioStream" uid="uid://c6wnc7kqtvujm" path="res://assets/sfx/footsteps/metal/metal7.wav" id="13_5efpn"] [ext_resource type="AudioStream" uid="uid://bpdnw4qgbp6kj" path="res://assets/sfx/footsteps/metal/metal9.wav" id="14_4uy46"] [ext_resource type="AudioStream" uid="uid://eagr344y4coh" path="res://assets/sfx/footsteps/metal/metal11.wav" id="15_k60ra"] [ext_resource type="AudioStream" uid="uid://bguwbr0nlhgkl" path="res://assets/sfx/footsteps/metal/metal2.wav" id="16_a4vah"] [ext_resource type="AudioStream" uid="uid://co83ygaa4d65u" path="res://assets/sfx/footsteps/metal/metal4.wav" id="17_vwi60"] [ext_resource type="AudioStream" uid="uid://dkx88wqwfvfst" path="res://assets/sfx/footsteps/metal/metal6.wav" id="18_o04tx"] [ext_resource type="AudioStream" uid="uid://bo3klycfvvq2q" path="res://assets/sfx/footsteps/metal/metal8.wav" id="19_j2873"] [ext_resource type="AudioStream" uid="uid://btiyoi1ipofd" path="res://assets/sfx/footsteps/metal/metal10.wav" id="20_dpt0q"] [sub_resource type="Animation" id="Animation_x42xx"] length = 0.001 tracks/0/type = "bezier" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath(".:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "handle_modes": PackedInt32Array(0), "points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), "times": PackedFloat32Array(0) } tracks/1/type = "bezier" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath(".:position:y") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "handle_modes": PackedInt32Array(0), "points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), "times": PackedFloat32Array(0) } tracks/2/type = "bezier" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath(".:position:z") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "handle_modes": PackedInt32Array(0), "points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), "times": PackedFloat32Array(0) } [sub_resource type="Animation" id="Animation_hja65"] resource_name = "footstep_sfx" loop_mode = 1 step = 0.01 tracks/0/type = "method" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("%FootstepController") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0.35, 0.85), "transitions": PackedFloat32Array(1, 1), "values": [{ "args": [], "method": &"play_footstep" }, { "args": [], "method": &"play_footstep" }] } [sub_resource type="Animation" id="Animation_o822w"] resource_name = "head_bob" loop_mode = 1 step = 0.005 tracks/0/type = "bezier" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath(".:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "handle_modes": PackedInt32Array(0, 0, 0, 0), "points": PackedFloat32Array(0, -0.25, 0, 0.125, 0.05, 0.05, -0.125, 0, 0.25, 0, -0.05, -0.25, 0, 0.125, 0, 0, -0.125, -0.05, 0.25, 0), "times": PackedFloat32Array(0, 0.25, 0.75, 1) } tracks/1/type = "bezier" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath(".:position:y") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "handle_modes": PackedInt32Array(0, 0, 0, 0, 0, 0), "points": PackedFloat32Array(0, -0.25, 0, 0.031, 0.04, 0.081, -0.062, 0, 0.125, 0, -0.081, -0.125, 0, 0.125, 0, 0.081, -0.125, 0, 0.125, 0, -0.081, -0.125, 0, 0.063, 0, 0.00176717, -0.031, -0.04, 0.125, 0), "times": PackedFloat32Array(0, 0.13, 0.375, 0.625, 0.875, 1) } tracks/2/type = "bezier" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath(".:position:z") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "handle_modes": PackedInt32Array(0), "points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), "times": PackedFloat32Array(0) } [sub_resource type="AnimationLibrary" id="AnimationLibrary_l271a"] _data = { &"RESET": SubResource("Animation_x42xx"), &"footstep_sfx": SubResource("Animation_hja65"), &"head_bob": SubResource("Animation_o822w") } [sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_o822w"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_x42xx"] animation = &"head_bob" [sub_resource type="AnimationNodeAdd2" id="AnimationNodeAdd2_hja65"] sync = true [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_5shm8"] animation = &"footstep_sfx" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_l271a"] animation = &"RESET" [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_8ydov"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_ylhto"] graph_offset = Vector2(-33.7273, -38.6364) nodes/blend/node = SubResource("AnimationNodeBlend2_o822w") nodes/blend/position = Vector2(779, 166) nodes/bob_anim/node = SubResource("AnimationNodeAnimation_x42xx") nodes/bob_anim/position = Vector2(540, 260) nodes/output/position = Vector2(1460, 140) nodes/sfx_add/node = SubResource("AnimationNodeAdd2_hja65") nodes/sfx_add/position = Vector2(1020, 160) nodes/sfx_anim/node = SubResource("AnimationNodeAnimation_5shm8") nodes/sfx_anim/position = Vector2(540, 520) nodes/still_anim/node = SubResource("AnimationNodeAnimation_l271a") nodes/still_anim/position = Vector2(540, 40) nodes/timescale/node = SubResource("AnimationNodeTimeScale_8ydov") nodes/timescale/position = Vector2(1240, 120) node_connections = [&"blend", 0, &"still_anim", &"blend", 1, &"bob_anim", &"output", 0, &"timescale", &"sfx_add", 0, &"blend", &"sfx_add", 1, &"sfx_anim", &"timescale", 0, &"sfx_add"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_s7f0r"] radius = 0.4 height = 1.9 [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_8ydov"] random_pitch = 1.1 streams_count = 6 stream_0/stream = ExtResource("10_jcdrv") stream_1/stream = ExtResource("11_hja65") stream_2/stream = ExtResource("12_5shm8") stream_3/stream = ExtResource("13_5efpn") stream_4/stream = ExtResource("14_4uy46") stream_5/stream = ExtResource("15_k60ra") [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ylhto"] random_pitch = 1.1 streams_count = 5 stream_0/stream = ExtResource("16_a4vah") stream_1/stream = ExtResource("17_vwi60") stream_2/stream = ExtResource("18_o04tx") stream_3/stream = ExtResource("19_j2873") stream_4/stream = ExtResource("20_dpt0q") [node name="Player" type="CharacterBody3D"] script = ExtResource("1_npueo") [node name="CameraPivot" type="Node3D" parent="."] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) script = ExtResource("2_veeqv") [node name="ToolMount" type="Node3D" parent="CameraPivot" node_paths=PackedStringArray("initial_tool")] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, -0.1, -0.1) script = ExtResource("3_jiejy") initial_tool = NodePath("PointSpray") [node name="PointSpray" parent="CameraPivot/ToolMount" instance=ExtResource("3_6wgkm")] unique_name_in_owner = true [node name="WideSpray" parent="CameraPivot/ToolMount" instance=ExtResource("3_ibq07")] unique_name_in_owner = true visible = false [node name="Toothbrush" parent="CameraPivot/ToolMount" instance=ExtResource("6_o822w")] unique_name_in_owner = true visible = false [node name="CameraPosition" type="Node3D" parent="CameraPivot"] [node name="Camera3D" type="Camera3D" parent="CameraPivot/CameraPosition"] current = true [node name="InteractRay" type="RayCast3D" parent="CameraPivot/CameraPosition/Camera3D"] unique_name_in_owner = true target_position = Vector3(0, 0, -1.5) collision_mask = 2 [node name="FarLight" type="OmniLight3D" parent="CameraPivot/CameraPosition/Camera3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.1) light_energy = 0.05 light_specular = 0.01 light_cull_mask = 4294967293 omni_range = 50.0 omni_attenuation = 0.0 [node name="NearLight" type="OmniLight3D" parent="CameraPivot/CameraPosition/Camera3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.1) light_specular = 0.01 light_cull_mask = 4294967293 omni_range = 2.0 [node name="HeadbobAnimation" type="AnimationPlayer" parent="CameraPivot/CameraPosition/Camera3D"] libraries = { &"": SubResource("AnimationLibrary_l271a") } [node name="HeadbobController" type="AnimationTree" parent="CameraPivot/CameraPosition/Camera3D/HeadbobAnimation"] unique_name_in_owner = true root_node = NodePath("%HeadbobController/../..") tree_root = SubResource("AnimationNodeBlendTree_ylhto") anim_player = NodePath("..") parameters/blend/blend_amount = 0.0 parameters/sfx_add/add_amount = 1.0 parameters/timescale/scale = false script = ExtResource("7_x42xx") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.05, 0) shape = SubResource("CapsuleShape3D_s7f0r") [node name="PlayerHUD" parent="." instance=ExtResource("5_jvafu")] unique_name_in_owner = true [node name="FootstepController" type="Node3D" parent="."] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) script = ExtResource("9_hja65") [node name="LeftFoot" type="Node3D" parent="FootstepController"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.4, 0, 0) script = ExtResource("9_l271a") [node name="Metal" type="AudioStreamPlayer3D" parent="FootstepController/LeftFoot"] stream = SubResource("AudioStreamRandomizer_8ydov") volume_db = -42.0 bus = &"SFX" [node name="RightFoot" type="Node3D" parent="FootstepController"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.4, 0, 0) script = ExtResource("9_l271a") [node name="Metal" type="AudioStreamPlayer3D" parent="FootstepController/RightFoot"] stream = SubResource("AudioStreamRandomizer_ylhto") volume_db = -42.0 bus = &"SFX" [node name="FootCast" type="RayCast3D" parent="FootstepController"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0518835, 0)