Decompiled source of EFTLootBoxes v1.1.7

EFTLootBoxes.dll

Decompiled 3 weeks ago
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using Atlas;
using Atlas.MappingComponents.Sandbox;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Logging;
using EFT_Frame;
using FistVR;
using H3MP;
using H3MP.Networking;
using HarmonyLib;
using NGA;
using OtherLoader;
using UnityEngine;
using UnityEngine.SceneManagement;
using Valve.VR;

[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 AlphaCase : MonoBehaviour
	{
		public GameObject BoxPos;

		public GameObject box;

		public Collider colgrab;

		public Collider colgrabalt;

		public FVRPhysicalObject mainobj;

		public GameObject lock1;

		public GameObject lock2;

		public GameObject savevalue;

		public GameObject WaX;

		public GameObject WaY;

		public GameObject WaZ;

		public WaggleJoint X;

		public WaggleJoint Y;

		public WaggleJoint Z;

		public PlayerCrouch PC;

		public GameObject rot;

		public GameObject phymain;

		public GameObject phylid;

		public FVRInteractiveObject althold;

		private void Awake()
		{
		}

		private void Update()
		{
			//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: 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_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c7: 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_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_041a: Unknown result type (might be due to invalid IL or missing references)
			//IL_041f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0274: Unknown result type (might be due to invalid IL or missing references)
			//IL_0298: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_0213: Unknown result type (might be due to invalid IL or missing references)
			Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject);
			if ((Object)(object)GM.CurrentPlayerBody != (Object)null)
			{
				if ((Object)(object)((FVRInteractiveObject)mainobj).m_hand == (Object)null && (Object)(object)althold.m_hand == (Object)null)
				{
					BoxPos.transform.localPosition = new Vector3(0f, 0f, 0f);
					BoxPos.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
					phymain.SetActive(false);
					phylid.SetActive(false);
					((Component)this).gameObject.transform.position = ((Component)GM.CurrentPlayerBody.Head).transform.position;
					((Component)this).gameObject.transform.eulerAngles = ((Component)GM.CurrentPlayerBody.Head).transform.eulerAngles;
					((Behaviour)X).enabled = true;
					((Behaviour)Y).enabled = true;
					((Behaviour)Z).enabled = true;
					((Behaviour)PC).enabled = true;
				}
				else if ((Object)(object)((FVRInteractiveObject)mainobj).m_hand != (Object)null || (Object)(object)althold.m_hand != (Object)null)
				{
					if ((Object)(object)((FVRInteractiveObject)mainobj).m_hand != (Object)null)
					{
						BoxPos.transform.position = ((Component)((FVRInteractiveObject)mainobj).m_hand).transform.position;
						BoxPos.transform.eulerAngles = ((Component)((FVRInteractiveObject)mainobj).m_hand).transform.eulerAngles;
					}
					else if ((Object)(object)althold.m_hand != (Object)null)
					{
						BoxPos.transform.position = ((Component)althold.m_hand).transform.position;
						BoxPos.transform.eulerAngles = ((Component)althold.m_hand).transform.eulerAngles;
					}
					phymain.SetActive(true);
					phylid.SetActive(true);
					((Behaviour)X).enabled = false;
					((Behaviour)Y).enabled = false;
					((Behaviour)Z).enabled = false;
					WaX.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
					WaY.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
					WaZ.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
					((Behaviour)PC).enabled = false;
					rot.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
				}
			}
			Scene activeScene = SceneManager.GetActiveScene();
			if (((Scene)(ref activeScene)).name == "MainMenu3" || GM.IsDead())
			{
				box.SetActive(false);
				colgrab.enabled = false;
				colgrabalt.enabled = false;
			}
			else
			{
				Scene activeScene2 = SceneManager.GetActiveScene();
				if (((Scene)(ref activeScene2)).name != "MainMenu3" && !GM.IsDead())
				{
					box.SetActive(true);
					colgrab.enabled = true;
					colgrabalt.enabled = true;
				}
			}
			if (lock1.transform.localEulerAngles.x > 15f && lock2.transform.localEulerAngles.x > 15f)
			{
				savevalue.SetActive(true);
			}
			else if (lock1.transform.localEulerAngles.x < 15f || lock2.transform.localEulerAngles.x < 15f)
			{
				savevalue.SetActive(false);
			}
		}
	}
	public class PlayerCrouch : MonoBehaviour
	{
		public GameObject crouch;

		[SerializeField]
		private Transform body;

		public Ray ray;

		public float rayLength;

		[SerializeField]
		private LayerMask terrainLayer;

		public float rayStartYOffset = 0f;

		public float rayMul;

		public float dis;

		public RaycastHit rayhit;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: 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_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: 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_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: 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_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: 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)
			ray = new Ray(body.position + Vector3.up * rayStartYOffset, Vector3.down);
			Physics.Raycast(ray, ref rayhit, rayLength, ((LayerMask)(ref terrainLayer)).value);
			if (((RaycastHit)(ref rayhit)).distance > 0.6f)
			{
				dis = 0.6f * rayMul;
				crouch.transform.localEulerAngles = new Vector3(dis, 0f, 0f);
			}
			else
			{
				dis = ((RaycastHit)(ref rayhit)).distance * rayMul;
				crouch.transform.localEulerAngles = new Vector3(dis, 0f, 0f);
			}
			if (crouch.transform.localEulerAngles.x > 60f)
			{
				crouch.transform.localEulerAngles = new Vector3(60f, 0f, 0f);
			}
			else if (crouch.transform.localEulerAngles.x < 0f)
			{
				crouch.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
			}
		}
	}
	public class VolumeSlot : MonoBehaviour
	{
		public Transform parent;

		private void OnTriggerStay(Collider other)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: 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)
			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) || !((Object)(object)((Component)component).gameObject.GetComponent<FVRFireArm>() == (Object)null) || !((Object)(object)((Component)component).gameObject.GetComponent<FVRFireArmMagazine>() == (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(((Component)parent).transform);
					component2.useGravity = false;
					component2.isKinematic = true;
				}
			}
		}

		private void OnTriggerExit(Collider other)
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: 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)
			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 && (Object)(object)((Component)component).gameObject.GetComponent<FVRFireArm>() == (Object)null && (Object)(object)((Component)component).gameObject.GetComponent<FVRFireArmMagazine>() == (Object)null)
			{
				Rigidbody component2 = gameObject.GetComponent<Rigidbody>();
				if ((Object)(object)component2 != (Object)null)
				{
					Scene activeScene = SceneManager.GetActiveScene();
					gameObject.transform.SetParent((Transform)null);
					SceneManager.MoveGameObjectToScene(gameObject, activeScene);
					component2.useGravity = true;
					component2.isKinematic = false;
				}
			}
		}
	}
	public class Beacon : MonoBehaviour
	{
		private void Start()
		{
		}

		private void Update()
		{
		}
	}
	public class DeathActivate : MonoBehaviour
	{
		public float countdown = 2f;

		public bool isNGAInstalled;

		public float timer = 1f;

		public bool loadouted = false;

		private void Start()
		{
			isNGAInstalled = Chainloader.PluginInfos.ContainsKey("NGA.SafehouseMP");
		}

		private void EnterWithLoadOut()
		{
			//IL_0048: 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_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			//IL_009e: 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_00d1: Expected O, but got Unknown
			if (countdown >= 0f)
			{
				countdown -= Time.deltaTime;
			}
			if (!loadouted && countdown < 0f)
			{
				loadouted = true;
				Transform transform = new GameObject().transform;
				transform.position = ((Component)GM.CurrentPlayerBody).transform.position;
				VaultFile val = new VaultFile();
				if (!VaultSystem.LoadVaultFile(SafehouseMP.raid_extracted_loadout_filename, (VaultFileDisplayMode)1, ref val))
				{
					Debug.Log((object)"ERROR: Loading saved loadout failed.");
					return;
				}
				string text = default(string);
				if (!VaultSystem.SpawnObjects((VaultFileDisplayMode)1, val, ref text, transform, Vector3.zero))
				{
					Debug.Log((object)"ERROR: Spawning saved loadout failed.");
					return;
				}
				VaultFile val2 = new VaultFile();
				VaultSystem.SaveVaultFile(SafehouseMP.raid_extracted_loadout_filename, (VaultFileDisplayMode)1, val2);
			}
		}

		private void FixedUpdate()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			if (!isNGAInstalled)
			{
				return;
			}
			Scene activeScene = SceneManager.GetActiveScene();
			if (!(((Scene)(ref activeScene)).name == "FactoryExt"))
			{
				return;
			}
			timer -= Time.deltaTime;
			if (timer <= 0f)
			{
				timer = 0f;
				if (Vector3.Distance(((Component)this).transform.position, GM.CurrentMovementManager.Head.position) < 0.25f)
				{
					EnterWithLoadOut();
				}
			}
		}
	}
	public class DeathBody : MonoBehaviour
	{
		public GameObject deathswitch;

		public GameObject body;

		public Transform spawnpoint;

		public GameObject player;

		public bool dead = false;

		private DropItems deadbody;

		public FVRQuickBeltSlot headslotalive;

		public FVRQuickBeltSlot bodyslotalive;

		public FVRQuickBeltSlot maskslotalive;

		public FVRQuickBeltSlot armorslotalive;

		public FVRQuickBeltSlot beltslotalive;

		private FVRPhysicalObject helmet;

		private FVRPhysicalObject vest;

		private FVRPhysicalObject mask;

		private FVRPhysicalObject armor;

		private FVRPhysicalObject belt;

		public MeshRenderer armband;

		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_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_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_022d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0252: Unknown result type (might be due to invalid IL or missing references)
			//IL_0610: Unknown result type (might be due to invalid IL or missing references)
			//IL_0620: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: Unknown result type (might be due to invalid IL or missing references)
			//IL_02af: Unknown result type (might be due to invalid IL or missing references)
			if (deathswitch.transform.localEulerAngles.x < 45f)
			{
			}
			if (!(deathswitch.transform.localEulerAngles.x > 45f))
			{
				return;
			}
			if ((Object)(object)deadbody == (Object)null || !dead || (Object)(object)helmet == (Object)null || (Object)(object)vest == (Object)null || (Object)(object)mask == (Object)null || (Object)(object)armor == (Object)null || (Object)(object)belt == (Object)null)
			{
			}
			if ((Object)(object)deadbody != (Object)null && dead)
			{
				deadbody.dc.isdead = true;
				if ((Object)(object)helmet != (Object)null)
				{
					((Component)helmet).gameObject.transform.position = deadbody.headslot.position;
					((Component)helmet).gameObject.transform.eulerAngles = deadbody.headslot.eulerAngles;
				}
				if ((Object)(object)vest != (Object)null)
				{
					((Component)vest).gameObject.transform.position = deadbody.bodyslot.position;
					((Component)vest).gameObject.transform.eulerAngles = deadbody.bodyslot.eulerAngles;
				}
				if ((Object)(object)mask != (Object)null)
				{
					((Component)mask).gameObject.transform.position = deadbody.maskslot.position;
					((Component)mask).gameObject.transform.eulerAngles = deadbody.maskslot.eulerAngles;
				}
				if ((Object)(object)armor != (Object)null)
				{
					((Component)armor).gameObject.transform.position = deadbody.armorslot.position;
					((Component)armor).gameObject.transform.eulerAngles = deadbody.armorslot.eulerAngles;
				}
				if ((Object)(object)belt != (Object)null)
				{
					((Component)belt).gameObject.transform.position = deadbody.beltslot.position;
					((Component)belt).gameObject.transform.eulerAngles = deadbody.beltslot.eulerAngles;
				}
				if ((Object)(object)headslotalive.CurObject != (Object)null)
				{
					helmet = headslotalive.CurObject;
					headslotalive.CurObject.ClearQuickbeltState();
				}
				if ((Object)(object)maskslotalive.CurObject != (Object)null)
				{
					mask = maskslotalive.CurObject;
					maskslotalive.CurObject.ClearQuickbeltState();
				}
				if ((Object)(object)bodyslotalive.CurObject != (Object)null)
				{
					vest = bodyslotalive.CurObject;
					bodyslotalive.CurObject.ClearQuickbeltState();
				}
				if ((Object)(object)armorslotalive.CurObject != (Object)null)
				{
					armor = armorslotalive.CurObject;
					armorslotalive.CurObject.ClearQuickbeltState();
				}
				if ((Object)(object)beltslotalive.CurObject != (Object)null)
				{
					belt = beltslotalive.CurObject;
					beltslotalive.CurObject.ClearQuickbeltState();
				}
			}
			if (GM.IsDead())
			{
				for (int num = GM.CurrentPlayerBody.QuickbeltSlots.Count - 1; num >= 0; num--)
				{
					if ((Object)(object)GM.CurrentPlayerBody.QuickbeltSlots[num] != (Object)null && (Object)(object)GM.CurrentPlayerBody.QuickbeltSlots[num].CurObject != (Object)null)
					{
						FVRPhysicalObject curObject = GM.CurrentPlayerBody.QuickbeltSlots[num].CurObject;
						curObject.ClearQuickbeltState();
						curObject.DeRegisterQuickbeltSlots();
						curObject.SetIsKinematicLocked(false);
						curObject.SetQuickBeltSlot((FVRQuickBeltSlot)null);
						curObject.SetParentage((Transform)null);
						((FVRInteractiveObject)curObject).SetAllCollidersToLayer(false, "Default");
						((FVRInteractiveObject)curObject).BeginInteraction(GM.CurrentMovementManager.Hands[0]);
						((FVRInteractiveObject)curObject).EndInteraction(GM.CurrentMovementManager.Hands[0]);
						GM.CurrentPlayerBody.QuickbeltSlots[num].CurObject = null;
					}
				}
				if ((Object)(object)GM.CurrentMovementManager.Hands[0].CurrentInteractable != (Object)null)
				{
					GM.CurrentMovementManager.Hands[0].CurrentInteractable.IsHeld = false;
					GM.CurrentMovementManager.Hands[0].CurrentInteractable.EndInteraction(GM.CurrentMovementManager.Hands[0]);
					GM.CurrentMovementManager.Hands[0].EndInteractionIfHeld(GM.CurrentMovementManager.Hands[0].CurrentInteractable);
				}
				if ((Object)(object)GM.CurrentMovementManager.Hands[1].CurrentInteractable != (Object)null)
				{
					GM.CurrentMovementManager.Hands[1].CurrentInteractable.IsHeld = false;
					GM.CurrentMovementManager.Hands[1].CurrentInteractable.EndInteraction(GM.CurrentMovementManager.Hands[1]);
					GM.CurrentMovementManager.Hands[1].EndInteractionIfHeld(GM.CurrentMovementManager.Hands[1].CurrentInteractable);
				}
				DropQuickbeltContents();
				((Renderer)armband).enabled = false;
				player.SetActive(false);
				if (!dead)
				{
					int quickbeltPreset = GM.Options.QuickbeltOptions.QuickbeltPreset;
					GM.CurrentPlayerBody.ConfigureQuickbelt(quickbeltPreset + 1);
					deadbody = Object.Instantiate<GameObject>(body, ((Component)spawnpoint).transform.position, ((Component)spawnpoint).transform.rotation).GetComponent<DropItems>();
					dead = true;
				}
			}
			if (!GM.IsDead())
			{
				if ((Object)(object)deadbody != (Object)null)
				{
					deadbody.dc.cam.SetActive(false);
					deadbody.dc.isdead = false;
				}
				if (dead)
				{
					int quickbeltPreset2 = GM.Options.QuickbeltOptions.QuickbeltPreset;
					GM.CurrentPlayerBody.ConfigureQuickbelt(quickbeltPreset2);
				}
				if ((Object)(object)helmet != (Object)null)
				{
					((Component)helmet).transform.SetParent((Transform)null);
				}
				if ((Object)(object)vest != (Object)null)
				{
					((Component)vest).transform.SetParent((Transform)null);
				}
				if ((Object)(object)mask != (Object)null)
				{
					((Component)mask).transform.SetParent((Transform)null);
				}
				if ((Object)(object)armor != (Object)null)
				{
					((Component)armor).transform.SetParent((Transform)null);
				}
				if ((Object)(object)belt != (Object)null)
				{
					((Component)belt).transform.SetParent((Transform)null);
				}
				helmet = null;
				vest = null;
				mask = null;
				armor = null;
				belt = null;
				((Renderer)armband).enabled = true;
				player.SetActive(true);
				dead = false;
			}
		}

		public void DropQuickbeltContents()
		{
		}
	}
	public class DeathCamera : MonoBehaviour
	{
		public bool spawned = true;

		public bool isdead = true;

		public GameObject cam;

		public GameObject cam2;

		public GameObject camholderpos;

		public GameObject camholderrot;

		private void Start()
		{
			cam.SetActive(false);
			spawned = true;
		}

		private void Update()
		{
			//IL_002e: 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_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: 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_00a6: Unknown result type (might be due to invalid IL or missing references)
			if (isdead)
			{
				cam.SetActive(true);
				((Component)GM.CurrentMovementManager).transform.eulerAngles = cam2.transform.eulerAngles;
				camholderpos.transform.localPosition = -((Component)GM.CurrentPlayerBody.Head).gameObject.transform.localPosition;
				spawned = false;
			}
			if (!isdead)
			{
				cam.SetActive(false);
				if (!spawned)
				{
					((Component)GM.CurrentMovementManager).transform.position = GM.CurrentSceneSettings.DeathResetPoint.position;
					spawned = true;
				}
				((Component)GM.CurrentMovementManager).transform.eulerAngles = new Vector3(0f, ((Component)GM.CurrentMovementManager).transform.eulerAngles.y, 0f);
			}
		}

		private void OnDestroy()
		{
			cam.SetActive(false);
		}
	}
	public class DestroyOnAudioStop : MonoBehaviour
	{
		public GameObject thisobj;

		public AudioSource thisaudio;

		private void Start()
		{
			Object.DontDestroyOnLoad((Object)(object)thisobj);
		}

		private void Update()
		{
			if (!thisaudio.isPlaying)
			{
				Object.Destroy((Object)(object)thisobj);
			}
		}
	}
	public class DropItems : MonoBehaviour
	{
		public DeathCamera dc;

		public Rigidbody head;

		public Rigidbody pelvis;

		public Rigidbody spine;

		public Rigidbody thighL;

		public Rigidbody thighR;

		public Rigidbody calfL;

		public Rigidbody calfR;

		public Rigidbody upperarmL;

		public Rigidbody upperarmR;

		public Rigidbody forearmL;

		public Rigidbody forearmR;

		public Transform headslot;

		public Transform bodyslot;

		public Transform maskslot;

		public Transform armorslot;

		public Transform beltslot;

		private void Start()
		{
		}

		private void Update()
		{
			head.isKinematic = false;
			pelvis.isKinematic = false;
			spine.isKinematic = false;
			thighL.isKinematic = false;
			thighR.isKinematic = false;
			calfL.isKinematic = false;
			calfR.isKinematic = false;
			upperarmL.isKinematic = false;
			upperarmR.isKinematic = false;
			forearmL.isKinematic = false;
			forearmR.isKinematic = false;
		}
	}
	public class AmmoSpawnPoint : MonoBehaviour
	{
		public bool dumped = false;

		public Transform Cartpos;

		public GameObject Cartobj;

		public GameObject Lid;

		public bool Cartspawned;

		public FVRFireArmRound CartPhys;

		public GameObject X;

		public GameObject Z;

		public bool Cartlock = true;

		public string CartIDs;

		public GameObject downward;

		public Vector3 up;

		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_0081: 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_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_011e: 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_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0205: 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_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0265: Unknown result type (might be due to invalid IL or missing references)
			if (Lid.transform.localEulerAngles.x <= 10f)
			{
				if (!dumped && Cartspawned && (Object)(object)Cartobj != (Object)null && (Object)(object)CartPhys != (Object)null)
				{
					Object.Destroy((Object)(object)Cartobj);
					Cartspawned = false;
				}
			}
			else
			{
				if (!(Lid.transform.localEulerAngles.x > 10f))
				{
					return;
				}
				if ((Object)(object)Cartobj == (Object)null || (Object)(object)CartPhys == (Object)null)
				{
				}
				if (!Cartspawned)
				{
					if (IM.OD.ContainsKey(CartIDs))
					{
						AnvilCallback<GameObject> gameObjectAsync = ((AnvilAsset)IM.OD[CartIDs]).GetGameObjectAsync();
						if (Object.op_Implicit((Object)(object)gameObjectAsync.Result))
						{
							Cartobj = Object.Instantiate<GameObject>(gameObjectAsync.Result, ((Component)Cartpos).transform.position, ((Component)Cartpos).transform.rotation);
						}
					}
					Cartspawned = true;
				}
				if (Cartspawned && (Object)(object)CartPhys != (Object)null)
				{
					if (Vector3.Distance(Cartobj.transform.position, ((Component)Cartpos).transform.position) > 0.025f || (Object)(object)((FVRInteractiveObject)CartPhys).m_hand != (Object)null || Vector3.Angle(downward.transform.up, Vector3.up) > 135f)
					{
						CartPhys = null;
						Cartobj = null;
						dumped = true;
					}
					else if (Vector3.Distance(Cartobj.transform.position, ((Component)Cartpos).transform.position) <= 0.025f && (Object)(object)((FVRInteractiveObject)CartPhys).m_hand == (Object)null && Vector3.Angle(downward.transform.up, Vector3.up) < 135f)
					{
						Cartobj.transform.position = Cartpos.localPosition;
					}
				}
			}
		}
	}
	public class EFT_AmmoBox : MonoBehaviour
	{
		public FVRPhysicalObject mainobj;

		public Collider grabcol;

		private void Start()
		{
		}

		private void Update()
		{
			if ((Object)(object)((FVRInteractiveObject)mainobj).m_hand != (Object)null)
			{
				grabcol.enabled = false;
			}
			else if ((Object)(object)((FVRInteractiveObject)mainobj).m_hand == (Object)null)
			{
				grabcol.enabled = true;
			}
		}
	}
	public class EFTMode : MonoBehaviour
	{
		public TextMesh countdowntext;

		public GameObject countdownboard;

		public float countdownstart = 3f;

		public bool startcount = false;

		public bool tele = true;

		public GameObject playerdetectpoint;

		public bool m_isLoading = false;

		public GameObject death;

		public GameObject escape;

		public float deathcountdownnum = 15f;

		public bool addcomp = false;

		private void Start()
		{
			escape.SetActive(false);
			death.SetActive(false);
		}

		private void FixedUpdate()
		{
			//IL_00e5: 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)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			if (startcount)
			{
				countdownboard.SetActive(true);
				countdownstart -= Time.deltaTime;
				countdowntext.text = "SpawnLoadout" + countdownstart.ToString("f1");
			}
			if (countdownstart < 0f)
			{
				countdownboard.SetActive(false);
				startcount = false;
			}
			if (!addcomp && (Object)(object)GM.CurrentPlayerBody != (Object)null && (Object)(object)Object.FindObjectOfType<DeathActivate>() == (Object)null)
			{
				playerdetectpoint.AddComponent<DeathActivate>();
				startcount = true;
				addcomp = true;
			}
			if ((Object)(object)GM.CurrentMovementManager != (Object)null)
			{
				playerdetectpoint.transform.position = GM.CurrentMovementManager.Head.position;
				playerdetectpoint.transform.eulerAngles = GM.CurrentMovementManager.Head.eulerAngles;
			}
			if (!GM.IsDead())
			{
				return;
			}
			deathcountdownnum -= 1f * Time.deltaTime;
			if (deathcountdownnum < 10f)
			{
				death.SetActive(true);
				if (tele)
				{
					GM.CurrentMovementManager.TeleportToPoint(new Vector3(0f, 0f, 0f), true, new Vector3(0f, 0f, 0f));
					tele = false;
				}
			}
			if (!m_isLoading && deathcountdownnum < 0f)
			{
				m_isLoading = true;
			}
		}
	}
	public class Extractpoint : MonoBehaviour
	{
		public bool isNGAInstalled;

		public float telecountdown = 1f;

		public bool telecount = false;

		public bool telecount2 = false;

		public GameObject motherboard;

		public bool startcountdown = false;

		public EFTMode modemain;

		public float countdownnum = 12f;

		public bool sceneswitched = false;

		public GameObject countdownboard;

		public Transform hidepoint;

		public TextMesh countdowntext;

		private void OnTriggerStay(Collider other)
		{
			if ((Object)(object)((Component)other).gameObject == (Object)(object)modemain.playerdetectpoint)
			{
				startcountdown = true;
			}
		}

		private void OnTriggerExit(Collider other)
		{
			if ((Object)(object)((Component)other).gameObject == (Object)(object)modemain.playerdetectpoint)
			{
				startcountdown = false;
			}
		}

		private void Start()
		{
			isNGAInstalled = Chainloader.PluginInfos.ContainsKey("NGA.SafehouseMP");
			motherboard.SetActive(true);
		}

		private void FixedUpdate()
		{
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: 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_0164: 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)
			if (!isNGAInstalled)
			{
				((Component)this).gameObject.SetActive(false);
			}
			else if (isNGAInstalled)
			{
				if (telecount)
				{
					telecountdown -= Time.deltaTime;
				}
				if (telecountdown < 0f && !telecount2)
				{
					telecount = false;
					telecount2 = true;
					modemain.escape.SetActive(true);
					GM.CurrentMovementManager.TeleportToPoint(((Component)hidepoint).transform.position, true, ((Component)hidepoint).transform.localEulerAngles);
				}
				if (countdownnum < 2f)
				{
					motherboard.SetActive(false);
					SteamVR_Fade.Start(new Color(0f, 0f, 0f, 1f), 0.25f, false);
					telecount = true;
				}
				if (countdownnum < 0f && !sceneswitched)
				{
					Save();
					Escape();
					startcountdown = false;
					sceneswitched = true;
				}
				if (startcountdown)
				{
					countdownboard.SetActive(true);
					countdownboard.transform.position = ((Component)GM.CurrentMovementManager.Head).transform.position;
					countdownboard.transform.eulerAngles = ((Component)GM.CurrentMovementManager.Head).transform.eulerAngles;
					countdowntext.text = "Extract" + (countdownnum - 2f).ToString("f1");
					countdownnum -= 1f * Time.deltaTime;
				}
				if (!startcountdown)
				{
					countdownboard.SetActive(false);
					countdowntext.text = "Extract10";
					countdownnum = 12f;
				}
			}
		}

		private void Save()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			VaultFile val = new VaultFile();
			if (VaultSystem.FindAndScanObjectsInQuickbelt(val))
			{
				if (!VaultSystem.SaveVaultFile(SafehouseMP.raid_extracted_loadout_filename, (VaultFileDisplayMode)1, val))
				{
					Debug.Log((object)"ERROR: Saving loadout failed.");
				}
				else if (SafehouseMP.config_delete_loadout_on_save.Value)
				{
					VaultFile val2 = new VaultFile();
					FVRPlayerBody val3 = Object.FindObjectOfType<FVRPlayerBody>();
					Transform transform = new GameObject().transform;
					transform.position = ((Component)val3).transform.position;
					string text = default(string);
					if (!VaultSystem.SpawnObjects((VaultFileDisplayMode)1, val2, ref text, transform, Vector3.zero))
					{
						Debug.Log((object)("ERROR: Couldn't spawn empty loadout w status: " + text));
					}
				}
			}
			else
			{
				Debug.Log((object)"ERROR: Quickbelt scan failed.");
			}
		}

		private void Escape()
		{
			for (int i = 0; i < GM.CurrentSceneSettings.QuitReceivers.Count; i++)
			{
				GM.CurrentSceneSettings.QuitReceivers[i].BroadcastMessage("QUIT", (SendMessageOptions)1);
			}
			if (((AnvilCallbackBase)GM.LoadingCallback).IsCompleted)
			{
				CustomSceneInfo customScene = AtlasPlugin.GetCustomScene("EFTHideOut_SafeHouse");
				if (customScene != null)
				{
					AtlasPlugin.LoadCustomScene("EFTHideOut_SafeHouse");
				}
				else
				{
					SteamVR_LoadLevel.Begin("EFTHideOut_SafeHouse", false, 0f, 0f, 0f, 0f, 1f);
				}
			}
		}
	}
	public class Humansig : MonoBehaviour
	{
		public GameObject handL;

		public GameObject handR;

		public Sosig sosig;

		public GameObject body;

		private void Start()
		{
			sosig = ((Component)this).GetComponentInParent<Sosig>();
		}

		private void Update()
		{
			//IL_002c: 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)
			//IL_0062: 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_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)sosig == (Object)null)
			{
			}
			if ((Object)(object)sosig != (Object)null)
			{
				if ((int)sosig.BodyState != 0)
				{
					Object.Instantiate<GameObject>(body, ((Component)sosig).gameObject.transform.position, ((Component)sosig).gameObject.transform.rotation);
					Object.Destroy((Object)(object)((Component)sosig).gameObject);
					Object.Destroy((Object)(object)this);
				}
				sosig.Renderers[0].enabled = false;
				sosig.Renderers[1].enabled = false;
				sosig.Renderers[2].enabled = false;
				sosig.Renderers[3].enabled = false;
				if (sosig.Hand_Primary != null)
				{
					handR.transform.position = ((Component)sosig.Hand_Primary.Root).transform.position;
					handR.transform.eulerAngles = ((Component)sosig.Hand_Primary.Root).transform.eulerAngles;
				}
				if (sosig.Hand_Secondary != null)
				{
					handL.transform.position = ((Component)sosig.Hand_Secondary.Root).transform.position;
					handL.transform.eulerAngles = ((Component)sosig.Hand_Secondary.Root).transform.eulerAngles;
				}
			}
		}
	}
	public class Humansigconv : MonoBehaviour
	{
		public float countdown = 2f;

		public bool conved = false;

		public FVRObject body;

		public FVRObject bodySCAVBoss;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_0165: 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_02a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c9: Unknown result type (might be due to invalid IL or missing references)
			if (!conved)
			{
				countdown -= Time.deltaTime;
			}
			if (!(countdown < 0f) || conved)
			{
				return;
			}
			conved = true;
			Sosig[] array = Object.FindObjectsOfType<Sosig>();
			if (array == null)
			{
				return;
			}
			Sosig[] array2 = array;
			foreach (Sosig val in array2)
			{
				Debug.Log((object)"sosig found");
				if (((Object)((Component)val).gameObject).name == "Zosig_Rot(Clone)" && val.Renderers[0].enabled && (Object)(object)val.Links[0] != (Object)null)
				{
					GameObject val2 = Object.Instantiate<GameObject>(((AnvilAsset)bodySCAVBoss).GetGameObject(), ((Component)val.Links[0]).transform);
					val.CanBeKnockedOut = false;
					val.DoesDropWeaponsOnBallistic = false;
					val.DamMult_Blunt = 0.25f;
					val.DamMult_Chilling = 0.25f;
					val.DamMult_Cutting = 0.25f;
					val.DamMult_EMP = 0.15f;
					val.DamMult_Explosive = 0.55f;
					val.DamMult_Melee = 0.35f;
					val.DamMult_Piercing = 0.1f;
					val.DamMult_Projectile = 0.1f;
					val.DamMult_Thermal = 0.1f;
					if ((Object)(object)val2 != (Object)null)
					{
						val2.transform.localPosition = new Vector3(0f, 0f, 0f);
						val2.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
						Humansig component = val2.GetComponent<Humansig>();
						if ((Object)(object)component != (Object)null)
						{
							component.sosig = val;
						}
					}
					Debug.Log((object)"SCAVboss spawned on sosig");
				}
				if (!(((Object)((Component)val).gameObject).name != "Zosig_Rot(Clone)") || !val.Renderers[0].enabled || !((Object)(object)val.Links[0] != (Object)null))
				{
					continue;
				}
				GameObject val3 = Object.Instantiate<GameObject>(((AnvilAsset)body).GetGameObject(), ((Component)val.Links[0]).transform);
				val.DamMult_Blunt = 0.75f;
				val.DamMult_Chilling = 1f;
				val.DamMult_Cutting = 0.75f;
				val.DamMult_EMP = 0.5f;
				val.DamMult_Explosive = 1f;
				val.DamMult_Melee = 1.5f;
				val.DamMult_Piercing = 0.5f;
				val.DamMult_Projectile = 0.5f;
				val.DamMult_Thermal = 0.5f;
				if ((Object)(object)val3 != (Object)null)
				{
					val3.transform.localPosition = new Vector3(0f, 0f, 0f);
					val3.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
					Humansig component2 = val3.GetComponent<Humansig>();
					if ((Object)(object)component2 != (Object)null)
					{
						component2.sosig = val;
					}
				}
				Debug.Log((object)"USEC spawned on sosig");
			}
		}
	}
	public class AmITheFirst : MonoBehaviour
	{
		public string objname;

		public GameObject objtoenable;

		public FVRObject theobjname;

		private void Start()
		{
			if ((Object)(object)GameObject.Find(objname) == (Object)null)
			{
				objtoenable.SetActive(true);
				Object.Instantiate<GameObject>(((AnvilAsset)theobjname).GetGameObject(), ((Component)this).transform);
				Debug.Log((object)"first");
			}
			if ((Object)(object)GameObject.Find(objname) != (Object)null)
			{
				objtoenable.SetActive(false);
				Debug.Log((object)"not first");
			}
		}

		private void Update()
		{
		}
	}
	public class SpawnFVROBJ : MonoBehaviour
	{
		public bool spawnpicked = false;

		public Random Rand;

		public ObjectSpawnPoint[] IDs;

		public ObjectSpawnPoint ID;

		public int length;

		private void Start()
		{
			IDs = ((Component)this).GetComponents<ObjectSpawnPoint>();
			RandomPick();
		}

		private void FixedUpdate()
		{
			if ((Object)(object)ID == (Object)null)
			{
				Debug.Log((object)"Null");
			}
		}

		private void RandomPick()
		{
			if (!spawnpicked)
			{
				int num = Random.Range(0, IDs.Length);
				ID = IDs[num];
				if ((Object)(object)ID != (Object)null)
				{
					((Behaviour)ID).enabled = true;
					Debug.Log((object)"Loot spawned");
				}
				spawnpicked = true;
			}
		}
	}
	public class DrawDecal : MonoBehaviour
	{
		private void OnTriggerEnter(Collider other)
		{
			if (((Object)((Component)other).gameObject).name == "MarkeTail")
			{
				Object.Destroy((Object)(object)this);
			}
		}

		private void Start()
		{
		}

		private void Update()
		{
		}
	}
	public class DrawingTool : MonoBehaviour
	{
		public GameObject penref;

		public GameObject decal;

		private void OnTriggerStay(Collider other)
		{
			//IL_0032: 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)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			if (((Object)((Component)other).gameObject).name == "MarkerTip")
			{
				penref.transform.position = ((Component)other).gameObject.transform.position;
				Object.Instantiate<GameObject>(decal, penref.transform.position, ((Component)this).transform.rotation, ((Component)this).transform);
			}
		}

		private void Start()
		{
		}

		private void FixedUpdate()
		{
		}
	}
	public class SnapToPointRigidbody : MonoBehaviour
	{
		public Transform snapTo;

		[NonSerialized]
		private Rigidbody body;

		public float snapTime = 2f;

		[NonSerialized]
		private float dropTimer;

		public void Start()
		{
			body = ((Component)this).GetComponent<Rigidbody>();
		}

		public void FixedUpdate()
		{
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			dropTimer += Time.deltaTime / (snapTime / 2f);
			body.isKinematic = dropTimer > 1f;
			if (dropTimer > 1f)
			{
				((Component)this).transform.position = snapTo.position;
				((Component)this).transform.rotation = snapTo.rotation;
				return;
			}
			float num = Mathf.Pow(35f, dropTimer);
			body.velocity = Vector3.Lerp(body.velocity, Vector3.zero, Time.fixedDeltaTime * 4f);
			if (body.useGravity)
			{
				body.AddForce(-Physics.gravity);
			}
			((Component)this).transform.position = Vector3.Lerp(((Component)this).transform.position, snapTo.position, Time.fixedDeltaTime * num * 3f);
			((Component)this).transform.rotation = Quaternion.Slerp(((Component)this).transform.rotation, snapTo.rotation, Time.fixedDeltaTime * num * 2f);
		}
	}
}
namespace JerryAr.EFTLootBoxes
{
	[BepInPlugin("JerryAr.EFTLootBoxes", "EFTLootBoxes", "1.1.7")]
	[BepInProcess("h3vr.exe")]
	[Description("Built with MeatKit")]
	[BepInDependency("h3vr.otherloader", "1.3.0")]
	public class EFTLootBoxesPlugin : 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.EFTLootBoxes");
			OtherLoader.RegisterDirectLoad(BasePath, "JerryAr.EFTLootBoxes", "", "", "eftlootboxes", "");
		}
	}
}
namespace JerryComponent
{
	public class MoveItemSpawner : MonoBehaviour
	{
		public GameObject itemspawner;

