# 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).