Adds boss sounds
This commit is contained in:
@@ -22,6 +22,16 @@ var _sounds: Dictionary = {
|
||||
"door_close": preload("res://assets/audio/sfx/door_close.wav"),
|
||||
"room_clear": preload("res://assets/audio/sfx/room_clear.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] = []
|
||||
|
||||
@@ -232,6 +232,7 @@ func _tick_assembly(_delta: float) -> void:
|
||||
|
||||
|
||||
func _spawn_wave() -> void:
|
||||
AudioManager.play("hivemind_pulse")
|
||||
var scenes := [DRIFTER_SCENE, REPEATER_SCENE, ANCHOR_SCENE]
|
||||
var hw := ROOM_HW - 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:
|
||||
AudioManager.play("hivemind_beam")
|
||||
# Start with telegraph phase
|
||||
_beam_telegraphing = true
|
||||
_telegraph_timer = BEAM_TELEGRAPH
|
||||
@@ -745,6 +747,7 @@ func _on_beam_hit(body: Node) -> void:
|
||||
|
||||
|
||||
func _attack_pulse() -> void:
|
||||
AudioManager.play("hivemind_knockback")
|
||||
if _player == null or not is_instance_valid(_player):
|
||||
return
|
||||
|
||||
@@ -903,6 +906,7 @@ func _tick_flash(delta: float) -> void:
|
||||
# Climax / Death
|
||||
# ---------------------------------------------------------------------------
|
||||
func _enter_climax() -> void:
|
||||
AudioManager.play("boss_death")
|
||||
_phase = Phase.CLIMAX
|
||||
_climax_timer = FREEZE_DURATION
|
||||
velocity = Vector2.ZERO
|
||||
|
||||
@@ -142,6 +142,7 @@ func _enter_transit() -> void:
|
||||
_transit_timer = TRANSIT_TIME
|
||||
|
||||
func _reappear() -> void:
|
||||
AudioManager.play("relay_teleport")
|
||||
# Pick random position within room bounds
|
||||
var min_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
|
||||
# ---------------------------------------------------------------------------
|
||||
func _fire_burst() -> void:
|
||||
AudioManager.play("relay_burst")
|
||||
var count := BURST_COUNT_P2 if _phase == Phase.TWO else BURST_COUNT_P1
|
||||
var angle_step := TAU / float(count)
|
||||
|
||||
@@ -394,6 +396,7 @@ func _flash_damage() -> void:
|
||||
# Climax / Death
|
||||
# ---------------------------------------------------------------------------
|
||||
func _enter_climax() -> void:
|
||||
AudioManager.play("boss_death")
|
||||
_phase = Phase.CLIMAX
|
||||
_climax_timer = FREEZE_DURATION
|
||||
_blink_accum = 0.0
|
||||
|
||||
@@ -111,6 +111,7 @@ func _enter_phase_two() -> void:
|
||||
_sweep_cd_timer = SWEEP_CD_P2 * 0.6 # first P2 sweep sooner
|
||||
|
||||
func _enter_climax() -> void:
|
||||
AudioManager.play("boss_death")
|
||||
_phase = Phase.CLIMAX
|
||||
velocity = Vector2.ZERO
|
||||
_freeze_timer = FREEZE_DURATION
|
||||
@@ -165,6 +166,7 @@ func _tick_sweep(delta: float) -> void:
|
||||
|
||||
|
||||
func _fire_sweep_pass() -> void:
|
||||
AudioManager.play("warden_sweep")
|
||||
_passes_fired += 1
|
||||
_pass_delay_timer = PASS_DELAY
|
||||
|
||||
@@ -287,6 +289,7 @@ func _tick_mines(delta: float) -> void:
|
||||
|
||||
|
||||
func _spawn_mine(world_pos: Vector2) -> void:
|
||||
AudioManager.play("mine_arm")
|
||||
var mine := Node2D.new()
|
||||
|
||||
# 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:
|
||||
AudioManager.play("mine_explode")
|
||||
var node: Node2D = entry["node"]
|
||||
if not is_instance_valid(node):
|
||||
return
|
||||
|
||||
@@ -224,6 +224,7 @@ func take_damage(amount: float) -> void:
|
||||
_die()
|
||||
|
||||
func _die() -> void:
|
||||
AudioManager.play("player_death")
|
||||
if RunManager.run_active:
|
||||
# Disable player so they can't move during death screen
|
||||
set_physics_process(false)
|
||||
|
||||
Reference in New Issue
Block a user