more cutscene work

This commit is contained in:
pennyrigate 2024-06-30 22:52:01 -04:00
parent f7c60470a2
commit fbac189239
13 changed files with 199 additions and 32 deletions

Binary file not shown.

View file

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/rumble_revolution_intro.ogg-cb37ff1dd71c64fd16566b212babca20.oggstr"
[deps]
source_file="res://audio/music/rumble_revolution_intro.ogg"
dest_files=[ "res://.import/rumble_revolution_intro.ogg-cb37ff1dd71c64fd16566b212babca20.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
audio/sounds/gun_cock.ogg Normal file

Binary file not shown.

View file

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/gun_cock.ogg-e3270054d952c50d489fc1e0bd7a71d1.oggstr"
[deps]
source_file="res://audio/sounds/gun_cock.ogg"
dest_files=[ "res://.import/gun_cock.ogg-e3270054d952c50d489fc1e0bd7a71d1.oggstr" ]
[params]
loop=false
loop_offset=0

BIN
audio/sounds/resolve.ogg Normal file

Binary file not shown.

View file

@ -0,0 +1,15 @@
[remap]
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/resolve.ogg-36be71144d2911079a46c9c668920ec6.oggstr"
[deps]
source_file="res://audio/sounds/resolve.ogg"
dest_files=[ "res://.import/resolve.ogg-36be71144d2911079a46c9c668920ec6.oggstr" ]
[params]
loop=false
loop_offset=0

Binary file not shown.

View file

@ -62,6 +62,7 @@ const a_copsquash2 = preload("res://audio/sounds/cop_splat.ogg")
const a_fami_transform = preload("res://audio/sounds/fami_transform.ogg") const a_fami_transform = preload("res://audio/sounds/fami_transform.ogg")
const a_ominous = preload("res://audio/sounds/ominous.ogg") const a_ominous = preload("res://audio/sounds/ominous.ogg")
const a_bullet_casing = preload("res://audio/sounds/shell.ogg") const a_bullet_casing = preload("res://audio/sounds/shell.ogg")
const a_gun_cock = preload("res://audio/sounds/gun_cock.ogg")
var loop_section = null var loop_section = null
var has_looped = false var has_looped = false

View file

@ -1,9 +1,8 @@
[gd_scene load_steps=16 format=2] [gd_scene load_steps=15 format=2]
[ext_resource path="res://ui/theme.tres" type="Theme" id=1] [ext_resource path="res://ui/theme.tres" type="Theme" id=1]
[ext_resource path="res://tilesets/t_grass.tres" type="TileSet" id=2] [ext_resource path="res://tilesets/t_grass.tres" type="TileSet" id=2]
[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=3] [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://graphics/backgrounds/hills.png" type="Texture" id=5] [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/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/speccy_future.png" type="Texture" id=7]
@ -67,25 +66,29 @@ material = ExtResource( 11 )
margin_left = 8.0 margin_left = 8.0
margin_top = 192.0 margin_top = 192.0
margin_right = 248.0 margin_right = 248.0
margin_bottom = 1086.0 margin_bottom = 1281.0
theme = ExtResource( 1 ) theme = ExtResource( 1 )
text = "And so with Fami and all the other corruptive forces of the world taken out, a new future is born. text = "And so with Fami and all the other corruptive forces of the world taken out, a new future is born.
The Shards had The Shards had
turned Fami into Famira, one of the most powerful beings in the entire universe, a monster only bested by SG's turned Fami into Super Famira, one of the most powerful beings in the entire universe, a monster only bested by SG's
heroic courage. heroic courage.
SG and the other freedom fighters realized that kind of power should not be able to rest in the hands of anyone, SG and the other freedom fighters realized that kind of power should not be able to rest in the hands of anyone,
and so a year later, the heroes collected the shards again and sent them to planet x, never to be found again. and so a year later, the heroes collected the shards again and sent them to planet x, never to be found again.
a few years after that, SG and their friends created a utopia where everyone shares resources and works together to support each other, 9 years later, on the tenth anniversary of fami's death, SG and the other freedom fighters meet up for a picnic in
a future without coercive hierarchies or money. celebration of his defeat.
It took the work of many people to establish this utopia, and it Many things have changed since 2083. Fami's oppressive goverment has crumbled, what was once a totalitarian virginia has now
become a peaceful group of villages living on the landmass known as \"Genesis Island\".
Much of the world's problems are a thing of the past. The world no longer revolves around money and power.
Instead everyone works together to the best of their ability to support each other and share resources.
It took the work of many people to create this future, and it
takes everyone's contributions to keep it alive. takes everyone's contributions to keep it alive.
It's thanks to everyone that the world is saved, not only SG, but their friends as well, and you, the player!
10 years after Fami died, SG and the other freedom fighters meet up for a picnic in celebration of his defeat. 10 years after Fami died, SG and the other freedom fighters meet up for a picnic in celebration of his defeat.
@ -97,7 +100,9 @@ Lastly, SG adopted a kid named SMS, who is
taken care of by SG as well as other friends they've made from their village. SMS looks up to SG and wishes to be a hero one day. taken care of by SG as well as other friends they've made from their village. SMS looks up to SG and wishes to be a hero one day.
Of course, keeping the utopia alive is still important and there are still smaller problems to fix, but hopefully everyone will continue Of course, keeping the utopia alive is still important and there are still smaller problems to fix, but hopefully everyone will continue
to live in a world without the need for heroes to defeat great evils." to live in a world without the need for heroes to defeat great evils.
It's thanks to everyone that the world is saved, not only SG, but their friends as well, and you, the player!"
align = 1 align = 1
autowrap = true autowrap = true
@ -107,7 +112,6 @@ anims/RESET = SubResource( 2 )
anims/scroll = SubResource( 3 ) anims/scroll = SubResource( 3 )
[node name="VoiceOver" type="AudioStreamPlayer" parent="."] [node name="VoiceOver" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 4 )
[node name="TimeskipScene" type="Node2D" parent="."] [node name="TimeskipScene" type="Node2D" parent="."]
z_index = -1 z_index = -1

View file

@ -23,6 +23,8 @@ func _physics_process(delta: float) -> void:
func _input(event: InputEvent) -> void: func _input(event: InputEvent) -> void:
if event.is_action_pressed("jump") and animation_player.current_animation_position < (cutscene_skip - Options.transition_speed_secs * 2.0): if event.is_action_pressed("jump") and animation_player.current_animation_position < (cutscene_skip - Options.transition_speed_secs * 2.0):
skip_cutscene() skip_cutscene()
if event.is_action_pressed("debug_2"):
animation_player.seek(60)
func skip_cutscene() -> void: func skip_cutscene() -> void:
Fade.fade_out(Options.transition_speed_secs) Fade.fade_out(Options.transition_speed_secs)
@ -39,6 +41,12 @@ func kill_cop() -> void:
add_child(splatter) add_child(splatter)
$Cop.queue_free() $Cop.queue_free()
func stop_music():
Audio.ac_music.playing = false
func play_rumble_intro():
Audio.play_music(load("res://audio/music/rumble_revolution_intro.ogg"))
func _notification(what: int) -> void: func _notification(what: int) -> void:
match what: match what:
NOTIFICATION_WM_FOCUS_OUT: NOTIFICATION_WM_FOCUS_OUT:

View file

@ -1,11 +1,11 @@
[gd_scene load_steps=45 format=2] [gd_scene load_steps=46 format=2]
[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] [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://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/theme.tres" type="Theme" id=3]
[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] [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://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://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_station.tres" type="TileSet" id=7]
[ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=8] [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/npc/fami_human.png" type="Texture" id=9]
@ -22,12 +22,7 @@
[ext_resource path="res://audio/sounds/absorb_shard.ogg" type="AudioStream" id=20] [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_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/shard_float.ogg" type="AudioStream" id=22]
[ext_resource path="res://audio/sounds/gun_cock.ogg" type="AudioStream" id=23]
[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=17] [sub_resource type="AtlasTexture" id=17]
atlas = ExtResource( 18 ) atlas = ExtResource( 18 )
@ -97,6 +92,12 @@ animations = [ {
"speed": 5.0 "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] [sub_resource type="Animation" id=16]
length = 0.001 length = 0.001
tracks/0/type = "value" tracks/0/type = "value"
@ -183,11 +184,58 @@ tracks/6/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 160, 167 ) ] "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] [sub_resource type="Animation" id=2]
resource_name = "cutscene" resource_name = "cutscene"
length = 93.0 length = 93.0
step = 0.25
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/path = NodePath("Label:text") tracks/0/path = NodePath("Label:text")
tracks/0/interp = 1 tracks/0/interp = 1
@ -268,7 +316,7 @@ tracks/6/loop_wrap = true
tracks/6/imported = false tracks/6/imported = false
tracks/6/enabled = true tracks/6/enabled = true
tracks/6/keys = { tracks/6/keys = {
"times": PoolRealArray( 0.5, 64.75, 69.75 ), "times": PoolRealArray( 0.5, 65.5, 70.75 ),
"transitions": PoolRealArray( 1, 1, 1 ), "transitions": PoolRealArray( 1, 1, 1 ),
"update": 1, "update": 1,
"values": [ false, true, false ] "values": [ false, true, false ]
@ -342,7 +390,7 @@ tracks/12/loop_wrap = true
tracks/12/imported = false tracks/12/imported = false
tracks/12/enabled = true tracks/12/enabled = true
tracks/12/keys = { tracks/12/keys = {
"times": PoolRealArray( 0, 64.75 ), "times": PoolRealArray( 0, 65.5 ),
"transitions": PoolRealArray( 1, 1 ), "transitions": PoolRealArray( 1, 1 ),
"update": 1, "update": 1,
"values": [ false, true ] "values": [ false, true ]
@ -359,6 +407,59 @@ tracks/13/keys = {
"update": 1, "update": 1,
"values": [ false, true ] "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] [sub_resource type="ShaderMaterial" id=8]
shader = ExtResource( 12 ) shader = ExtResource( 12 )
@ -431,20 +532,23 @@ align = 1
valign = 1 valign = 1
autowrap = true 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="."] [node name="FamiHuman" type="AnimatedSprite" parent="."]
material = ExtResource( 19 ) material = ExtResource( 19 )
position = Vector2( 160, 167 ) position = Vector2( 160, 167 )
scale = Vector2( -1, 1 ) rotation = 3.14159
scale = Vector2( 1, -1 )
frames = SubResource( 7 ) frames = SubResource( 7 )
animation = "idle" animation = "idle"
playing = true 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="."] [node name="FamiVoice" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 11 ) stream = ExtResource( 11 )
@ -458,7 +562,8 @@ anims/cutscene = SubResource( 2 )
material = SubResource( 8 ) material = SubResource( 8 )
position = Vector2( -8, 169 ) position = Vector2( -8, 169 )
frames = SubResource( 13 ) frames = SubResource( 13 )
animation = "gun" animation = "walk"
frame = 3
playing = true playing = true
[node name="ShardParticles" type="CPUParticles2D" parent="."] [node name="ShardParticles" type="CPUParticles2D" parent="."]
@ -496,3 +601,7 @@ volume_db = -10.0
[node name="ShardExpel" type="AudioStreamPlayer" parent="."] [node name="ShardExpel" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 21 ) stream = ExtResource( 21 )
volume_db = -10.0 volume_db = -10.0
[node name="GunCock" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 23 )
volume_db = -10.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Before After
Before After

View file

@ -683,7 +683,7 @@ position = Vector2( 0, -10 )
texture = ExtResource( 14 ) texture = ExtResource( 14 )
offset = Vector2( 0, -6 ) offset = Vector2( 0, -6 )
hframes = 8 hframes = 8
vframes = 16 vframes = 20
[node name="DissolveParticles" type="CPUParticles2D" parent="Graphics"] [node name="DissolveParticles" type="CPUParticles2D" parent="Graphics"]
unique_name_in_owner = true unique_name_in_owner = true
@ -1302,8 +1302,8 @@ align = 1
[connection signal="state_entered" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Inactive_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Inactive_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Teleporting_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Teleporting_state_entered"]
[connection signal="state_exited" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Inactive_state_exited"] [connection signal="state_exited" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Inactive_state_exited"]
[connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Appearing_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Inactive_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Inactive_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Appearing_state_entered"]
[connection signal="state_exited" from="StateChart/Root/Movement/Appearing" to="." method="_on_Inactive_state_exited"] [connection signal="state_exited" from="StateChart/Root/Movement/Appearing" to="." method="_on_Inactive_state_exited"]
[connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"] [connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"] [connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"]