more cutscene work

This commit is contained in:
pennyrigate 2023-11-21 18:12:29 -05:00
parent c45c9120c8
commit a9be4be0d1
16 changed files with 485 additions and 45 deletions

View file

@ -0,0 +1,68 @@
[gd_scene load_steps=15 format=2]
[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1]
[ext_resource path="res://tilesets/t_grass.tres" type="TileSet" id=2]
[ext_resource path="res://graphics/pong/pong.png" type="Texture" id=3]
[ext_resource path="res://maps/boss/boss2_arena.gd" type="Script" id=4]
[ext_resource path="res://graphics/backgrounds/hills.png" type="Texture" id=5]
[ext_resource path="res://graphics/npc/msx_future.png" type="Texture" id=6]
[ext_resource path="res://graphics/npc/speccy_future.png" type="Texture" id=7]
[ext_resource path="res://graphics/npc/sg_future.png" type="Texture" id=8]
[ext_resource path="res://graphics/ending/picnic_table.png" type="Texture" id=9]
[ext_resource path="res://graphics/npc/sms.png" type="Texture" id=10]
[ext_resource path="res://objects/lore/boss/2600.tscn" type="PackedScene" id=11]
[ext_resource path="res://objects/lore/boss/dr_intelli.tscn" type="PackedScene" id=12]
[ext_resource path="res://audio/music/klystron_vip.ogg" type="AudioStream" id=13]
[sub_resource type="ShaderMaterial" id=1]
shader = ExtResource( 1 )
shader_param/border_color = Color( 0, 0, 0, 1 )
shader_param/border_corners = true
[node name="Map" type="Node2D" groups=["map"]]
pause_mode = 1
script = ExtResource( 4 )
music = ExtResource( 13 )
lore_entries = [ ExtResource( 11 ), ExtResource( 12 ) ]
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 128, 96 )
z_index = -2
texture = ExtResource( 5 )
__meta__ = {
"_edit_lock_": true
}
[node name="TileMap" type="TileMap" parent="."]
tile_set = ExtResource( 2 )
cell_size = Vector2( 8, 8 )
format = 1
tile_data = PoolIntArray( 1507327, 3, 1, 1441792, 3, 2, 1441793, 3, 2, 1441794, 3, 2, 1441795, 3, 2, 1441796, 3, 2, 1441797, 3, 2, 1441798, 3, 2, 1441799, 3, 2, 1441800, 3, 2, 1441801, 3, 2, 1441802, 3, 2, 1441803, 3, 2, 1441804, 3, 2, 1441805, 3, 2, 1441806, 3, 2, 1441807, 3, 2, 1441808, 3, 2, 1441809, 3, 2, 1441810, 3, 2, 1441811, 3, 2, 1441812, 3, 2, 1441813, 3, 2, 1441814, 3, 2, 1441815, 3, 2, 1441816, 3, 2, 1441817, 3, 2, 1441818, 3, 2, 1441819, 3, 2, 1441820, 3, 2, 1441821, 3, 2, 1441822, 3, 2, 1441823, 3, 2, 1441824, 3, 3, 1572863, 3, 65537, 1507328, 3, 65538, 1507329, 3, 65538, 1507330, 3, 65538, 1507331, 3, 65538, 1507332, 3, 65538, 1507333, 3, 65538, 1507334, 3, 65538, 1507335, 3, 65538, 1507336, 3, 65538, 1507337, 3, 65538, 1507338, 3, 65538, 1507339, 3, 65538, 1507340, 3, 65538, 1507341, 3, 65538, 1507342, 3, 65538, 1507343, 3, 65538, 1507344, 3, 65538, 1507345, 3, 65538, 1507346, 3, 65538, 1507347, 3, 65538, 1507348, 3, 65538, 1507349, 3, 65538, 1507350, 3, 65538, 1507351, 3, 65538, 1507352, 3, 65538, 1507353, 3, 65538, 1507354, 3, 65538, 1507355, 3, 65538, 1507356, 3, 65538, 1507357, 3, 65538, 1507358, 3, 65538, 1507359, 3, 65538, 1507360, 3, 65539, 1638399, 3, 131073, 1572864, 3, 131074, 1572865, 3, 131074, 1572866, 3, 131074, 1572867, 3, 131074, 1572868, 3, 131074, 1572869, 3, 131074, 1572870, 3, 131074, 1572871, 3, 131074, 1572872, 3, 131074, 1572873, 3, 131074, 1572874, 3, 131074, 1572875, 3, 131074, 1572876, 3, 131074, 1572877, 3, 131074, 1572878, 3, 131074, 1572879, 3, 131074, 1572880, 3, 131074, 1572881, 3, 131074, 1572882, 3, 131074, 1572883, 3, 131074, 1572884, 3, 131074, 1572885, 3, 131074, 1572886, 3, 131074, 1572887, 3, 131074, 1572888, 3, 131074, 1572889, 3, 131074, 1572890, 3, 131074, 1572891, 3, 131074, 1572892, 3, 131074, 1572893, 3, 131074, 1572894, 3, 131074, 1572895, 3, 131074, 1572896, 3, 131075 )
[node name="SgFuture" type="Sprite" parent="."]
position = Vector2( 96, 166 )
texture = ExtResource( 8 )
[node name="MsxFuture" type="Sprite" parent="."]
position = Vector2( 161, 166 )
scale = Vector2( -1, 1 )
texture = ExtResource( 6 )
[node name="SpeccyFuture" type="Sprite" parent="."]
position = Vector2( 176, 164 )
scale = Vector2( -1, 1 )
texture = ExtResource( 7 )
[node name="Sms" type="Sprite" parent="."]
position = Vector2( 80, 164 )
texture = ExtResource( 10 )
[node name="Pong" type="Sprite" parent="."]
material = SubResource( 1 )
position = Vector2( 64, 170 )
scale = Vector2( -1, 1 )
texture = ExtResource( 3 )
[node name="PicnicTable" type="Sprite" parent="."]
position = Vector2( 128, 167 )
texture = ExtResource( 9 )

