Decompiled source of Version55 Company Cruiser v1.0.1

BepInEx/plugins/v55/scandal.v55cruiser.dll

Decompiled 3 hours ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Logging;
using CruiserXL.Compatibility;
using GameNetcodeStuff;
using HarmonyLib;
using LethalCompanyInputUtils.Api;
using Microsoft.CodeAnalysis;
using ScandalsTweaks.Utils;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.Scripting.APIUpdating;
using VoxxWeatherPlugin.Patches;
using VoxxWeatherPlugin.Utils;
using VoxxWeatherPlugin.Weathers;
using scandal.v55cruiser.NetcodePatcher;
using v55Cruiser;
using v55Cruiser.Behaviour;
using v55Cruiser.Compatibility;
using v55Cruiser.Patches;
using v55Cruiser.Utils;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("ScandalsTweaks")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")]
[assembly: IgnoresAccessChecksTo("voxx.LethalElementsPlugin")]
[assembly: AssemblyCompany("scandal.v55cruiser")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.1.0")]
[assembly: AssemblyInformationalVersion("1.0.1+1ac3cbc9607b76c2a864064272d8356104f3df19")]
[assembly: AssemblyProduct("v55Cruiser")]
[assembly: AssemblyTitle("scandal.v55cruiser")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.1.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
public enum TruckVersionType
{
	V55 = 1,
	V56,
	V70
}
public class v55VehicleCollisionTrigger : MonoBehaviour
{
	public v55VehicleController mainScript = null;

	public BoxCollider insideTruckNavMeshBounds = null;

	public EnemyAI[] enemiesLastHit = null;

	private float timeSinceHittingPlayer;

	private float timeSinceHittingEnemy;

	private int enemyIndex;

	public void Start()
	{
		enemiesLastHit = (EnemyAI[])(object)new EnemyAI[3];
	}

	public void OnTriggerEnter(Collider other)
	{
		//IL_0469: Unknown result type (might be due to invalid IL or missing references)
		//IL_046f: Invalid comparison between Unknown and I4
		//IL_014c: Unknown result type (might be due to invalid IL or missing references)
		//IL_015c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0161: Unknown result type (might be due to invalid IL or missing references)
		//IL_0166: Unknown result type (might be due to invalid IL or missing references)
		//IL_016e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Unknown result type (might be due to invalid IL or missing references)
		//IL_017d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0182: Unknown result type (might be due to invalid IL or missing references)
		//IL_0189: Unknown result type (might be due to invalid IL or missing references)
		//IL_018e: Unknown result type (might be due to invalid IL or missing references)
		//IL_053a: Unknown result type (might be due to invalid IL or missing references)
		//IL_054b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0556: Unknown result type (might be due to invalid IL or missing references)
		//IL_055b: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_0232: Unknown result type (might be due to invalid IL or missing references)
		//IL_023c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0241: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_05c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_05fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0297: Unknown result type (might be due to invalid IL or missing references)
		//IL_029e: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_069e: Unknown result type (might be due to invalid IL or missing references)
		//IL_06a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_06b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_06b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_06bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_06bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_06bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_06d2: Expected I4, but got Unknown
		//IL_06e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_06e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_06f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0719: Unknown result type (might be due to invalid IL or missing references)
		//IL_071e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0726: Unknown result type (might be due to invalid IL or missing references)
		//IL_074f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0754: Unknown result type (might be due to invalid IL or missing references)
		//IL_075c: Unknown result type (might be due to invalid IL or missing references)
		//IL_030d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0368: Unknown result type (might be due to invalid IL or missing references)
		//IL_036d: Unknown result type (might be due to invalid IL or missing references)
		if (!((VehicleController)mainScript).hasBeenSpawned || (((VehicleController)mainScript).magnetedToShip && ((VehicleController)mainScript).magnetTime > 0.8f))
		{
			return;
		}
		if (((Component)other).CompareTag("Player"))
		{
			PlayerControllerB val = default(PlayerControllerB);
			((Component)other).TryGetComponent<PlayerControllerB>(ref val);
			if ((Object)(object)val == (Object)null || References.timeSinceDemagnetising < 0.25f)
			{
				return;
			}
			Transform physicsTransform = ((VehicleController)mainScript).physicsRegion.physicsTransform;
			if ((Object)(object)val.physicsParent == (Object)(object)physicsTransform || (Object)(object)val.overridePhysicsParent == (Object)(object)physicsTransform)
			{
				return;
			}
			PlayerControllerBPatches.PlayerControllerBData data = PlayerControllerBPatches.GetData(val);
			if (data == null || data.isPlayerOnTruck || data.isPlayerInStorage || ((VehicleController)mainScript).localPlayerInControl || ((VehicleController)mainScript).localPlayerInPassengerSeat || Time.realtimeSinceStartup - timeSinceHittingPlayer < 0.25f)
			{
				return;
			}
			float num = ((Vector3)(ref ((VehicleController)mainScript).averageVelocity)).magnitude;
			if (num < 2f)
			{
				return;
			}
			Vector3 val2 = ((Component)val).transform.position - ((VehicleController)mainScript).mainRigidbody.position;
			float num2 = Vector3.Angle(Vector3.Normalize(((VehicleController)mainScript).averageVelocity * 1000f), Vector3.Normalize(val2 * 1000f));
			if (num2 > 70f)
			{
				return;
			}
			if (num2 < 30f && mainScript.wheelRPM > 400f)
			{
				num += 6f;
			}
			if ((((Component)val.gameplayCamera).transform.position - ((VehicleController)mainScript).mainRigidbody.position).y < -0.1f)
			{
				num *= 2f;
			}
			timeSinceHittingPlayer = Time.realtimeSinceStartup;
			Vector3 val3 = Vector3.ClampMagnitude(((VehicleController)mainScript).averageVelocity, 55f);
			if ((Object)(object)val == (Object)(object)GameNetworkManager.Instance.localPlayerController)
			{
				if ((Object)(object)physicsTransform == (Object)(object)GameNetworkManager.Instance.localPlayerController.physicsParent)
				{
					return;
				}
				if (num > 20f)
				{
					GameNetworkManager.Instance.localPlayerController.KillPlayer(val3, true, (CauseOfDeath)8, 0, default(Vector3));
				}
				else
				{
					int num3 = 0;
					if (num > 15f)
					{
						num3 = 80;
					}
					else if (num > 12f)
					{
						num3 = 60;
					}
					else if (num > 8f)
					{
						num3 = 40;
					}
					if (num3 > 0)
					{
						GameNetworkManager.Instance.localPlayerController.DamagePlayer(num3, true, true, (CauseOfDeath)8, 0, false, val3);
					}
				}
				if (!GameNetworkManager.Instance.localPlayerController.isPlayerDead && ((Vector3)(ref GameNetworkManager.Instance.localPlayerController.externalForceAutoFade)).sqrMagnitude < ((Vector3)(ref ((VehicleController)mainScript).averageVelocity)).sqrMagnitude)
				{
					GameNetworkManager.Instance.localPlayerController.externalForceAutoFade = ((VehicleController)mainScript).averageVelocity;
				}
			}
			else if (((NetworkBehaviour)mainScript).IsOwner && ((Vector3)(ref ((VehicleController)mainScript).averageVelocity)).magnitude > 1.8f)
			{
				mainScript.CarReactToObstacle(((VehicleController)mainScript).averageVelocity, ((Component)val).transform.position, ((VehicleController)mainScript).averageVelocity, (CarObstacleType)0);
			}
		}
		else
		{
			if (!((Component)other).gameObject.CompareTag("Enemy"))
			{
				return;
			}
			EnemyAICollisionDetect val4 = default(EnemyAICollisionDetect);
			((Component)other).TryGetComponent<EnemyAICollisionDetect>(ref val4);
			if ((Object)(object)val4 == (Object)null || (Object)(object)val4.mainScript == (Object)null || val4.mainScript.isEnemyDead || (!val4.mainScript.enemyType.canDie && (int)val4.mainScript.enemyType.SizeLimit == 0) || Time.realtimeSinceStartup - timeSinceHittingEnemy < 0.25f)
			{
				return;
			}
			EnemyAI obj = val4.mainScript;
			MouthDogAI val5 = (MouthDogAI)(object)((obj is MouthDogAI) ? obj : null);
			if ((!((Object)(object)val5 != (Object)null) || !Object.op_Implicit((Object)(object)val5) || val5.suspicionLevel <= 8) && !((VehicleController)mainScript).ignitionStarted)
			{
				return;
			}
			Object navMeshOwner = val4.mainScript.agent.navMeshOwner;
			Behaviour val6 = (Behaviour)(object)((navMeshOwner is Behaviour) ? navMeshOwner : null);
			if (((Object)(object)val6 != (Object)null && ((Component)val6).transform.IsChildOf(((Component)mainScript).transform)) || Vector3.Angle(((VehicleController)mainScript).averageVelocity, ((Component)val4.mainScript).transform.position - ((Component)this).transform.position) > 130f || (mainScript.liftGateOpen && ((Vector3)(ref ((VehicleController)mainScript).averageVelocity)).magnitude < 2f && (((Collider)insideTruckNavMeshBounds).ClosestPoint(((Component)val4.mainScript).transform.position) == ((Component)val4.mainScript).transform.position || ((Collider)insideTruckNavMeshBounds).ClosestPoint(val4.mainScript.agent.destination) == val4.mainScript.agent.destination)))
			{
				return;
			}
			bool dealDamage = false;
			for (int i = 0; i < enemiesLastHit.Length; i++)
			{
				if ((Object)(object)enemiesLastHit[i] == (Object)(object)val4.mainScript && (Time.realtimeSinceStartup - timeSinceHittingEnemy < 0.6f || ((Vector3)(ref ((VehicleController)mainScript).averageVelocity)).magnitude < 4f))
				{
					dealDamage = true;
				}
			}
			timeSinceHittingEnemy = Time.realtimeSinceStartup;
			Vector3 position = ((Component)val4).transform.position;
			bool flag = false;
			EnemySize enemySize = val4.mainScript.enemyType.EnemySize;
			EnemySize val7 = enemySize;
			switch ((int)val7)
			{
			case 0:
				flag = mainScript.CarReactToObstacle(((VehicleController)mainScript).averageVelocity, position, ((VehicleController)mainScript).averageVelocity, (CarObstacleType)1, 1f, val4.mainScript, dealDamage);
				break;
			case 1:
				flag = mainScript.CarReactToObstacle(((VehicleController)mainScript).averageVelocity, position, ((VehicleController)mainScript).averageVelocity, (CarObstacleType)1, 3f, val4.mainScript, dealDamage);
				break;
			case 2:
				flag = mainScript.CarReactToObstacle(((VehicleController)mainScript).averageVelocity, position, ((VehicleController)mainScript).averageVelocity, (CarObstacleType)1, 2f, val4.mainScript, dealDamage);
				break;
			}
			if (flag)
			{
				enemyIndex = (enemyIndex + 1) % 3;
				enemiesLastHit[enemyIndex] = val4.mainScript;
				return;
			}
			for (int j = 0; j < enemiesLastHit.Length; j++)
			{
				if ((Object)(object)enemiesLastHit[j] == (Object)(object)val4.mainScript)
				{
					enemiesLastHit[j] = null;
				}
			}
		}
	}
}
public class v55VehicleController : VehicleController
{
	[Header("Variety")]
	public TruckVersionType truckType;

	public v55InteriorType LHDInterior = null;

	public v55InteriorType RHDInterior = null;

	public v55InteriorType currentInterior = null;

	public Transform v55HealthMeter = null;

	public Transform v56HealthMeter = null;

	public GameObject v55EngineBay = null;

	public GameObject v56EngineBay = null;

	public int interiorType;

	public bool isInteriorRHD;

	[Header("Vehicle Physics")]
	public List<WheelCollider> wheels = null;

	public AnimationCurve steeringWheelCurve = null;

	public v55VehicleCollisionTrigger collisionTrigger = null;

	public Rigidbody playerPhysicsBody = null;

	private WheelHit[] wheelHits = (WheelHit[])(object)new WheelHit[4];

	public Vector3 previousVehiclePosition;

	private float timeSinceUntethered;

	public float sidewaysSlip;

	public float forwardsSlip;

	public float wheelTorque;

	public float wheelBrakeTorque;

	public bool hasDeliveredVehicle;

	public float maxBrakingPower = 2000f;

	public float frontWheelRPM;

	public float backWheelRPM;

	public float wheelRPM;

	[Header("Drivetrain")]
	public float forwardWheelSpeed;

	public float reverseWheelSpeed;

	[Header("Multiplayer")]
	public Collider vehicleBounds = null;

	public Collider storageCompartment = null;

	public PlayerControllerB playerWhoShifted = null;

	public Vector3 playerPositionOffset;

	public Vector3 seatNodePositionOffset;

	public Vector2 syncedMoveInputVector;

	public float syncedPlayerSteeringAnim;

	public float syncedWheelRotation;

	public float syncedFrontWheelRPM;

	public float syncedBackWheelRPM;

	public float syncedWheelRPM;

	public float syncedEngineRPM;

	public float syncedMotorTorque;

	public float syncedBrakeTorque;

	public int syncedCarHP;

	public bool syncedDrivePedalPressed;

	public bool syncedBrakePedalPressed;

	public float tyreStress;

	public bool wheelSlipping;

	public float syncCarEffectsInterval;

	public float syncWheelTorqueInterval;

	public float syncCarDrivetrainInterval;

	[Header("Effects")]
	public GameObject[] disableOnDestroy = null;

	public InteractTrigger pushTruckTrigger = null;

	public Collider[] weatherEffectBlockers = null;

	public ParticleSystem frontTireSparks = null;

	public MeshRenderer leftBrakeMesh = null;

	public MeshRenderer rightBrakeMesh = null;

	public MeshRenderer backLeftBrakeMesh = null;

	public MeshRenderer backRightBrakeMesh = null;

	public AnimationCurve engineAudio1Curve = null;

	public AnimationCurve engineAudio2Curve = null;

	public GameObject destroyedTruckMesh_1 = null;

	public GameObject windshieldMesh = null;

	public GameObject carKeyInHand = null;

	public MeshRenderer radarMapIcon = null;

	public MeshRenderer radarMapDestroyedIcon = null;

	public Animator ignitionAnimator = null;

	public GameObject carKeyContainer = null;

	private Transform leftHandServerItemTarget = null;

	private Vector3 LHD_Pos_Local = new Vector3(0.0489f, 0.1371f, -0.1566f);

	private Vector3 LHD_Pos_Server = new Vector3(0.0366f, 0.1023f, -0.1088f);

	private Vector3 LHD_Rot_Local = new Vector3(-3.446f, 3.193f, 172.642f);

	private Vector3 LHD_Rot_Server = new Vector3(-191.643f, 174.051f, -7.768005f);

	private Vector3 RHD_Pos_Local = new Vector3(-0.01708288f, 0.1665026f, -0.1157278f);

	private Vector3 RHD_Pos_Server = new Vector3(-0.0194879f, 0.1340649f, -0.1071167f);

	private Vector3 RHD_Rot_Local = new Vector3(21.592f, -11.63f, -158.578f);

	private Vector3 RHD_Rot_Server = new Vector3(-9.158f, -18.16f, -162.445f);

	public bool lockedKeyToIgnition;

	public bool isCabLightOn;

	public bool liftGateOpen;

	public float playerSteeringWheelAnimFloat;

	public float ignitionRotSpeed = 45f;

	[Header("Audio")]
	public AudioSource[] allVehicleAudios = null;

	public AudioSource carKeySoundsAudio = null;

	public AudioSource ejectorButtonAudio = null;

	public AudioSource reverseWhineAudio = null;

	public AudioSource verticalColumnAudio = null;

	public AudioClip dashboardButton = null;

	public AudioClip revEngineStart1 = null;

	[Header("Radio")]
	public AudioClip radio_BabyFace = null;

	public float timeLastSyncedRadio;

	public float radioPingTimestamp;

	[Header("Materials")]
	public Material greyLightOffMat = null;

	public Material redLightOffMat = null;

	public override void OnNetworkSpawn()
	{
		((NetworkBehaviour)this).OnNetworkSpawn();
		if (!StartOfRound.Instance.inShipPhase && ((NetworkBehaviour)this).IsServer)
		{
			int interiorTypeRpc = new Random(StartOfRound.Instance.randomMapSeed).Next(0, 2);
			SetInteriorTypeRpc(interiorTypeRpc);
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void SetInteriorTypeRpc(int carInteriorType)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager != null && networkManager.IsListening)
		{
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
			{
				RpcAttributeParams val = new RpcAttributeParams
				{
					RequireOwnership = false
				};
				RpcParams val2 = default(RpcParams);
				FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(2830820490u, val2, val, (SendTo)6, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val3, carInteriorType);
				((NetworkBehaviour)this).__endSendRpc(ref val3, 2830820490u, val2, val, (SendTo)6, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
			{
				((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
				SetInteriorType(carInteriorType);
			}
		}
	}

	public void SetInteriorType(int carInteriorType)
	{
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_0081: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_0101: Unknown result type (might be due to invalid IL or missing references)
		//IL_010b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0131: Unknown result type (might be due to invalid IL or missing references)
		//IL_0146: Unknown result type (might be due to invalid IL or missing references)
		//IL_0150: Unknown result type (might be due to invalid IL or missing references)
		//IL_0176: Unknown result type (might be due to invalid IL or missing references)
		//IL_018b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0195: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01da: Unknown result type (might be due to invalid IL or missing references)
		//IL_022a: Unknown result type (might be due to invalid IL or missing references)
		//IL_023f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0249: Unknown result type (might be due to invalid IL or missing references)
		//IL_026f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0284: Unknown result type (might be due to invalid IL or missing references)
		//IL_028e: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_030e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0318: Unknown result type (might be due to invalid IL or missing references)
		//IL_033e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0353: Unknown result type (might be due to invalid IL or missing references)
		//IL_035d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0383: Unknown result type (might be due to invalid IL or missing references)
		//IL_0398: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a2: Unknown result type (might be due to invalid IL or missing references)
		interiorType = carInteriorType;
		switch (interiorType)
		{
		case 0:
			currentInterior = LHDInterior;
			isInteriorRHD = false;
			((Component)RHDInterior).gameObject.SetActive(false);
			((Component)ejectorButtonAudio).transform.localPosition = new Vector3(-0.325f, ((Component)ejectorButtonAudio).transform.localPosition.y, ((Component)ejectorButtonAudio).transform.localPosition.z);
			((Component)base.steeringWheelAudio).transform.localPosition = new Vector3(-0.956f, ((Component)base.steeringWheelAudio).transform.localPosition.y, ((Component)base.steeringWheelAudio).transform.localPosition.z);
			((Component)carKeySoundsAudio).transform.localPosition = new Vector3(-0.5525f, ((Component)carKeySoundsAudio).transform.localPosition.y, ((Component)carKeySoundsAudio).transform.localPosition.z);
			((Component)verticalColumnAudio).transform.localPosition = new Vector3(-1.4215f, ((Component)verticalColumnAudio).transform.localPosition.y, ((Component)verticalColumnAudio).transform.localPosition.z);
			((Component)base.springAudio).transform.localPosition = new Vector3(-1f, ((Component)base.springAudio).transform.localPosition.y, ((Component)base.springAudio).transform.localPosition.z);
			((Component)ignitionAnimator).transform.localPosition = new Vector3(-0.5525247f, ((Component)ignitionAnimator).transform.localPosition.y, ((Component)ignitionAnimator).transform.localPosition.z);
			break;
		case 1:
			currentInterior = RHDInterior;
			isInteriorRHD = true;
			((Component)LHDInterior).gameObject.SetActive(false);
			((Component)ejectorButtonAudio).transform.localPosition = new Vector3(0.325f, ((Component)ejectorButtonAudio).transform.localPosition.y, ((Component)ejectorButtonAudio).transform.localPosition.z);
			((Component)base.steeringWheelAudio).transform.localPosition = new Vector3(0.956f, ((Component)base.steeringWheelAudio).transform.localPosition.y, ((Component)base.steeringWheelAudio).transform.localPosition.z);
			((Component)carKeySoundsAudio).transform.localPosition = new Vector3(0.5525f, ((Component)carKeySoundsAudio).transform.localPosition.y, ((Component)carKeySoundsAudio).transform.localPosition.z);
			((Component)verticalColumnAudio).transform.localPosition = new Vector3(1.4215f, ((Component)verticalColumnAudio).transform.localPosition.y, ((Component)verticalColumnAudio).transform.localPosition.z);
			((Component)base.springAudio).transform.localPosition = new Vector3(1f, ((Component)base.springAudio).transform.localPosition.y, ((Component)base.springAudio).transform.localPosition.z);
			((Component)ignitionAnimator).transform.localPosition = new Vector3(0.5525247f, ((Component)ignitionAnimator).transform.localPosition.y, ((Component)ignitionAnimator).transform.localPosition.z);
			break;
		}
		v55InteriorType v55InteriorType = currentInterior;
		base.gearStickAnimator = v55InteriorType.gearStickAnimator;
		base.steeringWheelAnimator = v55InteriorType.steeringWheelAnimator;
		base.driverSeatTrigger = v55InteriorType.driverSeatTrigger;
		base.passengerSeatTrigger = v55InteriorType.passengerSeatTrigger;
		base.driverSeatSpringAnimator = v55InteriorType.driverSeatSpringAnimator;
		if (StartOfRound.Instance.inShipPhase)
		{
			base.hasBeenSpawned = true;
		}
	}

	public void Awake()
	{
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0093: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_011c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0122: Unknown result type (might be due to invalid IL or missing references)
		//IL_0127: Unknown result type (might be due to invalid IL or missing references)
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_014e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0153: Unknown result type (might be due to invalid IL or missing references)
		FixAllAudios(allVehicleAudios);
		base.ragdollPhysicsBody.interpolation = (RigidbodyInterpolation)1;
		base.windwiperPhysicsBody1.interpolation = (RigidbodyInterpolation)1;
		base.windwiperPhysicsBody2.interpolation = (RigidbodyInterpolation)1;
		playerPhysicsBody.interpolation = (RigidbodyInterpolation)1;
		((VehicleController)this).Awake();
		((Component)playerPhysicsBody).transform.SetParent(RoundManager.Instance.VehiclesContainer);
		References.truckController = this;
		base.physicsRegion.priority = 1;
		base.syncedPosition = ((Component)this).transform.position;
		base.syncedRotation = ((Component)this).transform.rotation;
		seatNodePositionOffset = Vector3.zero;
		playerPositionOffset = Vector3.zero;
		Transform transform = ((Component)LHDInterior.driverSeatTrigger.playerPositionNode).transform;
		transform.localPosition += seatNodePositionOffset;
		Transform transform2 = ((Component)LHDInterior.passengerSeatTrigger.playerPositionNode).transform;
		transform2.localPosition += seatNodePositionOffset;
		Transform transform3 = ((Component)RHDInterior.driverSeatTrigger.playerPositionNode).transform;
		transform3.localPosition += seatNodePositionOffset;
		Transform transform4 = ((Component)RHDInterior.passengerSeatTrigger.playerPositionNode).transform;
		transform4.localPosition += seatNodePositionOffset;
		base.backDoorOpen = true;
		forwardWheelSpeed = 5000f;
		reverseWheelSpeed = -3500f;
		SetTruckStats();
	}

	public void FixAllAudios(AudioSource[] audiosArray)
	{
		foreach (AudioSource val in audiosArray)
		{
			val.outputAudioMixerGroup = References.diageticSFXGroup;
		}
	}

	private void SetTruckStats()
	{
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_006c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_011c: Unknown result type (might be due to invalid IL or missing references)
		//IL_011d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0168: Unknown result type (might be due to invalid IL or missing references)
		//IL_0175: Unknown result type (might be due to invalid IL or missing references)
		//IL_0182: Unknown result type (might be due to invalid IL or missing references)
		//IL_018f: Unknown result type (might be due to invalid IL or missing references)
		base.gear = (CarGearShift)3;
		base.MaxEngineRPM = 300f;
		base.MinEngineRPM = 100f;
		base.engineIntensityPercentage = 180f;
		base.EngineTorque = 1100f;
		base.carAcceleration = 350f;
		base.idleSpeed = 15f;
		base.mainRigidbody.automaticCenterOfMass = false;
		base.mainRigidbody.centerOfMass = new Vector3(0f, -0.655f, -1.1173f);
		base.mainRigidbody.automaticInertiaTensor = false;
		base.carMaxSpeed = 60f;
		base.mainRigidbody.maxLinearVelocity = base.carMaxSpeed;
		base.mainRigidbody.maxAngularVelocity = 4f;
		base.brakeSpeed = 2000f;
		base.pushForceMultiplier = 27f;
		base.pushVerticalOffsetAmount = 1f;
		base.steeringWheelTurnSpeed = 4f;
		base.torqueForce = 2.5f;
		SetWheelFriction();
		JointSpring val = default(JointSpring);
		val.spring = 40000f;
		val.damper = 750f;
		val.targetPosition = 0.88f;
		JointSpring suspensionSpring = val;
		base.FrontLeftWheel.wheelDampingRate = 0.7f;
		base.FrontRightWheel.wheelDampingRate = 0.7f;
		base.BackRightWheel.wheelDampingRate = 0.7f;
		base.BackLeftWheel.wheelDampingRate = 0.7f;
		base.FrontLeftWheel.suspensionSpring = suspensionSpring;
		base.FrontRightWheel.suspensionSpring = suspensionSpring;
		base.BackRightWheel.suspensionSpring = suspensionSpring;
		base.BackLeftWheel.suspensionSpring = suspensionSpring;
		base.FrontLeftWheel.suspensionDistance = 0.4f;
		base.FrontRightWheel.suspensionDistance = 0.4f;
		base.BackRightWheel.suspensionDistance = 0.4f;
		base.BackLeftWheel.suspensionDistance = 0.4f;
		base.FrontLeftWheel.mass = 25f;
		base.FrontRightWheel.mass = 25f;
		base.BackLeftWheel.mass = 25f;
		base.BackRightWheel.mass = 25f;
		base.FrontLeftWheel.sprungMass = 54.4f;
		base.FrontRightWheel.sprungMass = 54.4f;
		base.BackLeftWheel.sprungMass = 147.4f;
		base.BackRightWheel.sprungMass = 147.4f;
		base.turboBoostForce = 3000f;
		base.turboBoostUpwardForce = 7200f;
		base.jumpForce = 600f;
		base.baseCarHP = 30;
		base.carHP = base.baseCarHP;
		syncedCarHP = base.carHP;
		base.carFragility = 1f;
		truckType = TruckVersionType.V55;
		v55EngineBay.SetActive(truckType == TruckVersionType.V55);
		v56EngineBay.SetActive(truckType != TruckVersionType.V55);
		((Component)v55HealthMeter).gameObject.SetActive(truckType == TruckVersionType.V55);
		((Component)v56HealthMeter).gameObject.SetActive(truckType != TruckVersionType.V55);
		((Component)base.turboMeter).gameObject.SetActive(truckType != TruckVersionType.V55);
		if (truckType == TruckVersionType.V55)
		{
			base.healthMeter = v55HealthMeter;
		}
		else
		{
			base.healthMeter = v56HealthMeter;
		}
	}

	private void SetWheelFriction()
	{
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00df: Unknown result type (might be due to invalid IL or missing references)
		WheelFrictionCurve val = default(WheelFrictionCurve);
		((WheelFrictionCurve)(ref val)).extremumSlip = 0.2f;
		((WheelFrictionCurve)(ref val)).extremumValue = 1f;
		((WheelFrictionCurve)(ref val)).asymptoteSlip = 0.8f;
		((WheelFrictionCurve)(ref val)).asymptoteValue = 0.4f;
		((WheelFrictionCurve)(ref val)).stiffness = 2.7f;
		base.FrontRightWheel.forwardFriction = val;
		base.FrontLeftWheel.forwardFriction = val;
		((WheelFrictionCurve)(ref val)).stiffness = 0.75f;
		base.BackRightWheel.forwardFriction = val;
		base.BackLeftWheel.forwardFriction = val;
		((WheelFrictionCurve)(ref val)).stiffness = 0.8f;
		((WheelFrictionCurve)(ref val)).asymptoteValue = 0.75f;
		((WheelFrictionCurve)(ref val)).extremumSlip = 0.7f;
		base.FrontRightWheel.sidewaysFriction = val;
		base.FrontLeftWheel.sidewaysFriction = val;
		base.BackRightWheel.sidewaysFriction = val;
		base.BackLeftWheel.sidewaysFriction = val;
	}

	public void Start()
	{
		//IL_00db: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0119: Unknown result type (might be due to invalid IL or missing references)
		//IL_011e: Unknown result type (might be due to invalid IL or missing references)
		SetCarRainCollisions();
		base.FrontLeftWheel.brakeTorque = maxBrakingPower;
		base.FrontRightWheel.brakeTorque = maxBrakingPower;
		base.BackLeftWheel.brakeTorque = maxBrakingPower;
		base.BackRightWheel.brakeTorque = maxBrakingPower;
		base.currentRadioClip = new Random(StartOfRound.Instance.randomMapSeed).Next(0, base.radioClips.Length);
		base.radioAudio.clip = base.radioClips[base.currentRadioClip];
		base.decals = (DecalProjector[])(object)new DecalProjector[24];
		if (StartOfRound.Instance.inShipPhase)
		{
			base.magnetedToShip = true;
			base.loadedVehicleFromSave = true;
			hasDeliveredVehicle = true;
			base.inDropshipAnimation = false;
			((Component)this).transform.position = StartOfRound.Instance.magnetPoint.position + StartOfRound.Instance.magnetPoint.forward * 7f;
			((Component)this).transform.rotation = Quaternion.Euler(new Vector3(0f, 90f, 0f));
			StartMagneting();
		}
	}

	public void SetCarRainCollisions()
	{
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_001f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0035: Unknown result type (might be due to invalid IL or missing references)
		//IL_0041: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		TriggerModule[] array = (TriggerModule[])(object)new TriggerModule[4]
		{
			References.rainParticles.trigger,
			References.rainHitParticles.trigger,
			References.stormyRainParticles.trigger,
			References.stormyRainHitParticles.trigger
		};
		if (array == null)
		{
			Plugin.Logger.LogError((object)"rain particles are null! this will cause issues!");
			return;
		}
		for (int i = 0; i < array.Length; i++)
		{
			for (int j = 0; j < weatherEffectBlockers.Length; j++)
			{
				int num = ((TriggerModule)(ref array[i])).colliderCount + j;
				((TriggerModule)(ref array[i])).SetCollider(num, (Component)(object)weatherEffectBlockers[j]);
			}
		}
	}

	public void SendClientSyncData()
	{
		if (interiorType == -1)
		{
			interiorType = 0;
		}
		SyncClientDataRpc(interiorType);
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void SyncClientDataRpc(int carInteriorType)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager != null && networkManager.IsListening)
		{
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
			{
				RpcAttributeParams val = new RpcAttributeParams
				{
					RequireOwnership = false
				};
				RpcParams val2 = default(RpcParams);
				FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(2844539270u, val2, val, (SendTo)3, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val3, carInteriorType);
				((NetworkBehaviour)this).__endSendRpc(ref val3, 2844539270u, val2, val, (SendTo)3, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
			{
				((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
				SetInteriorType(carInteriorType);
			}
		}
	}

	public void SetBackDoorOpen(bool open)
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		RoundManager.Instance.PlayAudibleNoise(base.backDoorContainer.transform.position, 21f, 0.9f, 0, false, 2692);
		liftGateOpen = open;
	}

	private void SetFrontCabinLightOn(bool setOn)
	{
		isCabLightOn = setOn;
		Material material = (Material)(setOn ? ((object)base.headlightsOnMat) : ((object)greyLightOffMat));
		base.frontCabinLightContainer.SetActive(setOn);
		((Renderer)base.frontCabinLightMesh).material = material;
	}

	public void StartTryCarIgnition()
	{
		if (base.localPlayerInControl && !base.ignitionStarted)
		{
			if (base.keyIgnitionCoroutine != null)
			{
				((MonoBehaviour)this).StopCoroutine(base.keyIgnitionCoroutine);
			}
			base.keyIgnitionCoroutine = ((MonoBehaviour)this).StartCoroutine(TryIgnition(isLocalDriver: true));
			TryIgnitionRpc(base.keyIsInIgnition, isCabLightOn);
		}
	}

	private IEnumerator TryIgnition(bool isLocalDriver)
	{
		if ((Object)(object)base.currentDriver == (Object)null)
		{
			base.keyIgnitionCoroutine = null;
			yield break;
		}
		if (base.keyIsInIgnition)
		{
			if (base.currentDriver.playerBodyAnimator.GetInteger("SA_CarAnim") == 3)
			{
				base.currentDriver.playerBodyAnimator.SetInteger("SA_CarAnim", 2);
			}
			else
			{
				base.currentDriver.playerBodyAnimator.SetInteger("SA_CarAnim", 12);
			}
			int animIndex = base.currentDriver.playerBodyAnimator.GetInteger("SA_CarAnim");
			ignitionAnimator.SetInteger("SAIgnition_Anim", animIndex);
			yield return (object)new WaitForSeconds(isInteriorRHD ? 0.047f : 0.02f);
			carKeySoundsAudio.PlayOneShot(base.twistKey);
			RoundManager.Instance.PlayAudibleNoise(((Component)carKeySoundsAudio).transform.position, 10f, 0.4f, 0, false, 2692);
			SetKeyIgnitionValues(keyInHand: true, keyInSlot: true);
			yield return (object)new WaitForSeconds(0.1467f);
		}
		else
		{
			PlayerControllerB currentDriver = base.currentDriver;
			if (currentDriver != null)
			{
				currentDriver.playerBodyAnimator.SetInteger("SA_CarAnim", 2);
			}
			ignitionAnimator.SetInteger("SAIgnition_Anim", 2);
			SetKeyIgnitionValues(keyInHand: true, keyInSlot: false);
			yield return (object)new WaitForSeconds(0.6f);
			carKeySoundsAudio.PlayOneShot(base.insertKey);
			RoundManager.Instance.PlayAudibleNoise(((Component)carKeySoundsAudio).transform.position, 10f, 0.4f, 0, false, 2692);
			SetKeyIgnitionValues(keyInHand: true, keyInSlot: true);
			yield return (object)new WaitForSeconds(0.2f + (isInteriorRHD ? 0.097f : 0f));
			carKeySoundsAudio.PlayOneShot(base.twistKey);
			RoundManager.Instance.PlayAudibleNoise(((Component)carKeySoundsAudio).transform.position, 10f, 0.4f, 0, false, 2692);
			SetKeyIgnitionValues(keyInHand: true, keyInSlot: true);
			yield return (object)new WaitForSeconds(0.185f);
		}
		SetKeyIgnitionValues(keyInHand: true, keyInSlot: true);
		if (!isLocalDriver)
		{
			yield break;
		}
		SetFrontCabinLightOn(base.keyIsInIgnition);
		base.engineAudio1.Stop();
		base.engineAudio1.clip = revEngineStart1;
		base.engineAudio1.volume = 0.7f;
		if ((Object)(object)base.engineAudio1.clip == (Object)(object)revEngineStart1)
		{
			base.engineAudio1.PlayOneShot(base.engineRev);
		}
		base.carEngine1AudioActive = true;
		if ((Object)(object)base.engineAudio1.clip == (Object)(object)revEngineStart1)
		{
			base.engineAudio1.pitch = 1f;
		}
		TryStartIgnitionRpc();
		yield return (object)new WaitForSeconds(Random.Range(0.4f, 1.1f));
		if ((float)Random.Range(0, 100) < base.chanceToStartIgnition)
		{
			PlayerControllerB currentDriver2 = base.currentDriver;
			if (currentDriver2 != null)
			{
				currentDriver2.playerBodyAnimator.SetInteger("SA_CarAnim", 1);
			}
			SetKeyIgnitionValues(keyInHand: false, keyInSlot: true);
			SetIgnition(started: true, cabLightOn: true);
			SetFrontCabinLightOn(base.keyIsInIgnition);
			CancelIgnitionAnimation(ignitionOn: true, setIgnitionAnim: true);
			StartIgnitionRpc();
		}
		else
		{
			base.chanceToStartIgnition += 15f;
			base.chanceToStartIgnition = Mathf.Clamp(base.chanceToStartIgnition, 0f, 99f);
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void TryIgnitionRpc(bool setKeyInSlot, bool cabLightActive)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00da: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_009d: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(2843149083u, val2, val, (SendTo)5, (RpcDelivery)0);
			((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref setKeyInSlot, default(ForPrimitives));
			((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref cabLightActive, default(ForPrimitives));
			((NetworkBehaviour)this).__endSendRpc(ref val3, 2843149083u, val2, val, (SendTo)5, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			return;
		}
		((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
		if (!base.ignitionStarted)
		{
			if (base.keyIgnitionCoroutine != null)
			{
				((MonoBehaviour)this).StopCoroutine(base.keyIgnitionCoroutine);
			}
			SetKeyIgnitionValues(keyInHand: false, setKeyInSlot);
			if (!isCabLightOn && cabLightActive)
			{
				SetFrontCabinLightOn(cabLightActive);
			}
			base.keyIgnitionCoroutine = ((MonoBehaviour)this).StartCoroutine(TryIgnition(isLocalDriver: false));
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void TryStartIgnitionRpc()
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_009a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0081: Unknown result type (might be due to invalid IL or missing references)
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(41763978u, val2, val, (SendTo)5, (RpcDelivery)0);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 41763978u, val2, val, (SendTo)5, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
		{
			((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
			SetKeyIgnitionValues(keyInHand: true, keyInSlot: true);
			SetFrontCabinLightOn(base.keyIsInIgnition);
			base.engineAudio1.Stop();
			base.engineAudio1.clip = revEngineStart1;
			base.engineAudio1.volume = 0.7f;
			if ((Object)(object)base.engineAudio1.clip == (Object)(object)revEngineStart1)
			{
				base.engineAudio1.PlayOneShot(base.engineRev);
			}
			base.carEngine1AudioActive = true;
			if ((Object)(object)base.engineAudio1.clip == (Object)(object)revEngineStart1)
			{
				base.engineAudio1.pitch = 1f;
			}
		}
	}

	public void CancelTryCarIgnition()
	{
		if (base.localPlayerInControl && !base.ignitionStarted)
		{
			CancelIgnitionAnimation(ignitionOn: false, setIgnitionAnim: false);
			if (GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.GetInteger("SA_CarAnim") == 2 && base.keyIsInIgnition)
			{
				GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetInteger("SA_CarAnim", 3);
			}
			else if (GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.GetInteger("SA_CarAnim") == 12)
			{
				GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetInteger("SA_CarAnim", 3);
			}
			else
			{
				GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetInteger("SA_CarAnim", 0);
			}
			int integer = base.currentDriver.playerBodyAnimator.GetInteger("SA_CarAnim");
			ignitionAnimator.SetInteger("SAIgnition_Anim", integer);
			CancelTryIgnitionRpc(base.keyIsInIgnition, isCabLightOn, integer);
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void CancelTryIgnitionRpc(bool setKeyInSlot, bool cabLightActive, int currentAnimIndex)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e7: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_009d: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_016a: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(864949164u, val2, val, (SendTo)5, (RpcDelivery)0);
			((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref setKeyInSlot, default(ForPrimitives));
			((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref cabLightActive, default(ForPrimitives));
			BytePacker.WriteValueBitPacked(val3, currentAnimIndex);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 864949164u, val2, val, (SendTo)5, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
		{
			((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
			CancelIgnitionAnimation(ignitionOn: false, setIgnitionAnim: false);
			PlayerControllerB currentDriver = base.currentDriver;
			if (currentDriver != null)
			{
				currentDriver.playerBodyAnimator.SetInteger("SA_CarAnim", currentAnimIndex);
			}
			ignitionAnimator.SetInteger("SAIgnition_Anim", currentAnimIndex);
			if (setKeyInSlot && !base.keyIsInIgnition)
			{
				carKeySoundsAudio.PlayOneShot(base.insertKey);
				RoundManager.Instance.PlayAudibleNoise(((Component)carKeySoundsAudio).transform.position, 10f, 0.4f, 0, false, 2692);
			}
			SetKeyIgnitionValues(keyInHand: false, setKeyInSlot);
			if (setKeyInSlot && isCabLightOn != cabLightActive)
			{
				SetFrontCabinLightOn(cabLightActive);
			}
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void StartIgnitionRpc()
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_009a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0081: Unknown result type (might be due to invalid IL or missing references)
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(3842753156u, val2, val, (SendTo)5, (RpcDelivery)0);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 3842753156u, val2, val, (SendTo)5, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
		{
			((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
			PlayerControllerB currentDriver = base.currentDriver;
			if (currentDriver != null)
			{
				currentDriver.playerBodyAnimator.SetInteger("SA_CarAnim", 1);
			}
			SetKeyIgnitionValues(keyInHand: false, keyInSlot: true);
			SetIgnition(started: true, cabLightOn: true);
			SetFrontCabinLightOn(base.keyIsInIgnition);
			CancelIgnitionAnimation(ignitionOn: true, setIgnitionAnim: true);
		}
	}

	public void SetIgnition(bool started, bool cabLightOn)
	{
		SetFrontCabinLightOn(cabLightOn);
		base.carEngine1AudioActive = started;
		if (started)
		{
			base.startKeyIgnitionTrigger.SetActive(false);
			base.removeKeyIgnitionTrigger.SetActive(true);
			if (started != base.ignitionStarted)
			{
				base.ignitionStarted = true;
				base.carExhaustParticle.Play();
				base.engineAudio1.Stop();
				base.engineAudio1.PlayOneShot(base.engineStartSuccessful);
				base.engineAudio1.clip = base.engineRun;
			}
		}
		else
		{
			base.startKeyIgnitionTrigger.SetActive(true);
			base.removeKeyIgnitionTrigger.SetActive(false);
			base.ignitionStarted = false;
			base.carExhaustParticle.Stop(true, (ParticleSystemStopBehavior)1);
		}
	}

	public void RemoveKeyFromIgnition()
	{
		if (base.localPlayerInControl && base.ignitionStarted)
		{
			if (base.keyIgnitionCoroutine != null)
			{
				((MonoBehaviour)this).StopCoroutine(base.keyIgnitionCoroutine);
			}
			base.keyIgnitionCoroutine = ((MonoBehaviour)this).StartCoroutine(RemoveKey());
			base.chanceToStartIgnition = 20f;
			RemoveKeyFromIgnitionRpc();
		}
	}

	private IEnumerator RemoveKey()
	{
		PlayerControllerB currentDriver = base.currentDriver;
		if (currentDriver != null)
		{
			currentDriver.playerBodyAnimator.SetInteger("SA_CarAnim", 6);
		}
		ignitionAnimator.SetInteger("SAIgnition_Anim", 6);
		yield return (object)new WaitForSeconds(0.26f);
		SetKeyIgnitionValues(keyInHand: true, keyInSlot: false);
		carKeySoundsAudio.PlayOneShot(base.removeKey);
		RoundManager.Instance.PlayAudibleNoise(((Component)carKeySoundsAudio).transform.position, 10f, 0.4f, 0, false, 2692);
		SetIgnition(started: false, cabLightOn: false);
		yield return (object)new WaitForSeconds(0.73f);
		SetKeyIgnitionValues(keyInHand: false, keyInSlot: false);
		base.keyIgnitionCoroutine = null;
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void RemoveKeyFromIgnitionRpc()
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_009a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0081: Unknown result type (might be due to invalid IL or missing references)
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(488072872u, val2, val, (SendTo)5, (RpcDelivery)0);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 488072872u, val2, val, (SendTo)5, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			return;
		}
		((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
		if (base.ignitionStarted)
		{
			if (base.keyIgnitionCoroutine != null)
			{
				((MonoBehaviour)this).StopCoroutine(base.keyIgnitionCoroutine);
			}
			base.keyIgnitionCoroutine = ((MonoBehaviour)this).StartCoroutine(RemoveKey());
		}
	}

	public void CancelIgnitionAnimation(bool ignitionOn, bool setIgnitionAnim)
	{
		if (base.keyIgnitionCoroutine != null)
		{
			((MonoBehaviour)this).StopCoroutine(base.keyIgnitionCoroutine);
			base.keyIgnitionCoroutine = null;
		}
		base.carEngine1AudioActive = ignitionOn;
		base.keyIsInDriverHand = false;
		if (setIgnitionAnim)
		{
			ignitionAnimator.SetInteger("SAIgnition_Anim", ignitionOn ? 1 : 0);
		}
	}

	public void SetKeyIgnitionValues(bool keyInHand, bool keyInSlot)
	{
		base.keyIsInDriverHand = keyInHand;
		base.keyIsInIgnition = keyInSlot;
	}

	public void ResetTruckVelocityTimer()
	{
		if (((Vector3)(ref base.averageVelocity)).magnitude < 3f)
		{
			base.limitTruckVelocityTimer = 0.7f;
		}
	}

	public void SetTriggerHoverTip(InteractTrigger trigger, string tip)
	{
		trigger.hoverTip = tip;
	}

	public void SetDriverInCar()
	{
		if (base.hasBeenSpawned && !base.carDestroyed && !Object.op_Implicit((Object)(object)GameNetworkManager.Instance.localPlayerController.inAnimationWithEnemy) && !GameNetworkManager.Instance.localPlayerController.inVehicleAnimation)
		{
			if ((Object)(object)base.currentDriver != (Object)null)
			{
				GameNetworkManager.Instance.localPlayerController.CancelSpecialTriggerAnimations();
				HUDManager.Instance.DisplayTip("Seat occupied", "You cannot enter an occupied seat! aborting!", false, false, "LC_Tip1");
			}
			else
			{
				SetDriverInCarServerRpc((int)GameNetworkManager.Instance.localPlayerController.playerClientId);
			}
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void SetDriverInCarServerRpc(int playerId)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(3818516466u, val2, val, (SendTo)2, (RpcDelivery)0);
			BytePacker.WriteValueBitPacked(val3, playerId);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 3818516466u, val2, val, (SendTo)2, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
		{
			((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
			PlayerControllerB val4 = StartOfRound.Instance.allPlayerScripts[playerId];
			if ((Object)(object)val4 == (Object)null || val4.isPlayerDead || !val4.isPlayerControlled || (Object)(object)base.currentDriver != (Object)null || ((Object)(object)base.currentDriver != (Object)null && (Object)(object)base.currentDriver != (Object)(object)val4))
			{
				CancelSetPlayerInVehicleClientRpc(playerId);
				return;
			}
			base.currentDriver = StartOfRound.Instance.allPlayerScripts[playerId];
			((NetworkBehaviour)this).NetworkObject.ChangeOwnership(StartOfRound.Instance.allPlayerScripts[playerId].actualClientId);
			SetDriverInCarOwnerRpc();
			SetDriverInCarClientsRpc(playerId);
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void SetDriverInCarOwnerRpc()
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_009a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0081: Unknown result type (might be due to invalid IL or missing references)
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(1926889168u, val2, val, (SendTo)0, (RpcDelivery)0);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 1926889168u, val2, val, (SendTo)0, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
		{
			((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
			PlayerUtils.disableAnimationSync = true;
			SetVehicleCollisionForPlayer(setEnabled: false, GameNetworkManager.Instance.localPlayerController);
			InteractTriggerPatches.specialInteractCoroutine = ((MonoBehaviour)this).StartCoroutine(InteractTriggerPatches.SpecialTruckInteractAnimation(base.driverSeatTrigger, GameNetworkManager.Instance.localPlayerController, this, isInteriorRHD, isPassenger: false));
			ActivateControl();
			InteractTrigger trigger = (isInteriorRHD ? base.passengerSideDoorTrigger : base.driverSideDoorTrigger);
			AnimatedObjectTrigger val4 = (isInteriorRHD ? base.passengerSideDoor : base.driverSideDoor);
			SetTriggerHoverTip(trigger, "Exit : [LMB]");
			base.startKeyIgnitionTrigger.GetComponent<InteractTrigger>().isBeingHeldByPlayer = false;
			base.removeKeyIgnitionTrigger.GetComponent<InteractTrigger>().isBeingHeldByPlayer = false;
			GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetFloat("animationSpeed", 0.5f);
			playerSteeringWheelAnimFloat = 0.5f;
			syncedPlayerSteeringAnim = 0.5f;
			if (base.keyIsInIgnition)
			{
				GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetInteger("SA_CarAnim", 0);
			}
			if (base.ignitionStarted)
			{
				GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetInteger("SA_CarAnim", 1);
			}
			if (val4.boolValue)
			{
				val4.TriggerAnimation(GameNetworkManager.Instance.localPlayerController);
			}
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void SetDriverInCarClientsRpc(int playerId)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(3473842934u, val2, val, (SendTo)1, (RpcDelivery)0);
			BytePacker.WriteValueBitPacked(val3, playerId);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 3473842934u, val2, val, (SendTo)1, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
		{
			((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
			base.currentDriver = StartOfRound.Instance.allPlayerScripts[playerId];
			SetVehicleCollisionForPlayer(setEnabled: false, base.currentDriver);
			base.startKeyIgnitionTrigger.GetComponent<InteractTrigger>().isBeingHeldByPlayer = false;
			base.removeKeyIgnitionTrigger.GetComponent<InteractTrigger>().isBeingHeldByPlayer = false;
			PlayerUtils.ReplaceClientPlayerAnimator(playerId, base.driverSeatTrigger, isPassenger: false);
			base.currentDriver.playerBodyAnimator.SetFloat("animationSpeed", 0.5f);
			playerSteeringWheelAnimFloat = 0.5f;
			syncedPlayerSteeringAnim = 0.5f;
			if (base.keyIsInIgnition)
			{
				base.currentDriver.playerBodyAnimator.SetInteger("SA_CarAnim", 0);
			}
			if (base.ignitionStarted)
			{
				base.currentDriver.playerBodyAnimator.SetInteger("SA_CarAnim", 1);
			}
		}
	}

	public void OnDriverExit()
	{
		//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0100: Unknown result type (might be due to invalid IL or missing references)
		//IL_010c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0111: Unknown result type (might be due to invalid IL or missing references)
		//IL_011d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0128: Unknown result type (might be due to invalid IL or missing references)
		//IL_0151: Unknown result type (might be due to invalid IL or missing references)
		//IL_0157: Unknown result type (might be due to invalid IL or missing references)
		PlayerUtils.disableAnimationSync = false;
		base.localPlayerInControl = false;
		DisableVehicleCollisionForAllPlayers();
		InteractTrigger trigger = (isInteriorRHD ? base.passengerSideDoorTrigger : base.driverSideDoorTrigger);
		SetTriggerHoverTip(trigger, "Use door : [LMB]");
		base.startKeyIgnitionTrigger.GetComponent<InteractTrigger>().isBeingHeldByPlayer = false;
		base.removeKeyIgnitionTrigger.GetComponent<InteractTrigger>().isBeingHeldByPlayer = false;
		GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetInteger("SA_CarAnim", 0);
		PlayerUtils.ResetHUDToolTips(GameNetworkManager.Instance.localPlayerController);
		if ((Object)(object)base.currentDriver != (Object)(object)GameNetworkManager.Instance.localPlayerController)
		{
			HUDManager.Instance.DisplayTip("Err?", "This state should not occur! aborting!", false, false, "LC_Tip1");
			return;
		}
		DisableControl();
		CancelIgnitionAnimation(base.ignitionStarted, setIgnitionAnim: true);
		base.chanceToStartIgnition = 20f;
		SetIgnition(base.ignitionStarted, isCabLightOn);
		base.syncedPosition = ((Component)this).transform.position;
		base.syncedRotation = ((Component)this).transform.rotation;
		OnDriverExitServerRpc(((Component)this).transform.position, ((Component)this).transform.rotation, base.drivePedalPressed, base.brakePedalPressed);
		OnDriverExitRpc((int)GameNetworkManager.Instance.localPlayerController.playerClientId, base.syncedPosition, base.syncedRotation, base.ignitionStarted, base.keyIsInIgnition, base.drivePedalPressed, base.brakePedalPressed, isCabLightOn);
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void OnDriverExitServerRpc(Vector3 carLocation, Quaternion carRotation, bool gasFloored, bool brakeFloored)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f4: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_009c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0103: Unknown result type (might be due to invalid IL or missing references)
		//IL_010a: Unknown result type (might be due to invalid IL or missing references)
		//IL_010b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0111: Unknown result type (might be due to invalid IL or missing references)
		//IL_0112: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager != null && networkManager.IsListening)
		{
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
			{
				RpcAttributeParams val = new RpcAttributeParams
				{
					RequireOwnership = false
				};
				RpcParams val2 = default(RpcParams);
				FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(2930863579u, val2, val, (SendTo)2, (RpcDelivery)0);
				((FastBufferWriter)(ref val3)).WriteValueSafe(ref carLocation);
				((FastBufferWriter)(ref val3)).WriteValueSafe(ref carRotation);
				((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref gasFloored, default(ForPrimitives));
				((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref brakeFloored, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendRpc(ref val3, 2930863579u, val2, val, (SendTo)2, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
			{
				((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
				base.syncedPosition = carLocation;
				base.syncedRotation = carRotation;
				syncedDrivePedalPressed = gasFloored;
				syncedBrakePedalPressed = brakeFloored;
				base.drivePedalPressed = gasFloored;
				base.brakePedalPressed = brakeFloored;
				base.currentDriver = null;
				((NetworkBehaviour)this).NetworkObject.ChangeOwnership(StartOfRound.Instance.allPlayerScripts[0].actualClientId);
			}
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void OnDriverExitRpc(int playerId, Vector3 carLocation, Quaternion carRotation, bool setIgnitionState, bool setKeyInSlot, bool gasFloored, bool brakeFloored, bool preIgnition)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_0152: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00af: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_00df: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0100: Unknown result type (might be due to invalid IL or missing references)
		//IL_0115: Unknown result type (might be due to invalid IL or missing references)
		//IL_011b: Unknown result type (might be due to invalid IL or missing references)
		//IL_012f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0133: Unknown result type (might be due to invalid IL or missing references)
		//IL_0161: Unknown result type (might be due to invalid IL or missing references)
		//IL_0168: Unknown result type (might be due to invalid IL or missing references)
		//IL_0169: Unknown result type (might be due to invalid IL or missing references)
		//IL_016f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0170: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(4161890078u, val2, val, (SendTo)5, (RpcDelivery)0);
			BytePacker.WriteValueBitPacked(val3, playerId);
			((FastBufferWriter)(ref val3)).WriteValueSafe(ref carLocation);
			((FastBufferWriter)(ref val3)).WriteValueSafe(ref carRotation);
			((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref setIgnitionState, default(ForPrimitives));
			((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref setKeyInSlot, default(ForPrimitives));
			((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref gasFloored, default(ForPrimitives));
			((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref brakeFloored, default(ForPrimitives));
			((FastBufferWriter)(ref val3)).WriteValueSafe<bool>(ref preIgnition, default(ForPrimitives));
			((NetworkBehaviour)this).__endSendRpc(ref val3, 4161890078u, val2, val, (SendTo)5, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
		{
			((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
			base.syncedPosition = carLocation;
			base.syncedRotation = carRotation;
			syncedDrivePedalPressed = gasFloored;
			syncedBrakePedalPressed = brakeFloored;
			base.drivePedalPressed = gasFloored;
			base.brakePedalPressed = brakeFloored;
			base.currentDriver = null;
			base.keyIsInIgnition = setKeyInSlot;
			base.ignitionStarted = setIgnitionState;
			base.startKeyIgnitionTrigger.GetComponent<InteractTrigger>().isBeingHeldByPlayer = false;
			base.removeKeyIgnitionTrigger.GetComponent<InteractTrigger>().isBeingHeldByPlayer = false;
			PlayerUtils.ReturnClientPlayerAnimator(playerId, base.driverSeatTrigger, isPassenger: false);
			CancelIgnitionAnimation(base.ignitionStarted, setIgnitionAnim: true);
			SetIgnition(base.ignitionStarted, preIgnition);
			if (base.localPlayerInPassengerSeat)
			{
				SetVehicleCollisionForPlayer(setEnabled: false, GameNetworkManager.Instance.localPlayerController);
			}
		}
	}

	public void SetPassengerInCar()
	{
		if (base.hasBeenSpawned && !base.carDestroyed && !Object.op_Implicit((Object)(object)GameNetworkManager.Instance.localPlayerController.inAnimationWithEnemy) && !GameNetworkManager.Instance.localPlayerController.inVehicleAnimation)
		{
			if ((Object)(object)base.currentPassenger != (Object)null)
			{
				GameNetworkManager.Instance.localPlayerController.CancelSpecialTriggerAnimations();
				HUDManager.Instance.DisplayTip("Seat occupied", "You cannot enter an occupied seat! aborting!", false, false, "LC_Tip1");
			}
			else
			{
				SetPassengerInCarServerRpc((int)GameNetworkManager.Instance.localPlayerController.playerClientId);
			}
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void SetPassengerInCarServerRpc(int playerId)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(1540494745u, val2, val, (SendTo)2, (RpcDelivery)0);
			BytePacker.WriteValueBitPacked(val3, playerId);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 1540494745u, val2, val, (SendTo)2, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			return;
		}
		((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
		PlayerControllerB val4 = StartOfRound.Instance.allPlayerScripts[playerId];
		if ((Object)(object)val4 == (Object)null || val4.isPlayerDead || !val4.isPlayerControlled || (Object)(object)base.currentPassenger != (Object)null || ((Object)(object)base.currentPassenger != (Object)null && (Object)(object)base.currentPassenger != (Object)(object)val4))
		{
			CancelSetPlayerInVehicleClientRpc(playerId);
			return;
		}
		SetVehicleCollisionForPlayer(setEnabled: false, val4);
		if ((int)GameNetworkManager.Instance.localPlayerController.playerClientId == playerId)
		{
			SetPassengerIntoPassengerSeat();
		}
		base.currentPassenger = val4;
		SetPassengerInCarRpc(playerId);
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void SetPassengerInCarRpc(int playerId)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(3857058091u, val2, val, (SendTo)3, (RpcDelivery)0);
			BytePacker.WriteValueBitPacked(val3, playerId);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 3857058091u, val2, val, (SendTo)3, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
		{
			((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
			PlayerControllerB val4 = StartOfRound.Instance.allPlayerScripts[playerId];
			SetVehicleCollisionForPlayer(setEnabled: false, val4);
			if ((int)GameNetworkManager.Instance.localPlayerController.playerClientId == playerId)
			{
				SetPassengerIntoPassengerSeat();
			}
			base.currentPassenger = val4;
			PlayerUtils.ReplaceClientPlayerAnimator(playerId, base.passengerSeatTrigger, isPassenger: true);
			base.currentPassenger.playerBodyAnimator.SetFloat("animationSpeed", 0.5f);
		}
	}

	public void SetPassengerIntoPassengerSeat()
	{
		PlayerUtils.disableAnimationSync = true;
		InteractTriggerPatches.specialInteractCoroutine = ((MonoBehaviour)this).StartCoroutine(InteractTriggerPatches.SpecialTruckInteractAnimation(base.passengerSeatTrigger, GameNetworkManager.Instance.localPlayerController, this, isInteriorRHD, isPassenger: true));
		base.localPlayerInPassengerSeat = true;
		InteractTrigger trigger = (isInteriorRHD ? base.driverSideDoorTrigger : base.passengerSideDoorTrigger);
		AnimatedObjectTrigger val = (isInteriorRHD ? base.driverSideDoor : base.passengerSideDoor);
		SetTriggerHoverTip(trigger, "Exit : [LMB]");
		GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetFloat("animationSpeed", 0.5f);
		if (val.boolValue)
		{
			val.TriggerAnimation(GameNetworkManager.Instance.localPlayerController);
		}
	}

	public void OnPassengerExit()
	{
		//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
		PlayerUtils.disableAnimationSync = false;
		SetVehicleCollisionForPlayer(setEnabled: true, GameNetworkManager.Instance.localPlayerController);
		base.localPlayerInPassengerSeat = false;
		InteractTrigger trigger = (isInteriorRHD ? base.driverSideDoorTrigger : base.passengerSideDoorTrigger);
		SetTriggerHoverTip(trigger, "Use door : [LMB]");
		GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetInteger("SA_CarAnim", 0);
		PlayerUtils.ResetHUDToolTips(GameNetworkManager.Instance.localPlayerController);
		if ((Object)(object)base.currentPassenger != (Object)(object)GameNetworkManager.Instance.localPlayerController)
		{
			HUDManager.Instance.DisplayTip("Err?", "This state should not occur! aborting!", false, false, "LC_Tip1");
			return;
		}
		base.currentPassenger = null;
		OnPassengerExitRpc((int)GameNetworkManager.Instance.localPlayerController.playerClientId, ((Component)GameNetworkManager.Instance.localPlayerController).transform.position);
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void OnPassengerExitRpc(int playerId, Vector3 exitPoint)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00be: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_009b: Unknown result type (might be due to invalid IL or missing references)
		//IL_009f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0105: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(4196259508u, val2, val, (SendTo)5, (RpcDelivery)0);
			BytePacker.WriteValueBitPacked(val3, playerId);
			((FastBufferWriter)(ref val3)).WriteValueSafe(ref exitPoint);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 4196259508u, val2, val, (SendTo)5, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			return;
		}
		((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
		PlayerControllerB val4 = StartOfRound.Instance.allPlayerScripts[playerId];
		if (!((Object)(object)val4 == (Object)(object)GameNetworkManager.Instance.localPlayerController))
		{
			PlayerUtils.ReturnClientPlayerAnimator(playerId, base.passengerSeatTrigger, isPassenger: true);
			val4.TeleportPlayer(exitPoint, false, 0f, false, true);
			base.currentPassenger = null;
			if (!((NetworkBehaviour)this).IsOwner)
			{
				SetVehicleCollisionForPlayer(setEnabled: true, GameNetworkManager.Instance.localPlayerController);
			}
		}
	}

	[Rpc(/*Could not decode attribute arguments.*/)]
	public void CancelSetPlayerInVehicleClientRpc(int playerId)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Invalid comparison between Unknown and I4
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
		NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
		if (networkManager == null || !networkManager.IsListening)
		{
			return;
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1)
		{
			RpcAttributeParams val = new RpcAttributeParams
			{
				RequireOwnership = false
			};
			RpcParams val2 = default(RpcParams);
			FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(1393046261u, val2, val, (SendTo)6, (RpcDelivery)0);
			BytePacker.WriteValueBitPacked(val3, playerId);
			((NetworkBehaviour)this).__endSendRpc(ref val3, 1393046261u, val2, val, (SendTo)6, (RpcDelivery)0);
		}
		if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1)
		{
			((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
			if ((int)GameNetworkManager.Instance.localPlayerController.playerClientId == playerId)
			{
				HUDManager.Instance.DisplayTip("Kicked from vehicle", "You have been forcefully kicked to prevent a softlock!", false, false, "LC_Tip1");
			}
		}
	}

	public void ExitFrontLeftSideSeat()
	{
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
		if ((base.localPlayerInControl || isInteriorRHD) && (base.localPlayerInPassengerSeat || !isInteriorRHD))
		{
			GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetInteger("SA_CarAnim", 0);
			if (!base.driverSideDoor.boolValue)
			{
				base.driverSideDoor.TriggerAnimation(GameNetworkManager.Instance.localPlayerController);
			}
			int num = CanExitCar(passengerSide: false);
			if (num != -1)
			{
				GameNetworkManager.Instance.localPlayerController.TeleportPlayer(base.driverSideExitPoints[num].position, false, 0f, false, true);
			}
			else
			{
				GameNetworkManager.Instance.localPlayerController.TeleportPlayer(base.driverSideExitPoints[1].position, false, 0f, false, true);
			}
		}
	}

	public void ExitFrontRightSideSeat()
	{
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
		if ((base.localPlayerInPassengerSeat || isInteriorRHD) && (base.localPlayerInControl || !isInteriorRHD))
		{
			GameNetworkManager.Instance.localPlayerController.playerBodyAnimator.SetInteger("SA_CarAnim", 0);
			if (!base.passengerSideDoor.boolValue)
			{
				base.passengerSideDoor.TriggerAnimation(GameNetworkManager.Instance.localPlayerController);
			}
			int num = CanExitCar(passengerSide: true);
			if (num != -1)
			{
				GameNetworkManager.Instance.localPlayerController.TeleportPlayer(base.passengerSideExitPoints[num].position, false, 0f, false, true);
			}
			else
			{
				GameNetworkManager.Instance.localPlayerController.TeleportPlayer(base.passengerSideExitPoints[1].position, false, 0f, false, true);
			}
		}
	}

	private int CanExitCar(bool passengerSide)
	{
		//IL_0086: Unknown result type (might be due to invalid IL or missing references)
		//IL_0094: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		if (!passengerSide)
		{
			for (int i = 0; i < base.driverSideExitPoints.Length; i++)
			{
				if (!CheckExitPointInvalid(((Component)GameNetworkManager.Instance.localPlayerController.gameplayCamera).transform.position, base.driverSideExitPoints[i].position, base.exitCarLayerMask, (QueryTriggerInteraction)1))
				{
					return i;
				}
			}
			return -1;
		}
		for (int j = 0; j < base.passengerSideExitPoints.Length; j++)
		{
			if (!CheckExitPointInvalid(((Component)GameNetworkManager.Instance.localPlayerController.gameplayCamera).transform.position, base.passengerSideExitPoints[j].position, base.exitCarLayerMask, (QueryTriggerInteraction)1))
			{
				return j;
			}
		}
		return -1;
	}

	public bool CheckExitPointInvalid(Vector3 playerPos, Vector3 exitPoint, int layerMask, QueryTriggerInteraction interaction)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0004: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_0053: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_0067: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		if (Physics.Linecast(playerPos, exitPoint, layerMask, interaction))
		{
			return true;
		}
		if (Physics.CheckCapsule(exitPoint, exitPoint + Vector3.up, 0.5f, layerMask, interaction))
		{
			return true;
		}
		LayerMask val = LayerMask.op_Implicit(layerMask | LayerMask.GetMask(new string[1] { "Vehicle" }));
		if (!Physics.Linecast(exitPoint, exitPoint + Vector3.down * 4f, LayerMask.op_Implicit(val), interaction))
		{
			return true;
		}
		return false;
	}

	public void EnableVehicleCollisionForAllPlayers()
	{
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_007f: Unknown result type (might be due to invalid IL or missing references)
		for (int i = 0; i < StartOfRound.Instance.allPlayerScripts.Length; i++)
		{
			if ((Object)(object)StartOfRound.Instance.allPlayerScripts[i] != (Object)(object)base.currentPassenger)
			{
				if ((Object)(object)StartOfRound.Instance.allPlayerScripts[i] != (Object)(object)GameNetworkManager.Instance.localPlayerController)
				{
					((Collider)StartOfRound.Instance.allPlayerScripts[i].thisController).excludeLayers = LayerMask.op_Implicit(1073745920);
					StartOfRound.Instance.allPlayerScripts[i].playerRigidbody.excludeLayers = LayerMask.op_Implicit(1073745920);
					break;
				}
				((Collider)StartOfRound.Instance.allPlayerScripts[i].thisController).excludeLayers = LayerMask.op_Implicit(0);
				StartOfRound.Instance.allPlayerScripts[i].playerRigidbody.excludeLayers = LayerMask.op_Implicit(0);
			}
		}
	}

	public void DisableVehicleCollisionForAllPlayers()
	{
		//IL_0090: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		//IL_006b: Unknown result type (might be due to invalid IL or missing references)
		for (int i = 0; i < StartOfRound.Instance.allPlayerScripts.Length; i++)
		{
			if (!base.localPlayerInControl && !base.localPlayerInPassengerSeat && (Object)(object)StartOfRound.Instance.allPlayerScripts[i] == (Object)(object)GameNetworkManager.Instance.localPlayerController)
			{
				((Collider)StartOfRound.Instance.allPlayerScripts[i].thisController).excludeLayers = LayerMask.op_Implicit(0);
				StartOfRound.Instance.allPlayerScripts[i].playerRigidbody.excludeLayers = LayerMask.op_Implicit(0);
			}
			else
			{
				((Collider)StartOfRound.Instance.allPlayerScripts[i].thisController).excludeLayers = LayerMask.op_Implicit(1073745920);
				StartOfRound.Instance.allPlayerScripts[i].playerRigidbody.excludeLayers = LayerMask.op_Implicit(1073745920);
			}
		}
	}

	public void SetVehicleCollisionForPlayer(bool setEnabled, PlayerControllerB player)
	{
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		if (!setEnabled)
		{
			((Collider)player.thisController).excludeLayers = LayerMask.op_Implicit(1073745920);
			player.playerRigidbody.excludeLayers = LayerMask.op_Implicit(1073745920);
		}
		else
		{
			((Collider)player.thisController).excludeLayers = LayerMask.op_Implicit(0);
			player.playerRigidbody.excludeLayers = LayerMask.op_Implicit(0);
		}
	}

	private void GetVehicleInput()
	{
		//IL_004c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_008a: Unknown result type (might be due to invalid IL or missing references)
		//IL_008f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_0115: Unknown result type (might be due to invalid IL or missing references)
		//IL_011a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00da: Unknown result type (might be due to invalid IL or missing references)
		if (!((Object)(object)GameNetworkManage