[gd_scene load_steps=46 format=2] [ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] [ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=2] [ext_resource path="res://ui/theme.tres" type="Theme" id=3] [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] [ext_resource path="res://scripts/sg_palette.gd" type="Script" id=5] [ext_resource path="res://graphics/player/sg.png" type="Texture" id=6] [ext_resource path="res://tilesets/t_station.tres" type="TileSet" id=7] [ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=8] [ext_resource path="res://graphics/npc/fami_human.png" type="Texture" id=9] [ext_resource path="res://cutscenes/fami_cutscene.gd" type="Script" id=10] [ext_resource path="res://audio/sounds/fami_voice.ogg" type="AudioStream" id=11] [ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=12] [ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=13] [ext_resource path="res://graphics/enemy/cop/cop_walk.png" type="Texture" id=14] [ext_resource path="res://graphics/enemy/cop/cop_shoot.png" type="Texture" id=15] [ext_resource path="res://graphics/npc/fami_human_walk.png" type="Texture" id=16] [ext_resource path="res://graphics/npc/fami_human_punch.png" type="Texture" id=17] [ext_resource path="res://graphics/npc/fami_human_transform.png" type="Texture" id=18] [ext_resource path="res://objects/enemy/boss/fami_transform.material" type="Material" id=19] [ext_resource path="res://audio/sounds/absorb_shard.ogg" type="AudioStream" id=20] [ext_resource path="res://audio/sounds/shard_expel.ogg" type="AudioStream" id=21] [ext_resource path="res://audio/sounds/shard_float.ogg" type="AudioStream" id=22] [ext_resource path="res://audio/sounds/gun_cock.ogg" type="AudioStream" id=23] [sub_resource type="AtlasTexture" id=17] atlas = ExtResource( 18 ) region = Rect2( 42, 0, 14, 24 ) [sub_resource type="AtlasTexture" id=18] atlas = ExtResource( 18 ) region = Rect2( 56, 0, 14, 24 ) [sub_resource type="AtlasTexture" id=19] atlas = ExtResource( 18 ) region = Rect2( 70, 0, 14, 24 ) [sub_resource type="AtlasTexture" id=20] atlas = ExtResource( 18 ) region = Rect2( 0, 0, 14, 24 ) [sub_resource type="AtlasTexture" id=21] atlas = ExtResource( 18 ) region = Rect2( 14, 0, 14, 24 ) [sub_resource type="AtlasTexture" id=22] atlas = ExtResource( 18 ) region = Rect2( 28, 0, 14, 24 ) [sub_resource type="AtlasTexture" id=3] atlas = ExtResource( 16 ) region = Rect2( 0, 0, 14, 24 ) [sub_resource type="AtlasTexture" id=4] atlas = ExtResource( 16 ) region = Rect2( 14, 0, 14, 24 ) [sub_resource type="AtlasTexture" id=5] atlas = ExtResource( 16 ) region = Rect2( 28, 0, 14, 24 ) [sub_resource type="AtlasTexture" id=6] atlas = ExtResource( 16 ) region = Rect2( 42, 0, 14, 24 ) [sub_resource type="SpriteFrames" id=7] animations = [ { "frames": [ ExtResource( 9 ) ], "loop": true, "name": "idle", "speed": 5.0 }, { "frames": [ SubResource( 17 ), SubResource( 18 ), SubResource( 19 ) ], "loop": true, "name": "orb", "speed": 8.0 }, { "frames": [ ExtResource( 17 ) ], "loop": true, "name": "punch", "speed": 5.0 }, { "frames": [ SubResource( 20 ), SubResource( 21 ), SubResource( 22 ) ], "loop": false, "name": "shrink", "speed": 8.0 }, { "frames": [ SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ) ], "loop": true, "name": "walk", "speed": 5.0 } ] [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 1 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = true shader_param/palette = ExtResource( 2 ) [sub_resource type="Animation" id=16] length = 0.001 tracks/0/type = "value" tracks/0/path = NodePath("ShardRain:emitting") 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": [ false ] } tracks/1/type = "value" tracks/1/path = NodePath("ShardParticles:emitting") 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("FamiVoice:playing") 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 ] } tracks/3/type = "value" tracks/3/path = NodePath("FamiHuman:material:shader_param/background_color") 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": 0, "values": [ Color( 0.396078, 1, 1, 0 ) ] } tracks/4/type = "value" tracks/4/path = NodePath("FamiHuman:material:shader_param/arc_color") 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": 0, "values": [ Color( 0.345098, 0.74902, 0.878431, 0 ) ] } tracks/5/type = "value" tracks/5/path = NodePath("Label:text") 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": [ "" ] } tracks/6/type = "value" tracks/6/path = NodePath("FamiHuman:position") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 160, 167 ) ] } tracks/7/type = "value" tracks/7/path = NodePath("SgIdle:frame_coords") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/imported = false tracks/7/enabled = true tracks/7/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, 0 ) ] } tracks/8/type = "value" tracks/8/path = NodePath("SgIdle:flip_h") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/imported = false tracks/8/enabled = true tracks/8/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } tracks/9/type = "value" tracks/9/path = NodePath("FamiHuman:animation") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/imported = false tracks/9/enabled = true tracks/9/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ "idle" ] } tracks/10/type = "value" tracks/10/path = NodePath("Cop:position") tracks/10/interp = 1 tracks/10/loop_wrap = true tracks/10/imported = false tracks/10/enabled = true tracks/10/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( -8, 169 ) ] } [sub_resource type="Animation" id=2] resource_name = "cutscene" length = 93.0 tracks/0/type = "value" tracks/0/path = NodePath("Label:text") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0.25, 5.3, 13.2, 19.25, 28.75, 37.3, 46.8, 51.8, 58.3, 59.25, 78.75 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 2, "values": [ "Aha! so you've made it this far, however your efforts are all in vain.", "You see, SG, I plan to use the shards to power my spaceship, its exhaust will be so powerful, you peasants will all be vaporized. ", "Me and all of the wonderful billionaires of the world will head to planet X, the newly discovered planet beyond pluto.", "I've heard you want to start a revolution. Well, I'll have you know I kicked off my own revolution in 2068, and to be honest I don't quite see why you want my revolution to end.", "You know what they say, the freer the market, the freer the people, ever since then I've never felt so free! I think your revolution is a foolish pipe dream! ", "Adam Smith once said \"Nobody but a beggar chooses to depend chiefly upon the benevolence of his fellow citizens\", your commie society would never work!", "Oh? How will i reconstruct the Zircon Ultima? You're just the perfect tool for that. ", "While you've been on your gay little adventure collecting shards I've been waiting for this very moment to take them all from you!", "Have at you!", "", "" ] } tracks/1/type = "value" tracks/1/path = NodePath("FamiVoice:playing") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0.25, 78.75 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ true, false ] } tracks/2/type = "value" tracks/2/path = NodePath("Cop:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0.25, 59.25, 60.75 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 0, "values": [ Vector2( -8, 169 ), Vector2( -8, 169 ), Vector2( 72, 169 ) ] } tracks/3/type = "value" tracks/3/path = NodePath("Cop:animation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0, 59.25, 60.75 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 1, "values": [ "gun", "walk", "gun" ] } tracks/4/type = "value" tracks/4/path = NodePath("FamiHuman:animation") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0.25, 61.75, 63.75, 64.25, 69.75, 71.75, 75.75, 76.25 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 1, "values": [ "idle", "walk", "idle", "punch", "walk", "idle", "shrink", "orb" ] } tracks/5/type = "value" tracks/5/path = NodePath("FamiHuman:position") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "times": PoolRealArray( 0.25, 61.75, 63.75, 69.75, 71.75, 75.75, 77.75, 78.75 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 0, "values": [ Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 105, 167 ), Vector2( 105, 167 ), Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 160, 83 ) ] } tracks/6/type = "value" tracks/6/path = NodePath("ShardParticles:emitting") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "times": PoolRealArray( 0.5, 65.5, 70.75 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 1, "values": [ false, true, false ] } tracks/7/type = "value" tracks/7/path = NodePath("ShardRain:emitting") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/imported = false tracks/7/enabled = true tracks/7/keys = { "times": PoolRealArray( 0.25, 72.75, 75.75 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 1, "values": [ false, true, false ] } tracks/8/type = "value" tracks/8/path = NodePath("FamiHuman:material:shader_param/background_color") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/imported = false tracks/8/enabled = true tracks/8/keys = { "times": PoolRealArray( 0.25, 74.75, 75.75 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 0, "values": [ Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 1 ) ] } tracks/9/type = "value" tracks/9/path = NodePath("FamiHuman:material:shader_param/arc_color") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/imported = false tracks/9/enabled = true tracks/9/keys = { "times": PoolRealArray( 0.25, 74.75, 75.75 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 0, "values": [ Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 1 ) ] } tracks/10/type = "method" tracks/10/path = NodePath(".") tracks/10/interp = 1 tracks/10/loop_wrap = true tracks/10/imported = false tracks/10/enabled = true tracks/10/keys = { "times": PoolRealArray( 78.75 ), "transitions": PoolRealArray( 1 ), "values": [ { "args": [ "cutscene_finished" ], "method": "emit_signal" } ] } tracks/11/type = "value" tracks/11/path = NodePath("ShardAbsorb:playing") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/imported = false tracks/11/enabled = true tracks/11/keys = { "times": PoolRealArray( 0, 72.75 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ false, true ] } tracks/12/type = "value" tracks/12/path = NodePath("ShardExpel:playing") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/imported = false tracks/12/enabled = true tracks/12/keys = { "times": PoolRealArray( 0, 65.5 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ false, true ] } tracks/13/type = "value" tracks/13/path = NodePath("ShardFloat:playing") tracks/13/interp = 1 tracks/13/loop_wrap = true tracks/13/imported = false tracks/13/enabled = true tracks/13/keys = { "times": PoolRealArray( 0, 76.5 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ false, true ] } tracks/14/type = "value" tracks/14/path = NodePath("SgIdle:frame_coords") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/imported = false tracks/14/enabled = true tracks/14/keys = { "times": PoolRealArray( 0, 2.6, 2.7, 2.8, 8, 8.1, 8.2, 12.4, 12.5, 13, 17.1092, 17.2092, 18.3092, 25.8, 25.9, 27.9, 36.6, 36.7, 38.7, 41.4, 41.8, 42.2, 42.6, 44.3, 45, 45.5, 46, 46.5, 47.2, 47.7, 48.2, 48.8, 49.5, 50, 50.5, 51, 51.7, 52.2, 52.7, 53.3, 54, 54.5, 55, 55.5, 56.2, 56.7, 57.2, 57.8, 58.5, 59, 59.5, 60.2, 60.8, 61, 61.5, 61.6, 64.25, 71.75, 71.85, 71.975, 72.125, 73, 73.1 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03526, 1, 1, 1.03526, 1, 1.03526, 1, 1.03526, 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, 1, 1, 1, 1 ), "update": 1, "values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 0, 17 ), Vector2( 0, 0 ), Vector2( 0, 16 ), Vector2( 0, 0 ), Vector2( 0, 17 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 16 ), Vector2( 0, 0 ) ] } tracks/15/type = "value" tracks/15/path = NodePath("SgIdle:flip_h") tracks/15/interp = 1 tracks/15/loop_wrap = true tracks/15/imported = false tracks/15/enabled = true tracks/15/keys = { "times": PoolRealArray( 0, 61.5, 61.6, 73 ), "transitions": PoolRealArray( 1, 1, 1, 1 ), "update": 1, "values": [ false, false, true, false ] } tracks/16/type = "method" tracks/16/path = NodePath(".") tracks/16/interp = 1 tracks/16/loop_wrap = true tracks/16/imported = false tracks/16/enabled = true tracks/16/keys = { "times": PoolRealArray( 64.25, 65.5 ), "transitions": PoolRealArray( 1, 1 ), "values": [ { "args": [ ], "method": "stop_music" }, { "args": [ ], "method": "play_rumble_intro" } ] } tracks/17/type = "value" tracks/17/path = NodePath("GunCock:playing") tracks/17/interp = 1 tracks/17/loop_wrap = true tracks/17/imported = false tracks/17/enabled = true tracks/17/keys = { "times": PoolRealArray( -0.1, 60.5 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ false, true ] } [sub_resource type="ShaderMaterial" id=8] shader = ExtResource( 12 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = true [sub_resource type="AtlasTexture" id=9] atlas = ExtResource( 14 ) region = Rect2( 0, 0, 20, 21 ) [sub_resource type="AtlasTexture" id=10] atlas = ExtResource( 14 ) region = Rect2( 20, 0, 20, 21 ) [sub_resource type="AtlasTexture" id=11] atlas = ExtResource( 14 ) region = Rect2( 40, 0, 20, 21 ) [sub_resource type="AtlasTexture" id=12] atlas = ExtResource( 14 ) region = Rect2( 60, 0, 20, 21 ) [sub_resource type="SpriteFrames" id=13] animations = [ { "frames": [ ExtResource( 15 ) ], "loop": true, "name": "gun", "speed": 5.0 }, { "frames": [ SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ) ], "loop": true, "name": "walk", "speed": 10.0 } ] [sub_resource type="ShaderMaterial" id=14] shader = ExtResource( 12 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = false [sub_resource type="ShaderMaterial" id=15] shader = ExtResource( 12 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = false [node name="FamiCutscene" type="Node2D"] script = ExtResource( 10 ) cutscene_skip = 78.75 [node name="TileMap" type="TileMap" parent="."] tile_set = ExtResource( 7 ) cell_size = Vector2( 8, 8 ) format = 1 [node name="TileMap" type="TileMap" parent="TileMap"] tile_set = ExtResource( 8 ) cell_size = Vector2( 8, 8 ) format = 1 [node name="Label" type="Label" parent="."] material = ExtResource( 4 ) margin_left = 16.0 margin_top = 48.0 margin_right = 240.0 margin_bottom = 136.0 theme = ExtResource( 3 ) align = 1 valign = 1 autowrap = true [node name="FamiHuman" type="AnimatedSprite" parent="."] material = ExtResource( 19 ) position = Vector2( 160, 167 ) rotation = 3.14159 scale = Vector2( 1, -1 ) frames = SubResource( 7 ) animation = "idle" playing = true [node name="SgIdle" type="Sprite" parent="."] material = SubResource( 1 ) position = Vector2( 97, 163 ) texture = ExtResource( 6 ) hframes = 8 vframes = 20 script = ExtResource( 5 ) [node name="FamiVoice" type="AudioStreamPlayer" parent="."] stream = ExtResource( 11 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "cutscene" playback_process_mode = 0 anims/RESET = SubResource( 16 ) anims/cutscene = SubResource( 2 ) [node name="Cop" type="AnimatedSprite" parent="."] material = SubResource( 8 ) position = Vector2( -8, 169 ) frames = SubResource( 13 ) animation = "gun" playing = true [node name="ShardParticles" type="CPUParticles2D" parent="."] material = SubResource( 14 ) position = Vector2( 97, 160 ) emitting = false amount = 72 lifetime = 2.5 texture = ExtResource( 13 ) direction = Vector2( 0, -2 ) gravity = Vector2( 0, 42 ) initial_velocity = 250.0 initial_velocity_random = 0.35 linear_accel = -30.19 [node name="ShardRain" type="CPUParticles2D" parent="."] material = SubResource( 15 ) position = Vector2( 163, -4 ) emitting = false amount = 72 lifetime = 2.0 texture = ExtResource( 13 ) direction = Vector2( 0, 1 ) initial_velocity = 18.0 angular_velocity = 2.5 [node name="ShardAbsorb" type="AudioStreamPlayer" parent="."] stream = ExtResource( 20 ) volume_db = -10.0 [node name="ShardFloat" type="AudioStreamPlayer" parent="."] stream = ExtResource( 22 ) volume_db = -10.0 [node name="ShardExpel" type="AudioStreamPlayer" parent="."] stream = ExtResource( 21 ) volume_db = -10.0 [node name="GunCock" type="AudioStreamPlayer" parent="."] stream = ExtResource( 23 ) volume_db = -10.0