feat(simulation): add ListeningFocus eavesdrop positioning (#426)

New ListeningFocus component tracks stationary_ticks for eavesdrop
mechanic. Increments when position unchanged, resets on movement.
Sprint stance blocks accumulation, Careful reduces threshold from
30 to 20 ticks. Registered in SimulationPlugin after validate_movement.

17 tests covering all stances, thresholds, and edge cases.

Ref: D-053 (stance system), D-018 (sound model)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-16 00:40:54 +01:00
co-authored by Claude Opus 4.6
parent d0663c4193
commit 3a2cfc37e0
2 changed files with 461 additions and 2 deletions
+3 -2
View File
@@ -7,6 +7,7 @@ use bevy_ecs::schedule::IntoScheduleConfigs;
pub mod input;
pub mod interaction;
pub mod inventory;
pub mod listening;
pub mod monologue;
pub mod movement;
pub mod path_follow;
@@ -35,8 +36,8 @@ impl Plugin for SimulationPlugin {
path_follow::follow_paths.after(pathfinding::compute_paths),
movement::validate_movement.after(path_follow::follow_paths),
path_follow::cleanup_path_blocked.after(movement::validate_movement),
time::advance_tick
.after(path_follow::cleanup_path_blocked),
listening::update_listening_focus.after(movement::validate_movement),
time::advance_tick.after(path_follow::cleanup_path_blocked),
),
);