		public GameObject parent;

		private void Start()
		{
		}

		private void FixedUpdate()
		{
			if ((Object)(object)itemspawner == (Object)null)
			{
				if ((Object)(object)Object.FindObjectOfType<ItemSpawnerV2>() != (Object)null)
				{
					itemspawner = ((Component)Object.FindObjectOfType<ItemSpawnerV2>()).gameObject;
				}
			}
			else if ((Object)(object)itemspawner != (Object)null && (Object)(object)itemspawner.transform.parent != (Object)(object)parent.transform)
			{
				itemspawner.transform.SetParent(parent.transform);
			}
		}
	}
	public class RandomSpawn : MonoBehaviour
	{
		public bool spawnpicked = false;

		public bool exitpicked = false;

		public bool spawnremoved = false;

		public bool exitremoved = false;

		public Random Rand;

		public Random Randext1;

		public Random Randext2;

		public GameObject[] spawnpoints;

		public GameObject _Selected;

		public GameObject[] exitpoints1;

		public GameObject _Selectedexit1;

		public GameObject[] exitpoints2;

		public GameObject _Selectedexit2;

		public int _MaxNum;

		public int _Maxext1;

		public int _Maxext2;

		private void Start()
		{
			RandomPick();
			spawnpicked = false;
			RandomExit();
			exitpicked = false;
		}

