Tweaked timings between levels and other details with the ending.

This commit is contained in:
Henry 2026-03-07 13:40:57 +00:00
parent b12558a846
commit 20b657c7b1
13 changed files with 125 additions and 64 deletions

View file

@ -8,7 +8,7 @@ custom_features=""
export_filter="all_resources"
include_filter="*"
exclude_filter=""
export_path="../../Downloads/2026-03-05 122008 The Third Place/index.html"
export_path="../../Downloads/2026-03-06 235841 The Third Place/index.html"
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19

View file

@ -9,7 +9,7 @@ var tween_speed: float = 1.4
var pause: bool = false
var horse_counter: int = 1
var horse_counter: int = 0
var horse_phase: bool = true
var exploding:bool = false
var heart_taken: bool = false
@ -133,6 +133,9 @@ func _on_ending(value: int):
#horse_phase_check()
print("Fix your broken heart or die")
$Sprite2D.frame = 0
EventBus.goose_talk.emit(3,6)
@ -155,13 +158,13 @@ func _on_ending(value: int):
EventBus.heart_beat.emit(0)
await get_tree().create_timer(2).timeout
EventBus.flash_screen.emit(.25)
$Heart.queue_free()
#$Heart.queue_free()
$Sprite2D.frame = 4
await get_tree().create_timer(4).timeout
EventBus.goose_talk.emit(4)
EventBus.goose_talk.emit(4,6)
self.monitoring = false
self.monitorable = false
EventBus.win_game.emit()
EventBus.win_game.emit(2)

View file

@ -9,6 +9,14 @@
[ext_resource type="Texture2D" uid="uid://c4nhwvs13x5bc" path="res://sprites/heart.png" id="7_2cdgk"]
[ext_resource type="Script" uid="uid://b01h56iyb6pp2" path="res://scenes/heart.gd" id="7_qsl3t"]
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_qsl3t"]
particle_flag_disable_z = true
angle_min = -43.89999
angle_max = 43.00001
gravity = Vector3(0, 98, 0)
linear_accel_min = -2.2351742e-06
linear_accel_max = 14.019998
[sub_resource type="RectangleShape2D" id="RectangleShape2D_neq0i"]
size = Vector2(129, 63)
@ -207,6 +215,14 @@ hframes = 4
vframes = 3
frame = 4
[node name="HeartEmitter" type="Sprite2D" parent="Sprite2D" unique_id=228431511]
visible = false
texture = ExtResource("7_2cdgk")
[node name="GPUParticles2D" type="GPUParticles2D" parent="Sprite2D/HeartEmitter" unique_id=1951939806]
texture = ExtResource("7_2cdgk")
process_material = SubResource("ParticleProcessMaterial_qsl3t")
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=12560305]
position = Vector2(-0.5, 1.5)
shape = SubResource("RectangleShape2D_neq0i")
@ -256,6 +272,7 @@ wait_time = 0.05
one_shot = true
[node name="Heart" type="Area2D" parent="." unique_id=1098254590 groups=["heart"]]
visible = false
position = Vector2(0, -71)
rotation = -0.006150021
script = ExtResource("7_qsl3t")

View file

@ -1,6 +1,6 @@
extends Area2D
#@onready var bullet = $Bullet/Sprite2D
@onready var bullet = $Bullet
@export var speed = -250
var shader_active = false
@ -59,8 +59,6 @@ func _on_area_entered(area: Area2D) -> void:
position = Vector2.ZERO
pause = true
$Sprite2D/GPUParticles2D.hide()
self.monitoring = false
self.monitorable = false

View file

@ -9,7 +9,7 @@ signal enemy_died()
signal enemy_hit(value: int)
signal initialize_shieldbar()
signal start_game()
signal goose_talk(frame_index: int)
signal goose_talk(frame_index: int, quack_wait_time: float)
# FX
signal flash_screen(duration: float)
@ -17,7 +17,8 @@ signal cloud_speed(active: bool)
# Ending
signal ending(value: int)
signal win_game()
signal player_victory(ending: int)
signal win_game(ending: int)
signal secret_win_game()
signal heart_beat(tempo: float)

View file

@ -6,10 +6,12 @@ func _ready() -> void:
EventBus.goose_talk.connect(_on_goose_talk)
func _on_goose_talk(frame_index: int):
func _on_goose_talk(frame_index: int, quack_wait_time: float = 3.0):
#var quacking = get_tree().create_timer(3).timeout
$DapperGoose/Quacking.wait_time = quack_wait_time
if goose_talking == false:
print("QUACK")
self.show()

