From 20b657c7b1d560fc1b9ddd7595022ffbf8554d2a Mon Sep 17 00:00:00 2001 From: Henry Date: Sat, 7 Mar 2026 13:40:57 +0000 Subject: [PATCH] Tweaked timings between levels and other details with the ending. --- export_presets.cfg | 2 +- scenes/boss.gd | 11 +++++---- scenes/boss.tscn | 17 +++++++++++++ scenes/bullet.gd | 6 ++--- scenes/event_bus.gd | 5 ++-- scenes/goose.gd | 4 +++- scenes/main.gd | 35 +++++++++++++++++++-------- scenes/parallax_clouds.gd | 45 +++++++++++++++++++---------------- scenes/parallax_clouds.tscn | 3 ++- scenes/player.gd | 46 ++++++++++++++++++++++++------------ scenes/sink.gd | 3 ++- scenes/wave.gd | 12 ++++++---- sprites/sink_and_mirror.png | Bin 622 -> 667 bytes 13 files changed, 125 insertions(+), 64 deletions(-) diff --git a/export_presets.cfg b/export_presets.cfg index 76cf203..89d55f3 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -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 diff --git a/scenes/boss.gd b/scenes/boss.gd index 261515d..c9cc93d 100644 --- a/scenes/boss.gd +++ b/scenes/boss.gd @@ -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) diff --git a/scenes/boss.tscn b/scenes/boss.tscn index d860113..2872fc2 100644 --- a/scenes/boss.tscn +++ b/scenes/boss.tscn @@ -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") diff --git a/scenes/bullet.gd b/scenes/bullet.gd index a073e29..4443a7e 100644 --- a/scenes/bullet.gd +++ b/scenes/bullet.gd @@ -1,6 +1,6 @@ extends Area2D -#@onready var bullet = $Bullet/Sprite2D +@onready var bullet = $Bullet @export var speed = -250 var shader_active = false @@ -59,9 +59,7 @@ func _on_area_entered(area: Area2D) -> void: position = Vector2.ZERO pause = true $Sprite2D/GPUParticles2D.hide() - self.monitoring = false - self.monitorable = false - + "mirror": diff --git a/scenes/event_bus.gd b/scenes/event_bus.gd index 632a89c..64f5979 100644 --- a/scenes/event_bus.gd +++ b/scenes/event_bus.gd @@ -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) diff --git a/scenes/goose.gd b/scenes/goose.gd index 59a1762..d2a235a 100644 --- a/scenes/goose.gd +++ b/scenes/goose.gd @@ -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() diff --git a/scenes/main.gd b/scenes/main.gd index e557a2b..1a237ef 100644 --- a/scenes/main.gd +++ b/scenes/main.gd @@ -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!") diff --git a/scenes/parallax_clouds.gd b/scenes/parallax_clouds.gd index 6574c43..3235871 100644 --- a/scenes/parallax_clouds.gd +++ b/scenes/parallax_clouds.gd @@ -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) - - $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 - + 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).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 diff --git a/scenes/parallax_clouds.tscn b/scenes/parallax_clouds.tscn index a5abfdc..4ff5e76 100644 --- a/scenes/parallax_clouds.tscn +++ b/scenes/parallax_clouds.tscn @@ -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 diff --git a/scenes/player.gd b/scenes/player.gd index 2539a92..3ebed74 100644 --- a/scenes/player.gd +++ b/scenes/player.gd @@ -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() diff --git a/scenes/sink.gd b/scenes/sink.gd index 92c381e..21c8508 100644 --- a/scenes/sink.gd +++ b/scenes/sink.gd @@ -58,7 +58,8 @@ func hit_detection(): for node in nodes: node.queue_free() EventBus.enemy_died.emit() - queue_free() + queue_free() + diff --git a/scenes/wave.gd b/scenes/wave.gd index 78502e4..ba90144 100644 --- a/scenes/wave.gd +++ b/scenes/wave.gd @@ -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 diff --git a/sprites/sink_and_mirror.png b/sprites/sink_and_mirror.png index b4b105ee6cc69769ca8c5218635bd22fbe693e5e..0e1b170b4875cd90c7a1e70281f30544084415a3 100644 GIT binary patch delta 570 zcmV-A0>%CA1e*nrY<~h7NklMun~wh^xBb{x^<^)7p^d#A!tICJF47C`fG(D!YCq2O0; z?t7tZIN4_?v43u`(f1CxBoEjJSd%++{m9YA!skXF^`p1|KqdLj#lTVaN2Kdph+9s! zkAb%`UG;qc)15eRl<+Ks#u2e_ya7l$=+_iU8b#xgvt^e+R*I25$IM$7YJ>;`pRs0A=QYIgeP2u9xI%M(CVCf*;^JAZ!uN6vS6*uFrN*Oe@H}<0IQWhi1L5a+?8U(*;vIa*gFtHn=}97hNO}^qYF-E5 zaxGI)lmM}>PDFCP#YK!;QtVr1B65cZc`rlyMCW(770J@7G8fU8{GSBiEW|tbkk>vP zP3no<;WO<~CBwi~Ug~tYNf&u()tTPqA!KnQ-{m3r_k~;h2M$G0OwT5=wEzGB07*qo IM6N<$f-b=vTmS$7 delta 525 zcmV+o0`mQv1?~ipY<~glNkl zbs0cL&RO?um-Vuo?d2|)z|gqQ@^0>sUL)`3E~hXA)guvwkh0}t6i!dl?)NW|vNH}w z{qW!|ICPxs5Y+LtzVK1N=m#{;_COtH<{J>VZul?&=N!^nUw<;xIJJSxvE$y~eMn4j zBrSfRSWDOsqIx_SC|U29Or|C51@6XjpP$ z$-ZZ=r5LF3&nZ~wPm6HL%bo1$UIjnaK=-Pd>8~C1yvkp10CCatcm4GjIiKNf`U7$O zt{macfv17P90X?hq-dk-v746;DaDjH#?p8Uu#aCIKz}ht`J%EmU{1IYOl2b614bh}yr&TxlznQ=FyeTHk1JeDfPBHGFS69c9P z>;M~iS*LxMa)L9wzN*j#ALUn_J|^iPzn1Dq&vNH7OyslNIs3nGivIyas7#T}3v)pL P0000