		private void FixedUpdate()
		{
			if ((Object)(object)_Selected == (Object)null)
			{
			}
			if (GM.IsDead())
			{
				if (!spawnremoved)
				{
					_Selected.SetActive(false);
					spawnremoved = true;
				}
				RandomPick();
			}
			if (!GM.IsDead())
			{
				spawnremoved = false;
				spawnpicked = false;
			}
		}

		private void RandomPick()
		{
			if (!spawnpicked)
			{
				int num = Random.Range(0, _MaxNum);
				_Selected = spawnpoints[num];
				if ((Object)(object)_Selected != (Object)null)
				{
					_Selected.SetActive(true);
				}
				spawnpicked = true;
			}
		}

		private void RandomExit()
		{
			if (!exitpicked)
			{
				int num = Random.Range(0, _Maxext1);
				_Selectedexit1 = exitpoints1[num];
				if ((Object)(object)_Selectedexit1 != (Object)null)
				{
					_Selectedexit1.SetActive(true);
				}
				int num2 = Random.Range(0, _Maxext2);
				_Selectedexit2 = exitpoints2[num2];
				if ((Object)(object)_Selectedexit2 != (Object)null)
				{
					_Selectedexit2.SetActive(true);
				}
				exitpicked = true;
			}
		}
	}
}
public class AutoLoadAndSave : MonoBehaviour
{
	public bool saved = false;

