some jumping animations
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 18s
Create tag and build when new code gets to main / Export (push) Successful in 10m30s

This commit is contained in:
2026-01-20 13:23:42 +01:00
parent a257306999
commit 8d1e7ebb4f
8 changed files with 199 additions and 120 deletions

View File

@@ -85,6 +85,7 @@ DecelerationFloor = 3.0
AccelerationAir = 0.8
DecelerationAir = 0.02
Weight = 4.0
MantleTime = 0.3
MantlePath = ExtResource("2_6lejt")
MantleDashStrength = 25.0
MantleJumpStartVelocity = 15.0

View File

@@ -324,6 +324,7 @@ public partial class PlayerController : CharacterBody3D,
private Transition _onJumpFromWall;
private Transition _onJumpFromWallFalling;
private Transition _onLeaveWallFromRun;
private Transition _onAirborneToGrounded;
private Transition _onGroundSlideJump;
private Transition _onAirGlideDoubleJump;
@@ -448,6 +449,7 @@ public partial class PlayerController : CharacterBody3D,
_onWallHanging = StateChartState.Of(GetNode("StateChart/Root/Movement/OnWall/Hanging"));
_onWallRunning = StateChartState.Of(GetNode("StateChart/Root/Movement/OnWall/Running"));
_onLeaveWallFromRun = Transition.Of(GetNode("StateChart/Root/Movement/OnWall/Running/OnLeaveWall"));
_onAirborneToGrounded = Transition.Of(GetNode("StateChart/Root/Movement/Airborne/OnGrounded"));
// State timers
_powerCooldownTimer = GetNode<Timer>("PowerCooldown");
@@ -551,6 +553,7 @@ public partial class PlayerController : CharacterBody3D,
_onJumpFromWall.Taken += OnJumpFromWall;
_onJumpFromWallFalling.Taken += OnJumpFromWall;
_onLeaveWallFromRun.Taken += OnLeaveWallFromRun;
_onAirborneToGrounded.Taken += OnAirborneToGrounded;
}
///////////////////////////
@@ -645,6 +648,11 @@ public partial class PlayerController : CharacterBody3D,
}
}
public void OnAirborneToGrounded()
{
HeadSystem.OnJumpEnded();
}
public bool IsGroundLike()
{
return GroundDetector.GetCollisionResult().Count > 0;
@@ -1156,6 +1164,7 @@ public partial class PlayerController : CharacterBody3D,
return;
}
HeadSystem.OnJumpStarted();
if (WallHugSystem.IsWallHugging())
{
_playerState.SendEvent("wall_jump");
@@ -1280,11 +1289,10 @@ public partial class PlayerController : CharacterBody3D,
_mantlePath.Setup(transform, curve);
_mantleStartPosition = GlobalPosition;
var curveLength = curve.GetBakedLength();
var tween = GetTree().CreateTween();
tween.SetTrans(Tween.TransitionType.Linear);
tween.SetEase(Tween.EaseType.In);
tween.TweenProperty(_mantlePath.PathFollow, "progress_ratio", 1, MantleTime*curveLength);
tween.TweenProperty(_mantlePath.PathFollow, "progress_ratio", 1, MantleTime);
tween.Finished += MantleFinished;
}
public void HandleMantling(float delta)

View File

@@ -41,7 +41,6 @@ rings = 4
albedo_color = Color(0.06469653, 0.06469653, 0.06469653, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_4yfjf"]
size = Vector3(1, 1, 1.5)
[node name="FlyingEnemy" type="CharacterBody3D" node_paths=PackedStringArray("CHealth", "CDamage", "CKnockback", "CMovement")]
collision_layer = 16
@@ -107,5 +106,5 @@ collision_layer = 0
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="DamageBox"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.75)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.5)
shape = SubResource("BoxShape3D_4yfjf")

View File

@@ -36,7 +36,7 @@ rings = 4
albedo_color = Color(0.06469653, 0.06469653, 0.06469653, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_4yfjf"]
size = Vector3(1, 2, 2)
size = Vector3(1, 2, 1.5)
[node name="GroundedEnemy" type="CharacterBody3D" node_paths=PackedStringArray("CHealth", "CDamage", "CKnockback", "CMovement")]
collision_layer = 16
@@ -103,5 +103,5 @@ collision_layer = 0
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="DamageBox"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -0.5)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -0.25)
shape = SubResource("BoxShape3D_4yfjf")

