Decompiled source of TTI VIPER v1.0.1

TTI_VIPER.dll

Decompiled 3 weeks ago
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using FistVR;
using H3VRUtils.MonoScripts.VisualModifiers;
using HarmonyLib;
using OtherLoader;
using TheNext;
using UnityEditor;
using UnityEngine;
using Valve.VR;
using Valve.VR.InteractionSystem.Sample;

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
namespace JerryComponent
{
	public class EnableIfDisabled : MonoBehaviour
	{
		public FVRFireArmRound Bullet;

		public GameObject Obj;

		public GameObject Renderer;

		private void Start()
		{
		}

		private void Update()
		{
			if (Bullet.IsSpent)
			{
				Obj.SetActive(true);
			}
			if (Bullet.IsChambered)
			{
				Renderer.SetActive(true);
			}
			if (!Bullet.IsChambered)
			{
				Renderer.SetActive(false);
			}
		}
	}
	public class LauncherHandle : MonoBehaviour
	{
		public GameObject LCH;

		public string GunName;

		public FVRPhysicalObject obj;

		public CarlGustaf Gun;

		public WorkingRigidbodies WR;

		private void Start()
		{
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: 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_00de: Unknown result type (might be due to invalid IL or missing references)
			LCH = GameObject.Find(GunName);
			Gun = LCH.GetComponent<CarlGustaf>();
			WR = LCH.GetComponent<WorkingRigidbodies>();
			if ((Object)(object)WR != (Object)null)
			{
				((Component)this).gameObject.transform.position = ((Component)WR.G).transform.position;
				((Component)this).gameObject.transform.eulerAngles = ((Component)WR.GP).transform.eulerAngles;
				ConfigurableJoint val = ((Component)this).gameObject.AddComponent<ConfigurableJoint>();
				((Joint)val).connectedBody = WR.G;
				((Joint)val).autoConfigureConnectedAnchor = false;
				((Joint)val).connectedAnchor = new Vector3(0f, 0f, 0f);
				((Joint)val).anchor = new Vector3(0f, 0f, 0f);
				val.xMotion = (ConfigurableJointMotion)0;
				val.yMotion = (ConfigurableJointMotion)0;
				val.zMotion = (ConfigurableJointMotion)0;
				val.angularXMotion = (ConfigurableJointMotion)2;
				val.angularYMotion = (ConfigurableJointMotion)2;
				val.angularZMotion = (ConfigurableJointMotion)2;
			}
		}

		private void Update()
		{
			if ((Object)(object)LCH == (Object)null || (Object)(object)Gun == (Object)null || (Object)(object)WR == (Object)null)
			{
				Object.Destroy((Object)(object)((Component)this).gameObject);
			}
			else if ((Object)(object)LCH != (Object)null && (Object)(object)Gun != (Object)null && (Object)(object)WR != (Object)null && (Object)(object)((FVRInteractiveObject)obj).m_hand != (Object)null && ((FVRInteractiveObject)obj).m_hand.Input.TriggerPressed)
			{
				Gun.TryToFire();
			}
		}
	}
	public class Syringe : FVRFireArmAttachment
	{
		public enum CartridgeState
		{
			Whole,
			BitOpen,
			Jammed
		}

		public List<Renderer> Rends;

		public CartridgeState CState;

		public int numPowderChunksLeft = 20;

		public AudioEvent AudEvent_Bite;

		public AudioEvent AudEvent_Tap;

		public Transform PowderSpawnPoint;

		public GameObject PowderPrefab;

		public GameObject BitPart;

		public AudioEvent AudEvent_Spit;

		public GameObject Splode;

		[NonSerialized]
		public bool m_isDestroyed;

		[NonSerialized]
		public float m_tickDownToSpit = 0.2f;

		[NonSerialized]
		public bool m_tickingDownToSpit;

		[NonSerialized]
		public float timeSinceSpawn = 1f;

		public PowerupType put;

		public PowerUpIntensity pui;

		public PowerUpDuration pud;

		public AudioEvent AudEvent_DIng;

		public FVRPhysicalObject PenObject;

		public bool isAlreadyInHeadRange = false;

		public bool isUsed = false;

		public KillAfter ka;

		public void SetRenderer(CartridgeState s)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Invalid comparison between Unknown and I4
			for (int i = 0; i < Rends.Count; i++)
			{
				if ((int)s == i)
				{
					Rends[i].enabled = true;
				}
				else
				{
					Rends[i].enabled = false;
				}
			}
		}