	public bool isH3MPInstalled;

	public float countdown = 2f;

	public bool isNGAInstalled;

	public float timer = 1f;

	public bool sceneSpawned = false;

	public bool loadouted = false;

	private void Start()
	{
		isH3MPInstalled = Chainloader.PluginInfos.ContainsKey("VIP.TommySoucy.H3MP");
		isNGAInstalled = Chainloader.PluginInfos.ContainsKey("NGA.SafehouseMP");
	}

	private void EnterWithLoadOut()
	{
		//IL_0048: 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_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_006e: Expected O, but got Unknown
		//IL_009e: 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_00d1: Expected O, but got Unknown
		if (countdown >= 0f)
		{
			countdown -= Time.deltaTime;
		}
		if (!loadouted && countdown < 0f)
		{
			loadouted = true;
			Transform transform = new GameObject().transform;
			transform.position = ((Component)GM.CurrentPlayerBody).transform.position;
			VaultFile val = new VaultFile();
			if (!VaultSystem.LoadVaultFile(SafehouseMP.raid_extracted_loadout_filename, (VaultFileDisplayMode)1, ref val))
			{
				Debug.Log((object)"ERROR: Loading saved loadout failed.");
				return;
			}
			string text = default(string);
			if (!VaultSystem.SpawnObjects((VaultFileDisplayMode)1, val, ref text, transform, Vector3.zero))
			{
				Debug.Log((object)"ERROR: Spawning saved loadout failed.");
				return;
			}
			VaultFile val2 = new VaultFile();
			VaultSystem.SaveVaultFile(SafehouseMP.raid_extracted_loadout_filename, (VaultFileDisplayMode)1, val2);
		}
	}

	private void FixedUpdate()
	{
		//IL_03ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0267: Unknown result type (might be due to invalid IL or missing references)
		//IL_0286: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: 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_0481: Unknown result type (might be due to invalid IL or missing references)
		//IL_0490: 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_0417: Expected O, but got Unknown
		//IL_0198: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_043c: Unknown result type (might be due to invalid IL or missing references)
		//IL_033a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0349: Unknown result type (might be due to invalid IL or missing references)
		//IL_02cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d1: Expected O, but got Unknown
		//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0205: Unknown result type (might be due to invalid IL or missing references)
		//IL_0128: Unknown result type (might be due to invalid IL or missing references)
		//IL_0137: 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_00bf: Expected O, but got Unknown
		//IL_02f5: 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)
		if (isH3MPInstalled)
		{
			if (Client.isFullyConnected)
			{
				if (ThreadManager.host)
				{
					if (!isNGAInstalled)
					{
						return;
					}
					if ((Object)(object)GM.CurrentPlayerBody != (Object)null)
					{
						((Component)this).gameObject.transform.position = GM.CurrentPlayerBody.Head.position;
						((Component)this).gameObject.transform.eulerAngles = GM.CurrentPlayerBody.Head.eulerAngles;
					}
					timer -= Time.deltaTime;
					if (!(timer <= 0f))
					{
						return;
					}
					timer = 0f;
					if (!sceneSpawned)
					{
						VaultFile val = new VaultFile();
						if (VaultSystem.DoesVaultFileExist((VaultFileDisplayMode)2, "EFTHideOut_Standard_Edition_SaveFile"))
						{
							VaultSystem.LoadVaultFile("EFTHideOut_Standard_Edition_SaveFile", (VaultFileDisplayMode)2, ref val);
							string text = default(string);
							VaultSystem.SpawnObjects((VaultFileDisplayMode)2, val, ref text, (Transform)null, Vector3.zero);
							Debug.Log((object)"SceneLoaded");
						}
						else if (!VaultSystem.DoesVaultFileExist((VaultFileDisplayMode)2, "EFTHideOut_Standard_Edition_SaveFile"))
						{
							Debug.Log((object)"Can't find scene save");
						}
						sceneSpawned = true;
					}
					if (Vector3.Distance(((Component)this).transform.position, GM.CurrentMovementManager.Head.position) < 0.25f)
					{
						EnterWithLoadOut();
					}
				}
				else
				{
					if (ThreadManager.host || !isNGAInstalled)
					{
						return;
					}
					if ((Object)(object)GM.CurrentPlayerBody != (Object)null)
					{
						((Component)this).gameObject.transform.position = GM.CurrentPlayerBody.Head.position;
						((Component)this).gameObject.transform.eulerAngles = GM.CurrentPlayerBody.Head.eulerAngles;
					}
					timer -= Time.deltaTime;
					if (timer <= 0f)
					{
						timer = 0f;
						if (Vector3.Distance(((Component)this).transform.position, GM.CurrentMovementManager.Head.position) < 0.25f)
						{
							EnterWithLoadOut();
						}
					}
				}
			}
			else
			{
				if (Client.isFullyConnected || !isNGAInstalled)
				{
					return;
				}
				if ((Object)(object)GM.CurrentPlayerBody != (Object)null)
				{
					((Component)this).gameObject.transform.position = GM.CurrentPlayerBody.Head.position;
					((Component)this).gameObject.transform.eulerAngles = GM.CurrentPlayerBody.Head.eulerAngles;
				}
				timer -= Time.deltaTime;
				if (!(timer <= 0f))
				{
					return;
				}
				timer = 0f;
				if (!sceneSpawned)
				{
					VaultFile val2 = new VaultFile();
					if (VaultSystem.DoesVaultFileExist((VaultFileDisplayMode)2, "EFTHideOut_Standard_Edition_SaveFile"))
					{
						VaultSystem.LoadVaultFile("EFTHideOut_Standard_Edition_SaveFile", (VaultFileDisplayMode)2, ref val2);
						string text2 = default(string);
						VaultSystem.SpawnObjects((VaultFileDisplayMode)2, val2, ref text2, (Transform)null, Vector3.zero);
						Debug.Log((object)"SceneLoaded");
					}
					else if (!VaultSystem.DoesVaultFileExist((VaultFileDisplayMode)2, "EFTHideOut_Standard_Edition_SaveFile"))
					{
						Debug.Log((object)"Can't find scene save");
					}
					sceneSpawned = true;
				}
				if (Vector3.Distance(((Component)this).transform.position, GM.CurrentMovementManager.Head.position) < 0.25f)
				{
					EnterWithLoadOut();
				}
			}
		}
		else
		{
			if (isH3MPInstalled || !isNGAInstalled)
			{
				return;
			}
			if ((Object)(object)GM.CurrentPlayerBody != (Object)null)
			{
				((Component)this).gameObject.transform.position = GM.CurrentPlayerBody.Head.position;
				((Component)this).gameObject.transform.eulerAngles = GM.CurrentPlayerBody.Head.eulerAngles;
			}
			timer -= Time.deltaTime;
			if (!(timer <= 0f))
			{
				return;
			}
			timer = 0f;
			if (!sceneSpawned)
			{
				VaultFile val3 = new VaultFile();
				if (VaultSystem.DoesVaultFileExist((VaultFileDisplayMode)2, "EFTHideOut_Standard_Edition_SaveFile"))
				{
					VaultSystem.LoadVaultFile("EFTHideOut_Standard_Edition_SaveFile", (VaultFileDisplayMode)2, ref val3);
					string text3 = default(string);
					VaultSystem.SpawnObjects((VaultFileDisplayMode)2, val3, ref text3, (Transform)null, Vector3.zero);
					Debug.Log((object)"SceneLoaded");
				}
				else if (!VaultSystem.DoesVaultFileExist((VaultFileDisplayMode)2, "EFTHideOut_Standard_Edition_SaveFile"))
				{
					Debug.Log((object)"Can't find scene save");
				}
				sceneSpawned = true;
			}
			if (Vector3.Distance(((Component)this).transform.position, GM.CurrentMovementManager.Head.position) < 0.25f)
			{
				EnterWithLoadOut();
			}
		}
	}
}
public class AutoLoadSceneOnStart : MonoBehaviour
{
	public bool isH3MPInstalled;

