[gd_scene load_steps=35 format=3 uid="uid://bei4nhkf8lwdo"] [ext_resource type="Script" uid="uid://bbbrf5ckydfna" path="res://player_controller/Scripts/PlayerController.cs" id="1_poq2x"] [ext_resource type="Resource" uid="uid://bl5crtu1gkrtr" path="res://systems/inputs/base_mode/base_mode.tres" id="3_cresl"] [ext_resource type="Resource" uid="uid://cpdaw41ah5gic" path="res://systems/inputs/base_mode/rotate_y.tres" id="4_rxwoh"] [ext_resource type="Resource" uid="uid://ccrb5xsnphc8" path="res://systems/inputs/base_mode/rotate_floorplane.tres" id="5_4u7i3"] [ext_resource type="Script" uid="uid://dv7v1ywmbvvcd" path="res://player_controller/Scripts/HealthSystem.cs" id="5_umw0l"] [ext_resource type="Script" uid="uid://vuq8rjq3vegn" path="res://player_controller/Scripts/Stamina.cs" id="6_lxtc4"] [ext_resource type="Script" uid="uid://cwbvxlfvmocc1" path="res://player_controller/Scripts/StairsSystem.cs" id="7_bmt5a"] [ext_resource type="Resource" uid="uid://dgfww8118d8gj" path="res://systems/inputs/base_mode/aim.tres" id="7_cresl"] [ext_resource type="Resource" uid="uid://j1o5ud0plk4" path="res://systems/inputs/base_mode/aim_release.tres" id="8_lhb11"] [ext_resource type="Script" uid="uid://dd1yrt7eiiyf4" path="res://player_controller/Scripts/CapsuleCollider.cs" id="8_lmtjd"] [ext_resource type="PackedScene" uid="uid://wq1okogkhc5l" path="res://systems/mantle/mantle_system.tscn" id="8_qu4wy"] [ext_resource type="Resource" uid="uid://7wm8ywvujwf" path="res://systems/inputs/base_mode/aim_cancel.tres" id="9_5p2qc"] [ext_resource type="Script" uid="uid://bt0xv2q8iv1vn" path="res://player_controller/Scripts/Gravity.cs" id="9_lsueh"] [ext_resource type="Resource" uid="uid://bdit2jy5gbpts" path="res://systems/inputs/base_mode/jump.tres" id="10_4u7i3"] [ext_resource type="Script" uid="uid://g8idirw62qe0" path="res://player_controller/Scripts/Bobbing.cs" id="10_7wk1w"] [ext_resource type="Resource" uid="uid://b5gx3q8nvu72e" path="res://systems/inputs/base_mode/hit.tres" id="11_cresl"] [ext_resource type="PackedScene" uid="uid://0ysqmqphq6mq" path="res://systems/head/head_system.tscn" id="11_rxwoh"] [ext_resource type="Resource" uid="uid://d2r0ur8k3cuu3" path="res://systems/inputs/base_mode/drop.tres" id="12_34snm"] [ext_resource type="Script" uid="uid://b6k73aj5povgv" path="res://player_controller/Scripts/FieldOfView.cs" id="12_m2mxi"] [ext_resource type="Script" uid="uid://b5nk6ntlps3x0" path="res://systems/inputs/input_system.gd" id="16_v31n3"] [ext_resource type="Resource" uid="uid://htqvokm8mufq" path="res://systems/inputs/base_mode/move.tres" id="17_h6vvl"] [ext_resource type="PackedScene" uid="uid://cqduhd4opgwvm" path="res://systems/dash/dash_system.tscn" id="18_q5h8a"] [ext_resource type="Script" uid="uid://dyy5njw6pxoh4" path="res://systems/move/MoveSystem.cs" id="20_rxwoh"] [ext_resource type="PackedScene" uid="uid://dbe5f0p6lvqtr" path="res://systems/tween_queue/tween_queue_system.tscn" id="22_rpwev"] [ext_resource type="PackedScene" uid="uid://bcwkugn6v3oy7" path="res://addons/godot_state_charts/utilities/state_chart_debugger.tscn" id="24_q5h8a"] [ext_resource type="Script" uid="uid://couw105c3bde4" path="res://addons/godot_state_charts/state_chart.gd" id="25_wv70j"] [ext_resource type="Script" uid="uid://jk2jm1g6q853" path="res://addons/godot_state_charts/compound_state.gd" id="26_infe6"] [ext_resource type="Script" uid="uid://cytafq8i1y8qm" path="res://addons/godot_state_charts/atomic_state.gd" id="27_34snm"] [ext_resource type="Script" uid="uid://c1vp0ojjvaby1" path="res://addons/godot_state_charts/parallel_state.gd" id="27_infe6"] [ext_resource type="Script" uid="uid://tjiji63wlom5" path="res://systems/wall_hug/WallHugSystem.cs" id="27_n7qhm"] [ext_resource type="Script" uid="uid://cf1nsco3w0mf6" path="res://addons/godot_state_charts/transition.gd" id="28_n7qhm"] [ext_resource type="PackedScene" uid="uid://ckm3d6k08a72u" path="res://systems/weapon/weapon.tscn" id="29_wv70j"] [sub_resource type="CapsuleMesh" id="CapsuleMesh_xc2g5"] height = 1.7 [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_wydro"] height = 1.7 [node name="Player" type="CharacterBody3D"] script = ExtResource("1_poq2x") TimeScaleAimInAir = 0.15 MaxJumpBoostAfterDashing = 0.7 MaxNumberOfDashActions = 3 [node name="InputController" type="Node3D" parent="."] script = ExtResource("16_v31n3") base_mode = ExtResource("3_cresl") move = ExtResource("17_h6vvl") rotate_y = ExtResource("4_rxwoh") rotate_floorplane = ExtResource("5_4u7i3") aim_pressed = ExtResource("7_cresl") aim_released = ExtResource("8_lhb11") aim_canceled = ExtResource("9_5p2qc") jump = ExtResource("10_4u7i3") hit = ExtResource("11_cresl") drop = ExtResource("12_34snm") [node name="MeshInstance3D" type="MeshInstance3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.85, 0) visible = false mesh = SubResource("CapsuleMesh_xc2g5") [node name="CapsuleCollider" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.85, 0) shape = SubResource("CapsuleShape3D_wydro") script = ExtResource("8_lmtjd") CapsuleDefaultHeight = 1.7 [node name="HeadSystem" parent="." instance=ExtResource("11_rxwoh")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.6, 0) [node name="HealthSystem" type="Node3D" parent="."] script = ExtResource("5_umw0l") [node name="Stamina" type="Node3D" parent="."] script = ExtResource("6_lxtc4") [node name="StairsSystem" type="Node3D" parent="."] script = ExtResource("7_bmt5a") [node name="StairsAheadRayCast3D" type="RayCast3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -0.828) target_position = Vector3(0, -0.55, 0) [node name="StairsBelowRayCast3D" type="RayCast3D" parent="."] target_position = Vector3(0, -0.75, 0) [node name="MantleSystem" parent="." instance=ExtResource("8_qu4wy")] MantleEndLocationDistanceFromWall = 0.3 MantleHeightCastStart = 1.5 [node name="Bobbing" type="Node3D" parent="."] script = ExtResource("10_7wk1w") BobbingFrequency = 3.0 BobbingAmplitude = 0.05 [node name="FieldOfView" type="Node3D" parent="."] script = ExtResource("12_m2mxi") [node name="HeadCollisionDetectors" type="Node3D" parent="."] [node name="HeadCollisionDetector0" type="RayCast3D" parent="HeadCollisionDetectors"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.4, -0.210707) target_position = Vector3(0, 1, 0) [node name="HeadCollisionDetector1" type="RayCast3D" parent="HeadCollisionDetectors"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.4, 0.23061) target_position = Vector3(0, 1, 0) [node name="HeadCollisionDetector2" type="RayCast3D" parent="HeadCollisionDetectors"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.296, 1.4, 0) target_position = Vector3(0, 1, 0) [node name="HeadCollisionDetector3" type="RayCast3D" parent="HeadCollisionDetectors"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.296, 1.4, 0) target_position = Vector3(0, 1, 0) [node name="MoveSystem" type="Node3D" parent="."] script = ExtResource("20_rxwoh") WalkSpeed = 7.2 DecelerationSpeedFactorFloor = 7.0 ApexHoldTime = 0.1 [node name="Gravity" type="Node3D" parent="."] script = ExtResource("9_lsueh") Weight = 3.5 StartVelocity = 0.7 JumpFromDashSpeedFactor = 4.0 [node name="TweenQueueSystem" parent="." instance=ExtResource("22_rpwev")] [node name="WallHugSystem" type="Node3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) script = ExtResource("27_n7qhm") [node name="back" type="RayCast3D" parent="WallHugSystem"] target_position = Vector3(0, 0, 1) collision_mask = 2 [node name="front" type="RayCast3D" parent="WallHugSystem"] target_position = Vector3(0, 0, -1) collision_mask = 2 [node name="right" type="RayCast3D" parent="WallHugSystem"] target_position = Vector3(1, 0, 0) collision_mask = 2 [node name="left" type="RayCast3D" parent="WallHugSystem"] target_position = Vector3(-1, 0, 0) collision_mask = 2 [node name="DashSystem" parent="." instance=ExtResource("18_q5h8a")] DashSpeed = 0.1 PostDashSpeed = 30.0 [node name="WeaponRoot" type="Node3D" parent="."] [node name="WeaponSystem" parent="WeaponRoot" instance=ExtResource("29_wv70j")] transform = Transform3D(1, 0, 0, 0, 0.173648, -0.984808, 0, 0.984808, 0.173648, 0.45268, 1.44035, -0.692528) ThrowForce = 15.0 StraightThrowDuration = 0.05 [node name="CoyoteTime" type="Timer" parent="."] wait_time = 0.2 one_shot = true [node name="TimeScaleAimInAir" type="Timer" parent="."] wait_time = 2.0 one_shot = true ignore_time_scale = true [node name="TimeAfterDashing" type="Timer" parent="."] wait_time = 0.3 one_shot = true [node name="StateChartDebugger" parent="." instance=ExtResource("24_q5h8a")] offset_left = 1530.0 offset_top = 1.0 offset_right = -2.0 offset_bottom = 1.0 enabled = false initial_node_to_watch = NodePath("../StateChart") [node name="StateChart" type="Node" parent="."] script = ExtResource("25_wv70j") metadata/_custom_type_script = "uid://couw105c3bde4" [node name="Root" type="Node" parent="StateChart"] script = ExtResource("27_infe6") [node name="Actions" type="Node" parent="StateChart/Root"] script = ExtResource("26_infe6") initial_state = NodePath("WeaponInHand") metadata/_custom_type_script = "uid://c1vp0ojjvaby1" [node name="WeaponInHand" type="Node" parent="StateChart/Root/Actions"] script = ExtResource("27_34snm") [node name="ToAiming" type="Node" parent="StateChart/Root/Actions/WeaponInHand"] script = ExtResource("28_n7qhm") to = NodePath("../../Aiming") event = &"aim_pressed" delay_in_seconds = "0.0" [node name="Aiming" type="Node" parent="StateChart/Root/Actions"] script = ExtResource("27_34snm") [node name="ToWeaponInHand" type="Node" parent="StateChart/Root/Actions/Aiming"] script = ExtResource("28_n7qhm") to = NodePath("../../WeaponInHand") event = &"aim_canceled" delay_in_seconds = "0.0" [node name="ToDashing" type="Node" parent="StateChart/Root/Actions/Aiming"] script = ExtResource("28_n7qhm") to = NodePath("../../Dashing") event = &"aim_released" delay_in_seconds = "0.0" [node name="ToWeaponThrown" type="Node" parent="StateChart/Root/Actions/Aiming"] script = ExtResource("28_n7qhm") to = NodePath("../../WeaponThrown") event = &"hit_pressed" delay_in_seconds = "0.0" [node name="Dashing" type="Node" parent="StateChart/Root/Actions"] script = ExtResource("27_34snm") [node name="ToWeaponInHand" type="Node" parent="StateChart/Root/Actions/Dashing"] script = ExtResource("28_n7qhm") to = NodePath("../../WeaponInHand") event = &"dash_ended" delay_in_seconds = "0.0" [node name="ToHanging" type="Node" parent="StateChart/Root/Actions/Dashing"] script = ExtResource("28_n7qhm") to = NodePath("../../Hanging") event = &"dash_to_planted" delay_in_seconds = "0.0" [node name="WeaponThrown" type="Node" parent="StateChart/Root/Actions"] script = ExtResource("27_34snm") [node name="OnAim" type="Node" parent="StateChart/Root/Actions/WeaponThrown"] script = ExtResource("28_n7qhm") to = NodePath("../../Dashing") event = &"aim_pressed" delay_in_seconds = "0.0" [node name="Hanging" type="Node" parent="StateChart/Root/Actions"] script = ExtResource("27_34snm") [node name="OnJump" type="Node" parent="StateChart/Root/Actions/Hanging"] script = ExtResource("28_n7qhm") to = NodePath("../../WeaponInHand") event = &"jump" delay_in_seconds = "0.0" [node name="OnDrop" type="Node" parent="StateChart/Root/Actions/Hanging"] script = ExtResource("28_n7qhm") to = NodePath("../../WeaponInHand") event = &"drop" delay_in_seconds = "0.0" [node name="OnMantle" type="Node" parent="StateChart/Root/Actions/Hanging"] script = ExtResource("28_n7qhm") to = NodePath("../../WeaponInHand") event = &"mantle" delay_in_seconds = "0.0" [node name="Movement" type="Node" parent="StateChart/Root"] script = ExtResource("26_infe6") initial_state = NodePath("Grounded") [node name="OnMantle" type="Node" parent="StateChart/Root/Movement"] script = ExtResource("28_n7qhm") to = NodePath("../Mantling") event = &"mantle" delay_in_seconds = "0.0" [node name="OnHang" type="Node" parent="StateChart/Root/Movement"] script = ExtResource("28_n7qhm") to = NodePath("../Hanging") event = &"dash_to_planted" delay_in_seconds = "0.0" [node name="Grounded" type="Node" parent="StateChart/Root/Movement"] script = ExtResource("26_infe6") initial_state = NodePath("Standing") [node name="Standing" type="Node" parent="StateChart/Root/Movement/Grounded"] script = ExtResource("27_34snm") [node name="OnJump" type="Node" parent="StateChart/Root/Movement/Grounded/Standing"] script = ExtResource("28_n7qhm") to = NodePath("../../../Airborne/Jump") event = &"jump" delay_in_seconds = "0.0" [node name="OnAirborne" type="Node" parent="StateChart/Root/Movement/Grounded/Standing"] script = ExtResource("28_n7qhm") to = NodePath("../../../Airborne/CoyoteEnabled") event = &"start_falling" delay_in_seconds = "0.0" [node name="OnCrouch" type="Node" parent="StateChart/Root/Movement/Grounded/Standing"] script = ExtResource("28_n7qhm") to = NodePath("../../Crouch") event = &"crouch" delay_in_seconds = "0.0" [node name="Crouch" type="Node" parent="StateChart/Root/Movement/Grounded"] script = ExtResource("27_34snm") [node name="OnJump" type="Node" parent="StateChart/Root/Movement/Grounded/Crouch"] script = ExtResource("28_n7qhm") to = NodePath("../../../Airborne/Jump") event = &"jump" delay_in_seconds = "0.0" [node name="OnAirborne" type="Node" parent="StateChart/Root/Movement/Grounded/Crouch"] script = ExtResource("28_n7qhm") to = NodePath("../../../Airborne/CoyoteEnabled") event = &"start_falling" delay_in_seconds = "0.0" [node name="OnStandUp" type="Node" parent="StateChart/Root/Movement/Grounded/Crouch"] script = ExtResource("28_n7qhm") to = NodePath("../../Standing") event = &"stand_up" delay_in_seconds = "0.0" [node name="Mantling" type="Node" parent="StateChart/Root/Movement"] script = ExtResource("27_34snm") [node name="ToGrounded" type="Node" parent="StateChart/Root/Movement/Mantling"] script = ExtResource("28_n7qhm") to = NodePath("../../Grounded/Standing") event = &"to_grounded" delay_in_seconds = "0.0" [node name="Hanging" type="Node" parent="StateChart/Root/Movement"] script = ExtResource("27_34snm") [node name="OnJump" type="Node" parent="StateChart/Root/Movement/Hanging"] script = ExtResource("28_n7qhm") to = NodePath("../../Airborne/JumpFromWall") event = &"jump" delay_in_seconds = "0.0" [node name="OnDrop" type="Node" parent="StateChart/Root/Movement/Hanging"] script = ExtResource("28_n7qhm") to = NodePath("../../Airborne/CoyoteEnabled") event = &"crouch" delay_in_seconds = "0.0" [node name="Airborne" type="Node" parent="StateChart/Root/Movement"] script = ExtResource("26_infe6") initial_state = NodePath("CoyoteEnabled") [node name="OnGrounded" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource("28_n7qhm") to = NodePath("../../Grounded/Standing") event = &"grounded" delay_in_seconds = "0.0" [node name="OnWallHug" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource("28_n7qhm") to = NodePath("../WallHugging") event = &"wall_hug" delay_in_seconds = "0.0" [node name="WallHugging" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource("27_34snm") [node name="OnJump" type="Node" parent="StateChart/Root/Movement/Airborne/WallHugging"] script = ExtResource("28_n7qhm") to = NodePath("../../JumpFromWall") event = &"jump" delay_in_seconds = "0.0" [node name="OnLeaveWall" type="Node" parent="StateChart/Root/Movement/Airborne/WallHugging"] script = ExtResource("28_n7qhm") to = NodePath("../../Falling") event = &"start_falling" delay_in_seconds = "0.0" [node name="CoyoteEnabled" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource("27_34snm") [node name="OnJump" type="Node" parent="StateChart/Root/Movement/Airborne/CoyoteEnabled"] script = ExtResource("28_n7qhm") to = NodePath("../../Jump") event = &"jump" delay_in_seconds = "0.0" [node name="OnExpiration" type="Node" parent="StateChart/Root/Movement/Airborne/CoyoteEnabled"] script = ExtResource("28_n7qhm") to = NodePath("../../DoubleJumpEnabled") event = &"coyote_expired" delay_in_seconds = "0.0" [node name="Jump" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource("27_34snm") [node name="ToDoubleJump" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] script = ExtResource("28_n7qhm") to = NodePath("../../DoubleJumpEnabled") event = &"to_double_jump" delay_in_seconds = "0.0" [node name="ToFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] script = ExtResource("28_n7qhm") to = NodePath("../../Falling") event = &"jump_from_dash" delay_in_seconds = "0.0" [node name="JumpFromWall" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource("27_34snm") [node name="ToDoubleJump" type="Node" parent="StateChart/Root/Movement/Airborne/JumpFromWall"] script = ExtResource("28_n7qhm") to = NodePath("../../DoubleJumpEnabled") event = &"to_double_jump" delay_in_seconds = "0.0" [node name="ToFalling" type="Node" parent="StateChart/Root/Movement/Airborne/JumpFromWall"] script = ExtResource("28_n7qhm") to = NodePath("../../Falling") event = &"jump_from_dash" delay_in_seconds = "0.0" [node name="DoubleJumpEnabled" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource("27_34snm") [node name="OnJump" type="Node" parent="StateChart/Root/Movement/Airborne/DoubleJumpEnabled"] script = ExtResource("28_n7qhm") to = NodePath("../../DoubleJump") event = &"jump" delay_in_seconds = "0.0" [node name="DoubleJump" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource("27_34snm") [node name="ToFalling" type="Node" parent="StateChart/Root/Movement/Airborne/DoubleJump"] script = ExtResource("28_n7qhm") to = NodePath("../../Falling") event = &"to_falling" delay_in_seconds = "0.0" [node name="Falling" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource("27_34snm") [node name="ToDoubleJump" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] script = ExtResource("28_n7qhm") to = NodePath("../../DoubleJumpEnabled") event = &"enable_double_jump" delay_in_seconds = "0.0" [connection signal="input_aim_canceled" from="InputController" to="." method="OnInputAimCanceled"] [connection signal="input_aim_pressed" from="InputController" to="." method="OnInputAimPressed"] [connection signal="input_aim_released" from="InputController" to="." method="OnInputAimReleased"] [connection signal="input_drop" from="InputController" to="." method="OnInputDropPressed"] [connection signal="input_hit" from="InputController" to="." method="OnInputHitPressed"] [connection signal="input_jump" from="InputController" to="." method="OnInputJumpPressed"] [connection signal="input_move" from="InputController" to="." method="OnInputMove"] [connection signal="input_rotate_floorplane" from="InputController" to="." method="OnInputRotateFloorplane"] [connection signal="input_rotate_y" from="InputController" to="." method="OnInputRotateY"]