		public override void Awake()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			((FVRFireArmAttachment)this).Awake();
			SetRenderer(CState);
		}

		public override void UpdateInteraction(FVRViveHand hand)
		{
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: 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_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_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: 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)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: 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)
			((FVRFireArmAttachment)this).UpdateInteraction(hand);
			if (((FVRInteractiveObject)this).m_hasTriggeredUpSinceBegin)
			{
				float num = Vector3.Angle(-((Component)this).transform.forward, Vector3.up);
			}
			if ((int)CState == 0)
			{
				Vector3 val = ((Component)GM.CurrentPlayerBody.Head).transform.position + ((Component)GM.CurrentPlayerBody.Head).transform.up * -0.2f;
				if (Vector3.Distance(((Component)this).transform.position, val) < 0.15f)
				{
					SM.PlayGenericSound(AudEvent_Bite, ((Component)this).transform.position);
					CState = (CartridgeState)1;
					SetRenderer(CState);
					m_tickingDownToSpit = true;
					m_tickDownToSpit = Random.Range(0.3f, 0.6f);
				}
			}
		}

		public override void FVRUpdate()
		{
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Invalid comparison between Unknown and I4
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: 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_0070: 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_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_0098: 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_00ab: 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_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: 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_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			((FVRPhysicalObject)this).FVRUpdate();
			if (timeSinceSpawn < 1f)
			{
				timeSinceSpawn += Time.deltaTime;
			}
			if (m_tickingDownToSpit)
			{
				m_tickDownToSpit -= Time.deltaTime;
				if (m_tickDownToSpit <= 0f)
				{
					m_tickingDownToSpit = false;
					Vector3 val = ((Component)GM.CurrentPlayerBody.Head).transform.position + ((Component)GM.CurrentPlayerBody.Head).transform.up * -0.2f;
					SM.PlayGenericSound(AudEvent_Spit, val);
					GameObject val2 = Object.Instantiate<GameObject>(BitPart, val, Random.rotation);
					Rigidbody component = val2.GetComponent<Rigidbody>();
					component.velocity = GM.CurrentPlayerBody.Head.forward * Random.Range(2f, 4f) + Random.onUnitSphere;
					component.angularVelocity = Random.onUnitSphere * Random.Range(1f, 5f);
				}
			}
			if ((int)CState == 1)
			{
				float num = Vector3.Angle(-((Component)this).transform.forward, Vector3.up);
				if (num > 120f && numPowderChunksLeft > 0 && timeSinceSpawn > 0.04f)
				{
					numPowderChunksLeft--;
					timeSinceSpawn = 0f;
					Object.Instantiate<GameObject>(PowderPrefab, PowderSpawnPoint.position, Random.rotation);
				}
			}
		}

		private void Update()
		{
			//IL_0007: 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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Invalid comparison between Unknown and I4
			float num = Vector3.Distance(((Component)this).transform.position, ((Component)GM.CurrentPlayerBody.Head).transform.position + Vector3.up * -0.1f);
			if ((double)num >= 0.19)
			{
				isAlreadyInHeadRange = false;
			}
			if ((double)num < 0.15)
			{
				if (!isAlreadyInHeadRange && (int)CState == 1 && !isUsed)
				{
					PowerUp(((FVRInteractiveObject)PenObject).m_hand);
					Console.Write("Yummy");
					isUsed = true;
				}
				isAlreadyInHeadRange = true;
			}
		}

		public void PowerUp(FVRViveHand hand)
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: 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_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			SM.PlayCoreSound((FVRPooledAudioType)10, AudEvent_DIng, ((Component)this).transform.position);
			GM.CurrentSceneSettings.OnPowerupUse(put);
			GM.CurrentPlayerBody.ActivatePower(put, pui, pud, false, false, -1f);
			((Behaviour)ka).enabled = true;
		}
	}
	public class BelfFedMGLifter : MonoBehaviour
	{
		public FVRFireArmTopCover cover;

		public FVRFoldingStockXAxis lifter;

		public BoxCollider col;

		public OpenBoltReceiver gun;

		public float a = 45f;

		private void Update()
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: 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_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: 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)
			if (!((FVRFireArm)gun).HasBelt && ((Component)cover).transform.localEulerAngles.x >= 45f)
			{
				((Collider)col).enabled = true;
			}
			if (((FVRFireArm)gun).HasBelt || ((Component)cover).transform.localEulerAngles.x < 45f)
			{
				((Collider)col).enabled = false;
			}
			if (((Component)lifter).transform.localEulerAngles.x < 45f)
			{
				a = ((Component)lifter).transform.localEulerAngles.x;
				((Component)lifter).transform.localEulerAngles = new Vector3(a + 5f, 0f, 0f);
			}
			if (((Component)lifter).transform.localEulerAngles.x == 45f)
			{
				a = 45f;
			}
			if (((Component)lifter).transform.localEulerAngles.x > 45f)
			{
				((Component)lifter).transform.localEulerAngles = new Vector3(45f, 0f, 0f);
			}
		}
	}
	public class BuletSearcher : MonoBehaviour
	{
		private BallisticProjectile boolet;

		public GameObject booletcam;

		private GameObject bullet;

		private bool spawned = false;

		private GameObject bc;

		private RaycastHit hit;

		private Ray ray;

		public LayerMask mask;

		private float timeb = 1f;

		private void Awake()
		{
		}

		private void Start()
		{
		}

		private void Update()
		{
			//IL_008f: 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_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_00af: 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)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: Unknown result type (might be due to invalid IL or missing references)
			timeb += Time.deltaTime;
			boolet = Object.FindObjectOfType<BallisticProjectile>();
			if ((Object)(object)boolet != (Object)null)
			{
				bullet = ((Component)boolet).gameObject;
			}
			if ((Object)(object)boolet == (Object)null)
			{
			}
			if ((Object)(object)bullet != (Object)null && !spawned)
			{
				if (timeb >= 1f)
				{
					ray = new Ray(bullet.transform.position, bullet.transform.forward);
					if (Physics.Raycast(ray, ref hit, 2000f, LayerMask.op_Implicit(mask)) && ((Object)((Component)((RaycastHit)(ref hit)).collider).gameObject).name == "Geo_Head")
					{
						Time.timeScale = Mathf.Clamp(0.0001f, 0.0001f, 1f);
						Time.fixedDeltaTime = Time.timeScale / SteamVR.instance.hmd_DisplayFrequency;
						bc = Object.Instantiate<GameObject>(booletcam, bullet.transform.localPosition, Quaternion.identity);
						bc.transform.parent = bullet.transform;
						bc.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
						timeb = 0f;
					}
				}
				if (!(timeb < 1f))
				{
				}
			}
			if (spawned)
			{
			}
			if ((Object)(object)bc == (Object)null)
			{
				spawned = false;
			}
			if ((Object)(object)bc != (Object)null)
			{
				spawned = true;
			}
		}
	}
	public class ClosedBoltDoubleSideHandleRot : MonoBehaviour
	{
		public GameObject LeftHandle;

		public GameObject RightHandle;

		public FVRInteractiveObject bolt;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: 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_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0242: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: 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_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: 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_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)bolt.m_hand != (Object)null)
			{
				if (Vector3.Distance(((Component)bolt.m_hand).transform.position, LeftHandle.transform.position) > Vector3.Distance(((Component)bolt.m_hand).transform.position, RightHandle.transform.position))
				{
					RightHandle.transform.localEulerAngles = new Vector3(0f, 90f, 0f);
					LeftHandle.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				}
				else if (Vector3.Distance(((Component)bolt.m_hand).transform.position, LeftHandle.transform.position) < Vector3.Distance(((Component)bolt.m_hand).transform.position, RightHandle.transform.position))
				{
					LeftHandle.transform.localEulerAngles = new Vector3(0f, 270f, 0f);
					RightHandle.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				}
				else if (Vector3.Distance(((Component)bolt.m_hand).transform.position, LeftHandle.transform.position) == Vector3.Distance(((Component)bolt.m_hand).transform.position, RightHandle.transform.position))
				{
					LeftHandle.transform.localEulerAngles = new Vector3(0f, 270f, 0f);
					RightHandle.transform.localEulerAngles = new Vector3(0f, 90f, 0f);
				}
			}
			else if ((Object)(object)bolt.m_hand == (Object)null)
			{
				LeftHandle.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				RightHandle.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
			}
		}
	}
	public class Lookat : MonoBehaviour
	{
		public GameObject mark;

		public Transform nearestAI;

		public SosigLink[] currentAI = null;

		public GameObject lookAtObj;

		public LAPD2019Laser laser;

		public Transform player;

		private void OnTriggerEnter(Collider other)
		{
			currentAI = ((Component)other).gameObject.GetComponents<SosigLink>();
		}

		private void Update()
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: 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_0105: 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_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			if (currentAI == null || (Object)(object)nearestAI == (Object)null)
			{
				laser.TurnOff();
				mark.SetActive(false);
				mark.transform.localPosition = new Vector3(0f, 0f, 0f);
				lookAtObj.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
			}
			if ((Object)(object)nearestAI != (Object)null)
			{
				laser.TurnOn();
				mark.SetActive(true);
				mark.transform.position = ((Component)nearestAI).transform.position;
				AxisLookAt(lookAtObj.transform, nearestAI.position, Vector3.forward);
			}
			AxisLookAt(mark.transform, lookAtObj.transform.position, Vector3.forward);
			if (currentAI != null)
			{
				nearestAI = GetNearestGameObject(player, currentAI);
			}
		}

		private void AxisLookAt(Transform tr_self, Vector3 lookPos, Vector3 directionAxis)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: 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_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_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: 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_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: 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)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			Quaternion rotation = tr_self.rotation;
			Vector3 val = lookPos - tr_self.position;
			Vector3 val2 = tr_self.rotation * directionAxis;
			Vector3 val3 = Vector3.Cross(val2, val);
			Vector3 normalized = ((Vector3)(ref val3)).normalized;
			float num = Vector3.Angle(val2, val);
			tr_self.rotation = Quaternion.AngleAxis(num, normalized) * rotation;
			tr_self.localEulerAngles = new Vector3(tr_self.localEulerAngles.x, tr_self.localEulerAngles.y, 0f);
		}

		public Transform GetNearestGameObject(Transform player, SosigLink[] objects)
		{
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			Transform val = null;
			if (objects == null || (Object)(object)val == (Object)null)
			{
			}
			if (objects.Length > 0)
			{
				val = ((Component)objects[0]).transform;
				float num = Vector3.Distance(player.position, ((Component)objects[0]).transform.position);
				for (int i = 1; i < objects.Length; i++)
				{
					float num2 = Vector3.Distance(player.position, ((Component)objects[i]).transform.position);
					if (num > num2)
					{
						num = num2;
						val = ((Component)objects[i]).transform;
					}
				}
			}
			return val;
		}
	}
	public class Slotarea : MonoBehaviour
	{
		public GameObject parent;

		public void OnTriggerStay(Collider other)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: 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)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			GameObject gameObject = ((Component)other).gameObject;
			FVRPhysicalObject component = gameObject.GetComponent<FVRPhysicalObject>();
			if (!((Object)(object)component != (Object)null) || !((Object)(object)gameObject != (Object)(object)parent) || (int)component.QBSlotType != 0 || ((FVRInteractiveObject)component).m_isHeld || !((Object)(object)component.m_quickbeltSlot == (Object)null))
			{
				return;
			}
			float num = Vector3.Distance(((Component)component).transform.position, ((Component)GM.CurrentPlayerBody.LeftHand).transform.position);
			float num2 = Vector3.Distance(((Component)component).transform.position, ((Component)GM.CurrentPlayerBody.RightHand).transform.position);
			if (num < 0.25f || num2 < 0.25f)
			{
				Rigidbody component2 = gameObject.GetComponent<Rigidbody>();
				if ((Object)(object)component2 != (Object)null)
				{
					gameObject.transform.SetParent(parent.transform);
					component2.useGravity = false;
					component2.isKinematic = true;
				}
			}
		}

		public void OnTriggerExit(Collider other)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			GameObject gameObject = ((Component)other).gameObject;
			FVRPhysicalObject component = gameObject.GetComponent<FVRPhysicalObject>();
			if ((Object)(object)component != (Object)null && (Object)(object)gameObject != (Object)(object)parent && (int)component.QBSlotType == 0 && ((FVRInteractiveObject)component).m_isHeld && (Object)(object)component.m_quickbeltSlot == (Object)null)
			{
				Rigidbody component2 = gameObject.GetComponent<Rigidbody>();
				if ((Object)(object)component2 != (Object)null)
				{
					gameObject.transform.SetParent(parent.transform);
					component2.useGravity = true;
					component2.isKinematic = false;
				}
			}
		}

		private void Update()
		{
		}
	}
	public class DynamoFlashLight : MonoBehaviour
	{
		public float magnith = 2.5f;

		public float pullmag = 25000f;

		public Collider col;

		public GameObject r0;

		public AudioEvent AudioSt;

		public GameObject Audio;

		public AudioSource Audios;

		public Rigidbody R;

		public RotateOverTime Magni;

		public RotateOverTime Magni2;

		public Rigidbody str1;

		public Rigidbody str2;

		public Rigidbody ring;

		public Rigidbody base1;

		public Rigidbody base2;

		public GameObject ringobj;

		public GameObject ringbase;

		public Light spotlight;

		public Material MatBody;

		public Material MatLens;

		public FVRPhysicalObject Mainobj;

		public FVRPhysicalObject Pullobj;

		public float MovSpeed;

		public float LocalVel;

		public float LastAV;

		public bool pulled = false;

		public float weight = 0f;

		private void Start()
		{
			pulled = false;
			Audio.SetActive(false);
			MatBody.SetFloat("_EmissionWeight", 0f);
			MatLens.SetFloat("_EmissionWeight", 0f);
			spotlight.intensity = 0f;
			Magni.angularVelocity.x = 0f;
			Magni.angularVelocity.y = 0f;
			Magni.angularVelocity.z = 0f;
			Magni2.angularVelocity.x = 0f;
			Magni2.angularVelocity.y = 0f;
			Magni2.angularVelocity.z = 0f;
		}

		private void Update()
		{
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			Magni2.angularVelocity.x = 0f;
			Magni2.angularVelocity.y = 0f;
			Magni2.angularVelocity.z = Magni.angularVelocity.z * 100f;
			str1.isKinematic = false;
			str2.isKinematic = false;
			ring.isKinematic = false;
			base1.isKinematic = false;
			base2.isKinematic = false;
			if ((Object)(object)((FVRInteractiveObject)Mainobj).m_hand == (Object)null)
			{
				col.enabled = false;
			}
			else if ((Object)(object)((FVRInteractiveObject)Mainobj).m_hand != (Object)null)
			{
				col.enabled = true;
			}
			if ((Object)(object)((FVRInteractiveObject)Mainobj).m_hand == (Object)null || (Object)(object)((FVRInteractiveObject)Pullobj).m_hand == (Object)null)
			{
				LocalVel = 0f;
				LastAV = 0f;
			}
			else if ((Object)(object)((FVRInteractiveObject)Mainobj).m_hand != (Object)null && (Object)(object)((FVRInteractiveObject)Pullobj).m_hand != (Object)null)
			{
				r0.transform.localEulerAngles = new Vector3(0f, 0f, Vector3.Distance(ringobj.transform.position, ringbase.transform.position) * 5000f);
				LocalVel = (Vector3.Distance(ringobj.transform.position, ringbase.transform.position) - LastAV) * Time.deltaTime;
				LastAV = LocalVel;
				LocalVel = (Vector3.Distance(ringobj.transform.position, ringbase.transform.position) - LastAV) * Time.deltaTime;
				LastAV = LocalVel;
				if (LocalVel > magnith)
				{
					Magni.angularVelocity.x = 0f;
					Magni.angularVelocity.y = 0f;
					Magni.angularVelocity.z = Magni.angularVelocity.z + LocalVel * pullmag * Time.deltaTime;
				}
			}
			spotlight.intensity = Magni.angularVelocity.z * 0.025f;
			weight = spotlight.intensity * 0.4f;
			if (weight > 1f)
			{
				weight = 1f;
			}
			else if (weight < 0f)
			{
				weight = 0f;
			}
			MatBody.SetFloat("_EmissionWeight", weight);
			MatLens.SetFloat("_EmissionWeight", weight);
			if (spotlight.intensity > 3f)
			{
				spotlight.intensity = 3f;
			}
			else if (spotlight.intensity < 0f)
			{
				spotlight.intensity = 0f;
			}
			if (Magni.angularVelocity.z > 0f)
			{
				Audio.SetActive(true);
				Audios.volume = Magni.angularVelocity.z * 0.1f;
				Audios.pitch = 0.1f + Magni.angularVelocity.z * 0.01f;
			}
			else if (Magni.angularVelocity.z <= 0f)
			{
				Audio.SetActive(false);
				Audios.pitch = 0f;
				Audios.volume = 0f;
			}
			else if (Magni.angularVelocity.z > 1000f)
			{
				Magni.angularVelocity.z = 1000f;
			}
			if (Magni.angularVelocity.z > 0f)
			{
				Magni.angularVelocity.z = Magni.angularVelocity.z - 2.5f * Time.deltaTime;
			}
			else if (Magni.angularVelocity.z < 0f)
			{
				Magni.angularVelocity.z = 0f;
			}
			if (Audios.volume > 1f)
			{
				Audios.volume = 1f;
			}
			else if (Audios.volume < 0f)
			{
				Audios.volume = 0f;
			}
			if (Audios.pitch > 2f)
			{
				Audios.pitch = 2f;
			}
			if (Audios.pitch < 0f)
			{
				Audios.pitch = 0f;
			}
		}

		private void OnDestroy()
		{
			Object.Destroy((Object)(object)((Component)str1).gameObject);
			Object.Destroy((Object)(object)((Component)str2).gameObject);
			Object.Destroy((Object)(object)((Component)ring).gameObject);
			Object.Destroy((Object)(object)((Component)R).gameObject);
			Object.Destroy((Object)(object)((Component)base1).gameObject);
			Object.Destroy((Object)(object)((Component)base2).gameObject);
		}
	}
}
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
public class DeferredNightVisionEffect : MonoBehaviour
{
	[SerializeField]
	[Tooltip("The main color of the NV effect")]
	public Color m_NVColor = new Color(0f, 1f, 0.1724138f, 0f);

