[gd_scene load_steps=50 format=3 uid="uid://ckxelxak8dko7"] [ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="1_1xpe6"] [ext_resource type="Script" path="res://Characters/Enemy.cs" id="2_jq8f8"] [ext_resource type="Script" path="res://State/Character/CharacterStateMachine.cs" id="3_n5adw"] [ext_resource type="Script" path="res://State/Character/NPCIdleState.cs" id="4_g3et5"] [ext_resource type="Script" path="res://State/Character/NPCMoveState.cs" id="5_1j55k"] [ext_resource type="Script" path="res://State/Character/CharacterDashState.cs" id="6_4uva8"] [ext_resource type="Script" path="res://State/Character/PlayerRollState.cs" id="7_kdm1e"] [ext_resource type="Script" path="res://Utils/AnimationManager.cs" id="8_f33u2"] [ext_resource type="AnimationLibrary" uid="uid://epe31b7x1nt1" path="res://Assets/Animations/player_hurt.res" id="9_0ywmi"] [ext_resource type="Animation" uid="uid://8e8r3y1imvsx" path="res://Assets/Animations/stun.res" id="9_fkx1e"] [ext_resource type="Material" uid="uid://bat28samf7ukd" path="res://Assets/Sprites/Particles/NPCDamageProcessMaterial.tres" id="10_hnmcd"] [ext_resource type="Texture2D" uid="uid://c1a7lvb4uuwfy" path="res://Assets/Sprites/Particles/circle-16.png" id="10_qbgyb"] [ext_resource type="Texture2D" uid="uid://bd8l8kafb42dt" path="res://Assets/Sprites/Particles/circle.png" id="11_6bslo"] [ext_resource type="Material" uid="uid://ra02tvwd5o5g" path="res://Assets/Sprites/Particles/PlayerDeathProcessMaterial.tres" id="11_85w4a"] [ext_resource type="AudioStream" uid="uid://bbqdpexvknma2" path="res://Assets/Sounds/never-lucky.mp3" id="13_bovud"] [ext_resource type="AudioStream" uid="uid://cruylv4pu2fo1" path="res://Assets/Sounds/footstep-tile.wav" id="14_2ql70"] [ext_resource type="Texture2D" uid="uid://bej8thq7ruyty" path="res://Assets/Sprites/Characters/forsen2.png" id="16_lr46v"] [ext_resource type="Script" path="res://Items/Inventory.cs" id="17_q8tne"] [ext_resource type="PackedScene" uid="uid://dvqap2uhcah63" path="res://Items/Weapons/Sword.tscn" id="18_dqppu"] [ext_resource type="PackedScene" uid="uid://cjgxyhgcyvsv7" path="res://BoundingBoxes/Hurtbox.tscn" id="20_7qskd"] [ext_resource type="AudioStream" uid="uid://k6kpdj1kv0jg" path="res://Assets/Sounds/splat.ogg" id="21_8714l"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_h78y7"] resource_local_to_scene = true shader = ExtResource("1_1xpe6") shader_parameter/color = Vector4(1, 1, 1, 1) shader_parameter/intensity = 0.0 shader_parameter/alpha_modulate = 1.0 [sub_resource type="Animation" id="Animation_imqdv"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprites/Node2D/Character:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [0] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("../Sprites/Node2D/Character:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } [sub_resource type="Animation" id="Animation_mg66i"] resource_name = "idle" length = 0.5 loop_mode = 1 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprites/Node2D/Character:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.3), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [0, 1] } [sub_resource type="Animation" id="Animation_iyr4r"] resource_name = "move" length = 0.6 loop_mode = 1 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprites/Node2D/Character:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), "update": 1, "values": [2, 3, 4, 5, 6, 7] } tracks/1/type = "method" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("..") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0.2, 0.5), "transitions": PackedFloat32Array(1, 1), "values": [{ "args": [], "method": &"Footstep" }, { "args": [], "method": &"Footstep" }] } [sub_resource type="Animation" id="Animation_vobpw"] resource_name = "roll" length = 0.5 step = 0.05 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprites/Node2D/Character:rotation") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.5), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [0.0, 6.28319] } [sub_resource type="Animation" id="Animation_tpnyg"] resource_name = "stop" length = 0.2 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprites/Node2D/Character:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.2), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [10, 0] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_0tohi"] _data = { "RESET": SubResource("Animation_imqdv"), "idle": SubResource("Animation_mg66i"), "move": SubResource("Animation_iyr4r"), "roll": SubResource("Animation_vobpw"), "stop": SubResource("Animation_tpnyg") } [sub_resource type="Animation" id="Animation_adxyh"] resource_local_to_scene = true length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprites/Node2D/Character:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [0] } [sub_resource type="Animation" id="Animation_3w3u1"] resource_name = "sword" length = 0.3 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprites/Node2D/Character:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.1, 0.2), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [12, 13, 14] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_73mj7"] _data = { "RESET": SubResource("Animation_adxyh"), "sword": SubResource("Animation_3w3u1") } [sub_resource type="AnimationLibrary" id="AnimationLibrary_kks2p"] _data = { "stun": ExtResource("9_fkx1e") } [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_kwett"] animation = &"idle" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vqdng"] animation = &"move" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_4np0m"] animation = &"roll" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_suhx1"] animation = &"stop" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_sorqc"] advance_mode = 2 [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ujrp0"] advance_condition = &"move" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_kjkm8"] advance_condition = &"idle" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_1ywlq"] switch_mode = 2 advance_mode = 2 advance_condition = &"idle" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_abs7t"] advance_condition = &"roll" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_qlka8"] advance_condition = &"idle" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ql2f3"] advance_condition = &"move" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_g1yba"] advance_condition = &"roll" [sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_0ukul"] states/End/position = Vector2(613, 100) states/Start/position = Vector2(89, 100) states/idle/node = SubResource("AnimationNodeAnimation_kwett") states/idle/position = Vector2(259, 100) states/move/node = SubResource("AnimationNodeAnimation_vqdng") states/move/position = Vector2(259, 18) states/roll/node = SubResource("AnimationNodeAnimation_4np0m") states/roll/position = Vector2(89, 18) states/stop/node = SubResource("AnimationNodeAnimation_suhx1") states/stop/position = Vector2(438, 100) transitions = ["Start", "idle", SubResource("AnimationNodeStateMachineTransition_sorqc"), "idle", "move", SubResource("AnimationNodeStateMachineTransition_ujrp0"), "move", "stop", SubResource("AnimationNodeStateMachineTransition_kjkm8"), "stop", "idle", SubResource("AnimationNodeStateMachineTransition_1ywlq"), "idle", "roll", SubResource("AnimationNodeStateMachineTransition_abs7t"), "roll", "idle", SubResource("AnimationNodeStateMachineTransition_qlka8"), "roll", "move", SubResource("AnimationNodeStateMachineTransition_ql2f3"), "move", "roll", SubResource("AnimationNodeStateMachineTransition_g1yba")] graph_offset = Vector2(-335.315, -63.5708) [sub_resource type="AnimationNodeStateMachinePlayback" id="AnimationNodeStateMachinePlayback_jy6hr"] [sub_resource type="CanvasTexture" id="CanvasTexture_pited"] diffuse_texture = ExtResource("10_qbgyb") [sub_resource type="RectangleShape2D" id="RectangleShape2D_bfqew"] size = Vector2(12, 8) [sub_resource type="RectangleShape2D" id="RectangleShape2D_cjk6b"] size = Vector2(8, 8) [node name="Enemy" type="CharacterBody2D" node_paths=PackedStringArray("DefaultSelectedItem", "Sprite", "Inventory", "StateMachine", "Hurtbox")] y_sort_enabled = true texture_filter = 3 material = SubResource("ShaderMaterial_h78y7") collision_layer = 6 collision_mask = 17 script = ExtResource("2_jq8f8") DefaultSelectedItem = NodePath("Inventory/Sword") Speed = 64.0 Sprite = NodePath("Sprites/Node2D/Character") Inventory = NodePath("Inventory") StateMachine = NodePath("StateMachine") Hurtbox = NodePath("Hurtbox") [node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")] script = ExtResource("3_n5adw") InitialState = NodePath("Idle") Character = NodePath("..") [node name="Idle" type="Node" parent="StateMachine" node_paths=PackedStringArray("MoveState", "Character")] script = ExtResource("4_g3et5") MoveState = NodePath("../Move") Character = NodePath("../..") [node name="Move" type="Node" parent="StateMachine" node_paths=PackedStringArray("IdleState", "Character")] script = ExtResource("5_1j55k") IdleState = NodePath("../Idle") Character = NodePath("../..") [node name="Dash" type="Node" parent="StateMachine" node_paths=PackedStringArray("IdleState", "Character")] script = ExtResource("6_4uva8") IdleState = NodePath("../Idle") TimeToDash = 0.1 VelocityModifier = 5.0 Character = NodePath("../..") [node name="Roll" type="Node" parent="StateMachine" node_paths=PackedStringArray("IdleState", "Character")] script = ExtResource("7_kdm1e") IdleState = NodePath("../Idle") Character = NodePath("../..") [node name="Animations" type="Node" parent="."] script = ExtResource("8_f33u2") [node name="Movement" type="AnimationPlayer" parent="Animations"] libraries = { "": SubResource("AnimationLibrary_0tohi") } [node name="Attack" type="AnimationPlayer" parent="Animations"] libraries = { "": SubResource("AnimationLibrary_73mj7") } [node name="Hurt" type="AnimationPlayer" parent="Animations"] root_node = NodePath("../..") libraries = { "": ExtResource("9_0ywmi") } [node name="Stun" type="AnimationPlayer" parent="Animations"] libraries = { "": SubResource("AnimationLibrary_kks2p") } [node name="AnimationTree" type="AnimationTree" parent="Animations"] tree_root = SubResource("AnimationNodeStateMachine_0ukul") anim_player = NodePath("../Movement") parameters/playback = SubResource("AnimationNodeStateMachinePlayback_jy6hr") parameters/conditions/idle = false parameters/conditions/move = false parameters/conditions/roll = false [node name="Effects" type="Node2D" parent="."] [node name="HurtParticles" type="GPUParticles2D" parent="Effects"] position = Vector2(0, -8) emitting = false process_material = ExtResource("10_hnmcd") texture = ExtResource("11_6bslo") lifetime = 0.4 one_shot = true explosiveness = 1.0 [node name="DeathParticles" type="GPUParticles2D" parent="Effects"] emitting = false amount = 32 process_material = ExtResource("11_85w4a") texture = SubResource("CanvasTexture_pited") lifetime = 2.0 one_shot = true preprocess = 0.1 explosiveness = 0.9 [node name="DeathCry" type="AudioStreamPlayer2D" parent="Effects"] stream = ExtResource("13_bovud") volume_db = 2.0 [node name="Footstep" type="AudioStreamPlayer2D" parent="Effects"] stream = ExtResource("14_2ql70") max_distance = 256.0 [node name="HurtSound" type="AudioStreamPlayer2D" parent="Effects"] stream = ExtResource("21_8714l") [node name="Sprites" type="Node2D" parent="."] y_sort_enabled = true use_parent_material = true rotation = 6.28319 [node name="Node2D" type="Node2D" parent="Sprites"] use_parent_material = true [node name="Character" type="Sprite2D" parent="Sprites/Node2D"] use_parent_material = true position = Vector2(0, -8) texture = ExtResource("16_lr46v") offset = Vector2(0, -4) hframes = 35 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(0, -4) shape = SubResource("RectangleShape2D_bfqew") [node name="Inventory" type="Node2D" parent="."] position = Vector2(0, -4) script = ExtResource("17_q8tne") InventoryMap = { "equip_1": 0, "equip_2": 1 } [node name="Sword" parent="Inventory" instance=ExtResource("18_dqppu")] [node name="Hurtbox" parent="." instance=ExtResource("20_7qskd")] visible = false [node name="CollisionShape2D" parent="Hurtbox" index="0"] visible = false position = Vector2(0, 4) shape = SubResource("RectangleShape2D_cjk6b") [node name="AudioListener2D" type="AudioListener2D" parent="."] visible = false current = true [editable path="Hurtbox"]