View file

@ -0,0 +1,331 @@
[gd_scene load_steps=34 format=2]
[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1]
[ext_resource path="res://graphics/player/palettes/default.png" 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_idle.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://graphics/backgrounds/fami_rooftop.png" type="Texture" 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]
[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="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": [ ExtResource( 17 ) ],
"loop": true,
"name": "punch",
"speed": 5.0
}, {
"frames": [ SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ) ],
"loop": true,
"name": "walk",
"speed": 5.0
} ]
[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 ]
}
[sub_resource type="Animation" id=2]
resource_name = "cutscene"
length = 100.0
step = 1.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.1, 4.95088, 14.1874, 20.9397, 30.797, 40.2982, 49.7601, 59.7868, 64.7672, 71.5391, 72.2 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"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, and 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 could never work!", "I will defend my status quo as fiercly as possible! It was not by my hand that our society was erected, but it will be by mine that it is upheld!", "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, 0.01 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ false, true ]
}
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( 72.3, 74 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 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( 72.3, 74 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ "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, 75, 77, 77.4, 83, 85 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ "idle", "walk", "idle", "punch", "walk", "idle" ]
}
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( 75, 77, 83, 85 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ Vector2( 160, 167 ), Vector2( 105, 167 ), Vector2( 105, 167 ), Vector2( 160, 167 ) ]
}
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.1, 78, 83 ),
"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, 86, 89 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 1,
"values": [ false, true, false ]
}
[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"]
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 0, 96 )
texture = ExtResource( 10 )
__meta__ = {
"_edit_lock_": true
}
[node name="TileMap" type="TileMap" parent="."]
tile_set = ExtResource( 7 )
cell_size = Vector2( 8, 8 )
format = 1
tile_data = PoolIntArray( 1441792, 0, 131073, 1441793, 0, 131073, 1441794, 0, 131073, 1441795, 0, 131073, 1441796, 0, 131073, 1441797, 0, 131073, 1441798, 0, 131073, 1441799, 0, 131073, 1441800, 0, 131073, 1441801, 0, 131073, 1441802, 0, 131073, 1441803, 0, 131073, 1441804, 0, 131073, 1441805, 0, 131073, 1441806, 0, 131073, 1441807, 0, 131073, 1441808, 0, 131073, 1441809, 0, 131073, 1441810, 0, 131073, 1441811, 0, 131073, 1441812, 0, 131073, 1441813, 0, 131073, 1441814, 0, 131073, 1441815, 0, 131073, 1441816, 0, 131073, 1441817, 0, 131073, 1441818, 0, 131073, 1441819, 0, 131073, 1441820, 0, 131073, 1441821, 0, 131073, 1441822, 0, 131073, 1441823, 0, 131073 )
[node name="TileMap" type="TileMap" parent="TileMap"]
tile_set = ExtResource( 8 )
cell_size = Vector2( 8, 8 )
format = 1
tile_data = PoolIntArray( 1507328, 1, 196609, 1507329, 1, 196610, 1507330, 1, 196610, 1507331, 1, 196610, 1507332, 1, 196610, 1507333, 1, 196610, 1507334, 1, 196610, 1507335, 1, 196610, 1507336, 1, 196610, 1507337, 1, 196610, 1507338, 1, 196610, 1507339, 1, 196610, 1507340, 1, 196610, 1507341, 1, 196610, 1507342, 1, 196610, 1507343, 1, 196610, 1507344, 1, 196610, 1507345, 1, 196610, 1507346, 1, 196610, 1507347, 1, 196610, 1507348, 1, 196610, 1507349, 1, 196610, 1507350, 1, 196610, 1507351, 1, 196610, 1507352, 1, 196610, 1507353, 1, 196610, 1507354, 1, 196610, 1507355, 1, 196610, 1507356, 1, 196610, 1507357, 1, 196610, 1507358, 1, 196610, 1507359, 1, 196611 )
[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 )
text = "Aha so you've made it this far, however your efforts are all in vain.
"
align = 1
valign = 1
autowrap = true
[node name="SgIdle" type="Sprite" parent="."]
material = SubResource( 1 )
position = Vector2( 96, 169 )
texture = ExtResource( 6 )
script = ExtResource( 5 )
[node name="FamiHuman" type="AnimatedSprite" parent="."]
position = Vector2( 160, 167 )
scale = Vector2( -1, 1 )
frames = SubResource( 7 )
animation = "idle"
playing = true
[node name="FamiVoice" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 11 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "cutscene"
anims/RESET = SubResource( 16 )
anims/cutscene = SubResource( 2 )
[node name="Cop" type="AnimatedSprite" parent="."]
material = SubResource( 8 )
position = Vector2( 72, 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

17
cutscenes/intro_story.gd Normal file
View file

@ -0,0 +1,17 @@
extends Node2D
func _ready():
Fade.fade_in(0.4)
Audio.play_music(load("res://audio/music/intro.ogg"))
$VoiceOver.play()
func _input(event):
if Input.is_action_just_pressed("ui_accept"):
Fade.fade_out(0.4)
yield(Fade, "fade_finished")
SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance()
func _on_AnimationPlayer_animation_finished(anim_name):
Fade.fade_out(0.4)
yield(Fade, "fade_finished")
SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance()

View file

@ -0,0 +1,86 @@
[gd_scene load_steps=9 format=2]
[ext_resource path="res://ui/theme.tres" type="Theme" id=1]
[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=2]
[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=3]
[ext_resource path="res://audio/sounds/intro_voiceover.ogg" type="AudioStream" id=4]
[ext_resource path="res://cutscenes/intro_story.gd" type="Script" id=5]
[sub_resource type="ShaderMaterial" id=1]
shader = ExtResource( 3 )
shader_param/color_1 = Color( 0, 0, 0, 1 )
shader_param/color_2 = Color( 0.1188, 0.1188, 0.22, 1 )
shader_param/checker_size = Vector2( 16, 16 )
shader_param/pan_speed = Vector2( 16, 0 )
shader_param/cycle_speed = Vector2( 4, 4 )
shader_param/cycle_alternation = Vector2( 4, 4 )
shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 )
[sub_resource type="Animation" id=2]
length = 0.001
tracks/0/type = "value"
tracks/0/path = NodePath("Label:rect_position")
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": [ Vector2( 8, 192 ) ]
}
[sub_resource type="Animation" id=3]
resource_name = "scroll"
length = 80.0
tracks/0/type = "value"
tracks/0/path = NodePath("Label:rect_position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 80 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector2( 8, 182 ), Vector2( 8, -528 ) ]
}
[node name="IntroStory" type="Node2D"]
script = ExtResource( 5 )
[node name="ColorRect" type="ColorRect" parent="."]
material = SubResource( 1 )
margin_right = 256.0
margin_bottom = 192.0
[node name="Label" type="Label" parent="."]
material = ExtResource( 2 )
margin_left = 8.0
margin_top = 192.0
margin_right = 248.0
margin_bottom = 722.0
theme = ExtResource( 1 )
text = "The year is 2083.
Capitalism has devastated the earth, and all hope seems lost.
SG, A factory worker in Virginia, is fed up with their endless toil and vows to change the future. Their boss takes orders from the richest man in the world, Fami, a man who owns the entire world and is responsible for its hyper-capitalist downfall.
Fami's will is enacted by his police force, the famicops, and happiness is obsolete. Fami also enacts his will through the use of monstrous chimeras - creatures made from a combination of biological materials and AI cores known as \"artificial souls\".
The blueprint for the artificial soul was developed by an egotistical man named Dr. Intelli who believes the world should only be ruled by the ones he deems the smartest. Intelli also developed a space laser that can be powered by the shards of zircon ultima, a gem that can grant ultimate power. Fami used the laser to horribly alter the world, which scattered the shards across Virginia.
Fami vows to use the Zircon Ultima again and thus it's SG's Mission to keep the Shards from Fami as well as bring an end to Fami's reign."
align = 1
autowrap = true
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "scroll"
anims/RESET = SubResource( 2 )
anims/scroll = SubResource( 3 )
[node name="VoiceOver" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 4 )
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"]