	[SerializeField]
	[Tooltip("The color that the NV effect will 'bleach' towards (white = default)")]
	public Color m_TargetBleachColor = new Color(1f, 1f, 1f, 0f);

	[Range(0f, 0.1f)]
	[Tooltip("How much base lighting does the NV effect pick up")]
	public float m_baseLightingContribution = 0.025f;

	[Range(0f, 128f)]
	[Tooltip("The higher this value, the more bright areas will get 'bleached out'")]
	public float m_LightSensitivityMultiplier = 100f;

	private Material m_Material;

	private Shader m_Shader;

	[Tooltip("Do we want to apply a vignette to the edges of the screen?")]
	public bool useVignetting = true;

	public Shader NightVisionShader => m_Shader;

	private void DestroyMaterial(Material mat)
	{
		if (Object.op_Implicit((Object)(object)mat))
		{
			Object.DestroyImmediate((Object)(object)mat);
			mat = null;
		}
	}

	private void CreateMaterials()
	{
		if ((Object)(object)m_Shader == (Object)null)
		{
			m_Shader = Shader.Find("Custom/DeferredNightVisionShader");
		}
		if ((Object)(object)m_Material == (Object)null && (Object)(object)m_Shader != (Object)null && m_Shader.isSupported)
		{
			m_Material = CreateMaterial(m_Shader);
		}
	}

	private Material CreateMaterial(Shader shader)
	{
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Expected O, but got Unknown
		if (!Object.op_Implicit((Object)(object)shader))
		{
			return null;
		}
		Material val = new Material(shader);
		((Object)val).hideFlags = (HideFlags)61;
		return val;
	}

	private void OnDisable()
	{
		DestroyMaterial(m_Material);
		m_Material = null;
		m_Shader = null;
	}

	[ContextMenu("UpdateShaderValues")]
	public void UpdateShaderValues()
	{
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		if (!((Object)(object)m_Material == (Object)null))
		{
			m_Material.SetVector("_NVColor", Color.op_Implicit(m_NVColor));
			m_Material.SetVector("_TargetWhiteColor", Color.op_Implicit(m_TargetBleachColor));
			m_Material.SetFloat("_BaseLightingContribution", m_baseLightingContribution);
			m_Material.SetFloat("_LightSensitivityMultiplier", m_LightSensitivityMultiplier);
			m_Material.shaderKeywords = null;
			if (useVignetting)
			{
				Shader.EnableKeyword("USE_VIGNETTE");
			}
			else
			{
				Shader.DisableKeyword("USE_VIGNETTE");
			}
		}
	}

	private void OnEnable()
	{
		CreateMaterials();
		UpdateShaderValues();
	}

	public void ReloadShaders()
	{
		OnDisable();
	}

	private void OnRenderImage(RenderTexture source, RenderTexture destination)
	{
		UpdateShaderValues();
		CreateMaterials();
		Graphics.Blit((Texture)(object)source, destination, m_Material);
	}
}
namespace JerryComponent
{
	public class guitarreset : MonoBehaviour
	{
		public AudioSource song;

		public GameObject rot;

		private bool is45 = false;

		private void Start()
		{
		}

		private void over45()
		{
			if (is45)
			{
				song.Stop();
			}
			is45 = false;
		}

		private void under45()
		{
			if (!is45)
			{
				song.Play();
				song.Pause();
			}
			is45 = true;
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			if (rot.transform.localEulerAngles.x > 45f)
			{
				over45();
			}
			if (rot.transform.localEulerAngles.x < 45f)
			{
				under45();
			}
		}
	}
	public class guitarscript : MonoBehaviour
	{
		public GameObject reset;

		public AudioSource song;

		public GameObject resetvolume;

		private bool slaponce;

		private void Start()
		{
		}

