Tweaked timings between levels and other details with the ending.
This commit is contained in:
parent
b12558a846
commit
20b657c7b1
13 changed files with 125 additions and 64 deletions
|
|
@ -8,7 +8,7 @@ custom_features=""
|
||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter="*"
|
include_filter="*"
|
||||||
exclude_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()
|
patches=PackedStringArray()
|
||||||
patch_delta_encoding=false
|
patch_delta_encoding=false
|
||||||
patch_delta_compression_level_zstd=19
|
patch_delta_compression_level_zstd=19
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ var tween_speed: float = 1.4
|
||||||
var pause: bool = false
|
var pause: bool = false
|
||||||
|
|
||||||
|
|
||||||
var horse_counter: int = 1
|
var horse_counter: int = 0
|
||||||
var horse_phase: bool = true
|
var horse_phase: bool = true
|
||||||
var exploding:bool = false
|
var exploding:bool = false
|
||||||
var heart_taken: bool = false
|
var heart_taken: bool = false
|
||||||
|
|
@ -133,6 +133,9 @@ func _on_ending(value: int):
|
||||||
#horse_phase_check()
|
#horse_phase_check()
|
||||||
print("Fix your broken heart or die")
|
print("Fix your broken heart or die")
|
||||||
$Sprite2D.frame = 0
|
$Sprite2D.frame = 0
|
||||||
|
EventBus.goose_talk.emit(3,6)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -155,13 +158,13 @@ func _on_ending(value: int):
|
||||||
EventBus.heart_beat.emit(0)
|
EventBus.heart_beat.emit(0)
|
||||||
await get_tree().create_timer(2).timeout
|
await get_tree().create_timer(2).timeout
|
||||||
EventBus.flash_screen.emit(.25)
|
EventBus.flash_screen.emit(.25)
|
||||||
$Heart.queue_free()
|
#$Heart.queue_free()
|
||||||
$Sprite2D.frame = 4
|
$Sprite2D.frame = 4
|
||||||
await get_tree().create_timer(4).timeout
|
await get_tree().create_timer(4).timeout
|
||||||
EventBus.goose_talk.emit(4)
|
EventBus.goose_talk.emit(4,6)
|
||||||
self.monitoring = false
|
self.monitoring = false
|
||||||
self.monitorable = false
|
self.monitorable = false
|
||||||
EventBus.win_game.emit()
|
EventBus.win_game.emit(2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,14 @@
|
||||||
[ext_resource type="Texture2D" uid="uid://c4nhwvs13x5bc" path="res://sprites/heart.png" id="7_2cdgk"]
|
[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"]
|
[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"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_neq0i"]
|
||||||
size = Vector2(129, 63)
|
size = Vector2(129, 63)
|
||||||
|
|
||||||
|
|
@ -207,6 +215,14 @@ hframes = 4
|
||||||
vframes = 3
|
vframes = 3
|
||||||
frame = 4
|
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]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=12560305]
|
||||||
position = Vector2(-0.5, 1.5)
|
position = Vector2(-0.5, 1.5)
|
||||||
shape = SubResource("RectangleShape2D_neq0i")
|
shape = SubResource("RectangleShape2D_neq0i")
|
||||||
|
|
@ -256,6 +272,7 @@ wait_time = 0.05
|
||||||
one_shot = true
|
one_shot = true
|
||||||
|
|
||||||
[node name="Heart" type="Area2D" parent="." unique_id=1098254590 groups=["heart"]]
|
[node name="Heart" type="Area2D" parent="." unique_id=1098254590 groups=["heart"]]
|
||||||
|
visible = false
|
||||||
position = Vector2(0, -71)
|
position = Vector2(0, -71)
|
||||||
rotation = -0.006150021
|
rotation = -0.006150021
|
||||||
script = ExtResource("7_qsl3t")
|
script = ExtResource("7_qsl3t")
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
extends Area2D
|
extends Area2D
|
||||||
|
|
||||||
#@onready var bullet = $Bullet/Sprite2D
|
@onready var bullet = $Bullet
|
||||||
|
|
||||||
@export var speed = -250
|
@export var speed = -250
|
||||||
var shader_active = false
|
var shader_active = false
|
||||||
|
|
@ -59,9 +59,7 @@ func _on_area_entered(area: Area2D) -> void:
|
||||||
position = Vector2.ZERO
|
position = Vector2.ZERO
|
||||||
pause = true
|
pause = true
|
||||||
$Sprite2D/GPUParticles2D.hide()
|
$Sprite2D/GPUParticles2D.hide()
|
||||||
self.monitoring = false
|
|
||||||
self.monitorable = false
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mirror":
|
"mirror":
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ signal enemy_died()
|
||||||
signal enemy_hit(value: int)
|
signal enemy_hit(value: int)
|
||||||
signal initialize_shieldbar()
|
signal initialize_shieldbar()
|
||||||
signal start_game()
|
signal start_game()
|
||||||
signal goose_talk(frame_index: int)
|
signal goose_talk(frame_index: int, quack_wait_time: float)
|
||||||
|
|
||||||
# FX
|
# FX
|
||||||
signal flash_screen(duration: float)
|
signal flash_screen(duration: float)
|
||||||
|
|
@ -17,7 +17,8 @@ signal cloud_speed(active: bool)
|
||||||
|
|
||||||
# Ending
|
# Ending
|
||||||
signal ending(value: int)
|
signal ending(value: int)
|
||||||
signal win_game()
|
signal player_victory(ending: int)
|
||||||
|
signal win_game(ending: int)
|
||||||
signal secret_win_game()
|
signal secret_win_game()
|
||||||
signal heart_beat(tempo: float)
|
signal heart_beat(tempo: float)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,12 @@ func _ready() -> void:
|
||||||
EventBus.goose_talk.connect(_on_goose_talk)
|
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
|
#var quacking = get_tree().create_timer(3).timeout
|
||||||
|
|
||||||
|
$DapperGoose/Quacking.wait_time = quack_wait_time
|
||||||
|
|
||||||
if goose_talking == false:
|
if goose_talking == false:
|
||||||
print("QUACK")
|
print("QUACK")
|
||||||
self.show()
|
self.show()
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@ func new_game():
|
||||||
|
|
||||||
# Do some DapperGoose talk
|
# Do some DapperGoose talk
|
||||||
await get_tree().create_timer(1.5).timeout
|
await get_tree().create_timer(1.5).timeout
|
||||||
EventBus.goose_talk.emit(6)
|
EventBus.goose_talk.emit(6,4)
|
||||||
|
|
||||||
# Tell the enemies to spawn!
|
# Tell the enemies to spawn!
|
||||||
#await get_tree().create_timer(.5).timeout
|
#await get_tree().create_timer(.5).timeout
|
||||||
|
|
@ -159,15 +159,30 @@ func _on_secret_win_game():
|
||||||
start_button.show()
|
start_button.show()
|
||||||
|
|
||||||
|
|
||||||
func _on_win_game():
|
func _on_win_game(value: int):
|
||||||
playing = false
|
|
||||||
$Player._on_player_victory()
|
if value == 1: # Heart Taken
|
||||||
await $Player._on_player_victory()
|
|
||||||
game_over.show()
|
playing = false
|
||||||
await get_tree().create_timer(8).timeout
|
$Player._on_player_victory(1)
|
||||||
game_over.hide()
|
await $Player._on_player_victory(1)
|
||||||
$CanvasLayer/Title.show()
|
game_over.show()
|
||||||
start_button.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):
|
func _on_flash_screen(duration: float):
|
||||||
print("flash!")
|
print("flash!")
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
extends Node2D
|
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")
|
@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)
|
EventBus.cloud_speed.connect(_on_cloud_speed)
|
||||||
|
|
||||||
func _on_cloud_speed(active: bool):
|
func _on_cloud_speed(active: bool):
|
||||||
|
|
||||||
if active == true:
|
if active == true:
|
||||||
for node in parallax_nodes:
|
for node in parallax_nodes:
|
||||||
if node is Parallax2D:
|
if node is Parallax2D:
|
||||||
var current_autoscroll = node.get_autoscroll()
|
var current_autoscroll = node.get_autoscroll()
|
||||||
current_autoscroll.y += scroll_multiplier
|
var new_autoscroll = current_autoscroll.y + scroll_multiplier
|
||||||
var tween = create_tween().set_trans(Tween.TRANS_LINEAR)
|
var tween = create_tween().set_trans(Tween.TRANS_QUAD).parallel()
|
||||||
tween.tween_property(node, "autoscroll:y", scroll_multiplier, 5)
|
tween.tween_property(node, "autoscroll:y", new_autoscroll, 5)
|
||||||
tween.tween_property(node, "modulate",Color(0.40,0.40,0.40), 2.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)
|
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),2.5)
|
coffee_dip.tween_property($CoffeeBuoy, "modulate", Color(0.40,0.40,0.40,0),5)
|
||||||
await coffee_dip.finished
|
await coffee_dip.finished
|
||||||
$CoffeeBuoy.hide()
|
$CoffeeBuoy.hide()
|
||||||
|
scroll_multiplier_active = true
|
||||||
|
|
||||||
if active == false:
|
if active == false:
|
||||||
for node in parallax_nodes:
|
if scroll_multiplier_active == true:
|
||||||
if node is Parallax2D:
|
for node in parallax_nodes:
|
||||||
var current_autoscroll = node.get_autoscroll()
|
if node is Parallax2D:
|
||||||
current_autoscroll.y -= scroll_multiplier
|
var current_autoscroll = node.get_autoscroll()
|
||||||
var tween = create_tween().set_trans(Tween.TRANS_LINEAR)
|
var new_autoscroll = current_autoscroll.y - scroll_multiplier
|
||||||
tween.tween_property(node, "autoscroll:y", scroll_multiplier, 5)
|
var tween = create_tween().set_trans(Tween.TRANS_QUAD).parallel()
|
||||||
tween.tween_property(node, "modulate",Color(0.40,0.40,0.40), 2.5)
|
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)
|
$CoffeeBuoy.show()
|
||||||
coffee_dip.tween_property($CoffeeBuoy, "modulate", Color(1,1,1,1),2.5)
|
var coffee_dip = create_tween().set_trans(Tween.TRANS_QUAD).parallel()
|
||||||
await coffee_dip.finished
|
coffee_dip.tween_property($CoffeeBuoy, "modulate", Color(1,1,1,1),5)
|
||||||
|
$CoffeeBuoy.show()
|
||||||
|
scroll_multiplier_active = false
|
||||||
|
|
||||||
|
if scroll_multiplier_active == false:
|
||||||
|
return
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,7 @@ region_rect = Rect2(0, 0, 64, 64)
|
||||||
[node name="CoffeeBuoy" type="Parallax2D" parent="." unique_id=813362228 groups=["parallax_clouds"]]
|
[node name="CoffeeBuoy" type="Parallax2D" parent="." unique_id=813362228 groups=["parallax_clouds"]]
|
||||||
self_modulate = Color(0.5931336, 0.59313357, 0.59313357, 1)
|
self_modulate = Color(0.5931336, 0.59313357, 0.59313357, 1)
|
||||||
scroll_scale = Vector2(1, -2)
|
scroll_scale = Vector2(1, -2)
|
||||||
|
scroll_offset = Vector2(-1, 0)
|
||||||
repeat_size = Vector2(0, 375)
|
repeat_size = Vector2(0, 375)
|
||||||
autoscroll = Vector2(0, 1)
|
autoscroll = Vector2(0, 1)
|
||||||
repeat_times = 3
|
repeat_times = 3
|
||||||
|
|
@ -131,7 +132,7 @@ scale = Vector2(0.75, 0.75)
|
||||||
texture = ExtResource("2_pcgsf")
|
texture = ExtResource("2_pcgsf")
|
||||||
flip_h = true
|
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
|
z_index = -5
|
||||||
offset_right = 239.0
|
offset_right = 239.0
|
||||||
offset_bottom = 323.0
|
offset_bottom = 323.0
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ func _ready():
|
||||||
set_process(false)
|
set_process(false)
|
||||||
print(shield)
|
print(shield)
|
||||||
EventBus.set_shield.connect(_on_set_shield)
|
EventBus.set_shield.connect(_on_set_shield)
|
||||||
#EventBus.player_victory.connect(_on_player_victory)
|
EventBus.player_victory.connect(_on_player_victory)
|
||||||
# start()
|
# start()
|
||||||
|
|
||||||
func start():
|
func start():
|
||||||
|
|
@ -138,7 +138,7 @@ func _on_area_entered(area):
|
||||||
print("You can win!")
|
print("You can win!")
|
||||||
EventBus.heart_beat.emit(2.5)
|
EventBus.heart_beat.emit(2.5)
|
||||||
area.reparent(self)
|
area.reparent(self)
|
||||||
EventBus.win_game.emit()
|
EventBus.win_game.emit(1)
|
||||||
|
|
||||||
elif can_win == false:
|
elif can_win == false:
|
||||||
shield -= int(max_shield / 2)
|
shield -= int(max_shield / 2)
|
||||||
|
|
@ -172,16 +172,32 @@ func _on_damage_taken():
|
||||||
$Ship.material.set_shader_parameter("toggle", 0.0)
|
$Ship.material.set_shader_parameter("toggle", 0.0)
|
||||||
shader_active = false
|
shader_active = false
|
||||||
|
|
||||||
func _on_player_victory() -> void:
|
func _on_player_victory(ending: int) -> void:
|
||||||
print("Victory!")
|
|
||||||
# get_node("EnemyBullet").monitoring = false #TODO make sure bullets stop monitoring!
|
if ending == 1: # Heart Taken
|
||||||
set_process(false)
|
print("Victory!")
|
||||||
#$Ship.frame = 1
|
# get_node("EnemyBullet").monitoring = false #TODO make sure bullets stop monitoring!
|
||||||
self.monitorable = false
|
set_process(false)
|
||||||
self.monitoring = false
|
#$Ship.frame = 1
|
||||||
await get_tree().create_timer(4).timeout
|
self.monitorable = false
|
||||||
# $Ship/Boosters/BoosterBurst.show()
|
self.monitoring = false
|
||||||
var tween = create_tween()
|
await get_tree().create_timer(4).timeout
|
||||||
tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN)
|
# $Ship/Boosters/BoosterBurst.show()
|
||||||
await tween.finished
|
var tween = create_tween()
|
||||||
queue_free()
|
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()
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,8 @@ func hit_detection():
|
||||||
for node in nodes:
|
for node in nodes:
|
||||||
node.queue_free()
|
node.queue_free()
|
||||||
EventBus.enemy_died.emit()
|
EventBus.enemy_died.emit()
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ func _ready():
|
||||||
|
|
||||||
func spawn_enemies():
|
func spawn_enemies():
|
||||||
|
|
||||||
if wave_count == 2: #This is for CHICKENS
|
if wave_count == 0: #This is for CHICKENS
|
||||||
print("Enemy Wave: ", wave_count)
|
print("Enemy Wave: ", wave_count)
|
||||||
enemy = CHICKEN
|
enemy = CHICKEN
|
||||||
for x in range(COLS):
|
for x in range(COLS):
|
||||||
|
|
@ -53,7 +53,7 @@ func spawn_enemies():
|
||||||
enemy_count = rows_mod * cols_mod
|
enemy_count = rows_mod * cols_mod
|
||||||
await get_tree().process_frame
|
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)
|
print("Enemy Wave: ", wave_count)
|
||||||
|
|
||||||
# Spawn Table
|
# Spawn Table
|
||||||
|
|
@ -89,7 +89,7 @@ func spawn_enemies():
|
||||||
s.start_all_animations()
|
s.start_all_animations()
|
||||||
|
|
||||||
|
|
||||||
if wave_count == 0 : #This is for Boss
|
if wave_count == 3 : #This is for Boss
|
||||||
|
|
||||||
# Hide the player
|
# Hide the player
|
||||||
|
|
||||||
|
|
@ -97,7 +97,8 @@ func spawn_enemies():
|
||||||
EventBus.cloud_speed.emit(true)
|
EventBus.cloud_speed.emit(true)
|
||||||
|
|
||||||
# Spawn Boss
|
# Spawn Boss
|
||||||
EventBus.flash_screen.emit(.25)
|
await get_tree().create_timer(3).timeout
|
||||||
|
#EventBus.flash_screen.emit(.25)
|
||||||
var b = BOSS.instantiate()
|
var b = BOSS.instantiate()
|
||||||
add_child(b)
|
add_child(b)
|
||||||
#b.position = Vector2(screensize.x / 2, position.y + 100)
|
#b.position = Vector2(screensize.x / 2, position.y + 100)
|
||||||
|
|
@ -126,7 +127,8 @@ func wave_status():
|
||||||
wave_complete = false
|
wave_complete = false
|
||||||
|
|
||||||
else:
|
else:
|
||||||
EventBus.goose_talk.emit(wave_count)
|
await get_tree().create_timer(3).timeout
|
||||||
|
EventBus.goose_talk.emit(wave_count, 4)
|
||||||
wave_initialize()
|
wave_initialize()
|
||||||
wave_complete = true
|
wave_complete = true
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 622 B After Width: | Height: | Size: 667 B |
Loading…
Add table
Add a link
Reference in a new issue