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"),
|
"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] = []
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user