Satsuma no longer falls apart when driving together; automatic passenger seat

- A driven vehicle is no longer released after 3 s without data (a short hitch
  of the driver, e.g. saving, stopped the car instantly on the passenger's side
  and ripped the parts off, which then synced to everyone): 30 s timeout, on
  release it keeps the driver's velocity and part joints stay unbreakable for
  3 more seconds
- Cargo in a moving vehicle belongs to its driver (passengers no longer claim
  items in the car, which then followed late and kinematic at the driver's end
  and knocked seats and parts off)
- Passenger: sit down automatically by stepping into the open passenger door,
  also without a driver (seat from the game's DriverHeadPivot); Space or P to
  get out

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-02 10:23:25 +02:00
co-authored by Claude Opus 5.5
parent 73004340ce
commit 983291a4b3
4 changed files with 262 additions and 34 deletions
+12 -6
View File
@@ -1850,14 +1850,20 @@ namespace MSCO
StartCoroutine(ApplyWorldSnapshot(snapshot));
}
string passengerResult = null;
if (MSCO.PassengerKey != null && !overlays.AnyOpen && MSCO.PassengerKey.GetKeybindDown())
passengerResult = passenger.Toggle(localPlayer, playerCamera, objects, players);
else if (passenger.IsRiding && !overlays.AnyOpen && Input.GetKeyDown(KeyCode.Space))
{
string result = passenger.Toggle(localPlayer, playerCamera, objects, players);
if (result != null)
{
SetStatus(result);
overlays.AddChat("", result, true); // im Spiel sichtbar, nicht nur in der Konsole
}
passenger.Exit(localPlayer, playerCamera); // aussteigen wie zu Fuß losspringen
passengerResult = "Got out";
}
else if (IsPeerReady && MenuHelper.InGame && localPlayer != null && !overlays.AnyOpen)
passengerResult = passenger.AutoUpdate(localPlayer, playerCamera, objects, players); // in die Beifahrertür treten
if (passengerResult != null)
{
SetStatus(passengerResult);
overlays.AddChat("", passengerResult, true); // im Spiel sichtbar, nicht nur in der Konsole
}
bool ready = IsPeerReady;