12 lines
2.8 KiB
Markdown
12 lines
2.8 KiB
Markdown
# Reliable player guidance delivery
|
|
|
|
Mission and spectator guidance now records a delivered message only when native `SCR_HintManagerComponent.ShowCustom` returns true. The existing one-second mission monitor and 250-millisecond spectator monitor retry messages refused by the hint manager. Missing managers likewise leave delivery pending. A successful unchanged message is still shown only once; a changed phase, message, spectator reason or survivor availability remains eligible for delivery.
|
|
|
|
This corrects a concrete mismatch with installed vanilla `scripts/Game/Components/Hints/SCR_HintManagerComponent.c`: `ShowCustom` returns `Show`, which can refuse presentation because hints cannot currently be shown or because a higher-priority hint is already visible. Previously both successor monitors cached the message even after this refusal. No new timer is installed, and native hint preferences and priority rules remain authoritative.
|
|
|
|
Outside PREPARING, mission guidance now requires a living controlled actor and no explicit spectator reason. Unconscious living prisoners continue to receive recovery and mission information. PREPARING status remains available before a body exists. The spectator monitor retains its existing camera, survivor selection, identity and permission rules.
|
|
|
|
`python tests/test_hint_delivery.py` executes the actual two production monitor bodies with substituted native hint, camera and world boundaries. It checks missing managers, repeated refusal, eventual success, unchanged-message deduplication, phase/content changes, spectator reason and survivor availability changes, empty messages, dead/absent/observer exclusion, living recovery, unconscious living actors and body-free preparation. `python tests/test_spectator_guidance.py` retains the existing reason/cycling policy checks. These are source-policy regressions, not native widget, manual-input or multiplayer validation. The current source subsequently compiled in the [160849 Core two-round regression](evidence/native-2026-09-19-160849-core-loops/report.json): 612 passing assertions, two completions and zero script/runtime or engine errors, with the captured 192-file source snapshot unchanged across the run. The console includes objective-guidance reaction checks in both rounds. This is compilation and integration evidence; it does not independently exercise a real hint-manager priority refusal or visually establish every hint's rendering. Those retry cases remain covered by the actual-method source regressions.
|
|
|
|
Preparation failure presentation is a separate surface and evidence scope. Its native widget checks passed, but the Workbench failure capture was a blank blue editor viewport. Neither the clean Core regression nor that capture establishes ordinary-player visual readability of the failure status; see [preparation status](preparation-status.md).
|