	private VaultFile FileToSpawn = new VaultFile();

	public bool saved = false;

	public string FileName;

	public string SceneVaultFileName;

	public string PluginDictionaryString;

	public float countdown = 2f;

	public float timer = 1f;

	public bool sceneSpawned = false;

	public bool loadouted = false;

	public bool loadonlyonce = false;

	public string newlySavedFileName;

	public bool isPMCStandard;

	private void Awake()
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Expected O, but got Unknown
		PluginInfo value = new PluginInfo();
		Chainloader.PluginInfos.TryGetValue(PluginDictionaryString, out value);
		string directoryName = Path.GetDirectoryName(value.Location);
		Load<VaultFile>(Path.Combine(directoryName, FileName), FileToSpawn);
	}

	private void Start()
	{
		isH3MPInstalled = Chainloader.PluginInfos.ContainsKey("VIP.TommySoucy.H3MP");
		isPMCStandard = Chainloader.PluginInfos.ContainsKey("JerryAr.EFT_PMC_ModPack");
	}

	public void Load<T>(string path, T objectToOverwrite)
	{
		string empty = string.Empty;
		Debug.Log((object)path);
		JsonUtility.FromJsonOverwrite(File.ReadAllText(path), (object)objectToOverwrite);
	}

	public void LoadSavedScene()
	{
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		timer -= Time.deltaTime;
		if (timer <= 0f)
		{
			timer = 0f;
			if (!sceneSpawned)
			{
				string text = default(string);
				VaultSystem.SpawnObjects((VaultFileDisplayMode)2, FileToSpawn, ref text, (Transform)null, Vector3.zero);
				Debug.Log((object)"SceneLoaded");
				sceneSpawned = true;
			}
		}
	}

	private void Update()
	{
		if (!isPMCStandard || sceneSpawned)
		{
			return;
		}
		if (VaultSystem.DoesVaultFileExist((VaultFileDisplayMode)2, newlySavedFileName))
		{
			if (!loadonlyonce)
			{
				if (isH3MPInstalled && ThreadManager.host)
				{
					LoadSavedScene();
				}
				if (!isH3MPInstalled)
				{
					LoadSavedScene();
				}
			}
		}
		else
		{
			if (VaultSystem.DoesVaultFileExist((VaultFileDisplayMode)2, newlySavedFileName))
			{
				return;
			}
			if (isH3MPInstalled)
			{
				if (Client.isFullyConnected)
				{
					if (ThreadManager.host)
					{
						LoadSavedScene();
					}
				}
				else if (!Client.isFullyConnected)
				{
					LoadSavedScene();
				}
			}
			if (!isH3MPInstalled)
			{
				LoadSavedScene();
			}
		}
	}
}
namespace JerryComponent
{
	public class DisConGeo : MonoBehaviour
	{
		public bool disabled = false;

		private void Start()
		{
		}

		private void FixedUpdate()
		{
			if ((Object)(object)GM.CurrentMovementManager != (Object)null)
			{
				GM.CurrentMovementManager.Hands[0].Display_Controller.SetActive(false);
				GM.CurrentMovementManager.Hands[0].Display_InteractionSphere.SetActive(false);
				GM.CurrentMovementManager.Hands[0].Display_InteractionSphere_Palm.SetActive(false);
				GM.CurrentMovementManager.Hands[1].Display_Controller.SetActive(false);
				GM.CurrentMovementManager.Hands[1].Display_InteractionSphere.SetActive(false);
				GM.CurrentMovementManager.Hands[1].Display_InteractionSphere_Palm.SetActive(false);
			}
		}
	}
	public class PutOnBody : MonoBehaviour
	{
		public bool isBEARInstalled;

		private EF_BuffSystem_GlobalObject GO;

		public bool spawned = false;

		private void Start()
		{
			isBEARInstalled = Chainloader.PluginInfos.ContainsKey("JerryAr.EFT_BEAR_Hands");
		}

		private void Update()
		{
			if (!isBEARInstalled || !((Object)(object)GM.CurrentPlayerBody != (Object)null))
			{
				return;
			}
			if (GameManager.playerPrefabID != "EFTBEARHANDS" && GameManager.playerPrefabID != "JilleyThePMC")
			{
				if (!spawned)
				{
					GameManager.SetPlayerPrefab("EFTBEARHANDS");
					spawned = true;
				}
			}
			else if (GameManager.playerPrefabID == "EFTBEARHANDS")
			{
				if (!spawned)
				{
					GO = EF_BuffSystem_GlobalObject.GetInstance();
					GO.Config.IsMale = true;
					GO.ReadConfig();
					spawned = true;
				}
			}
			else if (GameManager.playerPrefabID == "JilleyThePMC" && !spawned)
			{
				GO = EF_BuffSystem_GlobalObject.GetInstance();
				GO.Config.IsMale = false;
				GO.ReadConfig();
				spawned = true;
			}
		}
	}
	public class RandomLoot : MonoBehaviour
	{
		public bool isEFTFrameInstalled;

		public bool isHelmetInstalled;

		public bool big = false;

		public float countdown = 2f;

		public int type;

		public int amont;

		public Transform point;

		public GameObject rot;

		public float timer = 2f;

		public GameObject audiolooting;

		public bool isalreadylooted = false;

		public bool isinrange = false;

		public bool hivaluable = false;

		private void Start()
		{
			isEFTFrameInstalled = Chainloader.PluginInfos.ContainsKey("JerryAr.EFT_Frame");
			isHelmetInstalled = Chainloader.PluginInfos.ContainsKey("Andrew_FTW-FTW_Arms_Modular_Helmets");
			if (!big)
			{
				type = Random.Range(1, 5);
			}
			else if (big)
			{
				if (hivaluable)
				{
					type = Random.Range(1, 9);
				}
				else if (!hivaluable)
				{
					type = Random.Range(1, 8);
				}
			}
			if (type == 1)
			{
				amont = Random.Range(1, 5);
			}
			if (type == 2)
			{
				amont = Random.Range(1, 5);
			}
			if (type == 3)
			{
				amont = Random.Range(1, 3);
			}
			if (type == 4)
			{
				amont = Random.Range(1, 3);
			}
			if (type == 5)
			{
				amont = Random.Range(1, 5);
			}
			if (type == 6)
			{
				amont = Random.Range(1, 2);
			}
			if (type == 7)
			{
				amont = Random.Range(1, 2);
			}
			if (type == 8)
			{
				amont = 1;
			}
			if (type == 9)
			{
				amont = 0;
			}
		}