View file

@ -121,7 +121,7 @@ func new_game():
# Do some DapperGoose talk
await get_tree().create_timer(1.5).timeout
EventBus.goose_talk.emit(6)
EventBus.goose_talk.emit(6,4)
# Tell the enemies to spawn!
#await get_tree().create_timer(.5).timeout
@ -159,15 +159,30 @@ func _on_secret_win_game():
start_button.show()
func _on_win_game():
playing = false
$Player._on_player_victory()
await $Player._on_player_victory()
game_over.show()
await get_tree().create_timer(8).timeout
game_over.hide()
$CanvasLayer/Title.show()
start_button.show()
func _on_win_game(value: int):
if value == 1: # Heart Taken
playing = false
$Player._on_player_victory(1)
await $Player._on_player_victory(1)
game_over.show()
await get_tree().create_timer(5).timeout
game_over.hide()
$CanvasLayer/Title.show()
start_button.show()
if value == 2: #Heart Broken
playing = false
$Player._on_player_victory(2)
await $Player._on_player_victory(2)
game_over.show()
await get_tree().create_timer(5).timeout
game_over.hide()
$CanvasLayer/Title.show()
start_button.show()
func _on_flash_screen(duration: float):
print("flash!")

View file

@ -1,6 +1,7 @@
extends Node2D
var scroll_multiplier: float = 400
var scroll_multiplier: float = 450
var scroll_multiplier_active = false
@onready var parallax_nodes = get_tree().get_nodes_in_group("parallax_clouds")
@ -9,32 +10,36 @@ func _ready():
EventBus.cloud_speed.connect(_on_cloud_speed)
func _on_cloud_speed(active: bool):
if active == true:
for node in parallax_nodes:
if node is Parallax2D:
var current_autoscroll = node.get_autoscroll()
current_autoscroll.y += scroll_multiplier
var tween = create_tween().set_trans(Tween.TRANS_LINEAR)
tween.tween_property(node, "autoscroll:y", scroll_multiplier, 5)
var new_autoscroll = current_autoscroll.y + scroll_multiplier
var tween = create_tween().set_trans(Tween.TRANS_QUAD).parallel()
tween.tween_property(node, "autoscroll:y", new_autoscroll, 5)
tween.tween_property(node, "modulate",Color(0.40,0.40,0.40), 2.5)
var coffee_dip = create_tween().set_trans(Tween.TRANS_QUAD)
coffee_dip.tween_property($CoffeeBuoy, "modulate", Color(0.40,0.40,0.40,0),2.5)
var coffee_dip = create_tween().set_trans(Tween.TRANS_QUAD).parallel()
coffee_dip.tween_property($CoffeeBuoy, "modulate", Color(0.40,0.40,0.40,0),5)
await coffee_dip.finished
$CoffeeBuoy.hide()
scroll_multiplier_active = true
if active == false:
for node in parallax_nodes:
if node is Parallax2D:
var current_autoscroll = node.get_autoscroll()
current_autoscroll.y -= scroll_multiplier
var tween = create_tween().set_trans(Tween.TRANS_LINEAR)
tween.tween_property(node, "autoscroll:y", scroll_multiplier, 5)
tween.tween_property(node, "modulate",Color(0.40,0.40,0.40), 2.5)
if scroll_multiplier_active == true:
for node in parallax_nodes:
if node is Parallax2D:
var current_autoscroll = node.get_autoscroll()
var new_autoscroll = current_autoscroll.y - scroll_multiplier
var tween = create_tween().set_trans(Tween.TRANS_QUAD).parallel()
tween.tween_property(node, "autoscroll:y", new_autoscroll, 5)
tween.tween_property(node, "modulate",Color(1,1,1), 1.5)
$CoffeeBuoy.show()
var coffee_dip = create_tween().set_trans(Tween.TRANS_QUAD)
coffee_dip.tween_property($CoffeeBuoy, "modulate", Color(1,1,1,1),2.5)
await coffee_dip.finished
$CoffeeBuoy.show()
var coffee_dip = create_tween().set_trans(Tween.TRANS_QUAD).parallel()
coffee_dip.tween_property($CoffeeBuoy, "modulate", Color(1,1,1,1),5)
$CoffeeBuoy.show()
scroll_multiplier_active = false
if scroll_multiplier_active == false:
return

View file

