Files
EscapistsReintroduced/docs/evidence/passenger-handbrake-2026-10-30/README.md
T
2026-10-30 20:21:27 +01:00

45 lines
2.5 KiB
Markdown

# Passenger handbrake validation
The feature adds a held Space input for a conscious front passenger in wheeled
vehicles. Authority derives the passenger from the requesting player controller,
requires the current admitted mission body, and validates the actual occupied
seat. Seat points are compared in vehicle coordinates, excluding driver, turret,
rear and tandem seats. The held state is replicated from authority. Heartbeats
are sent every 250 ms; a 250 ms authority timer expires a demand older than one
second even when the passenger no longer receives input callbacks.
The driver's native `CarHandBrake` action receives the extra demand before native
control preparation. No release is written over the driver's action, and no gear
or service-brake values are changed. An already-set persistent brake or a native
persistent-brake toggle is left alone. Chat, menus, incapacity, leaving the seat,
and mission completion stop the passenger input.
## Native fixture
`native-probe.c` runs only in a disposable Workbench source snapshot. It suppresses
normal scenario preparation and supplies two scripted occupants and a locally
controlled driver. The passenger demand is injected through the production
server-side setter; this does **not** exercise physical Space input, the admission
RPC, or replication between two clients. Those remain a dedicated-server playtest.
The fixture checks UAZ front/rear/driver seat eligibility, native brake engagement
and release, preservation of an existing parking brake, lease expiry without
heartbeats, and front-seat selection in a rotated S105. `prepare-native.py` copies
the exact addon sources and adds the temporary fixture and runner choice.
Earlier native experiments found that editing CharacterInputContext in
OnApplyControls did not drive the brake, and ordinary held input released an
existing parking latch. The implementation uses the native actor action and
skips that extra demand while the parking brake is already set.
## Result
All feature assertions completed successfully in the final run. No script errors
were reported. The strict runner exited 1 because it also counts 13 pre-existing
localization/world asset diagnostics; they are retained in `native-checks.log`
and the runner record. Cleanup and source immutability checks passed.
Additional checks: `git diff --check`, generated-menu freshness, and the four
Workshop changelog tests passed. At validation time the published Workshop version was 0.0.131;
the native checks preceded publication of this change.