		private void OnTriggerEnter(Collider other)
		{
			slaponce = true;
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: 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_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: 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_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: 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)
			//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
			if (reset.transform.localEulerAngles.x > 15f)
			{
				resetvolume.SetActive(true);
				resetvolume.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				if (resetvolume.transform.localEulerAngles.x > 25f)
				{
					resetvolume.transform.localEulerAngles = new Vector3(25f, 0f, 0f);
					resetvolume.SetActive(false);
				}
			}
			if (reset.transform.localEulerAngles.x < 15f)
			{
				resetvolume.SetActive(false);
				resetvolume.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
			}
			if (reset.transform.localEulerAngles.x < 25f)
			{
				song.UnPause();
			}
			if (reset.transform.localEulerAngles.x > 25f)
			{
				reset.transform.localEulerAngles = new Vector3(25f, 0f, 0f);
			}
			if (reset.transform.localEulerAngles.x >= 25f)
			{
				song.Pause();
			}
			song.volume = 1f - resetvolume.transform.localEulerAngles.x * 0.04f;
			if (slaponce)
			{
				reset.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				slaponce = false;
			}
		}
	}
	public class guitarslap : MonoBehaviour
	{
		public GameObject slide;

		public AudioSource asa1;

		public AudioSource asa2;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: 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_003a: Unknown result type (might be due to invalid IL or missing references)
			asa1.pitch = slide.transform.localPosition.z;
			asa2.pitch = slide.transform.localPosition.z;
		}
	}
	public class guitarslap2 : MonoBehaviour
	{
		public int start = 0;

		public SphereCollider cols;

		public int[] notes1;

		public int[] notes2;

		public int[] notes3;

		public int[] notes4;

		public AudioEvent[] clips;

		public GameObject foregrip;

		public GameObject hold1;

		public GameObject hold2;

		public GameObject hold3;

		public GameObject hold4;

		public Transform pos;

		private void Start()
		{
		}

		private void OnTriggerEnter(Collider col)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: 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_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: 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_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: 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_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: 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)
			//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_019a: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0223: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_025a: Unknown result type (might be due to invalid IL or missing references)
			//IL_027e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0326: Unknown result type (might be due to invalid IL or missing references)
			//IL_032b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02de: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0362: Unknown result type (might be due to invalid IL or missing references)
			//IL_0386: Unknown result type (might be due to invalid IL or missing references)
			col = (Collider)(object)cols;
			if (hold1.transform.localEulerAngles.x < 45f && hold2.transform.localEulerAngles.x < 45f && hold3.transform.localEulerAngles.x < 45f && hold4.transform.localEulerAngles.x < 45f)
			{
				SM.PlayGenericSound(clips[0], pos.localPosition);
				start = 0;
			}
			if ((hold1.transform.localEulerAngles.x > 45f && notes1[start] == 0) || (hold2.transform.localEulerAngles.x > 45f && notes2[start] == 0) || (hold3.transform.localEulerAngles.x > 45f && notes3[start] == 0) || (hold4.transform.localEulerAngles.x > 45f && notes4[start] == 0))
			{
				start = 0;
			}
			if (hold1.transform.localEulerAngles.x > 45f)
			{
				foregrip.transform.localPosition = new Vector3(0f, 0f, (float)notes1[start]);
				SM.PlayGenericSound(clips[notes1[start]], pos.localPosition);
				start++;
			}
			if (hold2.transform.localEulerAngles.x > 45f)
			{
				foregrip.transform.localPosition = new Vector3(0f, 0f, (float)notes2[start]);
				SM.PlayGenericSound(clips[notes2[start]], pos.localPosition);
				start++;
			}
			if (hold3.transform.localEulerAngles.x > 45f)
			{
				foregrip.transform.localPosition = new Vector3(0f, 0f, (float)notes3[start]);
				SM.PlayGenericSound(clips[notes3[start]], pos.localPosition);
				start++;
			}
			if (hold4.transform.localEulerAngles.x > 45f)
			{
				foregrip.transform.localPosition = new Vector3(0f, 0f, (float)notes4[start]);
				SM.PlayGenericSound(clips[notes4[start]], pos.localPosition);
				start++;
			}
		}

		private void FixedUpdate()
		{
		}

		private void Update()
		{
		}
	}
	public class LebelHandle : MonoBehaviour
	{
		public Mac11_Stock fakeboltt;

		public BoltActionRifle_Handle realbolt;

		public GameObject rot;

		public GameObject fakebolt;

		public FVRAlternateGrip foregrip;

		private GameObject _player = null;

		private FVRViveHand leftHand = null;

		private FVRViveHand rightHand = null;

		public bool istransfterd = true;

		private void Awake()
		{
			_player = ((Component)Object.FindObjectOfType<FVRPlayerBody>()).gameObject;
		}

		private void Start()
		{
			leftHand = ((Component)_player.transform.Find("Controller (left)")).GetComponent<FVRViveHand>();
			rightHand = ((Component)_player.transform.Find("Controller (right)")).GetComponent<FVRViveHand>();
		}

		private void BoltTransfer()
		{
			if (!istransfterd)
			{
				((FVRInteractiveObject)fakeboltt).EndInteraction(rightHand);
				rightHand.ForceSetInteractable((FVRInteractiveObject)(object)realbolt);
				((FVRInteractiveObject)realbolt).BeginInteraction(rightHand);
				istransfterd = true;
			}
			if (!istransfterd)
			{
			}
		}

		private void Update()
		{
			if (!fakebolt.activeInHierarchy)
			{
				BoltTransfer();
			}
			if (fakebolt.activeInHierarchy)
			{
				istransfterd = false;
			}
			if (!((Object)(object)_player == (Object)null) && !((Object)(object)leftHand == (Object)null) && !((Object)(object)rightHand == (Object)null))
			{
			}
		}
	}
	public class DshapeGrip : MonoBehaviour
	{
		public ClosedBoltWeapon gun;

		public GameObject trigL;

		public GameObject trigR;

		public GameObject magrel;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: 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_0063: Unknown result type (might be due to invalid IL or missing references)
			if (trigL.transform.localEulerAngles.x > 45f || trigR.transform.localEulerAngles.x > 45f)
			{
				gun.Fire();
			}
			if (magrel.transform.localEulerAngles.x > 45f && (Object)(object)((FVRFireArm)gun).Magazine != (Object)null)
			{
				((FVRFireArm)gun).EjectMag(false);
			}
		}
	}
	public class FireRopeOB : MonoBehaviour
	{
		public OpenBoltReceiver gun;

		public GameObject trigger;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: 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)
			if (trigger.transform.localPosition.z >= 0.1f)
			{
				gun.Fire();
			}
			else if (!(trigger.transform.localPosition.z < 0.1f))
			{
			}
		}
	}
	public class KeepMeAlive : MonoBehaviour
	{
		public Rigidbody rb;

		private void Start()
		{
		}

		private void Update()
		{
			rb.isKinematic = false;
		}
	}
	public class MountedMG : MonoBehaviour
	{
		public GameObject elev;

		public GameObject hori;

		public GameObject XGEO;

		public GameObject YGEO;

		public WaggleJoint X;

		public WaggleJoint Y;

		public Rigidbody j1;

		public Rigidbody j2;

		public Rigidbody j3;

		public GameObject trig;

		public ClosedBoltWeapon gun;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: 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_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: 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_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_0203: Unknown result type (might be due to invalid IL or missing references)
			//IL_0208: Unknown result type (might be due to invalid IL or missing references)
			//IL_019a: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_028f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0294: Unknown result type (might be due to invalid IL or missing references)
			//IL_0226: Unknown result type (might be due to invalid IL or missing references)
			//IL_022b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_031b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0320: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0259: Unknown result type (might be due to invalid IL or missing references)
			//IL_0384: Unknown result type (might be due to invalid IL or missing references)
			//IL_0389: Unknown result type (might be due to invalid IL or missing references)
			//IL_034e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0410: Unknown result type (might be due to invalid IL or missing references)
			//IL_0415: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_049c: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0433: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Unknown result type (might be due to invalid IL or missing references)
			//IL_03da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0528: Unknown result type (might be due to invalid IL or missing references)
			//IL_052d: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0466: 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_0550: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_057e: Unknown result type (might be due to invalid IL or missing references)
			if (trig.transform.localPosition.x > 1f)
			{
				gun.Fire();
			}
			if (trig.transform.localPosition.x < 1f)
			{
			}
			j1.isKinematic = false;
			j2.isKinematic = false;
			j3.isKinematic = false;
			if (elev.transform.localPosition.y < 0.5f)
			{
				XGEO.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				X.angleLimitLeft = 15f;
				X.angleLimitRight = 15f;
			}
			if (elev.transform.localPosition.y > 0.5f && elev.transform.localPosition.y < 1.5f)
			{
				XGEO.transform.localEulerAngles = new Vector3(15f, 0f, 0f);
				X.angleLimitLeft = 0f;
				X.angleLimitRight = 30f;
			}
			if (elev.transform.localPosition.y > 1.5f && elev.transform.localPosition.y < 2.5f)
			{
				XGEO.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				X.angleLimitLeft = 15f;
				X.angleLimitRight = 15f;
			}
			if (elev.transform.localPosition.y > 2.5f && elev.transform.localPosition.y < 3.5f)
			{
				XGEO.transform.localEulerAngles = new Vector3(345f, 0f, 0f);
				X.angleLimitLeft = 30f;
				X.angleLimitRight = 0f;
			}
			if (elev.transform.localPosition.y > 3.5f && elev.transform.localPosition.y < 4.5f)
			{
				XGEO.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				X.angleLimitLeft = 15f;
				X.angleLimitRight = 15f;
			}
			if (hori.transform.localPosition.y < 0.5f)
			{
				YGEO.transform.localEulerAngles = new Vector3(0f, 90f, 0f);
				Y.angleLimitLeft = 15f;
				Y.angleLimitRight = 15f;
			}
			if (hori.transform.localPosition.y > 0.5f && hori.transform.localPosition.y < 1.5f)
			{
				YGEO.transform.localEulerAngles = new Vector3(15f, 90f, 0f);
				Y.angleLimitLeft = 0f;
				Y.angleLimitRight = 30f;
			}
			if (hori.transform.localPosition.y > 1.5f && hori.transform.localPosition.y < 2.5f)
			{
				YGEO.transform.localEulerAngles = new Vector3(0f, 90f, 0f);
				Y.angleLimitLeft = 15f;
				Y.angleLimitRight = 15f;
			}
			if (hori.transform.localPosition.y > 2.5f && hori.transform.localPosition.y < 3.5f)
			{
				YGEO.transform.localEulerAngles = new Vector3(345f, 90f, 0f);
				Y.angleLimitLeft = 30f;
				Y.angleLimitRight = 0f;
			}
			if (hori.transform.localPosition.y > 3.5f && hori.transform.localPosition.y < 4.5f)
			{
				YGEO.transform.localEulerAngles = new Vector3(0f, 90f, 0f);
				Y.angleLimitLeft = 15f;
				Y.angleLimitRight = 15f;
			}
		}
	}
	public class Tripod : MonoBehaviour
	{
		public GameObject hinge;

		public GameObject trigger;

		public GameObject sliderot;

		public string gunname;

		public string gunnamebackup;

		public string gunnameold;

		public Transform slidemonut;

		public OpenBoltReceiver gun;

		private void Start()
		{
		}

		private void OnTriggerStay(Collider other)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: 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_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: 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_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
			if (hinge.transform.localEulerAngles.x > 45f)
			{
				if (!(((Object)((Component)other).gameObject).name == gunname) && !(((Object)((Component)other).gameObject).name == gunnamebackup) && !(((Object)((Component)other).gameObject).name == gunnameold))
				{
					return;
				}
				((Component)other).gameObject.transform.SetParent(slidemonut);
				((Component)other).gameObject.transform.localPosition = new Vector3(0f, 0f, 0f);
				((Component)other).gameObject.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				gun = ((Component)other).gameObject.GetComponent<OpenBoltReceiver>();
				Rigidbody component = ((Component)other).gameObject.GetComponent<Rigidbody>();
				component.isKinematic = true;
				component.useGravity = false;
				if ((Object)(object)gun != (Object)null)
				{
					if (trigger.transform.localEulerAngles.x > 45f)
					{
						gun.ReleaseSeer();
						gun.Fire();
					}
					else if (trigger.transform.localEulerAngles.x < 45f)
					{
						gun.EngageSeer();
					}
					if (gun.Chamber.IsFull)
					{
						sliderot.transform.localEulerAngles = new Vector3(90f, 0f, 0f);
					}
					else if (!gun.Chamber.IsFull)
					{
						sliderot.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
					}
				}
			}
			else if (((Object)((Component)other).gameObject).name == gunname || ((Object)((Component)other).gameObject).name == gunnamebackup || ((Object)((Component)other).gameObject).name == gunnameold)
			{
				Rigidbody component2 = ((Component)other).gameObject.GetComponent<Rigidbody>();
				component2.isKinematic = false;
				component2.useGravity = true;
				((Component)other).gameObject.transform.SetParent((Transform)null);
				gun = null;
			}
		}

		private void OnTriggerExit(Collider other)
		{
			if (((Object)((Component)other).gameObject).name == gunname || ((Object)((Component)other).gameObject).name == gunnamebackup || ((Object)((Component)other).gameObject).name == gunnameold)
			{
				Rigidbody component = ((Component)other).gameObject.GetComponent<Rigidbody>();
				component.isKinematic = false;
				component.useGravity = true;
				((Component)other).gameObject.transform.SetParent((Transform)null);
				gun = null;
			}
		}

		private void Update()
		{
			if (!((Object)(object)gun == (Object)null))
			{
			}
		}
	}
	public class barrelc : MonoBehaviour
	{
		public FVRFireArmAttachmentMount mount;

		public GameObject plate;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			if (plate.transform.localEulerAngles.y < 45f)
			{
				if (mount.HasAttachmentsOnIt())
				{
					((Component)mount.AttachmentsList[0].AttachmentInterface).gameObject.SetActive(true);
				}
			}
			else if (mount.HasAttachmentsOnIt())
			{
				((Component)mount.AttachmentsList[0].AttachmentInterface).gameObject.SetActive(false);
			}
		}
	}
	public class gunpodtrigger : MonoBehaviour
	{
		public FVRInteractiveObject obj;

		public GameObject trigger;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)obj.m_hand != (Object)null)
			{
				if (obj.m_hand.Input.TriggerPressed)
				{
					trigger.transform.localEulerAngles = new Vector3(90f, 0f, 0f);
				}
				else
				{
					trigger.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				}
			}
			else
			{
				trigger.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
			}
		}
	}
	public class barrelchange : MonoBehaviour
	{
		public OpenBoltReceiver gun;

		public FVRFireArmAttachmentMount mount;

		private void Start()
		{
		}

		private void Update()
		{
			if (mount.HasAttachmentsOnIt())
			{
				if (!(((Object)((Component)mount.AttachmentsList[0]).gameObject).name == "MG3Barrel(Clone)"))
				{
					gun.m_fireSelectorMode = 0;
				}
			}
			else
			{
				gun.m_fireSelectorMode = 0;
			}
		}
	}
	public class BarrelLatch : MonoBehaviour
	{
		public Collider boltgrab;

		public GameObject knob;

		public GameObject bolt;

		public GameObject grab;

		public GameObject barrel;

		public float speed = 0f;

		public float speed_multi = 0.001f;

		public float fore = 0.2344f;

		public float rear = 0f;

		public WaggleJoint dustcover;

		public bool islocked = true;

		public GameObject audioopen;

		public GameObject audioclose;

		public GameObject audioflipopen;

		public GameObject audioflipclose;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: 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_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: 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_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_0279: Unknown result type (might be due to invalid IL or missing references)
			//IL_027e: Unknown result type (might be due to invalid IL or missing references)
			//IL_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0321: Unknown result type (might be due to invalid IL or missing references)
			//IL_029c: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a1: 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_02bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_020f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f3: 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_01d4: 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_01f4: Unknown result type (might be due to invalid IL or missing references)
			if (barrel.transform.localPosition.z > 0.2f && bolt.transform.localPosition.z > 0.2f && dustcover.hingeGraphic.localRotation.x >= 20f)
			{
				dustcover.angleLimitLeft = 115f;
				dustcover.angleLimitRight = -115f;
				audioflipclose.SetActive(true);
				audioflipopen.SetActive(false);
			}
			if (barrel.transform.localPosition.z <= 0.2f || bolt.transform.localPosition.z <= 0.2f)
			{
				dustcover.angleLimitLeft = 100f;
				dustcover.angleLimitRight = 0f;
				audioflipclose.SetActive(false);
				audioflipopen.SetActive(true);
			}
			if (grab.transform.localEulerAngles.x < 45f && !islocked)
			{
				if (barrel.transform.localPosition.z < fore)
				{
					boltgrab.enabled = false;
					audioopen.SetActive(false);
					speed += speed_multi;
					if (speed > 1f)
					{
						speed = 1f;
					}
					barrel.transform.localPosition = Vector3.MoveTowards(barrel.transform.localPosition, new Vector3(0f, 0f, fore), speed);
				}
				if (barrel.transform.localPosition.z >= fore)
				{
					barrel.transform.localPosition = new Vector3(0f, 0f, fore);
					speed = 0f;
					audioopen.SetActive(true);
					boltgrab.enabled = true;
				}
			}
			if (grab.transform.localPosition.x > 45f && barrel.transform.localPosition.z < 0.01f && knob.transform.localEulerAngles.x < 45f)
			{
				barrel.transform.localPosition = new Vector3(0f, 0f, rear);
				islocked = true;
				audioclose.SetActive(true);
			}
			if (knob.transform.localEulerAngles.x > 45f)
			{
				islocked = false;
				audioclose.SetActive(false);
			}
		}
	}
}
namespace JerryAr.TTI_VIPER
{
	[BepInPlugin("JerryAr.TTI_VIPER", "TTI_VIPER", "1.0.1")]
	[BepInProcess("h3vr.exe")]
	[Description("Built with MeatKit")]
	[BepInDependency("h3vr.otherloader", "1.3.0")]
	public class TTI_VIPERPlugin : BaseUnityPlugin
	{
		private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

