[gd_scene load_steps=47 format=3 uid="uid://d2skjvvx6fal0"] [ext_resource type="Script" path="res://Characters/Doc.cs" id="2_3elet"] [ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_5jxom"] [ext_resource type="Texture2D" uid="uid://baiuqgrqipppt" path="res://Assets/Sprites/Characters/doc.png" id="3_rs44f"] [ext_resource type="Script" path="res://State/Character/CharacterStateMachine.cs" id="3_t5jjc"] [ext_resource type="Script" path="res://State/Character/NPCIdleState.cs" id="4_b35px"] [ext_resource type="Script" path="res://State/Character/NPCMoveState.cs" id="5_pejsd"] [ext_resource type="Script" path="res://State/NPC/NPCStateMachine.cs" id="6_kjpug"] [ext_resource type="Script" path="res://State/NPC/Doc/DocTelegraphState.cs" id="7_tfwbh"] [ext_resource type="PackedScene" uid="uid://cjgxyhgcyvsv7" path="res://BoundingBoxes/Hurtbox.tscn" id="7_tnve0"] [ext_resource type="Script" path="res://State/NPC/Doc/DocShungiteDartState.cs" id="8_1hoax"] [ext_resource type="Script" path="res://Items/Inventory.cs" id="8_r8ejq"] [ext_resource type="Script" path="res://State/NPC/Doc/DocExitState.cs" id="9_6com1"] [ext_resource type="PackedScene" uid="uid://1tiswf3gtyvv" path="res://Entities/ShungiteSpike.tscn" id="9_7kavk"] [ext_resource type="AudioStream" uid="uid://k6kpdj1kv0jg" path="res://Assets/Sounds/splat.ogg" id="9_stm0e"] [ext_resource type="Script" path="res://State/NPC/Doc/DocShungiteSpikeState.cs" id="10_bgs6o"] [ext_resource type="PackedScene" uid="uid://cqx56u46g2c16" path="res://Entities/CompactDisc.tscn" id="11_23p3o"] [ext_resource type="Script" path="res://State/NPC/Doc/DocChooseAttackState.cs" id="12_45x13"] [ext_resource type="Script" path="res://State/NPC/Doc/DocUnwantedFrequencyState.cs" id="12_d51jv"] [ext_resource type="PackedScene" uid="uid://1y5r6sklwgrp" path="res://Entities/UnwantedFrequency.tscn" id="13_lpj21"] [ext_resource type="Script" path="res://Utils/AnimationManager.cs" id="16_bsvls"] [ext_resource type="Texture2D" uid="uid://bd8l8kafb42dt" path="res://Assets/Sprites/Particles/circle.png" id="16_x277j"] [ext_resource type="Material" uid="uid://bat28samf7ukd" path="res://Assets/Sprites/Particles/NPCDamageProcessMaterial.tres" id="17_iomdx"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_7n7iy"] resource_local_to_scene = true shader = ExtResource("2_5jxom") shader_parameter/color = Quaternion(1, 1, 1, 1) shader_parameter/intensity = 0.0 [sub_resource type="Animation" id="Animation_7ay6e"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprite: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_px7yx"] 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("../Sprite: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_a7sk6"] 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("../Sprite: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] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_1xv7m"] _data = { "RESET": SubResource("Animation_7ay6e"), "idle": SubResource("Animation_px7yx"), "move": SubResource("Animation_a7sk6") } [sub_resource type="Animation" id="Animation_dbist"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Effects/UnwantedFrequenciesParticles:emitting") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [false] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("../Sprite:frame") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [0] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("../Sprite:scale") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(1, 1)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("../Sprite:modulate") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Color(1, 1, 1, 1)] } [sub_resource type="Animation" id="Animation_7oukw"] resource_name = "enter_in" length = 0.5 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprite:scale") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.4), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [Vector2(2, 0.5), Vector2(1, 1)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("../Sprite:modulate") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.5), "transitions": PackedFloat32Array(2, 1), "update": 0, "values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.5)] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("../Sprite:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [0] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("../Effects/UnwantedFrequenciesParticles:emitting") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [false] } [sub_resource type="Animation" id="Animation_j3s0y"] resource_name = "exit_out" length = 0.5 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprite:scale") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.4), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [Vector2(1, 1), Vector2(2, 0.5)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("../Sprite:modulate") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.5), "transitions": PackedFloat32Array(1, 2), "update": 0, "values": [Color(1, 1, 1, 0.5), Color(1, 1, 1, 0)] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("../Sprite:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [0] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("../Effects/UnwantedFrequenciesParticles:emitting") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [false] } [sub_resource type="Animation" id="Animation_8dhub"] resource_name = "shungite_spike" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [15] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("../Sprite:scale") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.1, 0.2, 0.3), "transitions": PackedFloat32Array(2, 5, 5, 5), "update": 0, "values": [Vector2(1.5, 0.75), Vector2(1, 1), Vector2(0.75, 1.5), Vector2(1, 1)] } [sub_resource type="Animation" id="Animation_qggcf"] resource_name = "unwanted_frequencies" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("../Effects/UnwantedFrequenciesParticles:emitting") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 1), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [true, false] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("../Sprite:frame") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 1, "values": [8, 9, 10, 11, 12, 13, 14, 8, 9] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("../Sprite:scale") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0, 0.1), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [Vector2(1.5, 0.75), Vector2(1, 1)] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_rpply"] _data = { "RESET": SubResource("Animation_dbist"), "enter_in": SubResource("Animation_7oukw"), "exit_out": SubResource("Animation_j3s0y"), "shungite_spike": SubResource("Animation_8dhub"), "unwanted_frequencies": SubResource("Animation_qggcf") } [sub_resource type="Animation" id="Animation_k6l16"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath(".:material:shader_parameter/intensity") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Effects/HurtParticles:emitting") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [false] } [sub_resource type="Animation" id="Animation_dxevc"] resource_name = "hurt" length = 0.6 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath(".:material:shader_parameter/intensity") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6), "transitions": PackedFloat32Array(4, 4, 4, 4, 4, 4, 4), "update": 0, "values": [0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Effects/HurtParticles:emitting") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.1), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [true, false] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_xe5eq"] _data = { "RESET": SubResource("Animation_k6l16"), "hurt": SubResource("Animation_dxevc") } [sub_resource type="Gradient" id="Gradient_lcoxi"] offsets = PackedFloat32Array(0.37037, 0.651852) colors = PackedColorArray(0.367549, 0.894801, 1, 1, 0.992095, 0.364069, 1, 1) [sub_resource type="GradientTexture1D" id="GradientTexture1D_5606i"] gradient = SubResource("Gradient_lcoxi") [sub_resource type="Gradient" id="Gradient_pikjh"] offsets = PackedFloat32Array(0.533333, 1) colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0) [sub_resource type="GradientTexture1D" id="GradientTexture1D_pjeh8"] gradient = SubResource("Gradient_pikjh") [sub_resource type="Curve" id="Curve_x3x4q"] _data = [Vector2(0, 0.463636), 0.0, 0.0, 0, 0, Vector2(0.325301, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] point_count = 3 [sub_resource type="CurveTexture" id="CurveTexture_ssoms"] curve = SubResource("Curve_x3x4q") [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_s1tqp"] emission_shape = 3 emission_box_extents = Vector3(8, 1, 1) particle_flag_disable_z = true direction = Vector3(0, -1, 0) spread = 0.0 gravity = Vector3(0, 0, 0) initial_velocity_min = 32.0 initial_velocity_max = 64.0 orbit_velocity_min = 0.0 orbit_velocity_max = 0.0 scale_max = 1.5 scale_curve = SubResource("CurveTexture_ssoms") color_ramp = SubResource("GradientTexture1D_pjeh8") color_initial_ramp = SubResource("GradientTexture1D_5606i") [sub_resource type="CanvasTexture" id="CanvasTexture_hs7xn"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_uict5"] size = Vector2(11, 5) [sub_resource type="RectangleShape2D" id="RectangleShape2D_8lxmf"] size = Vector2(16, 19) [node name="Doc" type="CharacterBody2D" node_paths=PackedStringArray("BossStateMachine", "Sprite", "Inventory", "StateMachine", "Hurtbox")] y_sort_enabled = true texture_filter = 3 material = SubResource("ShaderMaterial_7n7iy") collision_layer = 10 collision_mask = 17 script = ExtResource("2_3elet") BossStateMachine = NodePath("BossStateMachine") Health = 1000.0 Sprite = NodePath("Sprite") Inventory = NodePath("Inventory") StateMachine = NodePath("StateMachine") Hurtbox = NodePath("Hurtbox") [node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")] script = ExtResource("3_t5jjc") InitialState = NodePath("Idle") Character = NodePath("..") [node name="Idle" type="Node" parent="StateMachine" node_paths=PackedStringArray("MoveState", "Character")] script = ExtResource("4_b35px") MoveState = NodePath("../Move") Character = NodePath("../..") [node name="Move" type="Node" parent="StateMachine" node_paths=PackedStringArray("IdleState", "Character")] script = ExtResource("5_pejsd") IdleState = NodePath("../Idle") Character = NodePath("../..") [node name="BossStateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState")] script = ExtResource("6_kjpug") InitialState = NodePath("Telegraph") [node name="Telegraph" type="Node" parent="BossStateMachine" node_paths=PackedStringArray("TelegraphAnimationPlayer", "AttackState", "NPC")] script = ExtResource("7_tfwbh") TelegraphAnimationPlayer = NodePath("../../Animations/Telegraph") AttackState = NodePath("../ChooseAttack") NPC = NodePath("../..") [node name="Dart" type="Node" parent="BossStateMachine" node_paths=PackedStringArray("ChooseAttackState", "Doc", "NPC")] script = ExtResource("8_1hoax") Duration = 8.0 AttackDuration = 1.0 Projectile = ExtResource("11_23p3o") ChooseAttackState = NodePath("../ChooseAttack") Doc = NodePath("../..") NPC = NodePath("../..") [node name="Spike" type="Node" parent="BossStateMachine" node_paths=PackedStringArray("ChooseAttackState", "Doc", "NPC")] script = ExtResource("10_bgs6o") Duration = 4.0 AttackDuration = 1.0 Projectile = ExtResource("9_7kavk") ChooseAttackState = NodePath("../ChooseAttack") Doc = NodePath("../..") NPC = NodePath("../..") [node name="UnwantedFrequency" type="Node" parent="BossStateMachine" node_paths=PackedStringArray("ChooseAttackState", "Doc", "NPC")] script = ExtResource("12_d51jv") Duration = 4.0 AttackDuration = 1.0 Projectile = ExtResource("13_lpj21") ChooseAttackState = NodePath("../ChooseAttack") Doc = NodePath("../..") NPC = NodePath("../..") [node name="ChooseAttack" type="Node" parent="BossStateMachine" node_paths=PackedStringArray("DartState", "SpikeState", "UnwantedFrequencyState", "ExitState", "NPC")] script = ExtResource("12_45x13") DartState = NodePath("../Dart") SpikeState = NodePath("../Spike") UnwantedFrequencyState = NodePath("../UnwantedFrequency") ExitState = NodePath("../Exit") NPC = NodePath("../..") [node name="Exit" type="Node" parent="BossStateMachine" node_paths=PackedStringArray("TelegraphAnimationPlayer", "TelegraphState", "NPC")] script = ExtResource("9_6com1") TelegraphAnimationPlayer = NodePath("../../Animations/Telegraph") TelegraphState = NodePath("../Telegraph") NPC = NodePath("../..") [node name="Animations" type="Node" parent="."] script = ExtResource("16_bsvls") [node name="Movement" type="AnimationPlayer" parent="Animations"] libraries = { "": SubResource("AnimationLibrary_1xv7m") } [node name="Telegraph" type="AnimationPlayer" parent="Animations"] libraries = { "": SubResource("AnimationLibrary_rpply") } [node name="Hurt" type="AnimationPlayer" parent="Animations"] root_node = NodePath("../..") libraries = { "": SubResource("AnimationLibrary_xe5eq") } [node name="Effects" type="Node2D" parent="."] [node name="UnwantedFrequenciesParticles" type="GPUParticles2D" parent="Effects"] emitting = false process_material = SubResource("ParticleProcessMaterial_s1tqp") texture = SubResource("CanvasTexture_hs7xn") lifetime = 0.5 trail_enabled = true trail_sections = 4 [node name="HurtParticles" type="GPUParticles2D" parent="Effects"] position = Vector2(0, -8) emitting = false process_material = ExtResource("17_iomdx") texture = ExtResource("16_x277j") lifetime = 0.4 one_shot = true explosiveness = 1.0 [node name="Sprite" type="Sprite2D" parent="."] y_sort_enabled = true use_parent_material = true texture = ExtResource("3_rs44f") offset = Vector2(0, -8) hframes = 16 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(-0.5, -1.5) shape = SubResource("RectangleShape2D_uict5") [node name="Hurtbox" parent="." instance=ExtResource("7_tnve0")] position = Vector2(0, -4) Faction = 2 [node name="CollisionShape2D" parent="Hurtbox" index="0"] position = Vector2(0, -3.5) shape = SubResource("RectangleShape2D_8lxmf") [node name="Inventory" type="Node2D" parent="."] y_sort_enabled = true script = ExtResource("8_r8ejq") Items = Array[Node2D]([]) [node name="HurtSound" type="AudioStreamPlayer2D" parent="."] stream = ExtResource("9_stm0e") [editable path="Hurtbox"]