[gd_scene load_steps=63 format=3 uid="uid://b2254pup8k161"] [ext_resource type="Script" path="res://Characters/Player.cs" id="1_flygr"] [ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_ngsgt"] [ext_resource type="Texture2D" uid="uid://dpepm54hjuyga" path="res://Assets/Sprites/Characters/forsen-hand.png" id="3_3dqh7"] [ext_resource type="Texture2D" uid="uid://bej8thq7ruyty" path="res://Assets/Sprites/Characters/forsen2.png" id="4_5vird"] [ext_resource type="PackedScene" uid="uid://cl56eadpklnbo" path="res://Utils/PlayerCamera.tscn" id="4_ym125"] [ext_resource type="Script" path="res://State/Character/CharacterStateMachine.cs" id="5_rgckv"] [ext_resource type="Script" path="res://State/Character/CharacterDashState.cs" id="6_rft7p"] [ext_resource type="Script" path="res://State/Character/PlayerIdleState.cs" id="6_wkfdm"] [ext_resource type="PackedScene" uid="uid://dvqap2uhcah63" path="res://Items/Weapons/Sword.tscn" id="7_4rxuv"] [ext_resource type="Script" path="res://State/Character/PlayerMoveState.cs" id="7_dfqd8"] [ext_resource type="Script" path="res://Utils/AnimationManager.cs" id="7_sdgvb"] [ext_resource type="Script" path="res://Items/Inventory.cs" id="7_xyenu"] [ext_resource type="Script" path="res://State/Character/PlayerRollState.cs" id="8_fy0v5"] [ext_resource type="Script" path="res://State/Character/PlayerEmoteState.cs" id="8_hd2lw"] [ext_resource type="Animation" uid="uid://8e8r3y1imvsx" path="res://Assets/Animations/stun.res" id="8_m08fh"] [ext_resource type="Material" uid="uid://x5qcq5muvc3g" path="res://Assets/Sprites/Particles/PlayerDamageProcessMaterial.tres" id="8_yf112"] [ext_resource type="Texture2D" uid="uid://c1a7lvb4uuwfy" path="res://Assets/Sprites/Particles/circle-16.png" id="9_7gumm"] [ext_resource type="PackedScene" uid="uid://cjgxyhgcyvsv7" path="res://BoundingBoxes/Hurtbox.tscn" id="9_avyu4"] [ext_resource type="AnimationLibrary" uid="uid://epe31b7x1nt1" path="res://Assets/Animations/player_hurt.res" id="9_g42dl"] [ext_resource type="Material" uid="uid://ra02tvwd5o5g" path="res://Assets/Sprites/Particles/PlayerDeathProcessMaterial.tres" id="10_agw51"] [ext_resource type="AudioStream" uid="uid://bbqdpexvknma2" path="res://Assets/Sounds/never-lucky.mp3" id="12_vd7j4"] [ext_resource type="AudioStream" uid="uid://bkeyg8weaqnuu" path="res://Assets/Sounds/splat-player.ogg" id="12_vvem5"] [ext_resource type="AudioStream" uid="uid://cruylv4pu2fo1" path="res://Assets/Sounds/footstep-tile.wav" id="13_bxguv"] [ext_resource type="Script" path="res://BoundingBoxes/InteractionRay.cs" id="13_hs3u1"] [ext_resource type="PackedScene" uid="uid://p7oijq6dbvvk" path="res://Items/Weapons/DocLance.tscn" id="14_bj0lo"] [ext_resource type="Texture2D" uid="uid://d1ukste16yq6v" path="res://Assets/Sprites/Particles/player-light.png" id="15_3hahh"] [ext_resource type="Script" path="res://Utils/DamageTime.cs" id="15_4xl06"] [ext_resource type="PackedScene" uid="uid://g7wfcubs6bdd" path="res://Items/Weapons/Railgun.tscn" id="21_n8w32"] [ext_resource type="PackedScene" uid="uid://5y1acxl4j4n7" path="res://Items/Weapons/Pugio.tscn" id="22_mqpn7"] [ext_resource type="PackedScene" uid="uid://d1d4vg7we5rjr" path="res://Items/Weapons/Shotgun.tscn" id="22_rmciq"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_h78y7"] shader = ExtResource("2_ngsgt") 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] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("%Sprites/Node2D/Character:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [0] } [sub_resource type="Animation" id="Animation_xt1sg"] resource_name = "emote" length = 2.12501 loop_mode = 1 step = 0.125 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.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1, 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875, 2), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 1, "values": [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34] } [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"), "emote": SubResource("Animation_xt1sg"), "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("8_m08fh") } [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_lrnca"] [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_852jj"] particle_flag_disable_z = true spread = 180.0 gravity = Vector3(0, 0, 0) initial_velocity_min = 8.0 initial_velocity_max = 16.0 orbit_velocity_min = 0.0 orbit_velocity_max = 0.0 linear_accel_min = -32.0 linear_accel_max = -16.0 scale_min = 0.1 scale_max = 0.1 [sub_resource type="CanvasTexture" id="CanvasTexture_pited"] diffuse_texture = ExtResource("9_7gumm") [sub_resource type="RectangleShape2D" id="RectangleShape2D_bfqew"] size = Vector2(12, 8) [sub_resource type="LabelSettings" id="LabelSettings_q5h1n"] font_size = 24 [sub_resource type="RectangleShape2D" id="RectangleShape2D_cjk6b"] size = Vector2(8, 8) [sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_7482j"] closed = false polygon = PackedVector2Array(-3, 0, 2, 0) [node name="Player" type="CharacterBody2D" node_paths=PackedStringArray("Camera", "DirectionMarker", "Sprite", "Inventory", "StateMachine", "Hurtbox")] y_sort_enabled = true texture_filter = 3 material = SubResource("ShaderMaterial_h78y7") collision_layer = 6 collision_mask = 17 script = ExtResource("1_flygr") Camera = NodePath("Camera2D") DirectionMarker = NodePath("Direction2D") Speed = 80.0 HandTexture = ExtResource("3_3dqh7") Sprite = NodePath("Sprites/Node2D/Character") Inventory = NodePath("Inventory") StateMachine = NodePath("StateMachine") Hurtbox = NodePath("Hurtbox") Faction = 1 [node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")] script = ExtResource("5_rgckv") InitialState = NodePath("Idle") Character = NodePath("..") [node name="Idle" type="Node" parent="StateMachine" node_paths=PackedStringArray("MoveState", "EmoteState", "IdleState", "Character")] script = ExtResource("6_wkfdm") MoveState = NodePath("../Move") EmoteState = NodePath("../Emote") IdleState = NodePath(".") Character = NodePath("../..") [node name="Move" type="Node" parent="StateMachine" node_paths=PackedStringArray("RollState", "DashState", "IdleState", "Character")] script = ExtResource("7_dfqd8") RollState = NodePath("../Roll") DashState = NodePath("../Dash") IdleState = NodePath("../Idle") Character = NodePath("../..") [node name="Dash" type="Node" parent="StateMachine" node_paths=PackedStringArray("IdleState", "Character")] script = ExtResource("6_rft7p") 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("8_fy0v5") IdleState = NodePath("../Idle") Character = NodePath("../..") [node name="Emote" type="Node" parent="StateMachine" node_paths=PackedStringArray("IdleState", "Character")] script = ExtResource("8_hd2lw") IdleState = NodePath("../Idle") Character = NodePath("../..") [node name="Animations" type="Node" parent="."] unique_name_in_owner = true script = ExtResource("7_sdgvb") [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_g42dl") } [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_lrnca") parameters/conditions/idle = false parameters/conditions/move = false parameters/conditions/roll = false [node name="Effects" type="Node2D" parent="."] unique_name_in_owner = true [node name="RollParticles" type="GPUParticles2D" parent="Effects"] emitting = false amount = 16 process_material = SubResource("ParticleProcessMaterial_852jj") texture = ExtResource("9_7gumm") lifetime = 0.8 [node name="DeathParticles" type="GPUParticles2D" parent="Effects"] emitting = false amount = 32 process_material = ExtResource("10_agw51") texture = SubResource("CanvasTexture_pited") lifetime = 2.0 one_shot = true preprocess = 0.1 explosiveness = 0.9 [node name="HurtParticles" type="GPUParticles2D" parent="Effects"] emitting = false amount = 32 process_material = ExtResource("8_yf112") texture = ExtResource("9_7gumm") lifetime = 1.5 one_shot = true preprocess = 0.1 explosiveness = 0.9 [node name="DeathCry" type="AudioStreamPlayer2D" parent="Effects"] stream = ExtResource("12_vd7j4") volume_db = 2.0 [node name="Footstep" type="AudioStreamPlayer2D" parent="Effects"] stream = ExtResource("13_bxguv") [node name="HurtSound" type="AudioStreamPlayer2D" parent="Effects"] stream = ExtResource("12_vvem5") [node name="Camera2D" parent="." instance=ExtResource("4_ym125")] zoom = Vector2(4, 4) limit_smoothed = true position_smoothing_speed = 8.0 [node name="Sprites" type="Node2D" parent="."] unique_name_in_owner = true 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("4_5vird") offset = Vector2(0, -4) hframes = 35 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(0, -4) shape = SubResource("RectangleShape2D_bfqew") [node name="Debug" type="Control" parent="."] visible = false layout_mode = 3 anchors_preset = 0 [node name="State" type="Label" parent="Debug"] layout_mode = 0 offset_left = -20.0 offset_top = -60.0 offset_right = 20.0 offset_bottom = -34.0 text = "lol" label_settings = SubResource("LabelSettings_q5h1n") horizontal_alignment = 1 [node name="Inventory" type="Node2D" parent="."] y_sort_enabled = true position = Vector2(0, -4) script = ExtResource("7_xyenu") InventoryMap = { "equip_1": 0, "equip_2": 1 } [node name="Sword" parent="Inventory" instance=ExtResource("22_mqpn7")] [node name="Shotgun" parent="Inventory" instance=ExtResource("22_rmciq")] [node name="Node2D" parent="Inventory" instance=ExtResource("7_4rxuv")] visible = false [node name="Railgun" parent="Inventory" instance=ExtResource("21_n8w32")] UseTime = 0.2 [node name="DocLance" parent="Inventory" instance=ExtResource("14_bj0lo")] [node name="Hurtbox" parent="." node_paths=PackedStringArray("InvincibilityTimer") instance=ExtResource("9_avyu4")] visible = false InvincibilityTimer = NodePath("Timer") Faction = 1 [node name="CollisionShape2D" parent="Hurtbox" index="0"] visible = false position = Vector2(0, 4) shape = SubResource("RectangleShape2D_cjk6b") [node name="Timer" type="Timer" parent="Hurtbox"] one_shot = true [node name="AudioListener2D" type="AudioListener2D" parent="."] visible = false current = true [node name="Direction2D" type="Marker2D" parent="."] position = Vector2(0, -4) [node name="InteractionRay" type="RayCast2D" parent="Direction2D"] target_position = Vector2(16, 0) collision_mask = 64 hit_from_inside = true collide_with_areas = true collide_with_bodies = false script = ExtResource("13_hs3u1") [node name="PointLight2D" type="PointLight2D" parent="."] visible = false position = Vector2(0, -8) blend_mode = 2 shadow_enabled = true shadow_filter = 2 shadow_filter_smooth = 3.0 texture = ExtResource("15_3hahh") height = 10.0 [node name="DamageTime" type="Node" parent="."] script = ExtResource("15_4xl06") [node name="LightOccluder2D" type="LightOccluder2D" parent="."] occluder = SubResource("OccluderPolygon2D_7482j") occluder_light_mask = 8 [editable path="Hurtbox"]