View File

@@ -106,9 +106,16 @@ public partial class HeadSystem : Node3D
public void OnMantle()
{
_animationPlayer.Play("mantle");
_animationTree.Set("parameters/OnMantle/request", (int) AnimationNodeOneShot.OneShotRequest.Fire);
}
public void OnJumpStarted()
{
_animationTree.Set("parameters/OnJumpStart/request", (int) AnimationNodeOneShot.OneShotRequest.Fire);
}
public void OnJumpEnded()
{
_animationTree.Set("parameters/OnJumpEnd/request", (int) AnimationNodeOneShot.OneShotRequest.Fire);
}
public void OnHit()
{
_animationTree.Set("parameters/OnHit/request", (int) AnimationNodeOneShot.OneShotRequest.Fire);
@@ -118,7 +125,6 @@ public partial class HeadSystem : Node3D
{
EmitSignalHitboxActivated();
}
public void OnHitboxDeactivated()
{
EmitSignalHitboxDeactivated();

View File

@@ -1,4 +1,4 @@
[gd_resource type="AnimationNodeBlendTree" load_steps=5 format=3 uid="uid://c26yvcyyyj811"]
[gd_resource type="AnimationNodeBlendTree" load_steps=11 format=3 uid="uid://c26yvcyyyj811"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://3r5oeg0ho0d4" path="res://systems/head/fp_state_machine.tres" id="1_knaxl"]
@@ -7,18 +7,51 @@ animation = &"idle"
[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_1hkum"]
[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_knaxl"]
filter_enabled = true
filters = ["..:position", "..:rotation"]
[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_23rmc"]
filter_enabled = true
filters = ["..:position", "..:rotation"]
[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_dlkjl"]
filter_enabled = true
filters = ["..:position", "..:rotation", "..:rotation:x", "..:rotation:z"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_23rmc"]
animation = &"hit1"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dlkjl"]
animation = &"jump_end"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ao3u1"]
animation = &"jump_start"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_lwjon"]
animation = &"mantle"
[resource]
graph_offset = Vector2(-455.3856, -37.41575)
nodes/output/position = Vector2(320, 160)
graph_offset = Vector2(-223.13931, -84.56735)
nodes/output/position = Vector2(1540, 0)
nodes/AnimationNodeStateMachine/node = ExtResource("1_knaxl")
nodes/AnimationNodeStateMachine/position = Vector2(-540, 200)
nodes/AnimationNodeStateMachine/position = Vector2(-560, 180)
nodes/Idle/node = SubResource("AnimationNodeAnimation_knaxl")
nodes/Idle/position = Vector2(-80, 20)
nodes/Idle/position = Vector2(-100, -20)
nodes/OnHit/node = SubResource("AnimationNodeOneShot_1hkum")
nodes/OnHit/position = Vector2(120, 100)
nodes/OnHit/position = Vector2(1240, -60)
nodes/hit1/node = SubResource("AnimationNodeAnimation_23rmc")
nodes/hit1/position = Vector2(-80, 220)
node_connections = [&"output", 0, &"OnHit", &"OnHit", 0, &"Idle", &"OnHit", 1, &"hit1"]
nodes/hit1/position = Vector2(1080, 320)
nodes/OnJumpStart/node = SubResource("AnimationNodeOneShot_23rmc")
nodes/OnJumpStart/position = Vector2(140, 0)
nodes/OnJumpEnd/node = SubResource("AnimationNodeOneShot_knaxl")
nodes/OnJumpEnd/position = Vector2(560, -20)
nodes/jump_start/node = SubResource("AnimationNodeAnimation_ao3u1")
nodes/jump_start/position = Vector2(-120, 320)
nodes/jump_end/node = SubResource("AnimationNodeAnimation_dlkjl")
nodes/jump_end/position = Vector2(300, 340)
nodes/OnMantle/node = SubResource("AnimationNodeOneShot_dlkjl")
nodes/OnMantle/position = Vector2(900, -60)
nodes/mantle/node = SubResource("AnimationNodeAnimation_lwjon")
nodes/mantle/position = Vector2(640, 320)
node_connections = [&"output", 0, &"OnHit", &"OnHit", 0, &"OnMantle", &"OnHit", 1, &"hit1", &"OnJumpStart", 0, &"Idle", &"OnJumpStart", 1, &"jump_start", &"OnJumpEnd", 0, &"OnJumpStart", &"OnJumpEnd", 1, &"jump_end", &"OnMantle", 0, &"OnJumpEnd", &"OnMantle", 1, &"mantle"]

View File

@@ -1,7 +1,4 @@
[gd_resource type="AnimationNodeStateMachine" load_steps=6 format=3 uid="uid://3r5oeg0ho0d4"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_adm0b"]
animation = &"hit1"
[gd_resource type="AnimationNodeStateMachine" load_steps=3 format=3 uid="uid://3r5oeg0ho0d4"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_73q32"]
animation = &"idle"
@@ -9,20 +6,9 @@ animation = &"idle"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_adm0b"]
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7r4t3"]
advance_mode = 2
advance_condition = &"on_hit"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2u8w7"]
break_loop_at_end = true
switch_mode = 2
advance_mode = 2
[resource]
states/Start/position = Vector2(100, 91)
states/hit1/node = SubResource("AnimationNodeAnimation_adm0b")
states/hit1/position = Vector2(511, 61)
states/idle/node = SubResource("AnimationNodeAnimation_73q32")
states/idle/position = Vector2(331, 91)
transitions = ["Start", "idle", SubResource("AnimationNodeStateMachineTransition_adm0b"), "idle", "hit1", SubResource("AnimationNodeStateMachineTransition_7r4t3"), "hit1", "idle", SubResource("AnimationNodeStateMachineTransition_2u8w7")]
transitions = ["Start", "idle", SubResource("AnimationNodeStateMachineTransition_adm0b")]
graph_offset = Vector2(-82, -9)

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://0ysqmqphq6mq"]
[gd_scene load_steps=11 format=3 uid="uid://0ysqmqphq6mq"]
[ext_resource type="Script" uid="uid://dtkdrnsmlwm67" path="res://systems/head/HeadSystem.cs" id="1_8abgy"]
[ext_resource type="ArrayMesh" uid="uid://ckr26s4e3fj1m" path="res://assets/swords/resources/fp_sword23.tres" id="2_c5qep"]
@@ -6,130 +6,65 @@
[sub_resource type="Animation" id="Animation_urko7"]
length = 0.001
tracks/0/type = "bezier"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:rotation:x")
tracks/0/path = NodePath("../../FPRig/Sword:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.15, 0, 0.15, 0),
"times": PackedFloat32Array(0)
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.53640664, -0.7880347, -1.9288678)]
}
tracks/1/type = "bezier"
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("..:rotation:z")
tracks/1/path = NodePath("../../FPRig/Sword:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.15, 0, 0.15, 0),
"times": PackedFloat32Array(0)
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(-0.083978735, -1.136043, 0.19867715)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("../../FPRig/Sword:position")
tracks/2/path = NodePath("../../FPRig/Sword:scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.53640664, -0.7880347, -1.9288678)]
"values": [Vector3(1.0000001, 1.0000001, 1.0000005)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("../../FPRig/Sword:rotation")
tracks/3/path = NodePath("..:rotation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(-0.083978735, -1.136043, 0.19867715)]
"values": [Vector3(0, 0, 0.00011616433)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("../../FPRig/Sword:scale")
tracks/4/path = NodePath("..:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1.0000001, 1.0000001, 1.0000005)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("..:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0.00011616433)]
}
[sub_resource type="Animation" id="Animation_8abgy"]
resource_name = "mantle"
length = 0.3
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:rotation:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(2, 2, 2),
"points": PackedFloat32Array(0, 0, 0, 0.050000004, 0, -0.17453292, -0.050000004, 0, 0.050000004, 0, 0, -0.050000004, 0, 0, 0),
"times": PackedFloat32Array(0, 0.15, 0.3)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("..:rotation:z")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(2, 2, 2, 2),
"points": PackedFloat32Array(0.00011616433, 0, 0, 0.033333335, 0, -0.05235988, -0.033333335, 0, 0.033333335, 0, 0.05235988, -0.033333335, 0, 0.03333334, 0, 0, -0.03333334, 0, 0, 0),
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3)
}
[sub_resource type="Animation" id="Animation_0hyrq"]
resource_name = "idle"
length = 2.0
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("../../FPRig/Sword:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.3, 0.6, 1, 1.4),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(0.53640664, -0.7880347, -1.9288678), Vector3(0.53640664, -0.83580256, -1.9288678), Vector3(0.53640664, -0.86088884, -1.9288678), Vector3(0.53640664, -0.8256072, -1.9288678), Vector3(0.53640664, -0.7880347, -1.9288678)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../../FPRig/Sword:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.3, 0.6, 1, 1.4),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(-0.083978735, -1.136043, 0.19867715), Vector3(-0.06987281, -1.1365474, 0.20524277), Vector3(-0.05990464, -1.1368362, 0.20987195), Vector3(-0.06303402, -1.1367121, 0.2084137), Vector3(-0.083978735, -1.136043, 0.19867715)]
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_r0h40"]
@@ -202,11 +137,114 @@ tracks/4/keys = {
}]
}
[sub_resource type="Animation" id="Animation_0hyrq"]
resource_name = "idle"
length = 2.0
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("../../FPRig/Sword:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.3, 0.6, 1, 1.4),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(0.53640664, -0.7880347, -1.9288678), Vector3(0.53640664, -0.83580256, -1.9288678), Vector3(0.53640664, -0.86088884, -1.9288678), Vector3(0.53640664, -0.8256072, -1.9288678), Vector3(0.53640664, -0.7880347, -1.9288678)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../../FPRig/Sword:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.3, 0.6, 1, 1.4),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(-0.083978735, -1.136043, 0.19867715), Vector3(-0.06987281, -1.1365474, 0.20524277), Vector3(-0.05990464, -1.1368362, 0.20987195), Vector3(-0.06303402, -1.1367121, 0.2084137), Vector3(-0.083978735, -1.136043, 0.19867715)]
}
[sub_resource type="Animation" id="Animation_1ay6d"]
resource_name = "jump_end"
length = 0.26667002
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:rotation")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.13333334, 0.26666668),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0.00011616433), Vector3(-0.08726646, 0, 0), Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("..:position")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.26666668),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, -0.05, 0), Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_ubhf8"]
resource_name = "jump_start"
length = 0.26667002
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.26666668),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("..:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.13333334, 0.26666668),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0.00011616433), Vector3(-0.08726646, 0, 0), Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_8abgy"]
resource_name = "mantle"
length = 0.3
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:rotation")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1, 0.3),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0.00011616433), Vector3(-1.0471976, 0, 0), Vector3(0, 0, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_0hyrq"]
_data = {
&"RESET": SubResource("Animation_urko7"),
&"hit1": SubResource("Animation_r0h40"),
&"idle": SubResource("Animation_0hyrq"),
&"jump_end": SubResource("Animation_1ay6d"),
&"jump_start": SubResource("Animation_ubhf8"),
&"mantle": SubResource("Animation_8abgy")
}
@@ -227,7 +265,7 @@ cast_shadow = 0
mesh = ExtResource("2_c5qep")
[node name="CameraSmooth" type="Node3D" parent="."]
transform = Transform3D(1, -0.00011616433, 0, 0.00011616433, 1, 0, 0, 0, 1, 0, 0, 0)
transform = Transform3D(1, -0.00011616431, 0, 0.00011616433, 0.9999998, 0, 0, 0, 0.9999998, 0, 0, 0)
[node name="Camera3D" type="Camera3D" parent="CameraSmooth"]
transform = Transform3D(1, 0, 0, 0, 0.99999994, 0, 0, 0, 0.99999994, 0, 0, 0)
@@ -246,7 +284,15 @@ libraries = {
root_node = NodePath("../CameraSmooth/Camera3D")
tree_root = ExtResource("3_r0h40")
anim_player = NodePath("../AnimationPlayer")
parameters/AnimationNodeStateMachine/conditions/on_hit = false
parameters/OnHit/active = false
parameters/OnHit/internal_active = false
parameters/OnHit/request = 0
parameters/OnJumpStart/active = false
parameters/OnJumpStart/internal_active = false
parameters/OnJumpStart/request = 0
parameters/OnJumpEnd/active = false
parameters/OnJumpEnd/internal_active = false
parameters/OnJumpEnd/request = 0
parameters/OnMantle/active = false
parameters/OnMantle/internal_active = false
parameters/OnMantle/request = 0