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.