Adds boss sounds

This commit is contained in:
2026-03-12 10:12:48 -04:00
parent 39a6ae10d8
commit 3a744290eb
15 changed files with 22 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+10
View File
@@ -22,6 +22,16 @@ var _sounds: Dictionary = {
"door_close": preload("res://assets/audio/sfx/door_close.wav"), "door_close": preload("res://assets/audio/sfx/door_close.wav"),
"room_clear": preload("res://assets/audio/sfx/room_clear.wav"), "room_clear": preload("res://assets/audio/sfx/room_clear.wav"),
"teleport": preload("res://assets/audio/sfx/teleport.wav"), "teleport": preload("res://assets/audio/sfx/teleport.wav"),
"warden_sweep": preload("res://assets/audio/sfx/warden_sweep.wav"),
"mine_arm": preload("res://assets/audio/sfx/mine_arm.wav"),
"mine_explode": preload("res://assets/audio/sfx/mine_explode.wav"),
"relay_burst": preload("res://assets/audio/sfx/relay_burst.wav"),
"relay_teleport": preload("res://assets/audio/sfx/relay_teleport.wav"),
"hivemind_pulse": preload("res://assets/audio/sfx/hivemind_pulse.wav"),
"hivemind_beam": preload("res://assets/audio/sfx/hivemind_beam.wav"),
"hivemind_knockback": preload("res://assets/audio/sfx/hivemind_knockback.wav"),
"player_death": preload("res://assets/audio/sfx/player_death.wav"),
"boss_death": preload("res://assets/audio/sfx/boss_death.wav"),
} }
var _pool: Array[AudioStreamPlayer] = [] var _pool: Array[AudioStreamPlayer] = []
+4
View File
@@ -232,6 +232,7 @@ func _tick_assembly(_delta: float) -> void:
func _spawn_wave() -> void: func _spawn_wave() -> void:
AudioManager.play("hivemind_pulse")
var scenes := [DRIFTER_SCENE, REPEATER_SCENE, ANCHOR_SCENE] var scenes := [DRIFTER_SCENE, REPEATER_SCENE, ANCHOR_SCENE]
var hw := ROOM_HW - WALL_T - 80.0 var hw := ROOM_HW - WALL_T - 80.0
var hh := ROOM_HH - WALL_T - 80.0 var hh := ROOM_HH - WALL_T - 80.0
@@ -642,6 +643,7 @@ func _do_unique_attack() -> void:
func _start_beam() -> void: func _start_beam() -> void:
AudioManager.play("hivemind_beam")
# Start with telegraph phase # Start with telegraph phase
_beam_telegraphing = true _beam_telegraphing = true
_telegraph_timer = BEAM_TELEGRAPH _telegraph_timer = BEAM_TELEGRAPH
@@ -745,6 +747,7 @@ func _on_beam_hit(body: Node) -> void:
func _attack_pulse() -> void: func _attack_pulse() -> void:
AudioManager.play("hivemind_knockback")
if _player == null or not is_instance_valid(_player): if _player == null or not is_instance_valid(_player):
return return
@@ -903,6 +906,7 @@ func _tick_flash(delta: float) -> void:
# Climax / Death # Climax / Death
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
func _enter_climax() -> void: func _enter_climax() -> void:
AudioManager.play("boss_death")
_phase = Phase.CLIMAX _phase = Phase.CLIMAX
_climax_timer = FREEZE_DURATION _climax_timer = FREEZE_DURATION
velocity = Vector2.ZERO velocity = Vector2.ZERO
+3
View File
@@ -142,6 +142,7 @@ func _enter_transit() -> void:
_transit_timer = TRANSIT_TIME _transit_timer = TRANSIT_TIME
func _reappear() -> void: func _reappear() -> void:
AudioManager.play("relay_teleport")
# Pick random position within room bounds # Pick random position within room bounds
var min_x := _room_center.x - ROOM_HW + WALL_T + WALL_MARGIN var min_x := _room_center.x - ROOM_HW + WALL_T + WALL_MARGIN
var max_x := _room_center.x + ROOM_HW - WALL_T - WALL_MARGIN var max_x := _room_center.x + ROOM_HW - WALL_T - WALL_MARGIN
@@ -193,6 +194,7 @@ func _roll_drifter_threshold() -> void:
# Burst Transmission # Burst Transmission
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
func _fire_burst() -> void: func _fire_burst() -> void:
AudioManager.play("relay_burst")
var count := BURST_COUNT_P2 if _phase == Phase.TWO else BURST_COUNT_P1 var count := BURST_COUNT_P2 if _phase == Phase.TWO else BURST_COUNT_P1
var angle_step := TAU / float(count) var angle_step := TAU / float(count)
@@ -394,6 +396,7 @@ func _flash_damage() -> void:
# Climax / Death # Climax / Death
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
func _enter_climax() -> void: func _enter_climax() -> void:
AudioManager.play("boss_death")
_phase = Phase.CLIMAX _phase = Phase.CLIMAX
_climax_timer = FREEZE_DURATION _climax_timer = FREEZE_DURATION
_blink_accum = 0.0 _blink_accum = 0.0
+4
View File
@@ -111,6 +111,7 @@ func _enter_phase_two() -> void:
_sweep_cd_timer = SWEEP_CD_P2 * 0.6 # first P2 sweep sooner _sweep_cd_timer = SWEEP_CD_P2 * 0.6 # first P2 sweep sooner
func _enter_climax() -> void: func _enter_climax() -> void:
AudioManager.play("boss_death")
_phase = Phase.CLIMAX _phase = Phase.CLIMAX
velocity = Vector2.ZERO velocity = Vector2.ZERO
_freeze_timer = FREEZE_DURATION _freeze_timer = FREEZE_DURATION
@@ -165,6 +166,7 @@ func _tick_sweep(delta: float) -> void:
func _fire_sweep_pass() -> void: func _fire_sweep_pass() -> void:
AudioManager.play("warden_sweep")
_passes_fired += 1 _passes_fired += 1
_pass_delay_timer = PASS_DELAY _pass_delay_timer = PASS_DELAY
@@ -287,6 +289,7 @@ func _tick_mines(delta: float) -> void:
func _spawn_mine(world_pos: Vector2) -> void: func _spawn_mine(world_pos: Vector2) -> void:
AudioManager.play("mine_arm")
var mine := Node2D.new() var mine := Node2D.new()
# AOE ring visual — shows blast radius when armed (hidden initially) # AOE ring visual — shows blast radius when armed (hidden initially)
@@ -316,6 +319,7 @@ func _spawn_mine(world_pos: Vector2) -> void:
func _explode_mine(entry: Dictionary) -> void: func _explode_mine(entry: Dictionary) -> void:
AudioManager.play("mine_explode")
var node: Node2D = entry["node"] var node: Node2D = entry["node"]
if not is_instance_valid(node): if not is_instance_valid(node):
return return
+1
View File
@@ -224,6 +224,7 @@ func take_damage(amount: float) -> void:
_die() _die()
func _die() -> void: func _die() -> void:
AudioManager.play("player_death")
if RunManager.run_active: if RunManager.run_active:
# Disable player so they can't move during death screen # Disable player so they can't move during death screen
set_physics_process(false) set_physics_process(false)