		internal static ManualLogSource Logger;

		private void Awake()
		{
			Logger = ((BaseUnityPlugin)this).Logger;
			LoadAssets();
		}

		private void LoadAssets()
		{
			Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "JerryAr.TTI_VIPER");
			OtherLoader.RegisterDirectLoad(BasePath, "JerryAr.TTI_VIPER", "", "", "ttiviper", "");
		}
	}
}
namespace JerryComponent
{
	public class ChargingHandleSwing : MonoBehaviour
	{
		public GameObject CH;

		public FVRPhysicalObject ChargingHandle;

		public Transform CHroot;

		public LineRenderer LR;

		public OpenBoltReceiverBolt bolt;

		public float z = 0f;

		public AudioEvent boltout;

		public bool sound = false;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: 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_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			LR.SetPosition(0, ((Component)ChargingHandle).gameObject.transform.position);
			LR.SetPosition(1, CHroot.position);
			if (!((Object)(object)((FVRInteractiveObject)ChargingHandle).m_hand != (Object)null))
			{
				return;
			}
			z = Vector3.Distance(CH.transform.position, CHroot.position);
			if (z < 0.5f)
			{
				((Component)bolt).transform.localPosition = new Vector3(0f, 0f, 2f - 4f * z);
			}
			if (z < 0.5f)
			{
				sound = false;
			}
			if (z > 0.6f)
			{
				if (!sound)
				{
					SM.PlayCoreSound((FVRPooledAudioType)0, boltout, ((Component)bolt).gameObject.transform.position);
					sound = true;
				}
				bolt.SetBoltToRear();
			}
		}
	}
	public class EjectionPort : MonoBehaviour
	{
		public OpenBoltReceiver gun;

		public GameObject Y;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: 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_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: 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_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			if (Y.transform.localEulerAngles.y > 0f && Y.transform.localEulerAngles.y < 45f)
			{
				gun.EjectionSpeed = new Vector3(Y.transform.localEulerAngles.y * 0.1f, 0f, 5f);
			}
			else if (Y.transform.localEulerAngles.y > 315f && Y.transform.localEulerAngles.y < 360f)
			{
				gun.EjectionSpeed = new Vector3((Y.transform.localEulerAngles.y - 360f) * 0.1f, 0f, 5f);
			}
		}
	}
	public class HMGGrip : MonoBehaviour
	{
		public GameObject HMG;

		public string GunName;

		public FVRPhysicalObject obj;

		public OpenBoltReceiver Gun;

		public WorkingRigidbodies WR;

		private void Start()
		{
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: 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_00de: Unknown result type (might be due to invalid IL or missing references)
			HMG = GameObject.Find(GunName);
			Gun = HMG.GetComponent<OpenBoltReceiver>();
			WR = HMG.GetComponent<WorkingRigidbodies>();
			if ((Object)(object)WR != (Object)null)
			{
				((Component)this).gameObject.transform.position = ((Component)WR.G).transform.position;
				((Component)this).gameObject.transform.eulerAngles = ((Component)WR.GP).transform.eulerAngles;
				ConfigurableJoint val = ((Component)this).gameObject.AddComponent<ConfigurableJoint>();
				((Joint)val).connectedBody = WR.G;
				((Joint)val).autoConfigureConnectedAnchor = false;
				((Joint)val).connectedAnchor = new Vector3(0f, 0f, 0f);
				((Joint)val).anchor = new Vector3(0f, 0f, 0f);
				val.xMotion = (ConfigurableJointMotion)0;
				val.yMotion = (ConfigurableJointMotion)0;
				val.zMotion = (ConfigurableJointMotion)0;
				val.angularXMotion = (ConfigurableJointMotion)2;
				val.angularYMotion = (ConfigurableJointMotion)2;
				val.angularZMotion = (ConfigurableJointMotion)2;
			}
		}

		private void Update()
		{
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: 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)
			if ((Object)(object)HMG == (Object)null || (Object)(object)Gun == (Object)null || (Object)(object)WR == (Object)null)
			{
				Object.Destroy((Object)(object)((Component)this).gameObject);
			}
			else
			{
				if (!((Object)(object)HMG != (Object)null) || !((Object)(object)Gun != (Object)null) || !((Object)(object)WR != (Object)null) || !((Object)(object)((FVRInteractiveObject)obj).m_hand != (Object)null))
				{
					return;
				}
				if (((FVRInteractiveObject)obj).m_hand.Input.TriggerPressed)
				{
					if (((Component)WR.TC).transform.localEulerAngles.x < 10f)
					{
						Gun.ReleaseSeer();
					}
					else if (((Component)WR.TC).transform.localEulerAngles.x > 10f)
					{
						Gun.EngageSeer();
					}
				}
				else if (!((FVRInteractiveObject)obj).m_hand.Input.TriggerPressed)
				{
					Gun.EngageSeer();
				}
			}
		}
	}
	public class OnlyOne : MonoBehaviour
	{
		private void Start()
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Expected O, but got Unknown
			int num = 0;
			Object[] array = Object.FindObjectsOfType(typeof(FVRPhysicalObject));
			for (int i = 0; i < array.Length; i++)
			{
				FVRPhysicalObject val = (FVRPhysicalObject)array[i];
				num++;
				if (((Object)((Component)val).gameObject).name == ((Object)((Component)this).gameObject).name && !((Object)(object)((Component)val).gameObject == (Object)(object)((Component)this).gameObject) && (Object)(object)((Component)val).gameObject != (Object)(object)((Component)this).gameObject)
				{
					Object.Destroy((Object)(object)((Component)this).gameObject);
				}
			}
		}

		private void Update()
		{
		}
	}
	public class SpringTopCover : MonoBehaviour
	{
		public GameObject topcover;

		public HingeJoint joint;

		public GameObject latch;

		public GameObject magwell;

		public GameObject Audioholder;

		public GameObject latchon;

		public GameObject latchoff;

		private JointSpring open;

		private JointSpring close;

		private bool TCclosed = true;

		private void Start()
		{
			open.spring = 50f;
			close.spring = 50f;
			open.damper = 1f;
			close.damper = 1f;
			open.targetPosition = 45f;
			close.targetPosition = 0f;
		}

		private void Update()
		{
			//IL_0027: 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)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: 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_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			if (TCclosed)
			{
				topcover.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				magwell.SetActive(false);
				Audioholder.SetActive(true);
			}
			else if (!TCclosed)
			{
				magwell.SetActive(true);
				Audioholder.SetActive(false);
			}
			if (latch.transform.localEulerAngles.x < 25f)
			{
				latchon.SetActive(false);
				latchoff.SetActive(true);
				joint.spring = close;
				if (topcover.transform.localEulerAngles.x < 5f)
				{
					TCclosed = true;
				}
			}
			else if (latch.transform.localEulerAngles.x > 25f)
			{
				latchon.SetActive(true);
				latchoff.SetActive(false);
				TCclosed = false;
				joint.spring = open;
			}
		}
	}
	public class WorkingRigidbodies : MonoBehaviour
	{
		public Transform GP;

		public Rigidbody G;

		public Rigidbody X;

		public Rigidbody Y;

		public Rigidbody TC;

		public Rigidbody CH;

		private void Start()
		{
		}

		private void Update()
		{
			G.isKinematic = false;
			X.isKinematic = false;
			Y.isKinematic = false;
			TC.isKinematic = false;
			CH.isKinematic = false;
		}

		private void OnDestroy()
		{
			Object.Destroy((Object)(object)((Component)G).gameObject);
			Object.Destroy((Object)(object)((Component)X).gameObject);
			Object.Destroy((Object)(object)((Component)Y).gameObject);
			Object.Destroy((Object)(object)((Component)TC).gameObject);
			Object.Destroy((Object)(object)((Component)CH).gameObject);
		}
	}
	public class magphys : MonoBehaviour
	{
		public FVRFireArmMagazine mag;

		public GameObject phys;

		public Collider col1;

		public Collider col2;

		public Collider col3;

		private void Start()
		{
		}

		private void Update()
		{
			if ((Object)(object)mag.FireArm != (Object)null)
			{
				phys.SetActive(false);
				col1.enabled = false;
				col2.enabled = false;
				col3.enabled = false;
				col1.isTrigger = true;
				col2.isTrigger = true;
				col3.isTrigger = true;
			}
			else if ((Object)(object)mag.FireArm == (Object)null)
			{
				phys.SetActive(true);
				col1.enabled = true;
				col2.enabled = true;
				col3.enabled = true;
				col1.isTrigger = false;
				col2.isTrigger = false;
				col3.isTrigger = false;
			}
		}
	}
	public class AmmoBackPack : MonoBehaviour, IFVRDamageable
	{
		public Transform beltrest;

		public Vector3 refv = Vector3.zero;

		public Transform belthold;

		public Transform beltexport;

		public LockToPoint ltp;

		public Collider col;

		public GameObject main;

		public Rigidbody joint1;

		public Rigidbody joint2;

		public Rigidbody joint3;

		public Rigidbody joint4;

		public Rigidbody joint5;

		public Rigidbody joint6;

		public Rigidbody joint7;

		public Rigidbody SJroot;

		public string beltname;

		public GameObject newprefab;

		public GameObject brokenprefab;

		public GameObject beltlock;

		public GameObject belthead;

		public GameObject beltPieceObj;

		public FVRFireArmMagazine beltPiece;

		public float _damageRequired = 10000f;

		public float _damageReceived;

		private void Start()
		{
			newprefab.SetActive(true);
			brokenprefab.SetActive(false);
			beltPieceObj = GameObject.Find(beltname);
			if ((Object)(object)beltPieceObj != (Object)null)
			{
				beltPiece = beltPieceObj.GetComponent<FVRFireArmMagazine>();
				belthead = ((Component)beltPiece.RoundEjectionPos).gameObject;
			}
		}

		public void Damage(Damage dam)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			if (!newprefab.activeInHierarchy)
			{
				return;
			}
			Vector3 val = dam.point + dam.hitNormal * Random.Range(0.002f, 0.008f);
			_damageReceived += dam.Dam_Blunt;
			if (_damageReceived >= _damageRequired)
			{
				((Behaviour)ltp).enabled = false;
				newprefab.SetActive(false);
				brokenprefab.SetActive(true);
				if ((Object)(object)beltPiece != (Object)null)
				{
					beltPiece.m_numRounds = 0;
					beltPiece.m_capacity = 0;
					belthead.SetActive(false);
				}
			}
		}

		private void Update()
		{
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Unknown result type (might be due to invalid IL or missing references)
			//IL_0231: Unknown result type (might be due to invalid IL or missing references)
			col.enabled = true;
			col.isTrigger = false;
			((Component)col).gameObject.layer = 0;
			SJroot.isKinematic = false;
			joint1.isKinematic = false;
			joint2.isKinematic = false;
			joint3.isKinematic = false;
			joint4.isKinematic = false;
			joint5.isKinematic = false;
			joint6.isKinematic = false;
			joint7.isKinematic = false;
			if ((Object)(object)beltPieceObj == (Object)null || (Object)(object)beltPiece == (Object)null || (Object)(object)belthead == (Object)null)
			{
			}
			if ((Object)(object)beltPieceObj != (Object)null && (Object)(object)beltPiece != (Object)null && (Object)(object)belthead != (Object)null)
			{
				beltlock.transform.position = belthead.transform.position;
				beltlock.transform.eulerAngles = belthead.transform.eulerAngles;
				if ((Object)(object)beltPieceObj.GetComponent<Rigidbody>() != (Object)null)
				{
					beltPieceObj.GetComponent<Rigidbody>().useGravity = false;
				}
				else if (!((Object)(object)beltPieceObj.GetComponent<Rigidbody>() == (Object)null))
				{
				}
				if ((Object)(object)beltPiece.FireArm != (Object)null && Vector3.Distance(((Component)beltPiece.FireArm).transform.position, ((Component)beltexport).transform.position) > 1.5f)
				{
					beltPiece.FireArm.EjectMag(false);
				}
				if ((Object)(object)((FVRInteractiveObject)beltPiece).m_hand == (Object)null && (Object)(object)beltPiece.FireArm == (Object)null)
				{
					beltPieceObj.transform.position = belthold.position;
					beltPieceObj.transform.eulerAngles = belthold.eulerAngles;
				}
			}
			if ((Object)(object)main == (Object)null)
			{
				Object.Destroy((Object)(object)((Component)SJroot).gameObject);
				Object.Destroy((Object)(object)((Component)joint1).gameObject);
				Object.Destroy((Object)(object)((Component)joint2).gameObject);
				Object.Destroy((Object)(object)((Component)joint3).gameObject);
				Object.Destroy((Object)(object)((Component)joint4).gameObject);
				Object.Destroy((Object)(object)((Component)joint5).gameObject);
				Object.Destroy((Object)(object)((Component)joint6).gameObject);
				Object.Destroy((Object)(object)((Component)joint7).gameObject);
				if ((Object)(object)beltPieceObj != (Object)null && (Object)(object)beltPiece != (Object)null)
				{
					beltPiece.m_numRounds = 0;
					beltPiece.m_capacity = 0;
					belthead.SetActive(false);
				}
				Object.Destroy((Object)(object)((Component)this).gameObject);
			}
		}
	}
	public class AutoGrabMagWell : MonoBehaviour
	{
		public GameObject rot;

		public FVRFireArm gun;

		public MagFold fold;

		private void Awake()
		{
		}

		private void Start()
		{
		}

		private void Update()
		{
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: 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_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)gun.Magazine))
			{
				if (gun.Magazine.IsBeltBox && GM.CurrentMovementManager.Hands[1].Input.IsGrabbing && rot.transform.localEulerAngles.y < 45f)
				{
					if ((Object)(object)GM.CurrentMovementManager.Hands[1].CurrentInteractable == (Object)null)
					{
						GM.CurrentMovementManager.Hands[1].ForceSetInteractable((FVRInteractiveObject)(object)fold);
						((FVRInteractiveObject)fold).BeginInteraction(GM.CurrentMovementManager.Hands[1]);
					}
				}
				else if (gun.Magazine.IsBeltBox && !GM.CurrentMovementManager.Hands[1].Input.IsGrabbing && rot.transform.localEulerAngles.y < 45f)
				{
					gun.EjectMag(false);
				}
				else if (gun.Magazine.IsBeltBox && rot.transform.localEulerAngles.y != 45f)
				{
				}
			}
			else if (Object.op_Implicit((Object)(object)gun.Magazine))
			{
			}
		}
	}
	public class BeltAppear : MonoBehaviour
	{
		public FVRFireArmTopCover cover;

		public FVRFoldingStockXAxis lifter;

		public BoxCollider col;

		public OpenBoltReceiver gun;

		public FVRObject[] beltempt;

		public Transform beltpos;

		public GameObject follower;

		public int followerX = 0;

		public int beltL = 20;

		public float a = 45f;

		private void Start()
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			follower.transform.localPosition = new Vector3(0f, 0f, 0f);
			followerX = 0;
		}

		private void OnPKMShotFired(FVRFireArm fireArm)
		{
			if ((Object)(object)fireArm == (Object)(object)gun)
			{
				followerX++;
				if (followerX >= beltL)
				{
					Object.Instantiate<GameObject>(((AnvilAsset)beltempt[beltL]).GetGameObject(), beltpos);
					followerX = 0;
				}
			}
		}

		private void Awake()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			GM.CurrentSceneSettings.ShotFiredEvent += new ShotFired(OnPKMShotFired);
		}

		private void Update()
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: 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_00f7: 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)
			//IL_016b: 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)
			//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0235: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			//IL_021f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			follower.transform.localPosition = new Vector3((float)followerX, 0f, 0f);
			if (!((FVRFireArm)gun).HasBelt && ((Component)cover).transform.localEulerAngles.x >= 45f)
			{
				((Collider)col).enabled = true;
				if ((Object)(object)((FVRFireArm)gun).Magazine != (Object)null && !((FVRFireArm)gun).Magazine.IsBeltBox)
				{
					((Collider)col).enabled = false;
				}
			}
			else if (((FVRFireArm)gun).HasBelt || ((Component)cover).transform.localEulerAngles.x < 45f)
			{
				((Collider)col).enabled = false;
			}
			if (((Component)lifter).transform.localEulerAngles.x <= 22.5f && followerX != 0)
			{
				Object.Instantiate<GameObject>(((AnvilAsset)beltempt[followerX]).GetGameObject(), beltpos);
				followerX = 0;
			}
			lifter.rotAngle = ((Component)lifter).transform.localEulerAngles.x;
			if (((Component)lifter).transform.localEulerAngles.x < 45f && (Object)(object)((FVRInteractiveObject)lifter).m_hand == (Object)null)
			{
				((Component)lifter).transform.localEulerAngles = new Vector3(((Component)lifter).transform.localEulerAngles.x + 500f * Time.deltaTime, 0f, 0f);
			}
			if (((Component)lifter).transform.localEulerAngles.x > 45f)
			{
				((Component)lifter).transform.localEulerAngles = new Vector3(45f, 0f, 0f);
			}
			if (((Component)lifter).transform.localEulerAngles.x < 0f)
			{
				((Component)lifter).transform.localEulerAngles = new Vector3(0f, 0f, 0f);
			}
		}

		private void OnDestroy()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			GM.CurrentSceneSettings.ShotFiredEvent -= new ShotFired(OnPKMShotFired);
		}
	}
	public class BeltAppear2 : MonoBehaviour
	{
		public FVRFireArmTopCover cover;

		public FVRFoldingStockXAxis lifter;

		public BoxCollider col;

		public OpenBoltReceiver gun;

		public float a = 45f;

		private void Start()
		{
		}

		private void Awake()
		{
		}

		private void Update()
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: 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_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: 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)
			if (!((FVRFireArm)gun).HasBelt && ((Component)cover).transform.localEulerAngles.x >= 45f)
			{
				((Collider)col).enabled = true;
			}
			if (((FVRFireArm)gun).HasBelt || ((Component)cover).transform.localEulerAngles.x < 45f)
			{
				((Collider)col).enabled = false;
			}
			if (((Component)lifter).transform.localEulerAngles.x < 45f)
			{
				a = ((Component)lifter).transform.localEulerAngles.x;
				((Component)lifter).transform.localEulerAngles = new Vector3(a + 5f, 0f, 0f);
			}
			if (((Component)lifter).transform.localEulerAngles.x == 45f)
			{
				a = 45f;
			}
			if (((Component)lifter).transform.localEulerAngles.x > 45f)
			{
				((Component)lifter).transform.localEulerAngles = new Vector3(45f, 0f, 0f);
			}
		}
	}
	public class BeltChange : MonoBehaviour
	{
		public OpenBoltReceiver gun2;

		public FVRFirearmBeltDisplayData data1;

		public FVRFirearmBeltDisplayData data2;

		public GameObject rot;

		public Transform _Magpos;

		public Transform _Boxpos;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: 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)
			if (rot.transform.localEulerAngles.x < 45f)
			{
				((FVRFireArm)gun2).BeltDD = data1;
			}
			if (rot.transform.localEulerAngles.x >= 45f)
			{
				((FVRFireArm)gun2).BeltDD = data2;
			}
			((FVRFireArm)gun2).BeltBoxMountPos = _Boxpos;
			((FVRFireArm)gun2).MagazineMountPos = _Magpos;
		}
	}
	public class BeltGrab : MonoBehaviour
	{
		public FVRFireArm gun;

		public GameObject grabpos;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: 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)
			if ((Object)(object)gun.Magazine != (Object)null && gun.Magazine.IsBeltBox)
			{
				if ((Object)(object)((FVRInteractiveObject)gun.Magazine.BeltGrabTrigger).m_hand != (Object)null)
				{
					((Component)((FVRInteractiveObject)gun.Magazine.BeltGrabTrigger).PoseOverride).transform.position = grabpos.transform.position;
					((Component)((FVRInteractiveObject)gun.Magazine.BeltGrabTrigger).PoseOverride_Touch).transform.position = grabpos.transform.position;
				}
				else
				{
					((Component)((FVRInteractiveObject)gun.Magazine.BeltGrabTrigger).PoseOverride).transform.localPosition = new Vector3(0f, 0f, 0f);
					((Component)((FVRInteractiveObject)gun.Magazine.BeltGrabTrigger).PoseOverride_Touch).transform.localPosition = new Vector3(0f, 0f, 0f);
				}
			}
		}
	}
	public class Control_Enable : MonoBehaviour
	{
		public GameObject objToRead;

		public GameObject objToAffect;

		private void Start()
		{
		}

		private void Update()
		{
			if (objToRead.activeInHierarchy)
			{
				objToAffect.SetActive(true);
			}
			else
			{
				objToAffect.SetActive(false);
			}
		}
	}
	public class Control_Enable_Rev : MonoBehaviour
	{
		public GameObject objToRead;

		public GameObject objToAffect;

		private void Start()
		{
		}

		private void Update()
		{
			if (objToRead.activeInHierarchy)
			{
				objToAffect.SetActive(false);
			}
			else
			{
				objToAffect.SetActive(true);
			}
		}
	}
	public class DoveTail : MonoBehaviour
	{
		public GameObject topcoverRot;

		public Collider topCover;

		public GameObject dovetail;

		public WaggleJoint wag;

		public GameObject switchToRelease;

		public GameObject barrel;

		public GameObject grip;

		public GameObject stock;

		public GameObject lockpiece;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_0049: 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_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: 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_01f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			if (barrel.activeInHierarchy && grip.activeInHierarchy && stock.activeInHierarchy)
			{
				dovetail.SetActive(true);
				if (switchToRelease.transform.localEulerAngles.x > 45f)
				{
					topCover.enabled = true;
					if (topcoverRot.transform.localEulerAngles.x < 2f)
					{
						wag.angleLimitLeft = 32f;
						wag.angleLimitRight = 0f;
					}
					else if (topcoverRot.transform.localEulerAngles.x > 2f)
					{
						wag.angleLimitLeft = 10f;
						wag.angleLimitRight = 0f;
					}
				}
				else
				{
					if (!(switchToRelease.transform.localEulerAngles.x < 45f))
					{
						return;
					}
					topCover.enabled = false;
					if (topcoverRot.transform.localEulerAngles.x < 2f)
					{
						if (lockpiece.transform.localEulerAngles.x > 45f)
						{
							wag.angleLimitLeft = 32f;
							wag.angleLimitRight = 0f;
						}
						else if (lockpiece.transform.localEulerAngles.x < 45f)
						{
							wag.angleLimitLeft = 32f;
							wag.angleLimitRight = -32f;
						}
					}
					else if (topcoverRot.transform.localEulerAngles.x > 2f)
					{
						wag.angleLimitLeft = 10f;
						wag.angleLimitRight = 0f;
					}
				}
			}
			else
			{
				wag.angleLimitLeft = 32f;
				wag.angleLimitRight = -32f;
				dovetail.SetActive(false);
				topCover.enabled = true;
			}
		}
	}
	public class MagFold : FVRInteractiveObject
	{
		public enum StockPos
		{
			Closed,
			Mid,
			Open
		}

		public Transform Root;

		public Transform Stock;

		public float rotAngle;

		public float MinRot;

		public float MaxRot;

		public StockPos m_curPos;

		public StockPos m_lastPos;

		public bool isMinClosed = true;

		public FVRFireArm FireArm;

		public override void UpdateInteraction(FVRViveHand hand)
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: 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_002b: 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_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: 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_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: 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_006c: 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_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_018d: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: 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_01c1: Invalid comparison between Unknown and I4
			//IL_0173: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cd: Invalid comparison between Unknown and I4
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			//IL_0217: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
			((FVRInteractiveObject)this).UpdateInteraction(hand);
			Vector3 val = ((HandInput)(ref hand.Input)).Pos - Root.position;
			Vector3 val2 = Vector3.ProjectOnPlane(val, Root.up);
			val = ((Vector3)(ref val2)).normalized;
			Vector3 val3 = -((Component)Root).transform.forward;
			rotAngle = Mathf.Atan2(Vector3.Dot(Root.up, Vector3.Cross(val3, val)), Vector3.Dot(val3, val)) * 57.29578f;
			if (Mathf.Abs(rotAngle - MinRot) < 5f)
			{
				rotAngle = MinRot;
			}
			if (Mathf.Abs(rotAngle - MaxRot) < 5f)
			{
				rotAngle = MaxRot;
			}
			if (!(rotAngle >= MinRot) || !(rotAngle <= MaxRot))
			{
				return;
			}
			Stock.localEulerAngles = new Vector3(0f, rotAngle, 0f);
			float num = Mathf.InverseLerp(MinRot, MaxRot, rotAngle);
			if (isMinClosed)
			{
				if (num < 0.02f)
				{
					m_curPos = (StockPos)0;
				}
				else if (num > 0.9f)
				{
					m_curPos = (StockPos)2;
				}
				else
				{
					m_curPos = (StockPos)1;
				}
			}
			else if (num < 0.1f)
			{
				m_curPos = (StockPos)2;
			}
			else if (num > 0.98f)
			{
				m_curPos = (StockPos)0;
			}
			else
			{
				m_curPos = (StockPos)1;
			}
			if ((int)m_curPos == 2 && (int)m_lastPos != 2)
			{
				FireArm.PlayAudioEvent((FirearmAudioEventType)30, 1f);
			}
			if ((int)m_curPos == 0 && (int)m_lastPos != 0)
			{
				FireArm.PlayAudioEvent((FirearmAudioEventType)31, 1f);
			}
			m_lastPos = m_curPos;
		}
	}
	public class MagMani : MonoBehaviour
	{
		public OpenBoltReceiver gun;

		public GameObject magmount;

		public GameObject well;

		public Collider col;

		public Collider col2;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: 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_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: 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_00c9: 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)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)((FVRFireArm)gun).Magazine))
			{
				if ((float)((FVRFireArm)gun).Magazine.m_numRounds == 0f)
				{
					col.enabled = true;
					if (magmount.transform.localEulerAngles.z < 5f)
					{
						((FVRFireArm)gun).EjectMag(true);
					}
					else if (!(magmount.transform.localEulerAngles.z >= 5f))
					{
					}
				}
				else if ((float)((FVRFireArm)gun).Magazine.m_numRounds > 0f && magmount.transform.localEulerAngles.z == 45f)
				{
					col.enabled = false;
				}
			}
			else if (!Object.op_Implicit((Object)(object)((FVRFireArm)gun).Magazine) && magmount.transform.localEulerAngles.z < 5f)
			{
				well.transform.localEulerAngles = new Vector3(0f, 0f, 20f);
				((Component)this).transform.localEulerAngles = new Vector3(0f, 0f, 0f);
			}
			else if (Object.op_Implicit((Object)(object)((FVRFireArm)gun).Magazine) && magmount.transform.localEulerAngles.z < 5f)
			{
				well.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
			}
			if (Object.op_Implicit((Object)(object)((FVRFireArm)gun).Magazine))
			{
				col2.enabled = false;
			}
			if (!Object.op_Implicit((Object)(object)((FVRFireArm)gun).Magazine))
			{
				col2.enabled = true;
			}
		}
	}
}
public class MagPosChange : MonoBehaviour
{
	private void Start()
	{
	}

	pri