Adds boss sounds
This commit is contained in:
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.
@@ -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