diff --git a/audio/music/empty_motel.ogg b/audio/music/empty_motel.ogg new file mode 100644 index 0000000..a003762 Binary files /dev/null and b/audio/music/empty_motel.ogg differ diff --git a/cutscenes/ending_future.tscn b/cutscenes/ending_future.tscn index c3ea44f..8a527ce 100644 --- a/cutscenes/ending_future.tscn +++ b/cutscenes/ending_future.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=15 format=2] +[gd_scene load_steps=18 format=2] [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://shaders/ska_plane.gdshader" type="Shader" id=3] +[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" 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] @@ -11,6 +12,7 @@ [ext_resource path="res://graphics/npc/sms.png" type="Texture" id=10] [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=11] [ext_resource path="res://cutscenes/intro_story.gd" type="Script" id=12] +[ext_resource path="res://graphics/ending/end.png" type="Texture" id=13] [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 3 ) @@ -39,7 +41,8 @@ tracks/0/keys = { [sub_resource type="Animation" id=3] resource_name = "scroll" -length = 80.0 +length = 67.0 +step = 0.25 tracks/0/type = "value" tracks/0/path = NodePath("Label:rect_position") tracks/0/interp = 1 @@ -47,51 +50,64 @@ tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 80 ), +"times": PoolRealArray( 0, 50, 55 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 8, 200 ), Vector2( 8, -437.742 ), Vector2( 8, -437.742 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Static:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 50 ), "transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( 8, 182 ), Vector2( 8, -528 ) ] +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] } +tracks/2/type = "value" +tracks/2/path = NodePath("White:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 57.75, 58, 58.25, 58.5, 58.75, 59, 59.25, 59.5, 59.75, 60, 60.25, 60.5, 60.75, 61, 61.25, 61.5, 61.75, 62, 62.25, 62.5, 62.75 ), +"transitions": PoolRealArray( 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": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.95 ), Color( 1, 1, 1, 0.9 ), Color( 1, 1, 1, 0.85 ), Color( 1, 1, 1, 0.8 ), Color( 1, 1, 1, 0.75 ), Color( 1, 1, 1, 0.7 ), Color( 1, 1, 1, 0.65 ), Color( 1, 1, 1, 0.6 ), Color( 1, 1, 1, 0.55 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.45 ), Color( 1, 1, 1, 0.4 ), Color( 1, 1, 1, 0.35 ), Color( 1, 1, 1, 0.3 ), Color( 1, 1, 1, 0.25 ), Color( 1, 1, 1, 0.2 ), Color( 1, 1, 1, 0.15 ), Color( 1, 1, 1, 0.1 ), Color( 1, 1, 1, 0.05 ), Color( 1, 1, 1, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Label:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.75, 50, 50.25, 50.5, 50.75, 51, 51.25, 51.5, 51.75, 52, 52.25, 52.5, 52.75, 53, 53.25, 53.5, 53.75, 54, 54.25, 54.5, 54.75, 55 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.95 ), Color( 1, 1, 1, 0.9 ), Color( 1, 1, 1, 0.85 ), Color( 1, 1, 1, 0.8 ), Color( 1, 1, 1, 0.75 ), Color( 1, 1, 1, 0.7 ), Color( 1, 1, 1, 0.65 ), Color( 1, 1, 1, 0.6 ), Color( 1, 1, 1, 0.55 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.45 ), Color( 1, 1, 1, 0.4 ), Color( 1, 1, 1, 0.35 ), Color( 1, 1, 1, 0.3 ), Color( 1, 1, 1, 0.25 ), Color( 1, 1, 1, 0.2 ), Color( 1, 1, 1, 0.15 ), Color( 1, 1, 1, 0.1 ), Color( 1, 1, 1, 0.05 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 4 ) +shader_param/animate_noise = true +shader_param/noise_intensity = 6.0 +shader_param/fps = 12.0 [node name="IntroStory" type="Node2D"] script = ExtResource( 12 ) +is_intro = false [node name="ColorRect" type="ColorRect" parent="."] +visible = false material = SubResource( 1 ) margin_right = 256.0 margin_bottom = 192.0 -[node name="Label" type="Label" parent="."] -material = ExtResource( 11 ) -margin_left = 8.0 -margin_top = 192.0 -margin_right = 248.0 -margin_bottom = 1294.0 -theme = ExtResource( 1 ) -text = "And so with Fami and all the other corruptive forces of the world taken out, a new future is born. - -The Shards had -turned Fami into Super Famira, one of the most powerful beings in the entire universe, a monster only bested by SG's -heroic courage. - -SG and the other freedom fighters realized that kind of power should not be able to rest in the hands of anyone, -and so, the heroes vow to collect the shards again next year to find a way to get rid of them for good... - -The freedom fighters plan to create a new future in the ashes of old virginia. -A world that doesn't revolve around money and power, -where everyone works together to the best of their ability to support each other and share resources. -It will take a lot of work to create this future and it will continually take a lot of work to keep it running. - -Congratulations! -You are a super player!! -The future is bright thanks to you!!! -Rest well until the time comes again!!!! - - -" -align = 1 -autowrap = true - [node name="AnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "scroll" anims/RESET = SubResource( 2 ) @@ -135,4 +151,54 @@ texture = ExtResource( 10 ) position = Vector2( 128, 167 ) texture = ExtResource( 9 ) +[node name="Sprite2" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +texture = ExtResource( 13 ) + +[node name="White" type="ColorRect" parent="."] +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 1, 0.952941, 0.933333, 1 ) + +[node name="Static" type="ColorRect" parent="."] +material = SubResource( 4 ) +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 0.662745, 0.8, 0.996078, 1 ) + +[node name="Label" type="Label" parent="."] +material = ExtResource( 11 ) +margin_left = 8.0 +margin_top = 192.0 +margin_right = 248.0 +margin_bottom = 1294.0 +theme = ExtResource( 1 ) +text = "And so with Fami and all the other corruptive forces of the world taken out, a new future is born. + +The Shards had +turned Fami into Super Famira, one of the most powerful beings in the entire universe, a monster only bested by SG's +heroic courage. + +SG and the other freedom fighters realized that kind of power should not be able to rest in the hands of anyone, +and so, the heroes plan to collect the shards again next year to find a way to get rid of them for good... + +The freedom fighters plan to create a new future in the ashes of old virginia. +A world that doesn't revolve around money and power, +where everyone works together to the best of their ability to support each other and share resources. +It will take a lot of work to create this future and it will take a lot of work to keep it running. + + + + + +Congratulations! +You are a super player!! +The future is bright thanks to you!!! +Rest well until the time comes again!!!! + + +" +align = 1 +autowrap = true + [connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] diff --git a/cutscenes/intro_story.gd b/cutscenes/intro_story.gd index bf86e29..a557142 100644 --- a/cutscenes/intro_story.gd +++ b/cutscenes/intro_story.gd @@ -1,15 +1,23 @@ extends Node2D +export var is_intro = true + func _ready(): Fade.fade_in(Options.transition_speed_secs) - Audio.play_music(load("res://audio/music/intro.ogg")) + if is_intro: + Audio.play_music(load("res://audio/music/intro.ogg")) + else: + Audio.play_music(load("res://audio/music/empty_motel.ogg")) $VoiceOver.play() func _input(event): - if Input.is_action_just_pressed("ui_accept"): + if Input.is_action_just_pressed("ui_accept") && is_intro: Fade.fade_out(Options.transition_speed_secs) yield(Fade, "fade_finished") - SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + if is_intro: + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + else: + SceneManager.current_scene = load("res://menus/credits.tscn").instance() func _notification(what: int) -> void: match what: @@ -25,4 +33,7 @@ func _notification(what: int) -> void: func _on_AnimationPlayer_animation_finished(anim_name): Fade.fade_out(Options.transition_speed_secs) yield(Fade, "fade_finished") - SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + if is_intro: + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + else: + SceneManager.current_scene = load("res://menus/credits.tscn").instance() diff --git a/graphics/hud/speech_bubble.png b/graphics/hud/speech_bubble.png new file mode 100644 index 0000000..10b708c Binary files /dev/null and b/graphics/hud/speech_bubble.png differ diff --git a/maps/boss/boss3_arena.tscn b/maps/boss/boss3_arena.tscn index 29e910b..20a2e40 100644 --- a/maps/boss/boss3_arena.tscn +++ b/maps/boss/boss3_arena.tscn @@ -38,6 +38,7 @@ shader_param/uv_transform = Transform2D( 1, 2, 1, 3, 0, 0 ) shader = ExtResource( 18 ) shader_param/animate_noise = true shader_param/noise_intensity = 1.0 +shader_param/fps = 60.0 [sub_resource type="ShaderMaterial" id=5] shader = ExtResource( 20 ) @@ -222,6 +223,7 @@ color = Color( 1, 0, 0, 0.333333 ) [node name="GUI" type="CanvasLayer" parent="."] unique_name_in_owner = true +visible = false [node name="Control" type="Control" parent="GUI"] anchor_right = 1.0 diff --git a/menus/credits.gd b/menus/credits.gd index 7a26f46..99266a9 100644 --- a/menus/credits.gd +++ b/menus/credits.gd @@ -9,4 +9,5 @@ func _notification(what: int) -> void: $AnimationPlayer.playback_active = true func _ready(): + Fade.fade_in(Options.transition_speed_secs) Audio.play_music(load("res://audio/music/rev83-wondering-now-short.ogg")) diff --git a/menus/credits.tscn b/menus/credits.tscn index d490289..10cc36c 100644 --- a/menus/credits.tscn +++ b/menus/credits.tscn @@ -45,7 +45,7 @@ [ext_resource path="res://graphics/npc/kiki_dog.png" type="Texture" id=43] [ext_resource path="res://graphics/npc/penny.png" type="Texture" id=44] [ext_resource path="res://graphics/npc/haze.png" type="Texture" id=45] -[ext_resource path="res://graphics/hud/thankyou.png" type="Texture" id=46] +[ext_resource path="res://graphics/hud/speech_bubble.png" type="Texture" id=46] [ext_resource path="res://objects/enemy/boss/famira.tscn" type="PackedScene" id=47] [ext_resource path="res://graphics/hud/team_sg_logo.png" type="Texture" id=48] @@ -609,8 +609,8 @@ script = ExtResource( 14 ) layer = -64 [node name="ColorRect2" type="ColorRect" parent="CanvasLayer"] -margin_left = 4608.0 -margin_right = 4864.0 +margin_left = 4864.0 +margin_right = 5120.0 margin_bottom = 192.0 color = Color( 0.0666667, 0.164706, 0.454902, 0.329412 ) @@ -959,6 +959,7 @@ position = Vector2( 1024, 0 ) material = SubResource( 13 ) position = Vector2( 2880, 24 ) frames = SubResource( 21 ) +frame = 1 playing = true [node name="Label" type="Label" parent="Control/RollCall2/Eviscerator"] @@ -1052,6 +1053,7 @@ align = 1 [node name="SabreSpighter" type="AnimatedSprite" parent="Control/RollCall2"] position = Vector2( 2880, 62 ) frames = SubResource( 46 ) +frame = 1 playing = true [node name="Label" type="Label" parent="Control/RollCall2/SabreSpighter"] @@ -1144,7 +1146,6 @@ align = 1 [node name="Squig" type="AnimatedSprite" parent="Control/RollCall3"] position = Vector2( 200, 64 ) frames = SubResource( 65 ) -frame = 1 playing = true [node name="Label" type="Label" parent="Control/RollCall3/Squig"] @@ -1178,6 +1179,7 @@ align = 1 material = SubResource( 66 ) position = Vector2( 68, 104 ) frames = SubResource( 70 ) +frame = 1 playing = true [node name="Label" type="Label" parent="Control/RollCall3/Turchin"] @@ -1458,10 +1460,22 @@ position = Vector2( 54, 136 ) scale = Vector2( 2, 2 ) texture = ExtResource( 42 ) -[node name="Thankyou" type="Sprite" parent="Control/RollCall5"] -position = Vector2( 184, 80 ) +[node name="Sprite" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 176, 88 ) texture = ExtResource( 46 ) +[node name="Label" type="Label" parent="Control/RollCall5"] +material = ExtResource( 4 ) +margin_left = 136.0 +margin_top = 64.0 +margin_right = 220.0 +margin_bottom = 100.0 +theme = ExtResource( 6 ) +text = "Thank you +for playing +our game!" +align = 1 + [node name="AnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "credits" playback_speed = 0.85