		private void FixedUpdate()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: 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_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_129e: Unknown result type (might be due to invalid IL or missing references)
			//IL_12a3: 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_0468: Unknown result type (might be due to invalid IL or missing references)
			//IL_046d: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: 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_02db: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0448: Unknown result type (might be due to invalid IL or missing references)
			//IL_044d: Unknown result type (might be due to invalid IL or missing references)
			//IL_040c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0428: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_078a: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dca: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dcf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a68: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a84: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f05: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0daa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0daf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d6e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d8a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1071: Unknown result type (might be due to invalid IL or missing references)
			//IL_1076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ee5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0eea: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ea9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ec5: Unknown result type (might be due to invalid IL or missing references)
			//IL_1223: Unknown result type (might be due to invalid IL or missing references)
			//IL_1228: Unknown result type (might be due to invalid IL or missing references)
			//IL_1051: Unknown result type (might be due to invalid IL or missing references)
			//IL_1056: Unknown result type (might be due to invalid IL or missing references)
			//IL_1015: Unknown result type (might be due to invalid IL or missing references)
			//IL_1031: Unknown result type (might be due to invalid IL or missing references)
			//IL_1203: Unknown result type (might be due to invalid IL or missing references)
			//IL_1208: Unknown result type (might be due to invalid IL or missing references)
			//IL_11c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_11e3: Unknown result type (might be due to invalid IL or missing references)
			if (!isHelmetInstalled || !isEFTFrameInstalled)
			{
				return;
			}
			if ((Object)(object)GM.CurrentPlayerBody != (Object)null)
			{
				if (Vector3.Distance(((Component)GM.CurrentPlayerBody.LeftHand).transform.position, ((Component)this).gameObject.transform.position) <= 1f || Vector3.Distance(((Component)GM.CurrentPlayerBody.RightHand).transform.position, ((Component)this).gameObject.transform.position) <= 1f)
				{
					isinrange = true;
				}
				else if (Vector3.Distance(((Component)GM.CurrentPlayerBody.LeftHand).transform.position, ((Component)this).gameObject.transform.position) > 1f && Vector3.Distance(((Component)GM.CurrentPlayerBody.RightHand).transform.position, ((Component)this).gameObject.transform.position) > 1f)
				{
					isinrange = false;
				}
				if (countdown > 0f)
				{
					countdown -= Time.deltaTime;
				}
				else if (countdown <= 0f)
				{
					countdown = 0f;
				}
				if (rot.transform.localEulerAngles.x >= 45f)
				{
					if (countdown > 0f)
					{
						isalreadylooted = true;
					}
					if (isalreadylooted)
					{
						return;
					}
					if (!isinrange)
					{
						audiolooting.SetActive(false);
						timer = 2f;
					}
					else
					{
						if (!isinrange)
						{
							return;
						}
						if (amont > 0)
						{
							audiolooting.SetActive(true);
							timer -= Time.deltaTime;
							if (!(timer < 0f))
							{
								return;
							}
							if (type == 1)
							{
								string[] array = new string[7] { "EFT BeefCan", "EFT MRE", "EFT Kolbasa", "EFT WatterBottle", "EFT JuiceBox Green", "EFT JuiceBox Red", "EFT JuiceBox Yellow" };
								if (IM.OD.ContainsKey(array[Random.Range(0, 7)]))
								{
									AnvilCallback<GameObject> gameObjectAsync = ((AnvilAsset)IM.OD[array[Random.Range(0, 7)]]).GetGameObjectAsync();
									if (Object.op_Implicit((Object)(object)gameObjectAsync.Result))
									{
										GameObject val = Object.Instantiate<GameObject>(gameObjectAsync.Result);
										val.transform.position = ((Component)point).transform.position;
										val.transform.eulerAngles = ((Component)point).transform.eulerAngles;
										Console.Write("loot:Initialed new loot object");
									}
									else
									{
										Scene activeScene = SceneManager.GetActiveScene();
										Console.Write("loot:Can't find loot object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene)).name);
									}
								}
								else
								{
									Scene activeScene2 = SceneManager.GetActiveScene();
									Console.Write("loot:Can't find loot object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene2)).name);
								}
								amont--;
								timer = 2f;
							}
							if (type == 2)
							{
								string[] array2 = new string[7] { "Med_Analgin", "Med_Bandage", "Med_CAT", "Med_CMSK", "Med_GoldenStar", "Med_Propital", "AI2 Medkit" };
								if (IM.OD.ContainsKey(array2[Random.Range(0, 7)]))
								{
									AnvilCallback<GameObject> gameObjectAsync2 = ((AnvilAsset)IM.OD[array2[Random.Range(0, 7)]]).GetGameObjectAsync();
									if (Object.op_Implicit((Object)(object)gameObjectAsync2.Result))
									{
										GameObject val2 = Object.Instantiate<GameObject>(gameObjectAsync2.Result);
										val2.transform.position = ((Component)point).transform.position;
										val2.transform.eulerAngles = ((Component)point).transform.eulerAngles;
										Console.Write("loot:Initialed new loot object");
									}
									else
									{
										Scene activeScene3 = SceneManager.GetActiveScene();
										Console.Write("loot:Can't find loot object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene3)).name);
									}
								}
								else
								{
									Scene activeScene4 = SceneManager.GetActiveScene();
									Console.Write("loot:Can't find loot object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene4)).name);
								}
								amont--;
								timer = 2f;
							}
							if (type == 6)
							{
								string[] array3 = new string[63]
								{
									"MagazineAK12", "AKS74U", "AKM", "MagazineStanagUSGI30rnd", "AKS74UTactical", "RailAdapterRussianToPicatinny", "MagazineStanagUSGI10rnd", "MagazineAKMDrum", "MagazineDragonuv", "MagazineAKMTactical",
									"MagazineStanagUSGI25rnd", "AKForeShark", "MosinM1891", "H416", "762x54mmRStripperClip", "MagazineASVal20Rnd", "MagazineAKMTactical20rnd", "ASVAL", "MagazineAKS74U2", "Dragonuv",
									"MagazineAKM", "MagazineStanagUSGI5rnd", "MagazineStanagSM60rnd", "AK74N", "AKForeRomanian", "MagazineAKMTactical10rnd", "MagazineRPK", "Mosin91_30", "MagazineVSSVintorez10rnd", "SV98",
									"RPK", "MagazineAK74_20rnd", "MagazineSV98", "MagazineStanagPDDrum60rnd", "ScopeMosinPU", "MosinM38", "MagazineStanagUSGI30rndCustom", "FaTactical", "MagazineAK74N", "MagazineAKMHeirloom",
									"SR3M", "MagazineAK74Drum", "MagazineStanagUSGI20rnd", "AKMTactical", "Fal", "MagazineAKS74U", "MagazineAK74_10rnd", "Magazine_Stanag_PM_30rnd", "FalPara", "VSSVintorez",
									"MagazineFal20rnd", "M16", "M4A1Block2CQBR", "Mk18Mod0", "IZh18_12g", "KS23", "I37Classic", "M2ThreeGun", "Saiga12k", "MagazineSaiga12k20rnd",
									"MagazineSaiga12k12rnd", "Toz106", "MagazineToz106"
								};
								if (IM.OD.ContainsKey(array3[Random.Range(0, 63)]))
								{
									AnvilCallback<GameObject> gameObjectAsync3 = ((AnvilAsset)IM.OD[array3[Random.Range(0, 63)]]).GetGameObjectAsync();
									if (Object.op_Implicit((Object)(object)gameObjectAsync3.Result))
									{
										GameObject val3 = Object.Instantiate<GameObject>(gameObjectAsync3.Result);
										val3.transform.position = ((Component)point).transform.position;
										val3.transform.eulerAngles = ((Component)point).transform.eulerAngles;
										Console.Write("loot:Initialed new loot object");
									}
									else
									{
										Scene activeScene5 = SceneManager.GetActiveScene();
										Console.Write("loot:Can't find loot object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene5)).name);
									}
								}
								else
								{
									Scene activeScene6 = SceneManager.GetActiveScene();
									Console.Write("loot:Can't find loot object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene6)).name);
								}
								amont--;
								timer = 2f;
							}
							if (type == 7)
							{
								string[] array4 = new string[47]
								{
									"FTW.TankHelmet.helmet", "FTW.EXFILShieldB.helmet", "FTW.FASTAirsoft.helmetTan", "FTW.FastShield.attachment", "FTW.FastPic.attachment", "FTW.HeavyTrooper.attachment", "FTW.RysT.helmet", "FTW.RysTMask.helmet", "FTW.helmet.LSHZMask", "FTW.FastEars.attachment",
									"FTW.TC800.helmet", "FTW.Helmet.Jason", "ftw.altynmask.helmet", "FTW.EXFILShieldT.helmet", "FTW.SLAPPPlate.attachement", "FTW.FastVisor.attachment", "FTW.HeavyTrooper.attachmentB", "FTW.Caiman.helmet", "FTW.FAST.helmet", "FTW.EXFILt.helmet",
									"FTW.ZshShield.helmet", "FTW.HeavyTrooper.attachmentWolfe", "ftw.Airframe.helmet", "FTW.Kiver.helmet", "FTW.HeavyTrooper.attachmentT", "ftw.Bastion.helmet", "ftw.Bastionshield.helmet", "FTW.helmet.LSHZAventail", "FTW.FastEars.attachmentTan", "ftw.altyn.helmet",
									"FTW.EXFILEars.helmetB", "FTW.CaimanShield.helmet", "FTW.KiverShield.helmet", "FTW.FASTTan.helmet", "FTW.UNHelmet.helmet", "FTW.EXFILt.helmetTan", "FTW.FastMandible.attachment", "FTW.ZSH.helmet", "FTW.CaimanMandible.helmet", "FTW.CaimanFixedVisor.helmet",
									"FTW.Ushanka.helmet", "FTW.Helmet.Ronin", "FTW.EXFILEars.helmet", "ftw.Airframe.helmetEars", "FTW.HeavyTrooper.attachmentBT", "ftw.Airframe.helmetChops", "FTW.helmet.LSHZ"
								};
								if (IM.OD.ContainsKey(array4[Random.Range(0, 47)]))
								{
									AnvilCallback<GameObject> gameObjectAsync4 = ((AnvilAsset)IM.OD[array4[Random.Range(0, 47)]]).GetGameObjectAsync();
									if (Object.op_Implicit((Object)(object)gameObjectAsync4.Result))
									{
										GameObject val4 = Object.Instantiate<GameObject>(gameObjectAsync4.Result);
										val4.transform.position = ((Component)point).transform.position;
										val4.transform.eulerAngles = ((Component)point).transform.eulerAngles;
										Console.Write("loot:Initialed new loot object");
									}
									else
									{
										Scene activeScene7 = SceneManager.GetActiveScene();
										Console.Write("loot:Can't find loot object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene7)).name);
									}
								}
								else
								{
									Scene activeScene8 = SceneManager.GetActiveScene();
									Console.Write("loot:Can't find loot object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene8)).name);
								}
								amont--;
								timer = 2f;
							}
							if (type == 5)
							{
								string[] array5 = new string[51]
								{
									"TacticalFlashlight", "KlashLight", "CompactFlashlight2", "AKForeB10", "ForegripLarge", "ForegripLDAG", "ForegripMVG", "ForegripOffset", "ForegripRKO", "ForegripShift",
									"ForegripValk", "ForegripZG106", "HandstopKAG", "H416IronsFront", "H416IronsRear", "CantedSightsFront", "CantedSightsRear", "ANPEQ15", "TacticalLaser2", "Perst3Laser",
									"MuzzleBrakeCobra", "MuzzleBrakeCharon", "MuzzleBrakeOrbit", "MuzzleBrakeTruepoint", "RailRiserTall", "RailRiserShort", "RailRiserMed", "ReflexEG1", "ReflexOKP7OSA", "ReflexPK01VS",
									"ReflexPK120", "ReflexHolosightLong", "ReflexHolosightShort", "MagnifierPSO1", "T12Scope", "ScopeVRZ_6_36x56mmBronze", "ScopeVRZ_6_36x56mmBlack", "ScopeHAMComboScope4x24", "MagnifierGhostDRFDE", "MagnifierGhostDR",
									"ScopeEVU110x28mm", "ScopeAcog4x32", "ScopePVS30", "ScopePVS14", "SuppressorPBS4", "SuppressorPBS1", "SuppressorCorded", "SuppressorCordedTan", "SuppressorWrapped", "SuppressorSalvo",
									"AttachableBipodH"
								};
								if (IM.OD.ContainsKey(array5[Random.Range(0, 51)]))
								{
									AnvilCallback<GameObject> gameObjectAsync5 = ((AnvilAsset)IM.OD[array5[Random.Range(0, 51)]]).GetGameObjectAsync();
									if (Object.op_Implicit((Object)(object)gameObjectAsync5.Result))
									{
										GameObject val5 = Object.Instantiate<GameObject>(gameObjectAsync5.Result);
										val5.transform.position = ((Component)point).transform.position;
										val5.transform.eulerAngles = ((Component)point).transform.eulerAngles;
										Console.Write("loot:Initialed new loot object");
									}
									else
									{
										Scene activeScene9 = SceneManager.GetActiveScene();
										Console.Write("loot:Can't find loot object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene9)).name);
									}
								}
								else
								{
									Scene activeScene10 = SceneManager.GetActiveScene();
									Console.Write("loot:Can't find loot object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene10)).name);
								}
								amont--;
								timer = 2f;
							}
							if (type == 4)
							{
								string[] array6 = new string[5] { "PinnedGrenadeRG5", "PinnedGrenadeRGN", "PinnedGrenadeRGO", "PinnedGrenadeM67", "F-1 Russia (Remastered)" };
								if (IM.OD.ContainsKey(array6[Random.Range(0, 5)]))
								{
									AnvilCallback<GameObject> gameObjectAsync6 = ((AnvilAsset)IM.OD[array6[Random.Range(0, 5)]]).GetGameObjectAsync();
									if (Object.op_Implicit((Object)(object)gameObjectAsync6.Result))
									{
										GameObject val6 = Object.Instantiate<GameObject>(gameObjectAsync6.Result);
										val6.transform.position = ((Component)point).transform.position;
										val6.transform.eulerAngles = ((Component)point).transform.eulerAngles;
										Console.Write("loot:Initialed new loot object");
									}
									else
									{
										Scene activeScene11 = SceneManager.GetActiveScene();
										Console.Write("loot:Can't find loot object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene11)).name);
									}
								}
								else
								{
									Scene activeScene12 = SceneManager.GetActiveScene();
									Console.Write("loot:Can't find loot object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene12)).name);
								}
								amont--;
								timer = 2f;
							}
							if (type == 3)
							{
								string[] array7 = new string[10] { "AmmoBox_545x39", "AmmoBox_556x45", "762x54mmRCartridgeAPIncendiary", "9x39mmCartridgeAP", "762x51mmCartridgeAP", "AmmoBox_762x39", "AmmoBox_12Gau", "AmmoBox_23x75r", "23x75mmR_Flash", "12GaugeShellDragonsBreath" };
								if (IM.OD.ContainsKey(array7[Random.Range(0, 10)]))
								{
									AnvilCallback<GameObject> gameObjectAsync7 = ((AnvilAsset)IM.OD[array7[Random.Range(0, 10)]]).GetGameObjectAsync();
									if (Object.op_Implicit((Object)(object)gameObjectAsync7.Result))
									{
										GameObject val7 = Object.Instantiate<GameObject>(gameObjectAsync7.Result);
										val7.transform.position = ((Component)point).transform.position;
										val7.transform.eulerAngles = ((Component)point).transform.eulerAngles;
										Console.Write("loot:Initialed new loot object");
									}
									else
									{
										Scene activeScene13 = SceneManager.GetActiveScene();
										Console.Write("loot:Can't find loot object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene13)).name);
									}
								}
								else
								{
									Scene activeScene14 = SceneManager.GetActiveScene();
									Console.Write("loot:Can't find loot object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene14)).name);
								}
								amont--;
								timer = 2f;
							}
							if (type == 8)
							{
								string[] array8 = new string[17]
								{
									"EFT_BitCoin", "EFT_CarbonCase", "EFT_Chemcontainer", "EFT_CPUChip", "EFT_CPUCooler", "EFT_DVD", "EFT_ElectronicCase", "EFT_Envelope", "EFT_Fuelconditioner", "EFT_Geger",
									"EFT_HandDrill", "EFT_Laptop", "EFT_Parcel", "EFT_Photograph", "EFT_RadioJammer", "EFT_Ratchetwrench", "EFT_SSD"
								};
								if (IM.OD.ContainsKey(array8[Random.Range(0, 17)]))
								{
									AnvilCallback<GameObject> gameObjectAsync8 = ((AnvilAsset)IM.OD[array8[Random.Range(0, 17)]]).GetGameObjectAsync();
									if (Object.op_Implicit((Object)(object)gameObjectAsync8.Result))
									{
										GameObject val8 = Object.Instantiate<GameObject>(gameObjectAsync8.Result);
										val8.transform.position = ((Component)point).transform.position;
										val8.transform.eulerAngles = ((Component)point).transform.eulerAngles;
										Console.Write("loot:Initialed new loot object");
									}
									else
									{
										Scene activeScene15 = SceneManager.GetActiveScene();
										Console.Write("loot:Can't find loot object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene15)).name);
									}
								}
								else
								{
									Scene activeScene16 = SceneManager.GetActiveScene();
									Console.Write("loot:Can't find loot object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene16)).name);
								}
								amont--;
								timer = 2f;
							}
							if (type == 9)
							{
								Console.Write("loot:HA HA Nothing in here!!");
							}
						}
						else if (amont <= 0)
						{
							audiolooting.SetActive(false);
						}
					}
				}
				else if (rot.transform.localEulerAngles.x < 45f)
				{
					timer = 2f;
					audiolooting.SetActive(false);
				}
			}
			else if ((Object)(object)GM.CurrentPlayerBody == (Object)null)
			{
				timer = 2f;
				audiolooting.SetActive(false);
			}
		}
	}
	public class ScavWave : MonoBehaviour
	{
		public bool isH3MPInstalled;

		public bool isCustomSosigInstalled;

		public Transform point1;

		public Transform point2;

		public float countdown;

		public int whereto;

		public int whichhead;

		public int whichtorso;

		public int whichbackpack;

		public Collider col1;

		public Collider col2;

		public SosigSpawnPoint ssp1;

		public SosigSpawnPoint ssp2;

		public Sosig sos;

		public bool isboss = false;

		private void OnTriggerEnter(Collider other)
		{
			if ((Object)(object)((Component)other).gameObject.GetComponent<SosigLink>() != (Object)null)
			{
				sos = ((Component)other).gameObject.GetComponent<SosigLink>().S;
				col1.enabled = false;
				col2.enabled = false;
			}
		}

		private void Start()
		{
			isCustomSosigInstalled = Chainloader.PluginInfos.ContainsKey("Sosig_Squad.CustomSosigLoader");
			isH3MPInstalled = Chainloader.PluginInfos.ContainsKey("VIP.TommySoucy.H3MP");
			whereto = Random.Range(1, 2);
			countdown = Random.Range(15, 25);
			if (isH3MPInstalled)
			{
				if (Client.isFullyConnected)
				{
					if (ThreadManager.host && isCustomSosigInstalled)
					{
						if (whereto == 1)
						{
							ssp1.Spawn();
							col1.enabled = true;
						}
						else if (whereto == 2)
						{
							ssp2.Spawn();
							col2.enabled = true;
						}
					}
				}
				else if (!Client.isFullyConnected && isCustomSosigInstalled)
				{
					if (whereto == 1)
					{
						ssp1.Spawn();
						col1.enabled = true;
					}
					else if (whereto == 2)
					{
						ssp2.Spawn();
						col2.enabled = true;
					}
				}
			}
			else if (!isH3MPInstalled && isCustomSosigInstalled)
			{
				if (whereto == 1)
				{
					ssp1.Spawn();
					col1.enabled = true;
				}
				else if (whereto == 2)
				{
					ssp2.Spawn();
					col2.enabled = true;
				}
			}
		}

		private void FixedUpdate()
		{
			if (isH3MPInstalled)
			{
				if (Client.isFullyConnected)
				{
					if (!ThreadManager.host || !isCustomSosigInstalled)
					{
						return;
					}
					if ((Object)(object)sos == (Object)null)
					{
						countdown -= Time.deltaTime;
					}
					if (countdown <= 0f)
					{
						if (whereto == 1)
						{
							ssp1.Spawn();
							col1.enabled = true;
						}
						else if (whereto == 2)
						{
							ssp2.Spawn();
							col2.enabled = true;
						}
						countdown = Random.Range(30, 60);
						whereto = Random.Range(1, 2);
					}
				}
				else
				{
					if (Client.isFullyConnected || !isCustomSosigInstalled)
					{
						return;
					}
					if ((Object)(object)sos == (Object)null)
					{
						countdown -= Time.deltaTime;
					}
					if (countdown <= 0f)
					{
						if (whereto == 1)
						{
							ssp1.Spawn();
							col1.enabled = true;
						}
						else if (whereto == 2)
						{
							ssp2.Spawn();
							col2.enabled = true;
						}
						countdown = Random.Range(30, 60);
						whereto = Random.Range(1, 2);
					}
				}
			}
			else
			{
				if (isH3MPInstalled || !isCustomSosigInstalled)
				{
					return;
				}
				if ((Object)(object)sos == (Object)null)
				{
					countdown -= Time.deltaTime;
				}
				if (countdown <= 0f)
				{
					if (whereto == 1)
					{
						ssp1.Spawn();
						col1.enabled = true;
					}
					else if (whereto == 2)
					{
						ssp2.Spawn();
						col2.enabled = true;
					}
					countdown = Random.Range(30, 60);
					whereto = Random.Range(1, 2);
				}
			}
		}
	}
	public class SmallpocketSwitch : MonoBehaviour
	{
		public bool spawned = false;

		public GameObject BODY;

		public float timer = 2.5f;

		private FVRQuickBeltSlot[] slots;

		private void Start()
		{
		}

		private void FixedUpdate()
		{
			if ((Object)(object)BODY == (Object)null || slots == null)
			{
			}
			timer -= Time.deltaTime;
			if (!(timer < 0f))
			{
				return;
			}
			BODY = GameObject.Find("EFTBEARHANDS(Clone)");
			if ((Object)(object)GM.CurrentPlayerBody != (Object)null)
			{
				if ((Object)(object)BODY != (Object)null)
				{
					slots = ((Component)GM.CurrentPlayerBody.Torso).GetComponentsInChildren<FVRQuickBeltSlot>();
					if (slots.Length >= 1)
					{
						for (int num = slots.Length - 1; num >= 0; num--)
						{
							Object.Destroy((Object)(object)slots[num]);
						}
					}
					((Component)GM.CurrentPlayerBody.Torso).gameObject.SetActive(false);
					spawned = false;
				}
				else if ((Object)(object)BODY == (Object)null && !spawned)
				{
					((Component)GM.CurrentPlayerBody.Torso).gameObject.SetActive(true);
					GM.CurrentPlayerBody.ConfigureQuickbelt(8);
					spawned = true;
				}
			}
			timer = 2.5f;
		}
	}
	public class SpawnHAT : MonoBehaviour
	{
		public bool isEFTFrameInstalled = true;

		private GameObject HATsystem;

		private void Start()
		{
			isEFTFrameInstalled = Chainloader.PluginInfos.ContainsKey("JerryAr.EFT_Frame");
		}

		private void FixedUpdate()
		{
			//IL_0033: 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_00f0: 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_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)
			if (!isEFTFrameInstalled || EF_BuffSystem_GlobalObject.GetInstance().Config.DisableHATsystem || Object.op_Implicit((Object)(object)HATsystem))
			{
				return;
			}
			Scene activeScene = SceneManager.GetActiveScene();
			if (!(((Scene)(ref activeScene)).name != "MainMenu3") || !((Object)(object)GM.CurrentPlayerBody != (Object)null))
			{
				return;
			}
			if (IM.OD.ContainsKey("EFT Foods hAtSystem"))
			{
				AnvilCallback<GameObject> gameObjectAsync = ((AnvilAsset)IM.OD["EFT Foods hAtSystem"]).GetGameObjectAsync();
				if (Object.op_Implicit((Object)(object)gameObjectAsync.Result))
				{
					HATsystem = Object.Instantiate<GameObject>(gameObjectAsync.Result);
					Console.Write("hAtSystem:Initialed new hAt system object");
				}
				else
				{
					Scene activeScene2 = SceneManager.GetActiveScene();
					Console.Write("hAtSystem:Can't find hAt system object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene2)).name);
				}
			}
			else
			{
				Scene activeScene3 = SceneManager.GetActiveScene();
				Console.Write("hAtSystem:Can't find hAt system object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene3)).name);
			}
		}
	}
	public class SpawnPrefabOnPoint : MonoBehaviour
	{
		public bool isContinus = false;

		public Transform point;

		public GameObject obj;

		public string objname;

		public float timer = 2f;

		public string Name;

		private void Start()
		{
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: 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_0064: 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)
			if (IM.OD.ContainsKey(objname))
			{
				AnvilCallback<GameObject> gameObjectAsync = ((AnvilAsset)IM.OD[objname]).GetGameObjectAsync();
				if (Object.op_Implicit((Object)(object)gameObjectAsync.Result))
				{
					obj = Object.Instantiate<GameObject>(gameObjectAsync.Result);
					obj.transform.position = point.position;
					obj.transform.eulerAngles = point.eulerAngles;
					Console.Write("prefab:Initialed new prefab object");
				}
				else
				{
					Scene activeScene = SceneManager.GetActiveScene();
					Console.Write("prefab:Can't find prefab object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene)).name);
				}
			}
			else
			{
				Scene activeScene2 = SceneManager.GetActiveScene();
				Console.Write("prefab:Can't find prefab object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene2)).name);
			}
		}

		private void FixedUpdate()
		{
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0120: 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_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			if (!isContinus)
			{
				return;
			}
			timer -= Time.deltaTime;
			if (!(timer <= 0f))
			{
				return;
			}
			timer = 2f;
			obj = GameObject.Find(Name);
			if (!((Object)(object)obj == (Object)null))
			{
				return;
			}
			if (IM.OD.ContainsKey(objname))
			{
				AnvilCallback<GameObject> gameObjectAsync = ((AnvilAsset)IM.OD[objname]).GetGameObjectAsync();
				if (Object.op_Implicit((Object)(object)gameObjectAsync.Result))
				{
					obj = Object.Instantiate<GameObject>(gameObjectAsync.Result);
					obj.transform.position = point.position;
					obj.transform.eulerAngles = point.eulerAngles;
					Console.Write("prefab:Initialed new prefab object");
				}
				else
				{
					Scene activeScene = SceneManager.GetActiveScene();
					Console.Write("prefab:Can't find prefab object,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene)).name);
				}
			}
			else
			{
				Scene activeScene2 = SceneManager.GetActiveScene();
				Console.Write("prefab:Can't find prefab object ID,please wait for the assets load or report a bug,current scene name : {0}", ((Scene)(ref activeScene2)).name);
			}
		}
	}
	public class SetOutpoint : MonoBehaviour
	{
		public bool isH3MPInstalled;

		public bool isNGAInstalled;

		public float telecountdown = 1f;

		public bool telecount = false;

		public bool telecount2 = false;

		public bool startcountdown = false;

		public EFTMode modemain;

		public float countdownnum = 3f;

		public bool sceneswitched = false;

		public GameObject countdownboard;

		public Transform hidepoint;

		private void OnTriggerStay(Collider other)
		{
			if ((Object)(object)((Component)other).gameObject == (Object)(object)modemain.playerdetectpoint)
			{
				startcountdown = true;
			}
		}

		private void OnTriggerExit(Collider other)
		{
			if ((Object)(object)((Component)other).gameObject == (Object)(object)modemain.playerdetectpoint)
			{
				startcountdown = false;
			}
		}

		private void Start()
		{
			isNGAInstalled = Chainloader.PluginInfos.ContainsKey("NGA.SafehouseMP");
			isH3MPInstalled = Chainloader.PluginInfos.ContainsKey("VIP.TommySoucy.H3MP");
		}

		private void FixedUpdate()
		{
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: 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_0158: 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)
			if (!isNGAInstalled)
			{
				((Component)this).gameObject.SetActive(false);
			}
			else if (isNGAInstalled)
			{
				if (telecount)
				{
					telecountdown -= Time.deltaTime;
				}
				if (telecountdown < 0f && !telecount2)
				{
					telecount = false;
					telecount2 = true;
					modemain.escape.SetActive(true);
					GM.CurrentMovementManager.TeleportToPoint(((Component)hidepoint).transform.position, true, ((Component)hidepoint).transform.localEulerAngles);
				}
				if (countdownnum < 2f)
				{
					SteamVR_Fade.Start(new Color(0f, 0f, 0f, 1f), 0.25f, false);
					telecount = true;
				}
				if (countdownnum < 0f && !sceneswitched)
				{
					Save();
					Escape();
					startcountdown = false;
					sceneswitched = true;
				}
				if (startcountdown)
				{
					countdownboard.SetActive(true);
					countdownboard.transform.position = ((Component)GM.CurrentMovementManager.Head).transform.position;
					countdownboard.transform.eulerAngles = ((Component)GM.CurrentMovementManager.Head).transform.eulerAngles;
					countdownnum -= 1f * Time.deltaTime;
				}
				if (!startcountdown)
				{
					countdownboard.SetActive(false);
					countdownnum = 3f;
				}
			}
		}

		private void Save()
		{
			//IL_0325: Unknown result type (might be due to invalid IL or missing references)
			//IL_032c: Expected O, but got Unknown
			//IL_022d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0234: Expected O, but got Unknown
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Expected O, but got Unknown
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Expected O, but got Unknown
			//IL_0380: Unknown result type (might be due to invalid IL or missing references)
			//IL_0387: Expected O, but got Unknown
			//IL_038e: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0291: Expected O, but got Unknown
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Expected O, but got Unknown
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Expected O, but got Unknown
			if (isH3MPInstalled)
			{
				if (Client.isFullyConnected)
				{
					if (ThreadManager.host)
					{
						VaultFile val = new VaultFile();
						if (VaultSystem.FindAndScanObjectsInScene(val))
						{
							string text = "EFTHideOut_Standard_Edition_SaveFile";
							if (!VaultSystem.SaveVaultFile(text, (VaultFileDisplayMode)2, val))
							{
								Debug.Log((object)"ERROR: Scene Vault save failed");
							}
							else
							{
								int num = 0;
								if (num == 1)
								{
									VaultFile val2 = new VaultFile();
									if (VaultSystem.FindAndScanObjectsInScene(val2))
									{
										string text2 = DateTime.Now.ToString("yyyyMMdd_HHmmss");
										string text3 = SafehouseMP.GetSafehouseName() + "_" + SafehouseMP.safehouse_backup_filename + "_" + text2;
										if (!VaultSystem.SaveVaultFile(text3, (VaultFileDisplayMode)2, val2))
										{
											Debug.Log((object)"ERROR: BACKUP Scene Vault save failed");
										}
									}
								}
							}
						}
						else
						{
							Debug.Log((object)"ERROR: Scene scan failed");
						}
					}
				}
				else if (!Client.isFullyConnected)
				{
					VaultFile val3 = new VaultFile();
					if (VaultSystem.FindAndScanObjectsInScene(val3))
					{
						string text4 = "EFTHideOut_Standard_Edition_SaveFile";
						if (!VaultSystem.SaveVaultFile(text4, (VaultFileDisplayMode)2, val3))
						{
							Debug.Log((object)"ERROR: Scene Vault save failed");
						}
						else
						{
							int num2 = 0;
							if (num2 == 1)
							{
								VaultFile val4 = new VaultFile();
								if (VaultSystem.FindAndScanObjectsInScene(val4))
								{
									string text5 = DateTime.Now.ToString("yyyyMMdd_HHmmss");
									string text6 = SafehouseMP.GetSafehouseName() + "_" + SafehouseMP.safehouse_backup_filename + "_" + text5;
									if (!VaultSystem.SaveVaultFile(text6, (VaultFileDisplayMode)2, val4))
									{
										Debug.Log((object)"ERROR: BACKUP Scene Vault save failed");
									}
								}
							}
						}
					}
					else
					{
						Debug.Log((object)"ERROR: Scene scan failed");
					}
				}
			}
			else if (!isH3MPInstalled)
			{
				VaultFile val5 = new VaultFile();
				if (VaultSystem.FindAndScanObjectsInScene(val5))
				{
					string text7 = "EFTHideOut_Standard_Edition_SaveFile";
					if (!VaultSystem.SaveVaultFile(text7, (VaultFileDisplayMode)2, val5))
					{
						Debug.Log((object)"ERROR: Scene Vault save failed");
					}
					else
					{
						int num3 = 0;
						if (num3 == 1)
						{
							VaultFile val6 = new VaultFile();
							if (VaultSystem.FindAndScanObjectsInScene(val6))
							{
								string text8 = DateTime.Now.ToString("yyyyMMdd_HHmmss");
								string text9 = SafehouseMP.GetSafehouseName() + "_" + SafehouseMP.safehouse_backup_filename + "_" + text8;
								if (!VaultSystem.SaveVaultFile(text9, (VaultFileDisplayMode)2, val6))
								{
									Debug.Log((object)"ERROR: BACKUP Scene Vault save failed");
								}
							}
						}
					}
				}
				else
				{
					Debug.Log((object)"ERROR: Scene scan failed");
				}
			}
			VaultFile val7 = new VaultFile();
			if (VaultSystem.FindAndScanObjectsInQuickbelt(val7))
			{
				if (!VaultSystem.SaveVaultFile(SafehouseMP.raid_extracted_loadout_filename, (VaultFileDisplayMode)1, val7))
				{
					Debug.Log((object)"ERROR: Saving loadout failed.");
				}
				else if (SafehouseMP.config_delete_loadout_on_save.Value)
				{
					VaultFile val8 = new VaultFile();
					FVRPlayerBody val9 = Object.FindObjectOfType<FVRPlayerBody>();
					Transform transform = new GameObject().transform;
					transform.position = ((Component)val9).transform.position;
					string text10 = default(string);
					if (!VaultSystem.SpawnObjects((VaultFileDisplayMode)1, val8, ref text10, transform, Vector3.zero))
					{
						Debug.Log((object)("ERROR: Couldn't spawn empty loadout w status: " + text10));
					}
				}
			}
			else
			{
				Debug.Log((object)"ERROR: Quickbelt scan failed.");
			}
		}

		private void Escape()
		{
			for (int i = 0; i < GM.CurrentSceneSettings.QuitReceivers.Count; i++)
			{
				GM.CurrentSceneSettings.QuitReceivers[i].BroadcastMessage("QUIT", (SendMessageOptions)1);
			}
			if (((AnvilCallbackBase)GM.LoadingCallback).IsCompleted)
			{
				CustomSceneInfo customScene = AtlasPlugin.GetCustomScene("FactoryExt");
				if (customScene != null)
				{
					AtlasPlugin.LoadCustomScene("FactoryExt");
				}
				else
				{
					SteamVR_LoadLevel.Begin("FactoryExt", false, 0f, 0f, 0f, 0f, 1f);
				}
			}
		}
	}
	public class SpawnAIScene : MonoBehaviour
	{
		public bool moved = false;

		pub