@ -117,6 +117,7 @@ region_rect = Rect2(0, 0, 64, 64)
[node name="CoffeeBuoy" type="Parallax2D" parent="." unique_id=813362228 groups=["parallax_clouds"]]
self_modulate = Color(0.5931336, 0.59313357, 0.59313357, 1)
scroll_scale = Vector2(1, -2)
scroll_offset = Vector2(-1, 0)
repeat_size = Vector2(0, 375)
autoscroll = Vector2(0, 1)
repeat_times = 3
@ -131,7 +132,7 @@ scale = Vector2(0.75, 0.75)
texture = ExtResource("2_pcgsf")
flip_h = true
[node name="ColorRect" type="ColorRect" parent="." unique_id=23364495 groups=["parallax_clouds"]]
[node name="ColorRect" type="ColorRect" parent="." unique_id=23364495]
z_index = -5
offset_right = 239.0
offset_bottom = 323.0

View file

@ -33,7 +33,7 @@ func _ready():
set_process(false)
print(shield)
EventBus.set_shield.connect(_on_set_shield)
#EventBus.player_victory.connect(_on_player_victory)
EventBus.player_victory.connect(_on_player_victory)
# start()
func start():
@ -138,7 +138,7 @@ func _on_area_entered(area):
print("You can win!")
EventBus.heart_beat.emit(2.5)
area.reparent(self)
EventBus.win_game.emit()
EventBus.win_game.emit(1)
elif can_win == false:
shield -= int(max_shield / 2)
@ -172,16 +172,32 @@ func _on_damage_taken():
$Ship.material.set_shader_parameter("toggle", 0.0)
shader_active = false
func _on_player_victory() -> void:
print("Victory!")
# get_node("EnemyBullet").monitoring = false #TODO make sure bullets stop monitoring!
set_process(false)
#$Ship.frame = 1
self.monitorable = false
self.monitoring = false
await get_tree().create_timer(4).timeout
# $Ship/Boosters/BoosterBurst.show()
var tween = create_tween()
tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN)
await tween.finished
queue_free()
func _on_player_victory(ending: int) -> void:
if ending == 1: # Heart Taken
print("Victory!")
# get_node("EnemyBullet").monitoring = false #TODO make sure bullets stop monitoring!
set_process(false)
#$Ship.frame = 1
self.monitorable = false
self.monitoring = false
await get_tree().create_timer(4).timeout
# $Ship/Boosters/BoosterBurst.show()
var tween = create_tween()
tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN)
await tween.finished
queue_free()
if ending == 2:
print("Victory!")
# get_node("EnemyBullet").monitoring = false #TODO make sure bullets stop monitoring!
set_process(false)
$Ship.frame = 0
self.monitorable = false
self.monitoring = false
await get_tree().create_timer(4).timeout
# $Ship/Boosters/BoosterBurst.show()
var tween = create_tween()
tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN)
await tween.finished
queue_free()

View file

@ -62,6 +62,7 @@ func hit_detection():
func explode():
if exploding: return
#exploding = true

View file

@ -25,7 +25,7 @@ func _ready():
func spawn_enemies():
if wave_count == 2: #This is for CHICKENS
if wave_count == 0: #This is for CHICKENS
print("Enemy Wave: ", wave_count)
enemy = CHICKEN
for x in range(COLS):
@ -53,7 +53,7 @@ func spawn_enemies():
enemy_count = rows_mod * cols_mod
await get_tree().process_frame
if wave_count == 3 : #This if for Mirror
if wave_count == 2 : #This if for Mirror
print("Enemy Wave: ", wave_count)
# Spawn Table
@ -89,7 +89,7 @@ func spawn_enemies():
s.start_all_animations()
if wave_count == 0 : #This is for Boss
if wave_count == 3 : #This is for Boss
# Hide the player
@ -97,7 +97,8 @@ func spawn_enemies():
EventBus.cloud_speed.emit(true)
# Spawn Boss
EventBus.flash_screen.emit(.25)
await get_tree().create_timer(3).timeout
#EventBus.flash_screen.emit(.25)
var b = BOSS.instantiate()
add_child(b)
#b.position = Vector2(screensize.x / 2, position.y + 100)
@ -126,7 +127,8 @@ func wave_status():
wave_complete = false
else:
EventBus.goose_talk.emit(wave_count)
await get_tree().create_timer(3).timeout
EventBus.goose_talk.emit(wave_count, 4)
wave_initialize()
wave_complete = true

Binary file not shown.

Before

Width:  |  Height:  |  Size: 622 B

After

Width:  |  Height:  |  Size: 667 B

Before After
Before After