private static void Postfix(VehicleDockingBay __instance) { bool flag = __instance.subRoot is BaseRoot; bool flag2 = flag; if (flag2) { __instance.CancelInvoke("OnUndockingStart"); __instance.InvokeRepeating("OnUndockingStart", 0.0f, 1f); } }
private void FinishVehicleUndocking(VehicleUndocking packet, Vehicle vehicle, VehicleDockingBay vehicleDockingBay) { if (vehicleDockingBay.GetSubRoot().isCyclops) { vehicleDockingBay.SetVehicleUndocked(); } vehicleDockingBay._dockedVehicle = null; vehicleDockingBay.CancelInvoke("RepairVehicle"); vehicle.docked = false; Optional <RemotePlayer> player = remotePlayerManager.Find(packet.PlayerId); if (player.HasValue) { // Sometimes the player is not set accordingly which stretches the player's model instead of putting them in place // after undocking. This fixes it (the player rigid body seems to not be set right sometimes) player.Value.SetSubRoot(null); player.Value.SetVehicle(null); player.Value.SetVehicle(vehicle); } vehicles.SetOnPilotMode(packet.VehicleId, packet.PlayerId, true); Log.Debug($"Set vehicle undocking complete"); }