From a76cade9d5b27d02e0620803e59dc179ec6a1e54 Mon Sep 17 00:00:00 2001 From: SkyanUltra Date: Sat, 6 Dec 2025 09:14:27 -0500 Subject: [PATCH] Castle Bridge touch-ups (#765) - Bridges now play a unique "BridgeBreak" sound effect listed as "bridge_break" which mimics the functionality of the original game playing the brick break and bumping sounds simultaneously. - Axes now have an optional "Cut" animation that plays if it exists upon picking it up rather than outright making the axe disappear. - Bridges no longer check for EVERY bridge piece when running timer code, instead only caring about the bridge segments that are visible and tangible. - Timers associated with bridges have been sped up and adjusted to better match the original game. - Multiple axes being picked up should no longer cause errors when bowser is on screen. - Bowser now ignores being caught by the "flag death" function if he is defeated by picking up an axe. - Bowser no longer attempts to shoot fire or throw hammers if he is defeated by picking up an axe. --- Assets/Audio/SFX/BreakBridge.wav | Bin 0 -> 32854 bytes Assets/Audio/SFX/BreakBridge.wav.import | 24 +++ Scenes/Prefabs/Autoload/AudioManager.tscn | 8 +- Scenes/Prefabs/Entities/Enemies/Bowser.tscn | 64 ++++---- Scenes/Prefabs/LevelObjects/CastleBridge.tscn | 155 ++++++++++-------- Scripts/Classes/Entities/Enemies/Bowser.gd | 44 +++-- Scripts/Classes/Entities/Enemy.gd | 3 +- Scripts/Classes/Singletons/AudioManager.gd | 1 + Scripts/Parts/CastleBridge.gd | 30 +++- 9 files changed, 199 insertions(+), 130 deletions(-) create mode 100644 Assets/Audio/SFX/BreakBridge.wav create mode 100644 Assets/Audio/SFX/BreakBridge.wav.import diff --git a/Assets/Audio/SFX/BreakBridge.wav b/Assets/Audio/SFX/BreakBridge.wav new file mode 100644 index 0000000000000000000000000000000000000000..5dce976d85293935201730ca3ce9d83f6dd9bfec GIT binary patch literal 32854 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 V*G72snlg6A?<1y-`Tzbs{|` void: return sprite.play("FireCharge") await get_tree().create_timer(1, false).timeout + if ignore_flag_die: + return var flame = BOWSER_FLAME.instantiate() flame.global_position = global_position + Vector2(18 * direction, -20) flame.mode = 1 @@ -77,23 +79,25 @@ func breathe_fire() -> void: await get_tree().create_timer(0.5, false).timeout sprite.play("Idle") -func bridge_fall() -> void: - process_mode = Node.PROCESS_MODE_ALWAYS - direction = 1 - $FlameTimer.queue_free() - $HammerTime.queue_free() - $JumpTimer.queue_free() - sprite.play("Fall") - sprite.reset_physics_interpolation() - $MoveAnimation.queue_free() - can_fall = false - velocity.y = 0 - await get_tree().create_timer(2).timeout - $FallSFX.play() - can_fall = true - $Collision.queue_free() - await get_tree().create_timer(2).timeout - queue_free() +func bridge_fall(start: bool = false) -> void: + if start: + process_mode = Node.PROCESS_MODE_ALWAYS + direction = 1 + sprite.play("Fall") + sprite.reset_physics_interpolation() + $FlameTimer.queue_free() + $HammerTime.queue_free() + $JumpTimer.queue_free() + $MoveAnimation.queue_free() + can_fall = false + velocity.y = 0 + else: + $FallSFX.play() + ignore_flag_die = true + can_fall = true + $Collision.queue_free() + await get_tree().create_timer(5).timeout + queue_free() func throw_hammers() -> void: if can_hammer == false: @@ -102,7 +106,13 @@ func throw_hammers() -> void: await get_tree().create_timer(0.5, false).timeout for i in randi_range(3, 6): $Hammer.show() + if ignore_flag_die: + $Hammer.hide() + return await get_tree().create_timer(0.1, false).timeout + if ignore_flag_die: + $Hammer.hide() + return var node = HAMMER.instantiate() node.velocity.y = -200 node.global_position = $Hammer.global_position diff --git a/Scripts/Classes/Entities/Enemy.gd b/Scripts/Classes/Entities/Enemy.gd index d665643..c373261 100644 --- a/Scripts/Classes/Entities/Enemy.gd +++ b/Scripts/Classes/Entities/Enemy.gd @@ -8,6 +8,7 @@ signal killed(direction: int) @export var score_note_adder: ScoreNoteSpawner = null var direction := -1 +var ignore_flag_die := false func damage_player(player: Player) -> void: player.damage() @@ -31,7 +32,7 @@ func die_from_object(obj: Node2D) -> void: queue_free() func flag_die() -> void: - if on_screen_enabler != null: + if on_screen_enabler != null and ignore_flag_die == false: if on_screen_enabler.is_on_screen(): queue_free() if score_note_adder != null: diff --git a/Scripts/Classes/Singletons/AudioManager.gd b/Scripts/Classes/Singletons/AudioManager.gd index 94ad32d..ea4bee0 100644 --- a/Scripts/Classes/Singletons/AudioManager.gd +++ b/Scripts/Classes/Singletons/AudioManager.gd @@ -11,6 +11,7 @@ const DEFAULT_SFX_LIBRARY := { "power_up": ("res://Assets/Audio/SFX/Powerup.wav"), "item_appear": ("res://Assets/Audio/SFX/ItemAppear.wav"), "block_break": ("res://Assets/Audio/SFX/BreakBlock.wav"), + "bridge_break": ("res://Assets/Audio/SFX/BreakBridge.wav"), "enemy_stomp": ("res://Assets/Audio/SFX/Stomp.wav"), "kick": ("res://Assets/Audio/SFX/Kick.wav"), "fireball": ("res://Assets/Audio/SFX/Fireball.wav"), diff --git a/Scripts/Parts/CastleBridge.gd b/Scripts/Parts/CastleBridge.gd index a89e145..c166b91 100644 --- a/Scripts/Parts/CastleBridge.gd +++ b/Scripts/Parts/CastleBridge.gd @@ -45,20 +45,34 @@ func destroy_bridge(player: Player) -> void: Global.can_time_tick = false axe_touched.emit() $Axe.queue_free() + if $AxeAnim.sprite_frames.has_animation("Cut"): + $AxeAnim.play("Cut") + else: + $AxeAnim.queue_free() if bowser_present: + var bowser_count = 0 for i in get_tree().get_nodes_in_group("Bowser"): - i.bridge_fall() + if i.ignore_flag_die == false: + bowser_count += 1 + i.bridge_fall(true) + if bowser_count <= 0: + return get_tree().paused = true await get_tree().create_timer(0.5).timeout + AudioManager.play_sfx("bridge_break", $BridgeChain.global_position) + $BridgeChain.queue_free() + await get_tree().create_timer(0.067).timeout for i in $Bridge.get_children(): if i.visible: - AudioManager.play_sfx("block_break", i.global_position) - if Settings.file.visuals.bridge_animation == 0: - bridge_piece_break(i) - else: - bridge_piece_fall(i) - await get_tree().create_timer(0.1).timeout - await get_tree().create_timer(1.5).timeout + AudioManager.play_sfx("bridge_break", i.global_position) + if Settings.file.visuals.bridge_animation == 0: + bridge_piece_break(i) + else: + bridge_piece_fall(i) + await get_tree().create_timer(0.067).timeout + for i in get_tree().get_nodes_in_group("Bowser"): + i.bridge_fall(false) + await get_tree().create_timer(1).timeout get_tree().paused = false victory_sequence(player)