Files
rthythm_archor_game/scenes/characters/player.tscn
T
2026-07-06 22:59:47 -07:00

533 lines
23 KiB
Plaintext

[gd_scene format=3]
[ext_resource type="Script" path="res://scenes/characters/player.gd" id="1_player_script"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/16_idle/idle_loop.png" id="2_idle"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/01_basic_attack_i/air_prep.png" id="3_atk1_prep"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/01_basic_attack_i/air_swing.png" id="4_atk1_swing"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/01_basic_attack_i/slash_overlay_fx.png" id="5_atk1_fx"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/02_basic_attack_ii/air_prep.png" id="6_atk2_prep"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/02_basic_attack_ii/air_swing.png" id="7_atk2_swing"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/02_basic_attack_ii/slash_overlay_fx.png" id="8_atk2_fx"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/07_rising_slash/prep.png" id="9_rise_prep"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/07_rising_slash/swing.png" id="10_rise_swing"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/07_rising_slash/slash_overlay_fx.png" id="11_rise_fx"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/17_turn_around/turn.png" id="12_turn"]
[ext_resource type="Texture2D" path="res://assets/art/characters/player/18_block/air_block_start.png" id="25_block_start"]
[ext_resource type="Script" path="res://scenes/components/state_machine.gd" id="13_state_machine"]
[ext_resource type="Script" path="res://scenes/components/input_component.gd" id="14_input_component"]
[ext_resource type="Script" path="res://scenes/components/movement_motor.gd" id="15_movement_motor"]
[ext_resource type="Script" path="res://scenes/components/combo_window.gd" id="16_combo_window"]
[ext_resource type="Script" path="res://scenes/combat/action_resolver.gd" id="17_action_resolver"]
[ext_resource type="Script" path="res://scenes/components/action_executor.gd" id="18_action_executor"]
[ext_resource type="Script" path="res://scenes/components/action_controller.gd" id="19_action_controller"]
[ext_resource type="Script" path="res://scenes/components/motion_executor.gd" id="20_motion_executor"]
[ext_resource type="Script" path="res://scenes/components/burst_component.gd" id="21_burst_component"]
[ext_resource type="Script" path="res://scenes/components/charge_component.gd" id="22_charge_component"]
[ext_resource type="Script" path="res://scenes/components/energy_component.gd" id="23_energy_component"]
[ext_resource type="Script" path="res://scenes/components/effect_container.gd" id="24_effect_container"]
[ext_resource type="Script" path="res://scenes/components/damage_emitter.gd" id="26_damage_emitter"]
[ext_resource type="Script" path="res://scenes/components/damage_receiver.gd" id="27_damage_receiver"]
[ext_resource type="Script" path="res://scenes/components/health_component.gd" id="28_health_component"]
[ext_resource type="Script" path="res://scenes/combat/contact_fx_spawner.gd" id="31_contact_fx"]
[ext_resource type="Script" path="res://scenes/components/streak_counter.gd" id="32_streak_counter"]
[ext_resource type="Script" path="res://scenes/components/attack_buff_component.gd" id="33_attack_buff"]
[ext_resource type="Script" path="res://scenes/components/frame_collision_driver.gd" id="34_frame_collision"]
[ext_resource type="Script" path="res://scenes/components/attack_buff_visual.gd" id="35_attack_buff_visual"]
[ext_resource type="Script" path="res://scenes/components/overhead_charge_segments.gd" id="36_overhead_charge_segments"]
[ext_resource type="Resource" path="res://resources/effects/effect_on_perfect_damage_reward.tres" id="29_perfect_reward"]
[ext_resource type="Resource" path="res://resources/effects/effect_on_landed_haste.tres" id="30_landed_haste"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_player"]
size = Vector2(18, 48)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_hitbox"]
size = Vector2(48, 40)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_hurtbox"]
size = Vector2(22, 52)
[sub_resource type="Animation" id="Animation_idle"]
resource_name = "idle"
length = 0.4
loop_mode = 1
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Visual/CharacterSprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("2_idle")]}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Visual/CharacterSprite:hframes")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [4]}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Visual/CharacterSprite:vframes")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [2]}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Visual/CharacterSprite:frame")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, "values": [0, 1, 2, 3, 4, 5, 6, 7]}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Visual/FxOverlay:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [false]}
[sub_resource type="Animation" id="Animation_atk_ground_1"]
resource_name = "atk_ground_1"
length = 0.35
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Visual/CharacterSprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {"times": PackedFloat32Array(0, 0.15), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [ExtResource("3_atk1_prep"), ExtResource("4_atk1_swing")]}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Visual/CharacterSprite:hframes")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [3]}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Visual/CharacterSprite:vframes")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [1]}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Visual/CharacterSprite:frame")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), "update": 1, "values": [0, 1, 2, 0, 1, 2]}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Visual/FxOverlay:texture")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {"times": PackedFloat32Array(0.15), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("5_atk1_fx")]}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Visual/FxOverlay:hframes")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {"times": PackedFloat32Array(0.15), "transitions": PackedFloat32Array(1), "update": 1, "values": [5]}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Visual/FxOverlay:vframes")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {"times": PackedFloat32Array(0.15), "transitions": PackedFloat32Array(1), "update": 1, "values": [1]}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Visual/FxOverlay:frame")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {"times": PackedFloat32Array(0.15, 0.2, 0.25, 0.3), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 1, "values": [1, 2, 3, 4]}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Visual/FxOverlay:visible")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {"times": PackedFloat32Array(0, 0.15, 0.35), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [false, true, false]}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("Visual/FxOverlay:offset")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {"times": PackedFloat32Array(0.15), "transitions": PackedFloat32Array(1), "update": 1, "values": [Vector2(-147, -191)]}
[sub_resource type="Animation" id="Animation_atk_ground_2"]
resource_name = "atk_ground_2"
length = 0.35
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Visual/CharacterSprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {"times": PackedFloat32Array(0, 0.15), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [ExtResource("6_atk2_prep"), ExtResource("7_atk2_swing")]}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Visual/CharacterSprite:hframes")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [3]}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Visual/CharacterSprite:vframes")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [1]}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Visual/CharacterSprite:frame")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), "update": 1, "values": [0, 1, 2, 0, 1, 2]}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Visual/FxOverlay:texture")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {"times": PackedFloat32Array(0.15), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("8_atk2_fx")]}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Visual/FxOverlay:hframes")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {"times": PackedFloat32Array(0.15), "transitions": PackedFloat32Array(1), "update": 1, "values": [5]}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Visual/FxOverlay:vframes")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {"times": PackedFloat32Array(0.15), "transitions": PackedFloat32Array(1), "update": 1, "values": [1]}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Visual/FxOverlay:frame")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {"times": PackedFloat32Array(0.15, 0.2, 0.25, 0.3), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 1, "values": [1, 2, 3, 4]}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Visual/FxOverlay:visible")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {"times": PackedFloat32Array(0, 0.15, 0.35), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [false, true, false]}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("Visual/FxOverlay:offset")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {"times": PackedFloat32Array(0.15), "transitions": PackedFloat32Array(1), "update": 1, "values": [Vector2(-147, -191)]}
[sub_resource type="Animation" id="Animation_rising_slash"]
resource_name = "rising_slash"
length = 0.42
step = 0.03
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Visual/CharacterSprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {"times": PackedFloat32Array(0, 0.09), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [ExtResource("9_rise_prep"), ExtResource("10_rise_swing")]}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Visual/CharacterSprite:hframes")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {"times": PackedFloat32Array(0, 0.09), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [3, 5]}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Visual/CharacterSprite:vframes")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {"times": PackedFloat32Array(0, 0.09), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [1, 2]}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Visual/CharacterSprite:frame")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {"times": PackedFloat32Array(0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.3, 0.33, 0.36), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 1, "values": [0, 1, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Visual/FxOverlay:texture")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {"times": PackedFloat32Array(0.09), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("11_rise_fx")]}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Visual/FxOverlay:hframes")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {"times": PackedFloat32Array(0.09), "transitions": PackedFloat32Array(1), "update": 1, "values": [5]}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Visual/FxOverlay:vframes")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {"times": PackedFloat32Array(0.09), "transitions": PackedFloat32Array(1), "update": 1, "values": [2]}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Visual/FxOverlay:frame")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {"times": PackedFloat32Array(0.09, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.3, 0.33), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 1, "values": [1, 2, 3, 4, 5, 6, 7, 8, 9]}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Visual/FxOverlay:visible")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {"times": PackedFloat32Array(0, 0.09, 0.42), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [false, true, false]}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("Visual/FxOverlay:offset")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {"times": PackedFloat32Array(0.09), "transitions": PackedFloat32Array(1), "update": 1, "values": [Vector2(-111, -156)]}
[sub_resource type="Animation" id="Animation_block_start"]
resource_name = "block_start"
length = 0.25
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Visual/CharacterSprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("25_block_start")]}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Visual/CharacterSprite:hframes")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [5]}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Visual/CharacterSprite:vframes")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [1]}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Visual/CharacterSprite:frame")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2), "transitions": PackedFloat32Array(1, 1, 1, 1, 1), "update": 1, "values": [0, 1, 2, 3, 4]}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Visual/FxOverlay:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [false]}
[sub_resource type="Animation" id="Animation_turn"]
resource_name = "turn"
length = 0.15
step = 0.025
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Visual/CharacterSprite:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("12_turn")]}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Visual/CharacterSprite:hframes")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [3]}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Visual/CharacterSprite:vframes")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [2]}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Visual/CharacterSprite:frame")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {"times": PackedFloat32Array(0, 0.025, 0.05, 0.075, 0.1, 0.125), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), "update": 1, "values": [0, 1, 2, 3, 4, 5]}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Visual/FxOverlay:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {"times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [false]}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_player"]
_data = {
&"atk_ground_1": SubResource("Animation_atk_ground_1"),
&"atk_ground_2": SubResource("Animation_atk_ground_2"),
&"block_start": SubResource("Animation_block_start"),
&"idle": SubResource("Animation_idle"),
&"rising_slash": SubResource("Animation_rising_slash"),
&"turn": SubResource("Animation_turn")
}
[node name="Player" type="CharacterBody2D"]
collision_layer = 32
collision_mask = 65
floor_snap_length = 0.0
safe_margin = 0.001
script = ExtResource("1_player_script")
[node name="Visual" type="Node2D" parent="."]
[node name="CharacterSprite" type="Sprite2D" parent="Visual"]
texture_filter = 2
texture = ExtResource("2_idle")
centered = false
offset = Vector2(-64, -128)
hframes = 4
vframes = 2
[node name="FxOverlay" type="Sprite2D" parent="Visual"]
visible = false
z_index = 2
texture_filter = 2
centered = false
[node name="AttackBuffVisual" type="Node2D" parent="Visual"]
z_index = 1
script = ExtResource("35_attack_buff_visual")
[node name="FxAnimationPlayer" type="AnimationPlayer" parent="Visual"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -72)
shape = SubResource("RectangleShape2D_player")
[node name="DamageEmitter" type="Area2D" parent="."]
collision_layer = 8
collision_mask = 4
monitoring = false
script = ExtResource("26_damage_emitter")
damage = 100
[node name="CollisionShape2D" type="CollisionShape2D" parent="DamageEmitter"]
position = Vector2(0, -72)
shape = SubResource("RectangleShape2D_hitbox")
[node name="DamageReceiver" type="Area2D" parent="."]
collision_layer = 2
collision_mask = 16
script = ExtResource("27_damage_receiver")
[node name="CollisionShape2D" type="CollisionShape2D" parent="DamageReceiver"]
position = Vector2(0, -72)
shape = SubResource("RectangleShape2D_hurtbox")
[node name="OverheadChargeSegments" type="Node2D" parent="."]
visible = false
position = Vector2(0, -18)
z_index = 96
script = ExtResource("36_overhead_charge_segments")
segment_count = 3
segment_size = Vector2(42, 12)
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries/ = SubResource("AnimationLibrary_player")
autoplay = &"idle"
[node name="ContactFxSpawner" type="Node" parent="."]
script = ExtResource("31_contact_fx")
[node name="StateMachine" type="Node" parent="."]
script = ExtResource("13_state_machine")
[node name="InputComponent" type="Node" parent="."]
script = ExtResource("14_input_component")
[node name="MovementMotor" type="Node" parent="."]
script = ExtResource("15_movement_motor")
[node name="ComboWindow" type="Node" parent="."]
script = ExtResource("16_combo_window")
[node name="ActionResolver" type="Node" parent="."]
script = ExtResource("17_action_resolver")
[node name="ActionExecutor" type="Node" parent="."]
script = ExtResource("18_action_executor")
energy_component_path = NodePath("../EnergyComponent")
damage_emitter_path = NodePath("../DamageEmitter")
[node name="ActionController" type="Node" parent="."]
script = ExtResource("19_action_controller")
combo_window_path = NodePath("../ComboWindow")
action_resolver_path = NodePath("../ActionResolver")
action_executor_path = NodePath("../ActionExecutor")
state_machine_path = NodePath("../StateMachine")
burst_component_path = NodePath("../BurstComponent")
[node name="MotionExecutor" type="Node" parent="."]
script = ExtResource("20_motion_executor")
[node name="BurstComponent" type="Node" parent="."]
script = ExtResource("21_burst_component")
[node name="EffectContainer" type="Node" parent="."]
script = ExtResource("24_effect_container")
initial_effects = Array[Resource]([ExtResource("29_perfect_reward"), ExtResource("30_landed_haste")])
[node name="HealthComponent" type="Node" parent="."]
script = ExtResource("28_health_component")
maximum = 1000
current = 1000
hitstun_seconds = 0.4
[node name="ChargeComponent" type="Node" parent="."]
script = ExtResource("22_charge_component")
animation_player_path = NodePath("../AnimationPlayer")
effect_sprite_path = NodePath("../Visual/FxOverlay")
[node name="EnergyComponent" type="Node" parent="."]
script = ExtResource("23_energy_component")
[node name="StreakCounter" type="Node" parent="."]
script = ExtResource("32_streak_counter")
[node name="AttackBuffComponent" type="Node" parent="."]
script = ExtResource("33_attack_buff")
[node name="FrameCollisionDriver" type="Node" parent="."]
script = ExtResource("34_frame_collision")