Sound Asset Status
All 62 SFX events registered in AudioManager.cs resolve to a real file in
res://assets/audio/. Verified by parsing every RegisterSound(...) call and
checking the target file exists on disk (zero missing as of this audit).
This list was previously stale: every item under "Missing Sounds" below had
already been wired up in code by the time this was last read, plus two of
the existing entries were silently broken (see Fixed below) - none of this
was visible just from reading the file list, only from cross-referencing
against the registration code and disk.
Coverage
Most events reuse a small set of source recordings deliberately (e.g.
turn_start, battle_start, shop_enter, menu_open, event_appear, and
notification all share ability_activate.wav) rather than leaving silence -
that's a real design choice already in place, not a gap.
| Category | Events |
|---|---|
| Combat | player_damage(_heavy), enemy_damage(_heavy), player_block, enemy_block, block_break, heal, buff_apply, debuff_apply, bleed_tick, poison_tick, turn_start, turn_end, enemy_turn, battle_start, victory, defeat |
| Cards | card_play, enemy_card_play, card_draw, card_shuffle, card_exhaust, card_discard, card_hover, card_select, card_reveal, card_upgrade |
| Shop & UI | shop_enter, shop_exit, card_buy, totem_buy, terminate, reroll, insufficient_funds, capital_gain, capital_loss, button_hover, button_click, button_confirm, button_cancel, menu_open, menu_close, notification, error, confirm |
| Map & Navigation | node_select, node_hover, phase_complete, sector_complete |
| Events | event_appear, event_choice, breakthrough |
| Totems | totem_activate, totem_reveal |
| Misc | coffee_sip, electricity, paper_shredder, glass_shatter, normal_read, robot_read, robotic_dialogue |
Fixed during this audit (were silently broken)
player_damage_heavypointed atplayer_damage_heavy.wav, which doesn't
exist anywhere inassets/audio/- the heavy-hit sound for the player
never played, no error logged (PlaySFXInternal fails silently by design
when a file is missing). Re-pointed atenemy_damage_heavy.wav, matching
the existing pattern ofenemy_damagereusingplayer_damage_variation1.wav.robot_readwas registered with a percent-encoded path
(robot%20read.wav), but Godot'sres://resource paths are not
URL-decoded - the real file isrobot read.wav(literal space). Confirmed
viaResourceLoader.exists()in a headless Godot run that the encoded path
resolved tofalse. This SFX (used for Phase 3 / AI-sector dialogue) never
played. Fixed the path to use the literal filename.
Still genuinely missing: none
If new SFX events get added to AudioManager.cs without a real audio file
behind them, PlaySFXInternal's missing-file check will skip playback
silently (no console output - the diagnostic print is commented out at
scripts/AudioManager.cs:301). Worth uncommenting that during active sound
work so gaps surface immediately instead of needing this kind of audit.