diff --git a/audio/sounds/msx_come_here.ogg b/audio/sounds/msx_come_here.ogg deleted file mode 100644 index cc67b80..0000000 Binary files a/audio/sounds/msx_come_here.ogg and /dev/null differ diff --git a/graphics/hud/levelselect_arrow.png b/graphics/hud/levelselect_arrow.png index 5351317..661237e 100644 Binary files a/graphics/hud/levelselect_arrow.png and b/graphics/hud/levelselect_arrow.png differ diff --git a/graphics/hud/msx_head.png b/graphics/hud/msx_head.png new file mode 100644 index 0000000..0ec7e71 Binary files /dev/null and b/graphics/hud/msx_head.png differ diff --git a/graphics/hud/msx_head.png.import b/graphics/hud/msx_head.png.import new file mode 100644 index 0000000..6f9b78f --- /dev/null +++ b/graphics/hud/msx_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_head.png-fdcdc2eae8f1ff9e51eb57e0483b2b2f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/msx_head.png" +dest_files=[ "res://.import/msx_head.png-fdcdc2eae8f1ff9e51eb57e0483b2b2f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/maps/station.tscn b/maps/station.tscn index 2b71d5a..c291424 100644 --- a/maps/station.tscn +++ b/maps/station.tscn @@ -267,7 +267,7 @@ position = Vector2( 712, 152 ) scale = Vector2( 1, 2 ) [node name="Button" parent="Environment" instance=ExtResource( 18 )] -position = Vector2( 72, 168 ) +position = Vector2( 736, 128 ) target_group = "cell" [node name="Button2" parent="Environment" instance=ExtResource( 18 )] @@ -275,7 +275,7 @@ position = Vector2( 312, 19 ) target_group = "yellow_star_laser" [node name="MsX" parent="Environment" groups=["cell"] instance=ExtResource( 22 )] -position = Vector2( 176, 158 ) +position = Vector2( 744, 158 ) [node name="Barrier" parent="Environment" instance=ExtResource( 23 )] position = Vector2( 424, 112 ) diff --git a/menus/credits.tscn b/menus/credits.tscn index 66270ec..506faa8 100644 --- a/menus/credits.tscn +++ b/menus/credits.tscn @@ -803,7 +803,6 @@ position = Vector2( 3584, 0 ) material = SubResource( 7 ) position = Vector2( 74, 69 ) frames = SubResource( 12 ) -frame = 1 playing = true script = ExtResource( 16 ) @@ -834,6 +833,7 @@ align = 1 material = SubResource( 8 ) position = Vector2( 106, 69 ) frames = SubResource( 18 ) +frame = 3 playing = true [node name="Label" type="Label" parent="Control/RollCall1/MsX"] @@ -936,6 +936,7 @@ align = 1 [node name="TheScrump" type="AnimatedSprite" parent="Control/RollCall2"] position = Vector2( 2992, 128 ) frames = SubResource( 27 ) +frame = 1 playing = true [node name="Label" type="Label" parent="Control/RollCall2/TheScrump"] @@ -952,7 +953,6 @@ align = 1 material = SubResource( 13 ) position = Vector2( 2880, 102 ) frames = SubResource( 30 ) -frame = 1 playing = true [node name="Label" type="Label" parent="Control/RollCall2/RollingFiend"] @@ -968,7 +968,6 @@ align = 1 [node name="ChipIt" type="AnimatedSprite" parent="Control/RollCall2"] position = Vector2( 2960, 62 ) frames = SubResource( 33 ) -frame = 1 playing = true [node name="Label" type="Label" parent="Control/RollCall2/ChipIt"] @@ -985,6 +984,7 @@ align = 1 material = SubResource( 34 ) position = Vector2( 3024, 62 ) frames = SubResource( 43 ) +frame = 3 playing = true [node name="Label" type="Label" parent="Control/RollCall2/Skelarcher"] @@ -1017,6 +1017,7 @@ align = 1 material = SubResource( 47 ) position = Vector2( 3016, 24 ) frames = SubResource( 50 ) +frame = 1 playing = true [node name="Label" type="Label" parent="Control/RollCall2/BioSlime"] @@ -1047,7 +1048,6 @@ position = Vector2( 4096, 0 ) [node name="Shedge" type="AnimatedSprite" parent="Control/RollCall3"] position = Vector2( 60, 25 ) frames = SubResource( 54 ) -frame = 1 playing = true [node name="Label" type="Label" parent="Control/RollCall3/Shedge"] @@ -1063,6 +1063,7 @@ align = 1 [node name="TheScrumpsTongue" type="AnimatedSprite" parent="Control/RollCall3"] position = Vector2( 156, 20 ) frames = SubResource( 57 ) +frame = 1 playing = true [node name="Label" type="Label" parent="Control/RollCall3/TheScrumpsTongue"] @@ -1108,7 +1109,7 @@ align = 1 material = SubResource( 71 ) position = Vector2( 72, 152 ) frames = SubResource( 80 ) -frame = 1 +frame = 4 playing = true [node name="Label" type="Label" parent="Control/RollCall3/Hellarcher"] @@ -1125,6 +1126,7 @@ align = 1 material = SubResource( 66 ) position = Vector2( 68, 104 ) frames = SubResource( 70 ) +frame = 2 playing = true [node name="Label" type="Label" parent="Control/RollCall3/Turchin"] @@ -1311,7 +1313,6 @@ align = 1 material = SubResource( 82 ) position = Vector2( 3362, 122.5 ) frames = SubResource( 87 ) -frame = 3 playing = true [node name="Label" type="Label" parent="Control/RollCall4/Famicop"] diff --git a/objects/hud/msx_off_level_indicator.tscn b/objects/hud/msx_off_level_indicator.tscn new file mode 100644 index 0000000..0723703 --- /dev/null +++ b/objects/hud/msx_off_level_indicator.tscn @@ -0,0 +1,210 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://graphics/hud/off_level_indicator.png" type="Texture" id=1] +[ext_resource path="res://graphics/hud/msx_head.png" type="Texture" id=2] + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Head:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ArrowR:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowL:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=3] +resource_name = "left" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Head:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ArrowL:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowL:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -11, 0 ), Vector2( -13, 0 ), Vector2( -11, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ArrowR:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=1] +resource_name = "onscreen" +tracks/0/type = "value" +tracks/0/path = NodePath("Head:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ArrowR:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowL:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=4] +resource_name = "right" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("ArrowR:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Head:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowR:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 11, 1 ), Vector2( 13, 1 ), Vector2( 11, 1 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ArrowL:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[node name="MsxOffLevelIndicator" type="Node2D"] + +[node name="Head" type="Sprite" parent="."] +visible = false +texture = ExtResource( 2 ) + +[node name="ArrowR" type="Sprite" parent="."] +visible = false +position = Vector2( 12.4551, 1 ) +rotation = 1.5708 +texture = ExtResource( 1 ) + +[node name="ArrowL" type="Sprite" parent="."] +visible = false +position = Vector2( -11.336, 0 ) +rotation = -1.5708 +texture = ExtResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 2 ) +anims/left = SubResource( 3 ) +anims/onscreen = SubResource( 1 ) +anims/right = SubResource( 4 ) diff --git a/objects/hud/off_level_indicator.tscn b/objects/hud/off_level_indicator.tscn index 48a3fad..bba10bf 100644 --- a/objects/hud/off_level_indicator.tscn +++ b/objects/hud/off_level_indicator.tscn @@ -38,7 +38,7 @@ texture = ExtResource( 4 ) script = ExtResource( 5 ) [node name="Arrow" type="Sprite" parent="."] -position = Vector2( 1, 3.9185 ) +position = Vector2( 1, 5 ) texture = ExtResource( 3 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] diff --git a/objects/npc/msx.gd b/objects/npc/msx.gd index 2d2b7ae..6c37c33 100644 --- a/objects/npc/msx.gd +++ b/objects/npc/msx.gd @@ -13,8 +13,7 @@ onready var respawn_raycast = $RespawnRaycast onready var shard_position = $Position2D onready var start_position = position onready var blink_timer = $BlinkTimer -onready var text_anim = $TextAnim -onready var cop_detector = $CopDetector +onready var text_anims = $TextAnim const shard = preload("res://objects/collectibles/shard.tscn") const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") #DIALOGUE @@ -26,6 +25,11 @@ const fucking_cop = preload("res://audio/sounds/msx_fucking_cop.ogg") const goddammit = preload("res://audio/sounds/msx_goddammit.ogg") const motherfucker = preload("res://audio/sounds/msx_motherfucker.ogg") const shit = preload("res://audio/sounds/msx_shit.ogg") +const death_sounds = [ + Audio.a_msx_die, + fuck, + shit +] func _ready(): raycast.add_exception($Hitbox) @@ -43,14 +47,14 @@ func _physics_process(delta): if raycast.get_collider().is_in_group("player_hitbox"): if first_lead == true: Audio.play_sound(help_me,Audio.ac_voice) - text_anim.play("help me") + text_anims.play("help me") first_lead = false is_moving = true velocity.y += 128 * delta velocity = move_and_slide_with_snap(velocity, Vector2.DOWN, Vector2.UP, true) #Anims if velocity.x == 0: - if !anims.get_current_animation() == "give" && !anims.get_current_animation() == "respawn" && !anims.get_current_animation() == "blink" && !anims.get_current_animation() == "come here" && !anims.get_current_animation() == "help me": anims.play("idle") + if !anims.get_current_animation() == "give" && !anims.get_current_animation() == "respawn" && !anims.get_current_animation() == "blink": anims.play("idle") else: anims.play("walk") #Stop at the end of path and give shard @@ -59,12 +63,10 @@ func _physics_process(delta): velocity.x = 0 if is_holding_shard: anims.play("give") - #Cop detector - if cop_detector.is_colliding(): - print(cop_detector.get_collider()) func spawn_shard(): Audio.play_sound(here_take_this,Audio.ac_voice) + text_anims.play("here take this") var ShardInstance = shard.instance() ShardInstance.global_position = Vector2(shard_position.global_position.x,shard_position.global_position.y) ShardInstance.number = 1 @@ -73,7 +75,7 @@ func spawn_shard(): func switch_action(): Audio.play_sound(come_here,Audio.ac_voice) - anims.play("come here") + text_anims.play("come here") func spray_blood(): for i in 16: @@ -92,7 +94,7 @@ func die(): death_particles.global_position = global_position death_particles.emitting = true spray_blood() - Audio.play_sound(Audio.a_msx_die,Audio.ac_die) + Audio.play_sound(death_sounds[randi() % death_sounds.size()],Audio.ac_voice) is_moving = false velocity.x = 0 position = start_position diff --git a/objects/npc/msx.tscn b/objects/npc/msx.tscn index 2ee78d0..d1fbdc5 100644 --- a/objects/npc/msx.tscn +++ b/objects/npc/msx.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=26 format=2] +[gd_scene load_steps=28 format=2] [ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] [ext_resource path="res://graphics/npc/msx_respawn.png" type="Texture" id=2] @@ -51,7 +51,7 @@ tracks/2/keys = { "values": [ 0 ] } tracks/3/type = "value" -tracks/3/path = NodePath("HereTakeThis:visible") +tracks/3/path = NodePath("Dialogue/HereTakeThis:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false @@ -63,7 +63,7 @@ tracks/3/keys = { "values": [ false ] } tracks/4/type = "value" -tracks/4/path = NodePath("ComeHere:visible") +tracks/4/path = NodePath("Dialogue/ComeHere:visible") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false @@ -75,7 +75,7 @@ tracks/4/keys = { "values": [ false ] } tracks/5/type = "value" -tracks/5/path = NodePath("HelpMe:visible") +tracks/5/path = NodePath("Dialogue/HelpMe:visible") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false @@ -169,7 +169,7 @@ tracks/2/keys = { "values": [ 0 ] } tracks/3/type = "value" -tracks/3/path = NodePath("ComeHere:visible") +tracks/3/path = NodePath("Dialogue/ComeHere:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false @@ -235,18 +235,6 @@ tracks/3/keys = { "method": "spawn_shard" } ] } -tracks/4/type = "value" -tracks/4/path = NodePath("HereTakeThis:visible") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0, 2.52 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 1, -"values": [ true, false ] -} [sub_resource type="Animation" id=20] resource_name = "help me" @@ -289,7 +277,7 @@ tracks/2/keys = { "values": [ 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3 ] } tracks/3/type = "value" -tracks/3/path = NodePath("ComeHere:visible") +tracks/3/path = NodePath("Dialogue/ComeHere:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false @@ -301,7 +289,7 @@ tracks/3/keys = { "values": [ false ] } tracks/4/type = "value" -tracks/4/path = NodePath("HelpMe:visible") +tracks/4/path = NodePath("Dialogue/HelpMe:visible") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false @@ -354,7 +342,7 @@ tracks/2/keys = { "values": [ 0 ] } tracks/3/type = "value" -tracks/3/path = NodePath("ComeHere:visible") +tracks/3/path = NodePath("Dialogue/ComeHere:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false @@ -467,7 +455,7 @@ _data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, [sub_resource type="Animation" id=21] length = 0.001 tracks/0/type = "value" -tracks/0/path = NodePath("HelpMe:visible") +tracks/0/path = NodePath("Dialogue/HelpMe:visible") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false @@ -478,18 +466,74 @@ tracks/0/keys = { "update": 1, "values": [ false ] } +tracks/1/type = "value" +tracks/1/path = NodePath("Dialogue/HereTakeThis:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Dialogue/ComeHere:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} -[sub_resource type="Animation" id=22] -resource_name = "help me" -length = 3.0 +[sub_resource type="Animation" id=23] +resource_name = "come here" +length = 1.5 tracks/0/type = "value" -tracks/0/path = NodePath("HelpMe:visible") +tracks/0/path = NodePath("Dialogue/ComeHere:visible") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 2.9 ), +"times": PoolRealArray( 0, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="Animation" id=22] +resource_name = "help me" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Dialogue/HelpMe:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="Animation" id=24] +resource_name = "here take this" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Dialogue/HereTakeThis:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ true, false ] @@ -575,7 +619,15 @@ __meta__ = { [node name="BlinkTimer" type="Timer" parent="."] -[node name="HereTakeThis" type="Label" parent="."] +[node name="TextAnim" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 21 ) +"anims/come here" = SubResource( 23 ) +"anims/help me" = SubResource( 22 ) +"anims/here take this" = SubResource( 24 ) + +[node name="Dialogue" type="Node2D" parent="."] + +[node name="HereTakeThis" type="Label" parent="Dialogue"] visible = false material = ExtResource( 6 ) margin_left = -48.0 @@ -586,35 +638,26 @@ theme = ExtResource( 5 ) text = "Here, take this" align = 1 -[node name="ComeHere" type="Label" parent="."] +[node name="ComeHere" type="Label" parent="Dialogue"] visible = false material = ExtResource( 6 ) -margin_left = -47.0 +margin_left = -96.0 margin_top = -22.0 -margin_right = 58.0 +margin_right = 9.0 margin_bottom = -8.0 theme = ExtResource( 5 ) text = "Hey, come here!" -[node name="HelpMe" type="Label" parent="."] +[node name="HelpMe" type="Label" parent="Dialogue"] visible = false material = ExtResource( 6 ) -margin_left = -41.0 +margin_left = -76.0 margin_top = -33.0 -margin_right = 43.0 +margin_right = 8.0 margin_bottom = -10.0 theme = ExtResource( 5 ) text = "Help me get outta here!" align = 1 -[node name="TextAnim" type="AnimationPlayer" parent="."] -anims/RESET = SubResource( 21 ) -"anims/help me" = SubResource( 22 ) - -[node name="CopDetector" type="RayCast2D" parent="."] -enabled = true -cast_to = Vector2( -135, 0 ) -collision_mask = 3 - [connection signal="timeout" from="BlinkTimer" to="." method="_on_BlinkTimer_timeout"]