Decompiled source of Distant Picker v1.0.0

DistantPicker.dll

Decompiled 6 hours ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using HG.Reflection;
using On.RoR2;
using On.RoR2.UI;
using R2API.Utils;
using RiskOfOptions;
using RiskOfOptions.Options;
using RoR2;
using RoR2.UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("DistantPicker")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("DistantPicker")]
[assembly: AssemblyTitle("DistantPicker")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace DistantItemPick;

[Serializable]
[BepInPlugin("com.brynzananas.remoteinteractor", "Remote Interactor", "1.0.0")]
[BepInDependency("com.bepis.r2api", "5.0.10")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
public class Main : BaseUnityPlugin
{
	public const string ModGuid = "com.brynzananas.remoteinteractor";

	public const string ModName = "Remote Interactor";

	public const string ModVer = "1.0.0";

	public static ConfigEntry<KeyboardShortcut> OpenPickupMenu;

	public static ConfigEntry<KeyboardShortcut> OpenInteractableMenu;

	public static ConfigEntry<KeyboardShortcut> MenuScrollUp;

	public static ConfigEntry<KeyboardShortcut> MenuScrollDown;

	public static ConfigEntry<KeyboardShortcut> PickSelected;

	public static ConfigEntry<KeyboardShortcut> InspectSelected;

	public static ConfigEntry<Color> TextColor;

	public static ConfigEntry<Color> OutlineColor;

	public static ConfigEntry<float> PickerXPosition;

	public static ConfigEntry<float> PickerYPosition;

	public static ConfigEntry<float> PickerScale;

	private Sprite modIcon;

	[SyncVar]
	public static List<PurchaseInteraction> interactableList = new List<PurchaseInteraction>();

	public static int interactableIndex = 0;

	public Sprite lunarcoin;

	public RenderTexture renderTexture;

	public GameObject copyUI;

	public Sprite background;

	public PositionIndicator positionIndicator;

	private HUD hud = null;

	public GameObject hudBackgroundImageObject;

	public RectTransform BackgroundImageRectTransform;

	public GameObject hudItemToPickupImageObject;

	public GameObject hudItemToPickupTextObject;

	public RectTransform ItemImageRectTransform;

	public RectTransform ItemTextRectTransform;

	public GameObject hudInteractableImageObject;

	public GameObject hudInteractableTextObject;

	public RectTransform InteractableImageRectTransform;

	public RectTransform InteractableTextRectTransform;

	[SyncVar]
	public static List<GenericPickupController> pickupList = new List<GenericPickupController>();

	public static int pickupIndex = 0;

	public static bool updateItemHud = false;

	public static bool updateInteractableHud = false;

	private void Awake()
	{
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c4: 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_0113: 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_01bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c6: Expected O, but got Unknown
		//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d6: Expected O, but got Unknown
		//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e6: Expected O, but got Unknown
		//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f6: Expected O, but got Unknown
		//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0206: Expected O, but got Unknown
		//IL_020c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0216: Expected O, but got Unknown
		//IL_021c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0226: Expected O, but got Unknown
		//IL_022c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0236: Expected O, but got Unknown
		//IL_023c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0246: Expected O, but got Unknown
		//IL_024c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0256: Expected O, but got Unknown
		//IL_025c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0266: Expected O, but got Unknown
		//IL_026e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0278: Expected O, but got Unknown
		//IL_0280: Unknown result type (might be due to invalid IL or missing references)
		//IL_028a: Expected O, but got Unknown
		//IL_0292: Unknown result type (might be due to invalid IL or missing references)
		//IL_029c: Expected O, but got Unknown
		//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ae: Expected O, but got Unknown
		//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c0: Expected O, but got Unknown
		//IL_02c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d2: Expected O, but got Unknown
		//IL_02da: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e4: Expected O, but got Unknown
		//IL_0330: Unknown result type (might be due to invalid IL or missing references)
		//IL_0335: Unknown result type (might be due to invalid IL or missing references)
		//IL_0348: Unknown result type (might be due to invalid IL or missing references)
		//IL_034d: Unknown result type (might be due to invalid IL or missing references)
		OpenPickupMenu = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Open pickup picker", new KeyboardShortcut((KeyCode)120, Array.Empty<KeyCode>()), "Set a keybind to open picker menu");
		OpenInteractableMenu = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Open interactable picker", new KeyboardShortcut((KeyCode)122, Array.Empty<KeyCode>()), "Set a keybind to open picker menu");
		MenuScrollUp = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Picker sroll up", new KeyboardShortcut((KeyCode)98, Array.Empty<KeyCode>()), "Set a keybind to scrol picker slot to next the next one");
		MenuScrollDown = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Picker sroll down", new KeyboardShortcut((KeyCode)118, Array.Empty<KeyCode>()), "Set a keybind to scrol picker slot to next the previous one");
		PickSelected = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Pick selected", new KeyboardShortcut((KeyCode)99, Array.Empty<KeyCode>()), "Set a keybind to pick selection");
		InspectSelected = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Inspect pickup", new KeyboardShortcut((KeyCode)9, Array.Empty<KeyCode>()), "Set a keybind to inspect selection");
		TextColor = ((BaseUnityPlugin)this).Config.Bind<Color>("General", "Text color", Color.white, "Choose the text color");
		OutlineColor = ((BaseUnityPlugin)this).Config.Bind<Color>("General", "Outline color", Color.black, "Choose the outline color");
		PickerXPosition = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Picker X position", 525f, "Control horizontal position of the picker");
		PickerYPosition = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Picker Y position", 315f, "Control vertical position of the picker");
		PickerScale = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Picker scale", 0.4f, "Control X position of the picker");
		ModSettingsManager.AddOption((BaseOption)new KeyBindOption(OpenPickupMenu));
		ModSettingsManager.AddOption((BaseOption)new KeyBindOption(OpenInteractableMenu));
		ModSettingsManager.AddOption((BaseOption)new KeyBindOption(MenuScrollUp));
		ModSettingsManager.AddOption((BaseOption)new KeyBindOption(MenuScrollDown));
		ModSettingsManager.AddOption((BaseOption)new KeyBindOption(PickSelected));
		ModSettingsManager.AddOption((BaseOption)new KeyBindOption(InspectSelected));
		ModSettingsManager.AddOption((BaseOption)new ColorOption(TextColor));
		ModSettingsManager.AddOption((BaseOption)new ColorOption(OutlineColor));
		ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(PickerXPosition));
		ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(PickerYPosition));
		ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(PickerScale));
		HUD.Awake += new hook_Awake(AwakeHud);
		HUD.Update += new hook_Update(UpdateNumbers);
		GenericPickupController.OnEnable += new hook_OnEnable(AddToList);
		GenericPickupController.OnDisable += new hook_OnDisable(RemoveFromList);
		PurchaseInteraction.Awake += new hook_Awake(AddToChestList);
		PurchaseInteraction.OnInteractionBegin += new hook_OnInteractionBegin(UpdateFromChestList);
		PurchaseInteraction.OnDisable += new hook_OnDisable(RemoveFromChestList);
		PickerXPosition.SettingChanged += UpdateHud;
		PickerYPosition.SettingChanged += UpdateHud;
		PickerScale.SettingChanged += UpdateHud;
		lunarcoin = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/UI/texCoinsIcon.png").WaitForCompletion();
		background = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/UI/texUIAnimateSliceNakedButton.png").WaitForCompletion();
		modIcon = LoadSpriteFromDisk();
		if (Object.op_Implicit((Object)(object)modIcon))
		{
			ModSettingsManager.SetModIcon(modIcon);
		}
	}

	private Sprite LoadSpriteFromDisk()
	{
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Expected O, but got Unknown
		//IL_0065: 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)
		string path = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "icon.png");
		if (!File.Exists(path))
		{
			return null;
		}
		byte[] array = File.ReadAllBytes(path);
		Texture2D val = new Texture2D(2, 2);
		if (ImageConversion.LoadImage(val, array))
		{
			return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f));
		}
		return null;
	}

	private void RemoveFromChestList(orig_OnDisable orig, PurchaseInteraction self)
	{
		interactableList.Remove(self);
		if (interactableIndex >= interactableList.Count)
		{
			interactableIndex = interactableList.Count - 1;
		}
		updateInteractableHud = true;
		orig.Invoke(self);
	}

	private void UpdateFromChestList(orig_OnInteractionBegin orig, PurchaseInteraction self, Interactor activator)
	{
		orig.Invoke(self, activator);
		if (interactableIndex >= interactableList.Count)
		{
			interactableIndex = interactableList.Count - 1;
		}
		updateInteractableHud = true;
	}

	private void AddToChestList(orig_Awake orig, PurchaseInteraction self)
	{
		orig.Invoke(self);
		if (!((Object)self).name.Contains("NewtStatue"))
		{
			interactableList.Add(self);
		}
	}

	[ClientRpc]
	private static void RemoveFromAll(PurchaseInteraction self)
	{
		if (interactableIndex >= interactableList.Count)
		{
			interactableIndex = interactableList.Count - 1;
		}
		interactableList.Remove(self);
	}

	[ClientRpc]
	private static void UpdateForAll()
	{
		updateInteractableHud = true;
		updateItemHud = true;
	}

	[ClientRpc]
	private static void SyncLists(List<PurchaseInteraction> list)
	{
		interactableList = list;
	}

	[ClientRpc]
	private static void SyncLists(List<GenericPickupController> list)
	{
		pickupList = list;
	}

	private void UpdateHud(object sender, EventArgs e)
	{
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_0080: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00aa: 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)
		//IL_0105: Unknown result type (might be due to invalid IL or missing references)
		//IL_010a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0134: Unknown result type (might be due to invalid IL or missing references)
		//IL_0159: Unknown result type (might be due to invalid IL or missing references)
		//IL_015e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0188: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01be: Unknown result type (might be due to invalid IL or missing references)
		((Transform)ItemImageRectTransform).localPosition = new Vector3(PickerXPosition.Value, PickerYPosition.Value, 0f);
		((Transform)ItemImageRectTransform).localScale = Vector2.op_Implicit(new Vector2(PickerScale.Value / 5f, PickerScale.Value / 5f));
		((Transform)ItemTextRectTransform).localPosition = new Vector3(PickerXPosition.Value, PickerYPosition.Value, 0f);
		((Transform)ItemTextRectTransform).localScale = Vector2.op_Implicit(new Vector2(PickerScale.Value, PickerScale.Value));
		((Transform)InteractableImageRectTransform).localPosition = new Vector3(PickerXPosition.Value, PickerYPosition.Value, 0f);
		((Transform)InteractableImageRectTransform).localScale = Vector2.op_Implicit(new Vector2(PickerScale.Value / 5f, PickerScale.Value / 5f));
		((Transform)InteractableTextRectTransform).localPosition = new Vector3(PickerXPosition.Value, PickerYPosition.Value, 0f);
		((Transform)InteractableTextRectTransform).localScale = Vector2.op_Implicit(new Vector2(PickerScale.Value, PickerScale.Value));
		((Transform)BackgroundImageRectTransform).localPosition = new Vector3(PickerXPosition.Value, PickerYPosition.Value, 0f);
		((Transform)BackgroundImageRectTransform).localScale = Vector2.op_Implicit(new Vector2(PickerScale.Value / 5f, PickerScale.Value / 5f));
	}

	private void UpdateNumbers(orig_Update orig, HUD self)
	{
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_05c3: 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_046b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0470: Unknown result type (might be due to invalid IL or missing references)
		//IL_0473: 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_06f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_06f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_077b: Unknown result type (might be due to invalid IL or missing references)
		//IL_078d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0792: Unknown result type (might be due to invalid IL or missing references)
		//IL_07c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_07dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_04e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ef: Invalid comparison between Unknown and I4
		//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0534: Unknown result type (might be due to invalid IL or missing references)
		//IL_0174: Unknown result type (might be due to invalid IL or missing references)
		//IL_017f: 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_02c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0344: Unknown result type (might be due to invalid IL or missing references)
		//IL_0356: Unknown result type (might be due to invalid IL or missing references)
		//IL_035b: Unknown result type (might be due to invalid IL or missing references)
		//IL_038b: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
		orig.Invoke(self);
		KeyboardShortcut value;
		if (updateItemHud && Object.op_Implicit((Object)(object)hudItemToPickupImageObject))
		{
			if (pickupList.Count > 0)
			{
				value = OpenPickupMenu.Value;
				if (Input.GetKey(((KeyboardShortcut)(ref value)).MainKey))
				{
					PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupList[pickupIndex].pickupIndex);
					if (pickupDef != null)
					{
						Sprite iconSprite = pickupDef.iconSprite;
						string text = Language.GetString(((PickupIndex)(ref pickupList[pickupIndex].pickupIndex)).GetPickupNameToken());
						ItemDef itemDef = ItemCatalog.GetItemDef((ItemIndex)((pickupDef == null) ? (-1) : ((int)pickupDef.itemIndex)));
						int num = 0;
						foreach (GenericPickupController pickup in pickupList)
						{
							if (PickupCatalog.GetPickupDef(pickup.pickupIndex) == pickupDef)
							{
								num++;
							}
						}
						if (num > 1)
						{
							text = text + " [" + num + "]";
						}
						if (!Object.op_Implicit((Object)(object)iconSprite))
						{
							iconSprite = lunarcoin;
						}
						if (!Object.op_Implicit((Object)(object)positionIndicator))
						{
							positionIndicator = Object.Instantiate<GameObject>(LegacyResourcesAPI.Load<GameObject>("Prefabs/PositionIndicators/PoiPositionIndicator"), ((Component)this).transform.position, ((Component)this).transform.rotation).GetComponent<PositionIndicator>();
							positionIndicator.insideViewObject.GetComponent<SpriteRenderer>().sprite = iconSprite;
						}
						if ((Object)(object)positionIndicator.insideViewObject.GetComponent<SpriteRenderer>().sprite != (Object)(object)iconSprite)
						{
							positionIndicator.insideViewObject.GetComponent<SpriteRenderer>().sprite = iconSprite;
						}
						positionIndicator.targetTransform = ((Component)pickupList[pickupIndex]).gameObject.transform;
						if (!Object.op_Implicit((Object)(object)hudBackgroundImageObject.GetComponent<Image>()))
						{
							Image val = hudBackgroundImageObject.AddComponent<Image>();
							val.sprite = background;
						}
						if (!Object.op_Implicit((Object)(object)hudItemToPickupImageObject.GetComponent<Image>()))
						{
							Image val2 = hudItemToPickupImageObject.AddComponent<Image>();
							val2.sprite = iconSprite;
						}
						else
						{
							hudItemToPickupImageObject.GetComponent<Image>().sprite = iconSprite;
						}
						if (!Object.op_Implicit((Object)(object)hudItemToPickupTextObject.GetComponent<Text>()))
						{
							Text val3 = hudItemToPickupTextObject.AddComponent<Text>();
							val3.font = Addressables.LoadAssetAsync<Font>((object)"RoR2/Base/Common/Fonts/Bombardier/BOMBARD_.ttf").WaitForCompletion();
							val3.fontStyle = (FontStyle)0;
							val3.fontSize = 32;
							val3.lineSpacing = 1f;
							val3.supportRichText = true;
							val3.alignment = (TextAnchor)4;
							val3.alignByGeometry = true;
							val3.horizontalOverflow = (HorizontalWrapMode)0;
							val3.verticalOverflow = (VerticalWrapMode)1;
							val3.resizeTextForBestFit = true;
							val3.text = text;
							((Object)val3).name = "pickupNameText";
							((Graphic)val3).color = TextColor.Value;
							((Graphic)val3).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/Fonts/Bombardier/BOMBARD_.ttf").WaitForCompletion();
							hudItemToPickupTextObject.AddComponent<Outline>();
							((Shadow)hudItemToPickupTextObject.GetComponent<Outline>()).effectDistance = new Vector2(2f, 2f);
							((Shadow)hudItemToPickupTextObject.GetComponent<Outline>()).effectColor = OutlineColor.Value;
						}
						else
						{
							hudItemToPickupTextObject.GetComponent<Text>().text = text;
						}
					}
					goto IL_0433;
				}
			}
			if (Object.op_Implicit((Object)(object)hudItemToPickupImageObject.GetComponent<Image>()))
			{
				Object.Destroy((Object)(object)hudItemToPickupImageObject.GetComponent<Image>());
			}
			if (Object.op_Implicit((Object)(object)hudItemToPickupTextObject.GetComponent<Text>()))
			{
				Object.Destroy((Object)(object)hudItemToPickupTextObject.GetComponent<Text>());
				Object.Destroy((Object)(object)hudItemToPickupTextObject.GetComponent<Outline>());
			}
			goto IL_0433;
		}
		goto IL_043a;
		IL_043a:
		if (updateInteractableHud && Object.op_Implicit((Object)(object)hudInteractableImageObject))
		{
			if (interactableList.Count > 0)
			{
				value = OpenInteractableMenu.Value;
				if (Input.GetKey(((KeyboardShortcut)(ref value)).MainKey))
				{
					PurchaseInteraction val4 = (Object.op_Implicit((Object)(object)interactableList[interactableIndex]) ? interactableList[interactableIndex] : null);
					if ((Object)(object)val4 != (Object)null)
					{
						Sprite interactableIcon = PingIndicator.GetInteractableIcon(((Component)val4).gameObject);
						string text2 = Language.GetString(val4.displayNameToken, Language.currentLanguageName);
						if ((int)val4.costType == 1)
						{
							text2 = text2 + "\n$$$: " + val4.cost;
						}
						ShopTerminalBehavior component = ((Component)val4).GetComponent<ShopTerminalBehavior>();
						try
						{
							if (Object.op_Implicit((Object)(object)component))
							{
								text2 = text2 + "\nItem: " + Language.GetString(PickupCatalog.GetPickupDef(component.CurrentPickupIndex()).nameToken);
							}
						}
						catch
						{
						}
						if (!val4.available)
						{
							text2 += "\nUnavailable";
						}
						if (!Object.op_Implicit((Object)(object)interactableIcon))
						{
							interactableIcon = lunarcoin;
						}
						if (!Object.op_Implicit((Object)(object)positionIndicator))
						{
							positionIndicator = Object.Instantiate<GameObject>(LegacyResourcesAPI.Load<GameObject>("Prefabs/PositionIndicators/PoiPositionIndicator"), ((Component)this).transform.position, ((Component)this).transform.rotation).GetComponent<PositionIndicator>();
							positionIndicator.insideViewObject.GetComponent<SpriteRenderer>().sprite = interactableIcon;
						}
						if ((Object)(object)positionIndicator.insideViewObject.GetComponent<SpriteRenderer>().sprite != (Object)(object)interactableIcon)
						{
							positionIndicator.insideViewObject.GetComponent<SpriteRenderer>().sprite = interactableIcon;
						}
						positionIndicator.targetTransform = ((Component)val4).gameObject.transform;
						if (!Object.op_Implicit((Object)(object)hudBackgroundImageObject.GetComponent<Image>()))
						{
							Image val5 = hudBackgroundImageObject.AddComponent<Image>();
							val5.sprite = background;
						}
						if (!Object.op_Implicit((Object)(object)hudInteractableImageObject.GetComponent<Image>()))
						{
							Image val6 = hudInteractableImageObject.AddComponent<Image>();
							val6.sprite = interactableIcon;
						}
						else
						{
							hudInteractableImageObject.GetComponent<Image>().sprite = interactableIcon;
						}
						if (!Object.op_Implicit((Object)(object)hudInteractableTextObject.GetComponent<Text>()))
						{
							Text val7 = hudInteractableTextObject.AddComponent<Text>();
							val7.font = Addressables.LoadAssetAsync<Font>((object)"RoR2/Base/Common/Fonts/Bombardier/BOMBARD_.ttf").WaitForCompletion();
							val7.fontStyle = (FontStyle)0;
							val7.fontSize = 32;
							val7.lineSpacing = 1f;
							val7.supportRichText = true;
							val7.alignment = (TextAnchor)4;
							val7.alignByGeometry = true;
							val7.horizontalOverflow = (HorizontalWrapMode)0;
							val7.verticalOverflow = (VerticalWrapMode)1;
							val7.resizeTextForBestFit = true;
							val7.text = text2;
							((Object)val7).name = "interactableNameText";
							((Graphic)val7).color = TextColor.Value;
							((Graphic)val7).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/Fonts/Bombardier/BOMBARD_.ttf").WaitForCompletion();
							hudInteractableTextObject.AddComponent<Outline>();
							((Shadow)hudInteractableTextObject.GetComponent<Outline>()).effectDistance = new Vector2(2f, 2f);
							((Shadow)hudInteractableTextObject.GetComponent<Outline>()).effectColor = OutlineColor.Value;
						}
						else
						{
							hudInteractableTextObject.GetComponent<Text>().text = text2;
						}
					}
					goto IL_0869;
				}
			}
			if (Object.op_Implicit((Object)(object)hudInteractableImageObject.GetComponent<Image>()))
			{
				Object.Destroy((Object)(object)hudInteractableImageObject.GetComponent<Image>());
			}
			if (Object.op_Implicit((Object)(object)hudInteractableTextObject.GetComponent<Text>()))
			{
				Object.Destroy((Object)(object)hudInteractableTextObject.GetComponent<Text>());
				Object.Destroy((Object)(object)hudInteractableTextObject.GetComponent<Outline>());
			}
			goto IL_0869;
		}
		goto IL_0870;
		IL_0433:
		updateItemHud = false;
		goto IL_043a;
		IL_0870:
		if (Object.op_Implicit((Object)(object)hudInteractableImageObject.GetComponent<Image>()) || Object.op_Implicit((Object)(object)hudItemToPickupImageObject.GetComponent<Image>()))
		{
			return;
		}
		if (Object.op_Implicit((Object)(object)positionIndicator))
		{
			if (Object.op_Implicit((Object)(object)positionIndicator.insideViewObject.GetComponent<SpriteRenderer>()))
			{
				Object.Destroy((Object)(object)positionIndicator.insideViewObject.GetComponent<SpriteRenderer>());
			}
			if (Object.op_Implicit((Object)(object)positionIndicator.outsideViewObject.GetComponent<SpriteRenderer>()))
			{
				Object.Destroy((Object)(object)positionIndicator.outsideViewObject.GetComponent<SpriteRenderer>());
			}
			if (Object.op_Implicit((Object)(object)positionIndicator.outsideViewObject))
			{
				Object.Destroy((Object)(object)positionIndicator.outsideViewObject);
			}
			positionIndicator.targetTransform = null;
			Object.Destroy((Object)(object)positionIndicator);
		}
		if (Object.op_Implicit((Object)(object)hudBackgroundImageObject.GetComponent<Image>()))
		{
			Object.Destroy((Object)(object)hudBackgroundImageObject.GetComponent<Image>());
		}
		return;
		IL_0869:
		updateInteractableHud = false;
		goto IL_0870;
	}

	private void AwakeHud(orig_Awake orig, HUD self)
	{
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Expected O, but got Unknown
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0124: Unknown result type (might be due to invalid IL or missing references)
		//IL_0135: Unknown result type (might be due to invalid IL or missing references)
		//IL_013f: Expected O, but got Unknown
		//IL_0181: Unknown result type (might be due to invalid IL or missing references)
		//IL_019c: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0214: Unknown result type (might be due to invalid IL or missing references)
		//IL_0219: Unknown result type (might be due to invalid IL or missing references)
		//IL_0243: Unknown result type (might be due to invalid IL or missing references)
		//IL_0254: Unknown result type (might be due to invalid IL or missing references)
		//IL_025e: Expected O, but got Unknown
		//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0302: Unknown result type (might be due to invalid IL or missing references)
		//IL_0327: Unknown result type (might be due to invalid IL or missing references)
		//IL_032c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0356: Unknown result type (might be due to invalid IL or missing references)
		//IL_0367: Unknown result type (might be due to invalid IL or missing references)
		//IL_0371: Expected O, but got Unknown
		//IL_03b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_03df: Unknown result type (might be due to invalid IL or missing references)
		//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0415: Unknown result type (might be due to invalid IL or missing references)
		//IL_0446: Unknown result type (might be due to invalid IL or missing references)
		//IL_044b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0475: Unknown result type (might be due to invalid IL or missing references)
		//IL_0486: Unknown result type (might be due to invalid IL or missing references)
		//IL_0490: Expected O, but got Unknown
		//IL_04d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_04fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_0519: Unknown result type (might be due to invalid IL or missing references)
		//IL_0534: Unknown result type (might be due to invalid IL or missing references)
		//IL_0559: Unknown result type (might be due to invalid IL or missing references)
		//IL_055e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0588: Unknown result type (might be due to invalid IL or missing references)
		orig.Invoke(self);
		hud = self;
		hudBackgroundImageObject = new GameObject("pickerBackgroundImage");
		hudBackgroundImageObject.transform.SetParent(hud.mainContainer.transform);
		BackgroundImageRectTransform = hudBackgroundImageObject.AddComponent<RectTransform>();
		BackgroundImageRectTransform.anchorMin = new Vector2(0.25f, 0f);
		BackgroundImageRectTransform.anchorMax = new Vector2(0.75f, 1f);
		BackgroundImageRectTransform.sizeDelta = Vector2.zero;
		BackgroundImageRectTransform.pivot = new Vector2(0.5f, 0.5f);
		BackgroundImageRectTransform.anchoredPosition = new Vector2(0.5f, 0.5f);
		((Transform)BackgroundImageRectTransform).localScale = Vector2.op_Implicit(new Vector2(PickerScale.Value / 5f, PickerScale.Value / 5f));
		((Transform)BackgroundImageRectTransform).localPosition = new Vector3(PickerXPosition.Value, PickerYPosition.Value, 0f);
		hudItemToPickupImageObject = new GameObject("pickerPickupImage");
		hudItemToPickupImageObject.transform.SetParent(hud.mainContainer.transform);
		ItemImageRectTransform = hudItemToPickupImageObject.AddComponent<RectTransform>();
		ItemImageRectTransform.anchorMin = new Vector2(0.25f, 0f);
		ItemImageRectTransform.anchorMax = new Vector2(0.75f, 1f);
		ItemImageRectTransform.sizeDelta = Vector2.zero;
		ItemImageRectTransform.pivot = new Vector2(0.5f, 0.5f);
		ItemImageRectTransform.anchoredPosition = new Vector2(0.5f, 0.5f);
		((Transform)ItemImageRectTransform).localScale = Vector2.op_Implicit(new Vector2(PickerScale.Value / 5f, PickerScale.Value / 5f));
		((Transform)ItemImageRectTransform).localPosition = new Vector3(PickerXPosition.Value, PickerYPosition.Value, 0f);
		hudItemToPickupTextObject = new GameObject("pickerPickupText");
		hudItemToPickupTextObject.transform.SetParent(hud.mainContainer.transform);
		ItemTextRectTransform = hudItemToPickupTextObject.AddComponent<RectTransform>();
		ItemTextRectTransform.anchorMin = new Vector2(0.25f, 0f);
		ItemTextRectTransform.anchorMax = new Vector2(0.75f, 1f);
		ItemTextRectTransform.sizeDelta = Vector2.zero;
		ItemTextRectTransform.pivot = new Vector2(0.5f, 0.5f);
		ItemTextRectTransform.anchoredPosition = new Vector2(0.5f, 0.5f);
		((Transform)ItemTextRectTransform).localScale = Vector2.op_Implicit(new Vector2(PickerScale.Value, PickerScale.Value));
		((Transform)ItemTextRectTransform).localPosition = new Vector3(PickerXPosition.Value, PickerYPosition.Value, 0f);
		hudInteractableImageObject = new GameObject("pickerInteractableImage");
		hudInteractableImageObject.transform.SetParent(hud.mainContainer.transform);
		InteractableImageRectTransform = hudInteractableImageObject.AddComponent<RectTransform>();
		InteractableImageRectTransform.anchorMin = new Vector2(0.25f, 0f);
		InteractableImageRectTransform.anchorMax = new Vector2(0.75f, 1f);
		InteractableImageRectTransform.sizeDelta = Vector2.zero;
		InteractableImageRectTransform.pivot = new Vector2(0.5f, 0.5f);
		InteractableImageRectTransform.anchoredPosition = new Vector2(0.5f, 0.5f);
		((Transform)InteractableImageRectTransform).localScale = Vector2.op_Implicit(new Vector2(PickerScale.Value / 5f, PickerScale.Value / 5f));
		((Transform)InteractableImageRectTransform).localPosition = new Vector3(PickerXPosition.Value, PickerYPosition.Value, 0f);
		hudInteractableTextObject = new GameObject("pickerInteractableText");
		hudInteractableTextObject.transform.SetParent(hud.mainContainer.transform);
		InteractableTextRectTransform = hudInteractableTextObject.AddComponent<RectTransform>();
		InteractableTextRectTransform.anchorMin = new Vector2(0.25f, 0f);
		InteractableTextRectTransform.anchorMax = new Vector2(0.75f, 1f);
		InteractableTextRectTransform.sizeDelta = Vector2.zero;
		InteractableTextRectTransform.pivot = new Vector2(0.5f, 0.5f);
		InteractableTextRectTransform.anchoredPosition = new Vector2(0.5f, 0.5f);
		((Transform)InteractableTextRectTransform).localScale = Vector2.op_Implicit(new Vector2(PickerScale.Value, PickerScale.Value));
		((Transform)InteractableTextRectTransform).localPosition = new Vector3(PickerXPosition.Value, PickerYPosition.Value, 0f);
	}

	private void AddToList(orig_OnEnable orig, GenericPickupController self)
	{
		orig.Invoke(self);
		pickupList.Add(self);
	}

	private void RemoveFromList(orig_OnDisable orig, GenericPickupController self)
	{
		pickupList.Remove(self);
		if (pickupIndex >= pickupList.Count)
		{
			pickupIndex = 0;
		}
		updateItemHud = true;
		orig.Invoke(self);
	}

	[ConCommand(/*Could not decode attribute arguments.*/)]
	private static void JustInteract(ConCommandArgs args)
	{
		if (Object.op_Implicit((Object)(object)((ConCommandArgs)(ref args)).senderBody) && Object.op_Implicit((Object)(object)((Component)((ConCommandArgs)(ref args)).senderBody).GetComponent<Interactor>()))
		{
			int argInt = ((ConCommandArgs)(ref args)).GetArgInt(0);
			interactableList[argInt].OnInteractionBegin(((Component)((ConCommandArgs)(ref args)).senderBody).GetComponent<Interactor>());
			SyncLists(interactableList);
		}
	}

	[ConCommand(/*Could not decode attribute arguments.*/)]
	private static void JustGrant(ConCommandArgs args)
	{
		if (Object.op_Implicit((Object)(object)((ConCommandArgs)(ref args)).senderBody))
		{
			int argInt = ((ConCommandArgs)(ref args)).GetArgInt(0);
			pickupList[argInt].AttemptGrant(((ConCommandArgs)(ref args)).senderBody);
			SyncLists(pickupList);
		}
	}

	private void Update()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0318: Unknown result type (might be due to invalid IL or missing references)
		//IL_031d: 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_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_0073: 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_00be: 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_02c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_02cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_037f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0384: Unknown result type (might be due to invalid IL or missing references)
		//IL_0387: 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_00f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0581: Unknown result type (might be due to invalid IL or missing references)
		//IL_0586: Unknown result type (might be due to invalid IL or missing references)
		//IL_0589: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_013c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0403: Unknown result type (might be due to invalid IL or missing references)
		//IL_0408: Unknown result type (might be due to invalid IL or missing references)
		//IL_040b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0152: Unknown result type (might be due to invalid IL or missing references)
		//IL_0157: Unknown result type (might be due to invalid IL or missing references)
		//IL_015a: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_05eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_05d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0454: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a7: 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_01af: Unknown result type (might be due to invalid IL or missing references)
		//IL_046a: Unknown result type (might be due to invalid IL or missing references)
		//IL_046f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0472: Unknown result type (might be due to invalid IL or missing references)
		//IL_04bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_04c7: Unknown result type (might be due to invalid IL or missing references)
		KeyboardShortcut value = OpenPickupMenu.Value;
		if (!Input.GetKey(((KeyboardShortcut)(ref value)).MainKey) && interactableList.Count > 0 && Object.op_Implicit((Object)(object)Run.instance) && !PauseManager.isPaused)
		{
			CharacterMaster master = NetworkUser.readOnlyLocalPlayersList[0].master;
			if (Object.op_Implicit((Object)(object)((master != null) ? master.GetBody() : null)))
			{
				value = OpenInteractableMenu.Value;
				if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
				{
					if (interactableIndex < 0 || interactableIndex >= interactableList.Count)
					{
						interactableIndex = 0;
					}
					updateInteractableHud = true;
				}
				value = OpenInteractableMenu.Value;
				if (Input.GetKey(((KeyboardShortcut)(ref value)).MainKey))
				{
					if (!(Input.mouseScrollDelta.y > 0f))
					{
						value = MenuScrollUp.Value;
						if (!Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
						{
							goto IL_013c;
						}
					}
					interactableIndex++;
					if (interactableIndex >= interactableList.Count)
					{
						interactableIndex = 0;
					}
					updateInteractableHud = true;
					goto IL_013c;
				}
				goto IL_02c0;
			}
		}
		goto IL_0313;
		IL_0313:
		value = OpenInteractableMenu.Value;
		if (Input.GetKey(((KeyboardShortcut)(ref value)).MainKey) || pickupList.Count <= 0 || !Object.op_Implicit((Object)(object)Run.instance) || PauseManager.isPaused)
		{
			return;
		}
		CharacterMaster master2 = NetworkUser.readOnlyLocalPlayersList[0].master;
		if (!Object.op_Implicit((Object)(object)((master2 != null) ? master2.GetBody() : null)))
		{
			return;
		}
		value = OpenPickupMenu.Value;
		if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
		{
			if (pickupIndex < 0 || pickupIndex >= pickupList.Count)
			{
				pickupIndex = 0;
			}
			updateItemHud = true;
		}
		value = OpenPickupMenu.Value;
		if (Input.GetKey(((KeyboardShortcut)(ref value)).MainKey))
		{
			if (!(Input.mouseScrollDelta.y > 0f))
			{
				value = MenuScrollUp.Value;
				if (!Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
				{
					goto IL_0454;
				}
			}
			pickupIndex++;
			if (pickupIndex >= pickupList.Count)
			{
				pickupIndex = 0;
			}
			updateItemHud = true;
			goto IL_0454;
		}
		goto IL_057c;
		IL_057c:
		value = InspectSelected.Value;
		if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey) && Object.op_Implicit((Object)(object)pickupList[pickupIndex]))
		{
			CharacterMasterNotificationQueue.PushPickupNotification(NetworkUser.readOnlyLocalPlayersList[0].master, pickupList[pickupIndex].pickupIndex);
		}
		value = OpenPickupMenu.Value;
		if (Input.GetKeyUp(((KeyboardShortcut)(ref value)).MainKey))
		{
			if (pickupIndex < 0 || pickupIndex >= pickupList.Count)
			{
				pickupIndex = 0;
			}
			updateItemHud = true;
		}
		return;
		IL_04ba:
		value = PickSelected.Value;
		if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
		{
			if (NetworkServer.active)
			{
				GenericPickupController obj = pickupList[pickupIndex];
				CharacterMaster master3 = NetworkUser.readOnlyLocalPlayersList[0].master;
				obj.AttemptGrant((master3 != null) ? master3.GetBody() : null);
			}
			else
			{
				Console.instance.SubmitCmd(NetworkUser.readOnlyLocalPlayersList.FirstOrDefault(), "JustGrant " + pickupIndex, false);
			}
			if (pickupIndex >= pickupList.Count)
			{
				pickupIndex = pickupList.Count - 1;
			}
			updateItemHud = true;
		}
		goto IL_057c;
		IL_013c:
		if (!(Input.mouseScrollDelta.y < 0f))
		{
			value = MenuScrollDown.Value;
			if (!Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
			{
				goto IL_01a2;
			}
		}
		interactableIndex--;
		if (interactableIndex < 0)
		{
			interactableIndex = interactableList.Count - 1;
		}
		updateInteractableHud = true;
		goto IL_01a2;
		IL_02c0:
		value = OpenInteractableMenu.Value;
		if (Input.GetKeyUp(((KeyboardShortcut)(ref value)).MainKey))
		{
			if (interactableIndex < 0 || interactableIndex >= interactableList.Count)
			{
				interactableIndex = 0;
			}
			updateInteractableHud = true;
		}
		goto IL_0313;
		IL_0454:
		if (!(Input.mouseScrollDelta.y < 0f))
		{
			value = MenuScrollDown.Value;
			if (!Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
			{
				goto IL_04ba;
			}
		}
		pickupIndex--;
		if (pickupIndex < 0)
		{
			pickupIndex = pickupList.Count - 1;
		}
		updateItemHud = true;
		goto IL_04ba;
		IL_01a2:
		value = PickSelected.Value;
		if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
		{
			if (Object.op_Implicit((Object)(object)interactableList[interactableIndex]) && interactableList[interactableIndex].available)
			{
				CharacterMaster master4 = NetworkUser.readOnlyLocalPlayersList[0].master;
				if (Object.op_Implicit((Object)(object)((master4 != null) ? ((Component)master4.GetBody()).GetComponent<Interactor>() : null)))
				{
					if (NetworkServer.active)
					{
						PurchaseInteraction obj2 = interactableList[interactableIndex];
						CharacterMaster master5 = NetworkUser.readOnlyLocalPlayersList[0].master;
						obj2.OnInteractionBegin((master5 != null) ? ((Component)master5.GetBody()).GetComponent<Interactor>() : null);
					}
					else
					{
						Console.instance.SubmitCmd(NetworkUser.readOnlyLocalPlayersList.FirstOrDefault(), "JustInteract " + interactableIndex, false);
					}
				}
			}
			if (interactableIndex >= interactableList.Count)
			{
				interactableIndex = interactableList.Count - 1;
			}
		}
		goto IL_02c0;
	}
}