[gd_scene load_steps=34 format=3 uid="uid://dfx8h6eplcm6t"] [ext_resource type="Script" path="res://objects/player/player.gd" id="1_0jtcw"] [ext_resource type="Texture2D" uid="uid://cm07m02mxkaah" path="res://textures/player/arm_back.png" id="2_ux0fy"] [ext_resource type="Script" path="res://addons/godot_state_charts/state_chart.gd" id="2_wtq62"] [ext_resource type="Texture2D" uid="uid://c5mdfp0haxjhw" path="res://textures/player/arm_back_hand.png" id="3_7fclw"] [ext_resource type="Script" path="res://addons/godot_state_charts/parallel_state.gd" id="3_h5pyx"] [ext_resource type="Texture2D" uid="uid://qfsmi63hvbwj" path="res://textures/player/arm_front.png" id="3_jvia3"] [ext_resource type="Texture2D" uid="uid://b8mjub1y54bsp" path="res://textures/player/arm_front_hand.png" id="4_kyw60"] [ext_resource type="Script" path="res://addons/godot_state_charts/compound_state.gd" id="4_le3t4"] [ext_resource type="Script" path="res://addons/godot_state_charts/atomic_state.gd" id="5_8e8ei"] [ext_resource type="Script" path="res://addons/godot_state_charts/transition.gd" id="6_d3xxl"] [ext_resource type="Script" path="res://addons/godot_state_charts/expression_guard.gd" id="7_yp0np"] [ext_resource type="Texture2D" uid="uid://x3q6bebo0qwg" path="res://textures/player/leg_back.png" id="8_kdi1l"] [ext_resource type="Script" path="res://addons/godot_state_charts/not_guard.gd" id="8_qwrs2"] [ext_resource type="Script" path="res://addons/godot_state_charts/guard.gd" id="9_0g7ju"] [ext_resource type="Texture2D" uid="uid://dd6x23rk0jkhv" path="res://textures/player/foot_back.png" id="9_2a4p0"] [ext_resource type="Script" path="res://scripts/debug_visualization/draw_basis.gd" id="9_x2hvg"] [ext_resource type="Texture2D" uid="uid://damqh4mqwpv4b" path="res://textures/player/torso.png" id="10_2vegm"] [ext_resource type="Script" path="res://addons/godot_state_charts/all_of_guard.gd" id="10_lprgf"] [ext_resource type="Texture2D" uid="uid://cp7sodu1rhdje" path="res://textures/player/leg_front.png" id="11_6xvc8"] [ext_resource type="Texture2D" uid="uid://c4odsqtqmj8g" path="res://textures/player/head.png" id="11_nngs1"] [ext_resource type="Texture2D" uid="uid://d1qyuom3pxifj" path="res://textures/player/foot_front.png" id="12_dda5a"] [ext_resource type="Texture2D" uid="uid://cssnogcrn57xv" path="res://textures/player/skirt.png" id="13_qgkik"] [sub_resource type="Animation" id="Animation_7ampj"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Graphics/Hip:position") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(0, -14)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Graphics/Hip:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Graphics/Hip/BackLeg:rotation") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("Graphics/Hip/BackLeg/BackFoot:rotation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("Graphics/Hip/BackArmPivot/BackArm:rotation") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [-1.57079] } tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true tracks/5/path = NodePath("Graphics/Hip/BackArmPivot/BackArm/BackHand:rotation") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/6/type = "value" tracks/6/imported = false tracks/6/enabled = true tracks/6/path = NodePath("Graphics/Hip/Torso:rotation") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/7/type = "value" tracks/7/imported = false tracks/7/enabled = true tracks/7/path = NodePath("Graphics/Hip/Torso/Head:rotation") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/8/type = "value" tracks/8/imported = false tracks/8/enabled = true tracks/8/path = NodePath("Graphics/Hip/FrontArmPivot/FrontArm:rotation") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [-1.5708] } tracks/9/type = "value" tracks/9/imported = false tracks/9/enabled = true tracks/9/path = NodePath("Graphics/Hip/FrontArmPivot/FrontArm/FrontHand:rotation") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/10/type = "value" tracks/10/imported = false tracks/10/enabled = true tracks/10/path = NodePath("Graphics/Hip/FrontLeg:rotation") tracks/10/interp = 1 tracks/10/loop_wrap = true tracks/10/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/11/type = "value" tracks/11/imported = false tracks/11/enabled = true tracks/11/path = NodePath("Graphics/Hip/FrontLeg/FrontFoot:rotation") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/12/type = "value" tracks/12/imported = false tracks/12/enabled = true tracks/12/path = NodePath("Graphics/Hip/Skirt:rotation") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/13/type = "value" tracks/13/imported = false tracks/13/enabled = true tracks/13/path = NodePath("Graphics/Hip/FrontLeg:position") tracks/13/interp = 1 tracks/13/loop_wrap = true tracks/13/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(-2, 6)] } tracks/14/type = "value" tracks/14/imported = false tracks/14/enabled = true tracks/14/path = NodePath("Graphics/Hip/BackLeg:position") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(1, 6)] } [sub_resource type="Animation" id="Animation_6roai"] resource_name = "stand" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Graphics/Hip:position") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(0, -14)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Graphics/Hip:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Graphics/Hip/BackLeg:rotation") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("Graphics/Hip/BackLeg/BackFoot:rotation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("Graphics/Hip/BackArmPivot/BackArm:rotation") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [-1.57079] } tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true tracks/5/path = NodePath("Graphics/Hip/BackArmPivot/BackArm/BackHand:rotation") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/6/type = "value" tracks/6/imported = false tracks/6/enabled = true tracks/6/path = NodePath("Graphics/Hip/Torso:rotation") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/7/type = "value" tracks/7/imported = false tracks/7/enabled = true tracks/7/path = NodePath("Graphics/Hip/Torso/Head:rotation") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/8/type = "value" tracks/8/imported = false tracks/8/enabled = true tracks/8/path = NodePath("Graphics/Hip/FrontArmPivot/FrontArm:rotation") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [-1.5708] } tracks/9/type = "value" tracks/9/imported = false tracks/9/enabled = true tracks/9/path = NodePath("Graphics/Hip/FrontArmPivot/FrontArm/FrontHand:rotation") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/10/type = "value" tracks/10/imported = false tracks/10/enabled = true tracks/10/path = NodePath("Graphics/Hip/FrontLeg:rotation") tracks/10/interp = 1 tracks/10/loop_wrap = true tracks/10/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/11/type = "value" tracks/11/imported = false tracks/11/enabled = true tracks/11/path = NodePath("Graphics/Hip/FrontLeg/FrontFoot:rotation") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/12/type = "value" tracks/12/imported = false tracks/12/enabled = true tracks/12/path = NodePath("Graphics/Hip/Skirt:rotation") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/13/type = "value" tracks/13/imported = false tracks/13/enabled = true tracks/13/path = NodePath("Graphics/Hip/FrontLeg:position") tracks/13/interp = 1 tracks/13/loop_wrap = true tracks/13/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(-2, 6)] } tracks/14/type = "value" tracks/14/imported = false tracks/14/enabled = true tracks/14/path = NodePath("Graphics/Hip/BackLeg:position") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(1, 6)] } [sub_resource type="Animation" id="Animation_eoejb"] resource_name = "walk" length = 0.960004 loop_mode = 1 step = 0.04 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Graphics/Hip:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.12, 0.24, 0.36, 0.48, 0.6, 0.72, 0.84), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [Vector2(0, -13), Vector2(0, -12), Vector2(0, -14), Vector2(0, -15), Vector2(0, -13), Vector2(0, -12), Vector2(0, -14), Vector2(0, -15)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Graphics/Hip:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Graphics/Hip/BackLeg:rotation") tracks/2/interp = 2 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0, 0.12, 0.24, 0.36, 0.48, 0.6, 0.72, 0.84), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [0.595709, 0.637986, -0.261799, -0.648994, -0.629291, -0.971209, 0.0, 0.430862] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("Graphics/Hip/BackLeg/BackFoot:rotation") tracks/3/interp = 2 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0, 0.12, 0.24, 0.36, 0.48, 0.6, 0.72), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [0.364786, 0.570075, 1.309, 0.98228, 0.0486702, 0.958074, 0.0] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("Graphics/Hip/BackArmPivot/BackArm:rotation") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [-1.57079] } tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true tracks/5/path = NodePath("Graphics/Hip/BackArmPivot/BackArm/BackHand:rotation") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/6/type = "value" tracks/6/imported = false tracks/6/enabled = true tracks/6/path = NodePath("Graphics/Hip/Torso:rotation") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/7/type = "value" tracks/7/imported = false tracks/7/enabled = true tracks/7/path = NodePath("Graphics/Hip/Torso/Head:rotation") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/8/type = "value" tracks/8/imported = false tracks/8/enabled = true tracks/8/path = NodePath("Graphics/Hip/FrontArmPivot/FrontArm:rotation") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [-1.5708] } tracks/9/type = "value" tracks/9/imported = false tracks/9/enabled = true tracks/9/path = NodePath("Graphics/Hip/FrontArmPivot/FrontArm/FrontHand:rotation") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/10/type = "value" tracks/10/imported = false tracks/10/enabled = true tracks/10/path = NodePath("Graphics/Hip/FrontLeg:rotation") tracks/10/interp = 2 tracks/10/loop_wrap = true tracks/10/keys = { "times": PackedFloat32Array(0, 0.12, 0.24, 0.36, 0.48, 0.6, 0.72, 0.84), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [-0.633345, -1.02087, 0.0, 0.376222, 0.593412, 0.681726, -0.399987, -0.691819] } tracks/11/type = "value" tracks/11/imported = false tracks/11/enabled = true tracks/11/path = NodePath("Graphics/Hip/FrontLeg/FrontFoot:rotation") tracks/11/interp = 2 tracks/11/loop_wrap = true tracks/11/keys = { "times": PackedFloat32Array(0, 0.12, 0.24, 0.48, 0.6, 0.72, 0.84), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [0.023663, 1.03073, 0.0, 0.349066, 0.618152, 1.4997, 0.971881] } tracks/12/type = "value" tracks/12/imported = false tracks/12/enabled = true tracks/12/path = NodePath("Graphics/Hip/Skirt:rotation") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/13/type = "value" tracks/13/imported = false tracks/13/enabled = true tracks/13/path = NodePath("Graphics/Hip/FrontLeg:position") tracks/13/interp = 2 tracks/13/loop_wrap = true tracks/13/keys = { "times": PackedFloat32Array(0, 0.12, 0.24, 0.36, 0.48, 0.6, 0.72), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [Vector2(-1, 6), Vector2(-1, 6), Vector2(-1, 6), Vector2(-1, 7), Vector2(-1, 6), Vector2(0, 6), Vector2(-1, 6)] } tracks/14/type = "value" tracks/14/imported = false tracks/14/enabled = true tracks/14/path = NodePath("Graphics/Hip/BackLeg:position") tracks/14/interp = 2 tracks/14/loop_wrap = true tracks/14/keys = { "times": PackedFloat32Array(0, 0.12, 0.36, 0.48, 0.84), "transitions": PackedFloat32Array(1, 1, 1, 1, 1), "update": 0, "values": [Vector2(-2.38419e-07, 6), Vector2(-2.38419e-07, 6), Vector2(-2.38419e-07, 6), Vector2(2.38419e-07, 6), Vector2(-1, 7)] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_claqb"] _data = { "RESET": SubResource("Animation_7ampj"), "stand": SubResource("Animation_6roai"), "walk": SubResource("Animation_eoejb") } [sub_resource type="RectangleShape2D" id="RectangleShape2D_wydm2"] size = Vector2(7, 32) [sub_resource type="Resource" id="Resource_hwvj2"] resource_name = "HoldingDirection" script = ExtResource("7_yp0np") expression = "player.input_dir != 0.0" [sub_resource type="Resource" id="Resource_h756l"] resource_name = "NotHoldingDirection" script = ExtResource("8_qwrs2") guard = SubResource("Resource_hwvj2") [sub_resource type="Resource" id="Resource_42obj"] resource_name = "HoldingSameDirection" script = ExtResource("7_yp0np") expression = "player.input_dir == signf(player.velocity.x)" [sub_resource type="Resource" id="Resource_hbuhf"] resource_name = "NotHoldingSame" script = ExtResource("8_qwrs2") guard = SubResource("Resource_42obj") [sub_resource type="Resource" id="Resource_7h7ld"] script = ExtResource("10_lprgf") guards = Array[ExtResource("9_0g7ju")]([SubResource("Resource_hwvj2"), SubResource("Resource_hbuhf")]) [sub_resource type="Resource" id="Resource_5aa0s"] resource_name = "HoldingTowardsVelocity" script = ExtResource("10_lprgf") guards = Array[ExtResource("9_0g7ju")]([SubResource("Resource_hwvj2"), SubResource("Resource_42obj")]) [node name="Player" type="CharacterBody2D"] process_physics_priority = -100 editor_description = "Has lower physics processing priority so that state events happen first." collision_layer = 2 floor_snap_length = 4.0 script = ExtResource("1_0jtcw") walk_speed = 50.0 acceleration = 100.0 stopping_force = 100.0 turning_force = 200.0 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] unique_name_in_owner = true libraries = { "": SubResource("AnimationLibrary_claqb") } playback_default_blend_time = 0.25 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(-0.5, -16) shape = SubResource("RectangleShape2D_wydm2") debug_color = Color(0.720957, 0.248475, 1, 0.42) [node name="PickupDetector" type="Area2D" parent="."] unique_name_in_owner = true collision_layer = 0 collision_mask = 128 monitorable = false [node name="Camera2D" type="Camera2D" parent="."] [node name="Graphics" type="Node2D" parent="."] unique_name_in_owner = true [node name="Hip" type="Node2D" parent="Graphics"] position = Vector2(0, -14) [node name="BackLeg" type="Sprite2D" parent="Graphics/Hip"] position = Vector2(1, 6) texture = ExtResource("8_kdi1l") offset = Vector2(0, 2) [node name="BackFoot" type="Sprite2D" parent="Graphics/Hip/BackLeg"] position = Vector2(0, 4) texture = ExtResource("9_2a4p0") offset = Vector2(0, 1) [node name="BackArmPivot" type="Node2D" parent="Graphics/Hip"] unique_name_in_owner = true position = Vector2(1, -9) rotation = 1.57079 [node name="DirectionVisualizer" type="Node2D" parent="Graphics/Hip/BackArmPivot"] z_index = 1 script = ExtResource("9_x2hvg") x_length = 12.0 y_length = 2.0 metadata/_edit_lock_ = true [node name="BackArm" type="Sprite2D" parent="Graphics/Hip/BackArmPivot"] rotation = -1.57079 texture = ExtResource("2_ux0fy") offset = Vector2(0, 2) [node name="BackHand" type="Sprite2D" parent="Graphics/Hip/BackArmPivot/BackArm"] position = Vector2(0, 5) texture = ExtResource("3_7fclw") offset = Vector2(0, 2) [node name="Torso" type="Sprite2D" parent="Graphics/Hip"] texture = ExtResource("10_2vegm") offset = Vector2(-1, -4) [node name="Head" type="Sprite2D" parent="Graphics/Hip/Torso"] position = Vector2(0, -10) texture = ExtResource("11_nngs1") offset = Vector2(-1, -4) [node name="FrontArmPivot" type="Node2D" parent="Graphics/Hip"] unique_name_in_owner = true z_index = 1 position = Vector2(-3, -9) rotation = 1.57079 [node name="DirectionVisualizer" type="Node2D" parent="Graphics/Hip/FrontArmPivot"] z_index = 1 script = ExtResource("9_x2hvg") x_length = 12.0 y_length = 2.0 metadata/_edit_lock_ = true [node name="FrontArm" type="Sprite2D" parent="Graphics/Hip/FrontArmPivot"] rotation = -1.5708 texture = ExtResource("3_jvia3") offset = Vector2(0, 2) [node name="FrontHand" type="Sprite2D" parent="Graphics/Hip/FrontArmPivot/FrontArm"] position = Vector2(0, 5) texture = ExtResource("4_kyw60") offset = Vector2(0, 2) [node name="HeldItemSlot" type="Node2D" parent="Graphics/Hip/FrontArmPivot/FrontArm/FrontHand"] unique_name_in_owner = true position = Vector2(0.999977, 5) [node name="FrontLeg" type="Sprite2D" parent="Graphics/Hip"] position = Vector2(-2, 6) texture = ExtResource("11_6xvc8") offset = Vector2(0, 2) [node name="FrontFoot" type="Sprite2D" parent="Graphics/Hip/FrontLeg"] position = Vector2(0, 4) texture = ExtResource("12_dda5a") offset = Vector2(0, 1) [node name="Skirt" type="Sprite2D" parent="Graphics/Hip"] texture = ExtResource("13_qgkik") offset = Vector2(-1, 3) [node name="StateChart" type="Node" parent="."] unique_name_in_owner = true script = ExtResource("2_wtq62") [node name="Root" type="Node" parent="StateChart"] script = ExtResource("3_h5pyx") [node name="Movement" type="Node" parent="StateChart/Root"] editor_description = "State of character movement." script = ExtResource("4_le3t4") initial_state = NodePath("Active") [node name="Active" type="Node" parent="StateChart/Root/Movement"] process_physics_priority = 100 editor_description = "Performs movement. Has higher physics processing priority so that move_and_slide happens last." script = ExtResource("4_le3t4") initial_state = NodePath("Grounded") [node name="Grounded" type="Node" parent="StateChart/Root/Movement/Active"] script = ExtResource("4_le3t4") initial_state = NodePath("Standing") [node name="OnLeftGround" type="Node" parent="StateChart/Root/Movement/Active/Grounded"] script = ExtResource("6_d3xxl") to = NodePath("../../Airborn") event = &"left_ground" delay_in_seconds = "0.0" [node name="OnAimPressed" type="Node" parent="StateChart/Root/Movement/Active/Grounded"] script = ExtResource("6_d3xxl") to = NodePath("../Aiming") event = &"aim_pressed" delay_in_seconds = "0.0" [node name="Standing" type="Node" parent="StateChart/Root/Movement/Active/Grounded"] editor_description = "Character is standing still." script = ExtResource("5_8e8ei") [node name="OnWalkStart" type="Node" parent="StateChart/Root/Movement/Active/Grounded/Standing"] editor_description = "A direction starts being held." script = ExtResource("6_d3xxl") to = NodePath("../../Walking") event = &"input_dir_changed" guard = SubResource("Resource_hwvj2") delay_in_seconds = "0.0" [node name="Walking" type="Node" parent="StateChart/Root/Movement/Active/Grounded"] editor_description = "Character is walking in the direction being pressed." script = ExtResource("5_8e8ei") [node name="OnWalkStop" type="Node" parent="StateChart/Root/Movement/Active/Grounded/Walking"] editor_description = "A direction stops being held." script = ExtResource("6_d3xxl") to = NodePath("../../Stopping") event = &"input_dir_changed" guard = SubResource("Resource_h756l") delay_in_seconds = "0.0" [node name="OnTurnAround" type="Node" parent="StateChart/Root/Movement/Active/Grounded/Walking"] editor_description = "The opposite direction from movement is held." script = ExtResource("6_d3xxl") to = NodePath("../../Turning") event = &"input_dir_changed" guard = SubResource("Resource_7h7ld") delay_in_seconds = "0.0" [node name="Stopping" type="Node" parent="StateChart/Root/Movement/Active/Grounded"] editor_description = "Player is holding no direction, character slows to stop." script = ExtResource("5_8e8ei") [node name="OnWalkStart" type="Node" parent="StateChart/Root/Movement/Active/Grounded/Stopping"] editor_description = "The original" script = ExtResource("6_d3xxl") to = NodePath("../../Walking") event = &"input_dir_changed" guard = SubResource("Resource_5aa0s") delay_in_seconds = "0.0" [node name="OnTurnAround" type="Node" parent="StateChart/Root/Movement/Active/Grounded/Stopping"] editor_description = "The opposite direction from movement is held." script = ExtResource("6_d3xxl") to = NodePath("../../Turning") event = &"input_dir_changed" guard = SubResource("Resource_7h7ld") delay_in_seconds = "0.0" [node name="OnStopped" type="Node" parent="StateChart/Root/Movement/Active/Grounded/Stopping"] editor_description = "The character has come to a stop. (velocity.x < stop_threshold)" script = ExtResource("6_d3xxl") to = NodePath("../../Standing") event = &"stopped" delay_in_seconds = "0.0" [node name="Turning" type="Node" parent="StateChart/Root/Movement/Active/Grounded"] editor_description = "Character is holding opposite direction of horizontal velocity, character will more quickly turn around." script = ExtResource("5_8e8ei") [node name="OnWalkStart" type="Node" parent="StateChart/Root/Movement/Active/Grounded/Turning"] editor_description = "The player cancels turning and starts walking in the same direction again." script = ExtResource("6_d3xxl") to = NodePath("../../Walking") event = &"input_dir_changed" guard = SubResource("Resource_5aa0s") delay_in_seconds = "0.0" [node name="OnWalkStop" type="Node" parent="StateChart/Root/Movement/Active/Grounded/Turning"] editor_description = "The player cancels turning and just comes to a stop." script = ExtResource("6_d3xxl") to = NodePath("../../Stopping") event = &"input_dir_changed" guard = SubResource("Resource_h756l") delay_in_seconds = "0.0" [node name="OnTurnFinished" type="Node" parent="StateChart/Root/Movement/Active/Grounded/Turning"] editor_description = "The character has crossed the 0 velocity boundary and is facing the other direction now." script = ExtResource("6_d3xxl") to = NodePath("../../Walking") event = &"turn_finished" delay_in_seconds = "0.0" [node name="Aiming" type="Node" parent="StateChart/Root/Movement/Active/Grounded"] script = ExtResource("5_8e8ei") [node name="OnAimReleased" type="Node" parent="StateChart/Root/Movement/Active/Grounded/Aiming"] script = ExtResource("6_d3xxl") to = NodePath("../../Standing") event = &"aim_released" delay_in_seconds = "0.0" [node name="Airborn" type="Node" parent="StateChart/Root/Movement/Active"] script = ExtResource("4_le3t4") initial_state = NodePath("Falling") [node name="Falling" type="Node" parent="StateChart/Root/Movement/Active/Airborn"] script = ExtResource("5_8e8ei") [node name="OnLanded" type="Node" parent="StateChart/Root/Movement/Active/Airborn"] script = ExtResource("6_d3xxl") to = NodePath("../../Grounded") event = &"landed" delay_in_seconds = "0.0" [node name="Inactive" type="Node" parent="StateChart/Root/Movement"] editor_description = "Performs no movement." script = ExtResource("5_8e8ei") [connection signal="area_entered" from="PickupDetector" to="." method="_on_pickup_area_entered"] [connection signal="area_exited" from="PickupDetector" to="." method="_on_pickup_area_exited"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Active" to="." method="_active_physics_process"] [connection signal="child_state_entered" from="StateChart/Root/Movement/Active/Grounded" to="." method="_grounded_child_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Active/Grounded/Standing" to="." method="_standing_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Active/Grounded/Walking" to="AnimationPlayer" method="play" binds= [&"walk"]] [connection signal="state_exited" from="StateChart/Root/Movement/Active/Grounded/Walking" to="AnimationPlayer" method="play" binds= [&"stand"]] [connection signal="state_exited" from="StateChart/Root/Movement/Active/Grounded/Walking" to="AnimationPlayer" method="set_speed_scale" binds= [1.0]] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Active/Grounded/Walking" to="." method="_walking_process"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Active/Grounded/Stopping" to="." method="_stopping_physics_process"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Active/Grounded/Turning" to="." method="_turning_physics_process"] [connection signal="state_exited" from="StateChart/Root/Movement/Active/Grounded/Aiming" to="." method="_aiming_exited"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Active/Grounded/Aiming" to="." method="_stopping_physics_process"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Active/Grounded/Aiming" to="." method="_aiming_physics_process"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Active/Airborn" to="." method="_airborn_physics_process"]