[gd_scene load_steps=26 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] [ext_resource path="res://graphics/npc/msx_walk.png" type="Texture" id=3] [ext_resource path="res://graphics/npc/msx_blink.png" type="Texture" id=4] [ext_resource path="res://ui/theme.tres" type="Theme" id=5] [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] [ext_resource path="res://graphics/npc/msx_idle.png" type="Texture" id=11] [ext_resource path="res://scripts/snap_sprite.gd" type="Script" id=12] [ext_resource path="res://objects/npc/msx.gd" type="Script" id=13] [ext_resource path="res://graphics/particles/blood.png" type="Texture" id=14] [ext_resource path="res://graphics/npc/msx_give.png" type="Texture" id=15] [sub_resource type="Animation" id=16] length = 0.001 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:texture") 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": 0, "values": [ ExtResource( 15 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:hframes") 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": 0, "values": [ 2 ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:frame") 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": 0, "values": [ 0 ] } tracks/3/type = "value" tracks/3/path = NodePath("HereTakeThis: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 ] } tracks/4/type = "value" tracks/4/path = NodePath("ComeHere:visible") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } tracks/5/type = "value" tracks/5/path = NodePath("HelpMe:visible") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } [sub_resource type="Animation" id=18] resource_name = "blink" length = 0.7 step = 0.06 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:texture") 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": [ ExtResource( 4 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:hframes") 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": [ 4 ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0, 0.12, 0.24, 0.54, 0.66 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1 ), "update": 1, "values": [ 0, 1, 2, 3, 0 ] } [sub_resource type="Animation" id=19] resource_name = "come here" length = 4.0 step = 0.06 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:texture") 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": [ ExtResource( 11 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:hframes") 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": [ 1 ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:frame") 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": [ 0 ] } tracks/3/type = "value" tracks/3/path = NodePath("ComeHere:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0.06, 2.52 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ true, false ] } [sub_resource type="Animation" id=15] resource_name = "give" length = 4.0 step = 0.06 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:texture") 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": [ ExtResource( 15 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:hframes") 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": [ 2 ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0, 0.18, 0.48 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 1, "values": [ 0, 1, 0 ] } tracks/3/type = "method" tracks/3/path = NodePath(".") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0.18 ), "transitions": PoolRealArray( 1 ), "values": [ { "args": [ ], "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" length = 3.0 loop = true tracks/0/type = "value" tracks/0/path = NodePath("Sprite:texture") 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": [ ExtResource( 3 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:hframes") 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": [ 4 ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 1, "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/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0.1 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } tracks/4/type = "value" tracks/4/path = NodePath("HelpMe:visible") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0.1, 2.9 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ true, false ] } [sub_resource type="Animation" id=4] resource_name = "idle" length = 0.001 step = 0.06 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:texture") 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": [ ExtResource( 11 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:hframes") 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": [ 1 ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:frame") 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": [ 0 ] } tracks/3/type = "value" tracks/3/path = NodePath("ComeHere:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0.06 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } [sub_resource type="Animation" id=17] resource_name = "respawn" length = 0.4 step = 0.05 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 1, "values": [ 0, 1, 2, 3, 4, 5, 6, 7 ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:texture") 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": [ ExtResource( 2 ) ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:hframes") 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": [ 8 ] } [sub_resource type="Animation" id=9] resource_name = "walk" length = 0.4 loop = true tracks/0/type = "value" tracks/0/path = NodePath("Sprite:texture") 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": [ ExtResource( 3 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:hframes") 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": [ 4 ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), "transitions": PoolRealArray( 1, 1, 1, 1 ), "update": 1, "values": [ 0, 1, 2, 3 ] } [sub_resource type="ShaderMaterial" id=10] resource_local_to_scene = true shader = ExtResource( 1 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = true [sub_resource type="RectangleShape2D" id=11] extents = Vector2( 2.5, 5 ) [sub_resource type="CapsuleShape2D" id=14] radius = 2.5 height = 5.0 [sub_resource type="Curve" id=13] _data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] [sub_resource type="Animation" id=21] length = 0.001 tracks/0/type = "value" tracks/0/path = NodePath("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 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } [sub_resource type="Animation" id=22] resource_name = "help me" length = 3.0 tracks/0/type = "value" tracks/0/path = NodePath("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, 2.9 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ true, false ] } [node name="MsX" type="KinematicBody2D"] script = ExtResource( 13 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "idle" anims/RESET = SubResource( 16 ) anims/blink = SubResource( 18 ) "anims/come here" = SubResource( 19 ) anims/give = SubResource( 15 ) "anims/help me" = SubResource( 20 ) anims/idle = SubResource( 4 ) anims/respawn = SubResource( 17 ) anims/walk = SubResource( 9 ) [node name="Sprite" type="Sprite" parent="."] material = SubResource( 10 ) scale = Vector2( -1, 1 ) texture = ExtResource( 15 ) hframes = 2 region_rect = Rect2( 0, 0, 20, 20 ) script = ExtResource( 12 ) [node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox", "msx", "player_hitbox"]] position = Vector2( 0, 3 ) collision_layer = 11 collision_mask = 33 [node name="CollisionShape2D2" type="CollisionShape2D" parent="Hitbox"] position = Vector2( 0.5, 2 ) shape = SubResource( 11 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2( 0.5, 5 ) shape = SubResource( 14 ) [node name="DeathSplatter" type="CPUParticles2D" parent="."] pause_mode = 2 emitting = false amount = 16 lifetime = 0.3 one_shot = true explosiveness = 0.9 local_coords = false texture = ExtResource( 14 ) emission_shape = 2 emission_rect_extents = Vector2( 4, 4 ) direction = Vector2( 0, -1 ) spread = 180.0 gravity = Vector2( 0, 50 ) initial_velocity = 60.0 initial_velocity_random = 0.9 damping = 2.0 angle = 720.0 angle_random = 1.0 scale_amount = 0.5 scale_amount_random = 1.0 scale_amount_curve = SubResource( 13 ) [node name="RayCast2D" type="RayCast2D" parent="."] position = Vector2( 0, 1 ) enabled = true cast_to = Vector2( -32, 0 ) collision_mask = 3 collide_with_areas = true [node name="RespawnRaycast" type="RayCast2D" parent="."] position = Vector2( -16, 0 ) enabled = true cast_to = Vector2( -56, 0 ) collision_mask = 8 collide_with_areas = true [node name="Position2D" type="Position2D" parent="."] position = Vector2( -17, 2 ) __meta__ = { "_gizmo_extents_": 0.0 } [node name="BlinkTimer" type="Timer" parent="."] [node name="HereTakeThis" type="Label" parent="."] visible = false material = ExtResource( 6 ) margin_left = -48.0 margin_top = -22.0 margin_right = 57.0 margin_bottom = 1.0 theme = ExtResource( 5 ) text = "Here, take this" align = 1 [node name="ComeHere" type="Label" parent="."] visible = false material = ExtResource( 6 ) margin_left = -47.0 margin_top = -22.0 margin_right = 58.0 margin_bottom = -8.0 theme = ExtResource( 5 ) text = "Hey, come here!" [node name="HelpMe" type="Label" parent="."] visible = false material = ExtResource( 6 ) margin_left = -41.0 margin_top = -33.0 margin_right = 43.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"]