Decompiled source of VoidLeak v1.14.0

BepInEx/plugins/TestAccount666.VoidLeak/VoidLeak.dll

Decompiled a month ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using TestAccount666.VoidLeak.NetcodePatcher;
using TestAccountCore;
using TestAccountCore.Dependencies;
using TestAccountCore.Dependencies.Compatibility;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.Serialization;
using VoidLeak.NetworkBehaviours;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("SoulWithMae")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("AssetWarehouse had a breach. (BONELAB/BONEWORKS scrap items)")]
[assembly: AssemblyFileVersion("1.14.0")]
[assembly: AssemblyInformationalVersion("1.14.0+a1f07799eca1a176229641f431e07fd5249f7a04")]
[assembly: AssemblyProduct("VoidLeak")]
[assembly: AssemblyTitle("TestAccount666.VoidLeak")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.14.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

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

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

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

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace VoidLeak
{
	public static class DevGunConfig
	{
		public static readonly HashSet<DevGun.DevGunAction> ActionSet = new HashSet<DevGun.DevGunAction>
		{
			DevGun.DevGunAction.MULTIPLY,
			DevGun.DevGunAction.DIVIDE,
			DevGun.DevGunAction.DESTROY,
			DevGun.DevGunAction.SUBTRACT,
			DevGun.DevGunAction.ADD
		};

		private static ConfigEntry<int>? _divideWeight;

		private static ConfigEntry<int>? _multiplyWeight;

		private static ConfigEntry<int>? _destroyWeight;

		private static ConfigEntry<int>? _subtractWeight;

		private static ConfigEntry<int>? _addWeight;

		private static ConfigEntry<int>? _divideMinimum;

		private static ConfigEntry<int>? _multiplyMinimum;

		private static ConfigEntry<int>? _subtractMinimum;

		private static ConfigEntry<int>? _addMinimum;

		private static ConfigEntry<int>? _divideMaximum;

		private static ConfigEntry<int>? _multiplyMaximum;

		private static ConfigEntry<int>? _subtractMaximum;

		private static ConfigEntry<int>? _addMaximum;

		internal static void Initialize(ConfigFile configFile)
		{
			_divideWeight = configFile.Bind<int>("Dev Manipulator", "6. Divide Weight", DevGun.DevGunAction.DIVIDE.GetWeight(), "The higher the weight, the more common");
			_multiplyWeight = configFile.Bind<int>("Dev Manipulator", "7. Multiply Weight", DevGun.DevGunAction.MULTIPLY.GetWeight(), "The higher the weight, the more common");
			_destroyWeight = configFile.Bind<int>("Dev Manipulator", "8. Destroy Weight", DevGun.DevGunAction.DESTROY.GetWeight(), "The higher the weight, the more common");
			_subtractWeight = configFile.Bind<int>("Dev Manipulator", "9. Subtract Weight", DevGun.DevGunAction.SUBTRACT.GetWeight(), "The higher the weight, the more common");
			_addWeight = configFile.Bind<int>("Dev Manipulator", "10. Add Weight", DevGun.DevGunAction.ADD.GetWeight(), "The higher the weight, the more common");
			_divideMinimum = configFile.Bind<int>("Dev Manipulator", "11. Divide Minimum", DevGun.DevGunAction.DIVIDE.GetMinimum(), "The minimum operand to use");
			_divideMaximum = configFile.Bind<int>("Dev Manipulator", "12. Divide Maximum", DevGun.DevGunAction.DIVIDE.GetMaximum(), "The maximum operand to use");
			_multiplyMinimum = configFile.Bind<int>("Dev Manipulator", "13. Multiply Minimum", DevGun.DevGunAction.MULTIPLY.GetMinimum(), "The minimum operand to use");
			_multiplyMaximum = configFile.Bind<int>("Dev Manipulator", "14. Multiply Maximum", DevGun.DevGunAction.MULTIPLY.GetMaximum(), "The maximum operand to use");
			_subtractMinimum = configFile.Bind<int>("Dev Manipulator", "15. Subtract Minimum", DevGun.DevGunAction.SUBTRACT.GetMinimum(), "The minimum operand to use");
			_subtractMaximum = configFile.Bind<int>("Dev Manipulator", "16. Subtract Maximum", DevGun.DevGunAction.SUBTRACT.GetMaximum(), "The maximum operand to use");
			_addMinimum = configFile.Bind<int>("Dev Manipulator", "17. Add Minimum", DevGun.DevGunAction.ADD.GetMinimum(), "The minimum operand to use");
			_addMaximum = configFile.Bind<int>("Dev Manipulator", "18. Add Maximum", DevGun.DevGunAction.ADD.GetMaximum(), "The maximum operand to use");
		}

		public static int GetWeight(this DevGun.DevGunAction devGunAction)
		{
			if (1 == 0)
			{
			}
			int result = devGunAction switch
			{
				DevGun.DevGunAction.DIVIDE => _divideWeight?.Value ?? 10, 
				DevGun.DevGunAction.MULTIPLY => _multiplyWeight?.Value ?? 15, 
				DevGun.DevGunAction.DESTROY => _destroyWeight?.Value ?? 12, 
				DevGun.DevGunAction.SUBTRACT => _subtractWeight?.Value ?? 45, 
				DevGun.DevGunAction.ADD => _addWeight?.Value ?? 65, 
				_ => throw new ArgumentOutOfRangeException("devGunAction", devGunAction, "Is not implemented, yet???"), 
			};
			if (1 == 0)
			{
			}
			return result;
		}

		public static int GetMinimum(this DevGun.DevGunAction devGunAction)
		{
			if (1 == 0)
			{
			}
			int result = devGunAction switch
			{
				DevGun.DevGunAction.DIVIDE => _divideMinimum?.Value ?? 2, 
				DevGun.DevGunAction.MULTIPLY => _multiplyMinimum?.Value ?? 2, 
				DevGun.DevGunAction.SUBTRACT => _subtractMinimum?.Value ?? 30, 
				DevGun.DevGunAction.ADD => _addMinimum?.Value ?? 30, 
				_ => throw new ArgumentOutOfRangeException("devGunAction", devGunAction, "Is not implemented, yet???"), 
			};
			if (1 == 0)
			{
			}
			return result;
		}

		public static int GetMaximum(this DevGun.DevGunAction devGunAction)
		{
			if (1 == 0)
			{
			}
			int result = devGunAction switch
			{
				DevGun.DevGunAction.DIVIDE => _divideMinimum?.Value ?? 4, 
				DevGun.DevGunAction.MULTIPLY => _multiplyMinimum?.Value ?? 4, 
				DevGun.DevGunAction.SUBTRACT => _subtractMinimum?.Value ?? 56, 
				DevGun.DevGunAction.ADD => _addMinimum?.Value ?? 56, 
				_ => throw new ArgumentOutOfRangeException("devGunAction", devGunAction, "Is not implemented, yet???"), 
			};
			if (1 == 0)
			{
			}
			return result;
		}
	}
	[BepInPlugin("TestAccount666.VoidLeak", "VoidLeak", "1.14.0")]
	[BepInDependency("TestAccount666.TestAccountCore", "1.3.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		public static ManualLogSource logger = null;

		private static Harmony? _harmony;

		private static readonly Version _CurrentConfigVersion = "2.0.0".ParseVersion();

		private readonly ConfigDefinition _configVersionDefinition = new ConfigDefinition("0. Config Version", "Do not touch!");

		private void Awake()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			logger = ((BaseUnityPlugin)this).Logger;
			if (_harmony == null)
			{
				_harmony = new Harmony("TestAccount666.VoidLeak");
			}
			CompareConfigVersion();
			if (DependencyChecker.IsLobbyCompatibilityInstalled())
			{
				logger.LogInfo((object)"Found LobbyCompatibility Mod, initializing support :)");
				LobbyCompatibilitySupport.Initialize("TestAccount666.VoidLeak", "1.14.0", (CompatibilityLevel)2, (VersionStrictness)2);
			}
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			Netcode.ExecuteNetcodePatcher(executingAssembly);
			AssetLoader.LoadBundle(executingAssembly, "voidleak");
			logger.LogInfo((object)"Loaded asset bundle. Registering items.");
			AssetLoader.LoadItems(((BaseUnityPlugin)this).Config);
			DevGunConfig.Initialize(((BaseUnityPlugin)this).Config);
			logger.LogInfo((object)"Plugin TestAccount666.VoidLeak is loaded, version 1.14.0");
		}

		private Version GetConfigVersion()
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Expected O, but got Unknown
			ConfigEntry<string> val = ((BaseUnityPlugin)this).Config.Bind<string>(_configVersionDefinition, "1.0.0", new ConfigDescription("The config version. Might reset config, if touched!", (AcceptableValueBase)null, Array.Empty<object>()));
			return val.Value.ParseVersion();
		}

		private void SetConfigVersionEntry()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			((BaseUnityPlugin)this).Config.Bind<string>(_configVersionDefinition, _CurrentConfigVersion.ToString(), new ConfigDescription("The config version. Might reset config, if touched!", (AcceptableValueBase)null, Array.Empty<object>()));
		}

		private void CompareConfigVersion()
		{
			try
			{
				Version configVersion = GetConfigVersion();
				int num = configVersion.CompareTo(_CurrentConfigVersion);
				int num2 = num;
				int num3 = num2;
				if (num3 <= 0)
				{
					if (num3 < 0)
					{
						((BaseUnityPlugin)this).Logger.LogWarning((object)"Found an old config! Config will be reset!");
						((BaseUnityPlugin)this).Config.Clear();
						SetConfigVersionEntry();
						((BaseUnityPlugin)this).Config.Save();
						CompareConfigVersion();
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogWarning((object)"Found a more recent config! proceed with caution!");
				}
			}
			catch (Exception ex)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)("An error occurred while comparing config versions: " + ex.Message));
			}
		}
	}
	public class Version : IComparable<Version>
	{
		private readonly int _major;

		private readonly int _minor;

		private readonly int _patch;

		public Version(int major, int minor, int patch)
		{
			_major = major;
			_minor = minor;
			_patch = patch;
			base..ctor();
		}

		public int CompareTo(Version? other)
		{
			if (other == null)
			{
				throw new ArgumentNullException("other", "Cannot compare to null!");
			}
			if (this == other)
			{
				return 0;
			}
			int num = _major.CompareTo(other._major);
			int num2 = num;
			int num3 = num2;
			if (num3 >= 0)
			{
				if (num3 > 0)
				{
					Plugin.logger.LogDebug((object)$"Other major was smaller: {_major} -> {other._major}");
				}
			}
			else
			{
				Plugin.logger.LogDebug((object)$"Other major was bigger: {_major} -> {other._major}");
			}
			if (num != 0)
			{
				return num;
			}
			int num4 = _minor.CompareTo(other._minor);
			int num5 = num4;
			int num6 = num5;
			if (num6 >= 0)
			{
				if (num6 > 0)
				{
					Plugin.logger.LogDebug((object)$"Other minor was smaller: {_minor} -> {other._minor}");
				}
			}
			else
			{
				Plugin.logger.LogDebug((object)$"Other minor was bigger: {_major} -> {other._major}");
			}
			if (num4 != 0)
			{
				return num4;
			}
			int num7 = _patch.CompareTo(other._patch);
			int num8 = num7;
			int num9 = num8;
			if (num9 >= 0)
			{
				if (num9 > 0)
				{
					Plugin.logger.LogDebug((object)$"Other patch was smaller: {_patch} -> {other._patch}");
				}
			}
			else
			{
				Plugin.logger.LogDebug((object)$"Other patch was bigger: {_patch} -> {other._patch}");
			}
			return num7;
		}

		public override string ToString()
		{
			return $"{_major}.{_minor}.{_patch}";
		}
	}
	internal static class VersionParser
	{
		public static Version ParseVersion(this string versionString)
		{
			string[] array = versionString.Split(".");
			if (array == null || array.Length != 3)
			{
				throw new ArgumentException("Version string must contain at three segments and cannot be null.", "versionString");
			}
			if (!int.TryParse(array[0], NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
			{
				throw new FormatException("Invalid format in version string: " + versionString);
			}
			if (!int.TryParse(array[1], NumberStyles.Integer, CultureInfo.InvariantCulture, out var result2))
			{
				throw new FormatException("Invalid format in version string: " + versionString);
			}
			if (!int.TryParse(array[2], NumberStyles.Integer, CultureInfo.InvariantCulture, out var result3))
			{
				throw new FormatException("Invalid format in version string: " + versionString);
			}
			return new Version(result, result2, result3);
		}
	}
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "TestAccount666.VoidLeak";

		public const string PLUGIN_NAME = "VoidLeak";

		public const string PLUGIN_VERSION = "1.14.0";
	}
}
namespace VoidLeak.NetworkBehaviours
{
	[AddComponentMenu("Weather Electric/Void Leak/Destroy On Timer")]
	public class DestroyOnTimer : NetworkBehaviour
	{
		[CompilerGenerated]
		private sealed class <Destroy>d__3 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public GameObject obj;

			public float time;

			public DestroyOnTimer <>4__this;

			private NetworkObject <networkObject>5__1;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <Destroy>d__3(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<networkObject>5__1 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<>2__current = (object)new WaitForSeconds(time);
					<>1__state = 1;
					return true;
				case 1:
				{
					<>1__state = -1;
					if (!((NetworkBehaviour)<>4__this).IsHost && !((NetworkBehaviour)<>4__this).IsServer)
					{
						return false;
					}
					<networkObject>5__1 = this.obj.GetComponent<NetworkObject>();
					NetworkObject obj = <networkObject>5__1;
					if (obj != null)
					{
						obj.Despawn(true);
					}
					Object.Destroy((Object)(object)this.obj);
					return false;
				}
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[Tooltip("The object to destroy. If null, the script will destroy whatever object the script is on.")]
		public GameObject objectToDestroy;

		[Space(10f)]
		[Tooltip("The time to destroy the object.")]
		public float timeToDestroy = 5f;

		private void Start()
		{
			((MonoBehaviour)this).StartCoroutine(Destroy((GameObject)(((Object)(object)objectToDestroy == (Object)null) ? ((object)((Component)this).gameObject) : ((object)objectToDestroy)), timeToDestroy));
		}

		[IteratorStateMachine(typeof(<Destroy>d__3))]
		private IEnumerator Destroy(GameObject obj, float time)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <Destroy>d__3(0)
			{
				<>4__this = this,
				obj = obj,
				time = time
			};
		}

		protected override void __initializeVariables()
		{
			((NetworkBehaviour)this).__initializeVariables();
		}

		protected override void __initializeRpcs()
		{
			((NetworkBehaviour)this).__initializeRpcs();
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		protected internal override string __getTypeName()
		{
			return "DestroyOnTimer";
		}
	}
	public class DevGun : PhysicsProp
	{
		public enum DevGunAction
		{
			DIVIDE,
			MULTIPLY,
			DESTROY,
			SUBTRACT,
			ADD
		}

		[CompilerGenerated]
		private sealed class <DelayedAction>d__21 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public Action action;

			object? IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object? IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <DelayedAction>d__21(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0026: Unknown result type (might be due to invalid IL or missing references)
				//IL_0030: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<>2__current = (object)new WaitForSeconds(1f);
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					action();
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <PlayParticles>d__14 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public DevGun <>4__this;

			object? IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object? IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <PlayParticles>d__14(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0094: Unknown result type (might be due to invalid IL or missing references)
				//IL_009e: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
				{
					<>1__state = -1;
					if (<>4__this.audioSource != null && <>4__this.shootAudioClip != null)
					{
						<>4__this.audioSource.clip = <>4__this.shootAudioClip;
						<>4__this.audioSource.Play();
					}
					ParticleSystem? shootParticles = <>4__this.shootParticles;
					if (shootParticles != null)
					{
						shootParticles.Play();
					}
					<>2__current = (object)new WaitForSeconds(0.8f);
					<>1__state = 1;
					return true;
				}
				case 1:
				{
					<>1__state = -1;
					ParticleSystem? steamParticles = <>4__this.steamParticles;
					if (steamParticles != null)
					{
						steamParticles.Play();
					}
					return false;
				}
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <SetValue>d__13 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public GrabbableObject grabbableObject;

			public int newValue;

			private int <currentValue>5__1;

			private float <startTime>5__2;

			private float <normalizedTime>5__3;

			private float <interpolatedValue>5__4;

			object? IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object? IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <SetValue>d__13(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					if (grabbableObject == null)
					{
						return false;
					}
					<currentValue>5__1 = grabbableObject.scrapValue;
					<startTime>5__2 = Time.time;
					break;
				case 1:
					<>1__state = -1;
					break;
				}
				if (Time.time - <startTime>5__2 < 1f)
				{
					<normalizedTime>5__3 = (Time.time - <startTime>5__2) / 1f;
					<interpolatedValue>5__4 = Mathf.Lerp((float)<currentValue>5__1, (float)newValue, <normalizedTime>5__3);
					grabbableObject.SetScrapValue((int)<interpolatedValue>5__4);
					<>2__current = null;
					<>1__state = 1;
					return true;
				}
				grabbableObject.SetScrapValue(newValue);
				return false;
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		private static readonly Random _Random = new Random();

		[SerializeField]
		private Animator? animator;

		[SerializeField]
		private Transform? gunLaserPoint;

		[FormerlySerializedAs("particleSystem")]
		[SerializeField]
		private ParticleSystem? shootParticles;

		[SerializeField]
		private ParticleSystem? steamParticles;

		[SerializeField]
		private AudioSource? audioSource;

		[SerializeField]
		private AudioClip? shootAudioClip;

		[SerializeField]
		private List<AudioClip>? noObjectAudioClips;

		public override void DiscardItem()
		{
			((GrabbableObject)this).DiscardItem();
			StopParticles();
		}

		public override void PocketItem()
		{
			((GrabbableObject)this).PocketItem();
			StopParticles();
		}

		private void StopParticles()
		{
			ParticleSystem? obj = shootParticles;
			if (obj != null)
			{
				obj.Stop();
			}
			ParticleSystem? obj2 = steamParticles;
			if (obj2 != null)
			{
				obj2.Stop();
			}
		}

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			((GrabbableObject)this).ItemActivate(used, buttonDown);
			if (Object.op_Implicit((Object)(object)((GrabbableObject)this).playerHeldBy) && Object.op_Implicit((Object)(object)((GrabbableObject)this).playerHeldBy.playerEye))
			{
				GrabbableObject grabbableObject = GetGrabbableObject();
				if (grabbableObject == null)
				{
					PlayNoObjectSoundServerRpc();
				}
				else
				{
					UseDevGunServerRpc(NetworkObjectReference.op_Implicit(((Component)grabbableObject).GetComponent<NetworkObject>()));
				}
			}
		}

		[ClientRpc]
		public void UseDevGunClientRpc(NetworkObjectReference grabbableObject, int newValue)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: 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_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2965608862u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref grabbableObject, default(ForNetworkSerializable));
					BytePacker.WriteValueBitPacked(val2, newValue);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2965608862u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
					GrabbableObject component = ((Component)NetworkObjectReference.op_Implicit(grabbableObject)).GetComponent<GrabbableObject>();
					((MonoBehaviour)this).StartCoroutine(SetValue(component, newValue));
					((MonoBehaviour)this).StartCoroutine(PlayParticles());
				}
			}
		}

		[IteratorStateMachine(typeof(<SetValue>d__13))]
		private static IEnumerator SetValue(GrabbableObject? grabbableObject, int newValue)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <SetValue>d__13(0)
			{
				grabbableObject = grabbableObject,
				newValue = newValue
			};
		}

		[IteratorStateMachine(typeof(<PlayParticles>d__14))]
		private IEnumerator PlayParticles()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <PlayParticles>d__14(0)
			{
				<>4__this = this
			};
		}

		private GrabbableObject? GetGrabbableObject()
		{
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: 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)
			if (((GrabbableObject)this).playerHeldBy.playerEye == null)
			{
				return null;
			}
			RaycastHit val = default(RaycastHit);
			if (!Physics.Raycast(((GrabbableObject)this).playerHeldBy.playerEye.position, ((GrabbableObject)this).playerHeldBy.playerEye.forward, ref val, 5f, 64, (QueryTriggerInteraction)1))
			{
				return null;
			}
			if (Physics.Linecast(((GrabbableObject)this).playerHeldBy.playerEye.position, ((RaycastHit)(ref val)).point, 117440769, (QueryTriggerInteraction)1))
			{
				return null;
			}
			GrabbableObject component = ((Component)((RaycastHit)(ref val)).collider).GetComponent<GrabbableObject>();
			if (component != null)
			{
				return (!component.itemProperties.isScrap) ? null : component;
			}
			Plugin.logger.LogError((object)"Dev gun found no object???");
			return null;
		}

		[ServerRpc(RequireOwnership = false)]
		public void PlayNoObjectSoundServerRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3930581728u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3930581728u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
					PlayNoObjectSoundClientRpc();
				}
			}
		}

		[ClientRpc]
		public void PlayNoObjectSoundClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2891085166u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2891085166u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
			if (audioSource != null)
			{
				List<AudioClip> list = noObjectAudioClips;
				if (list != null && list.Count > 0)
				{
					audioSource.clip = noObjectAudioClips[_Random.Next(0, noObjectAudioClips.Count)];
					audioSource.Play();
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void UseDevGunServerRpc(NetworkObjectReference grabbableObjectReference)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: 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_0083: 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_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				ServerRpcParams val = default(ServerRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2660396695u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref grabbableObjectReference, default(ForNetworkSerializable));
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2660396695u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
				NetworkObject val3 = NetworkObjectReference.op_Implicit(grabbableObjectReference);
				GrabbableObject component = ((Component)val3).GetComponent<GrabbableObject>();
				if (component == null)
				{
					PlayNoObjectSoundClientRpc();
					return;
				}
				int currentValue = component.scrapValue;
				DevGunAction action = GenerateAction();
				ExecuteAction(action, ref currentValue, component, val3);
				UseDevGunClientRpc(NetworkObjectReference.op_Implicit(val3), currentValue);
			}
		}

		private void ExecuteAction(DevGunAction action, ref int currentValue, GrabbableObject grabbableObject, NetworkObject networkObject)
		{
			GrabbableObject grabbableObject2 = grabbableObject;
			NetworkObject networkObject2 = networkObject;
			switch (action)
			{
			case DevGunAction.DESTROY:
				currentValue += 1600;
				((MonoBehaviour)this).StartCoroutine(DelayedAction(delegate
				{
					//IL_0012: Unknown result type (might be due to invalid IL or missing references)
					SpawnExplosionClientRpc(((Component)grabbableObject2).transform.position);
					networkObject2.Despawn(true);
					Object.Destroy((Object)(object)((Component)grabbableObject2).gameObject);
				}));
				break;
			case DevGunAction.ADD:
				currentValue += _Random.Next(action.GetMinimum(), action.GetMaximum());
				break;
			case DevGunAction.SUBTRACT:
				currentValue -= _Random.Next(action.GetMinimum(), action.GetMaximum());
				break;
			case DevGunAction.MULTIPLY:
				currentValue *= _Random.Next(action.GetMinimum(), action.GetMaximum());
				break;
			case DevGunAction.DIVIDE:
				currentValue /= _Random.Next(action.GetMinimum(), action.GetMaximum());
				break;
			default:
				throw new ArgumentOutOfRangeException("action", action, "Is not implemented, yet???");
			}
		}

		[ClientRpc]
		private void SpawnExplosionClientRpc(Vector3 position)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3251247325u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe(ref position);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3251247325u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
					Landmine.SpawnExplosion(position, true, 0.5f, 3f, 25, 1f, (GameObject)null, false);
				}
			}
		}

		[IteratorStateMachine(typeof(<DelayedAction>d__21))]
		private static IEnumerator DelayedAction(Action action)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <DelayedAction>d__21(0)
			{
				action = action
			};
		}

		private static DevGunAction GenerateAction()
		{
			int num = _Random.Next(0, 300);
			while (true)
			{
				foreach (DevGunAction item in DevGunConfig.ActionSet)
				{
					num -= item.GetWeight();
					if (num > 0)
					{
						continue;
					}
					return item;
				}
			}
		}

		protected override void __initializeVariables()
		{
			((PhysicsProp)this).__initializeVariables();
		}

		protected override void __initializeRpcs()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Expected O, but got Unknown
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Expected O, but got Unknown
			((NetworkBehaviour)this).__registerRpc(2965608862u, new RpcReceiveHandler(__rpc_handler_2965608862), "UseDevGunClientRpc");
			((NetworkBehaviour)this).__registerRpc(3930581728u, new RpcReceiveHandler(__rpc_handler_3930581728), "PlayNoObjectSoundServerRpc");
			((NetworkBehaviour)this).__registerRpc(2891085166u, new RpcReceiveHandler(__rpc_handler_2891085166), "PlayNoObjectSoundClientRpc");
			((NetworkBehaviour)this).__registerRpc(2660396695u, new RpcReceiveHandler(__rpc_handler_2660396695), "UseDevGunServerRpc");
			((NetworkBehaviour)this).__registerRpc(3251247325u, new RpcReceiveHandler(__rpc_handler_3251247325), "SpawnExplosionClientRpc");
			((PhysicsProp)this).__initializeRpcs();
		}

		private static void __rpc_handler_2965608862(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_002f: 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_003e: 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_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference grabbableObject = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref grabbableObject, default(ForNetworkSerializable));
				int newValue = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref newValue);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((DevGun)(object)target).UseDevGunClientRpc(grabbableObject, newValue);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3930581728(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((DevGun)(object)target).PlayNoObjectSoundServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2891085166(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((DevGun)(object)target).PlayNoObjectSoundClientRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2660396695(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_002f: 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_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				NetworkObjectReference grabbableObjectReference = default(NetworkObjectReference);
				((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref grabbableObjectReference, default(ForNetworkSerializable));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((DevGun)(object)target).UseDevGunServerRpc(grabbableObjectReference);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3251247325(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				Vector3 position = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref position);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((DevGun)(object)target).SpawnExplosionClientRpc(position);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		protected internal override string? __getTypeName()
		{
			return "DevGun";
		}
	}
	[AddComponentMenu("Weather Electric/Void Leak/Ice Axe")]
	public class IceAxe : KnifeItem
	{
		[SerializeField]
		public Animator? animator;

		private static readonly int _SmashAnimatorHash = Animator.StringToHash("Smash");

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			((KnifeItem)this).ItemActivate(used, buttonDown);
			Animator? obj = animator;
			if (obj != null)
			{
				obj.SetTrigger(_SmashAnimatorHash);
			}
		}

		protected override void __initializeVariables()
		{
			((KnifeItem)this).__initializeVariables();
		}

		protected override void __initializeRpcs()
		{
			((KnifeItem)this).__initializeRpcs();
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		protected internal override string __getTypeName()
		{
			return "IceAxe";
		}
	}
	[AddComponentMenu("Soup")]
	public class SoupBehaviour : NetworkBehaviour
	{
		private const float KICK_STRENGTH = 0.5f;

		[Tooltip("The rigidBody of this object.")]
		[SerializeField]
		public Rigidbody rigidBody;

		[Tooltip("The audio source of this object.")]
		[SerializeField]
		public AudioSource collideAudioSource;

		private void OnTriggerEnter(Collider other)
		{
			HandleCollision(other);
		}

		private void OnTriggerStay(Collider other)
		{
			HandleCollision(other);
		}

		private void HandleCollision(Collider other)
		{
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: 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)
			if (!((Object)(object)other.attachedRigidbody == (Object)(object)rigidBody) && (((Component)other).CompareTag("PlayerBody") || ((Component)other).CompareTag("Player")))
			{
				if (!collideAudioSource.isPlaying)
				{
					collideAudioSource.Play();
				}
				if (this != null && ((NetworkBehaviour)this).IsHost)
				{
					Vector3 val = ((Component)other).transform.forward;
					((Vector3)(ref val)).Normalize();
					val = -val;
					val.y = 0.7f;
					rigidBody.AddForce(val * 0.5f, (ForceMode)1);
				}
			}
		}

		protected override void __initializeVariables()
		{
			((NetworkBehaviour)this).__initializeVariables();
		}

		protected override void __initializeRpcs()
		{
			((NetworkBehaviour)this).__initializeRpcs();
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		protected internal override string __getTypeName()
		{
			return "SoupBehaviour";
		}
	}
	public class SoupTrigger : NetworkBehaviour
	{
		[CompilerGenerated]
		private sealed class <Energize>d__4 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public PlayerControllerB localPlayer;

			public float sprintTime;

			private int <times>5__1;

			object? IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object? IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <Energize>d__4(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0086: Expected O, but got Unknown
				//IL_0175: Unknown result type (might be due to invalid IL or missing references)
				//IL_017b: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01aa: Expected O, but got Unknown
				//IL_0116: Unknown result type (might be due to invalid IL or missing references)
				//IL_0120: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					if ((Object)(object)localPlayer == (Object)null)
					{
						_underTheInfluence = false;
						return false;
					}
					_underTheInfluence = true;
					localPlayer.sprintMeter = 1f;
					localPlayer.sprintTime = 666f;
					<>2__current = (object)new WaitForSeconds(12f);
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					if ((Object)(object)localPlayer == (Object)null)
					{
						_underTheInfluence = false;
						return false;
					}
					localPlayer.sprintTime = sprintTime;
					<times>5__1 = 0;
					goto IL_0192;
				case 2:
				{
					<>1__state = -1;
					localPlayer.sprintMeter = 0f;
					PlayerControllerB obj = localPlayer;
					obj.drunkness += 0.1f;
					if (<times>5__1 < 10)
					{
						localPlayer.DamagePlayer(1, true, true, (CauseOfDeath)5, 0, false, default(Vector3));
					}
					<times>5__1++;
					goto IL_0192;
				}
				case 3:
					{
						<>1__state = -1;
						_underTheInfluence = false;
						return false;
					}
					IL_0192:
					if (!((Object)(object)localPlayer == (Object)null) && !localPlayer.isPlayerDead && <times>5__1 < 20)
					{
						<>2__current = (object)new WaitForSeconds(0.5f);
						<>1__state = 2;
						return true;
					}
					<>2__current = (object)new WaitForSeconds(0.5f);
					<>1__state = 3;
					return true;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		private static bool _underTheInfluence;

		[SerializeField]
		private NetworkObject? networkObject;

		[SerializeField]
		private GameObject? parentObject;

		public void Interact()
		{
			if (this != null && parentObject != null && networkObject != null)
			{
				if (_underTheInfluence)
				{
					HUDManager.Instance.DisplayTip("Soup???", "Nah, I think I'm good :)", false, false, "LC_Tip1");
					return;
				}
				HUDManager.Instance.DisplayTip("Soup???", "You feel refreshed!", false, false, "LC_Tip1");
				PlayerControllerB localPlayerController = StartOfRound.Instance.localPlayerController;
				((MonoBehaviour)localPlayerController).StartCoroutine(Energize(localPlayerController, localPlayerController.sprintTime));
				EatSoupServerRpc();
			}
		}

		[IteratorStateMachine(typeof(<Energize>d__4))]
		private static IEnumerator Energize(PlayerControllerB? localPlayer, float sprintTime)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <Energize>d__4(0)
			{
				localPlayer = localPlayer,
				sprintTime = sprintTime
			};
		}

		[ServerRpc(RequireOwnership = false)]
		public void EatSoupServerRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3671298775u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3671298775u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					base.__rpc_exec_stage = (__RpcExecStage)0;
					EatSoupClientRpc();
				}
			}
		}

		[ClientRpc]
		public void EatSoupClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(334741291u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 334741291u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			base.__rpc_exec_stage = (__RpcExecStage)0;
			if (((NetworkBehaviour)this).IsHost || ((NetworkBehaviour)this).IsServer)
			{
				NetworkObject? obj = networkObject;
				if (obj != null)
				{
					obj.Despawn(true);
				}
				Object.Destroy((Object)(object)parentObject);
			}
		}

		protected override void __initializeVariables()
		{
			((NetworkBehaviour)this).__initializeVariables();
		}

		protected override void __initializeRpcs()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Expected O, but got Unknown
			((NetworkBehaviour)this).__registerRpc(3671298775u, new RpcReceiveHandler(__rpc_handler_3671298775), "EatSoupServerRpc");
			((NetworkBehaviour)this).__registerRpc(334741291u, new RpcReceiveHandler(__rpc_handler_334741291), "EatSoupClientRpc");
			((NetworkBehaviour)this).__initializeRpcs();
		}

		private static void __rpc_handler_3671298775(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((SoupTrigger)(object)target).EatSoupServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_334741291(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((SoupTrigger)(object)target).EatSoupClientRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		protected internal override string? __getTypeName()
		{
			return "SoupTrigger";
		}
	}
	[AddComponentMenu("Weather Electric/Void Leak/Spawn Gun")]
	public class SpawnGun : GrabbableObject
	{
		[Space(30f)]
		public Transform firePoint;

		[Space(10f)]
		public GameObject spawnObject;

		[Space(10f)]
		public float raycastDistance = 15f;

		[Space(10f)]
		public AudioSource spawnAudio;

		[Space(10f)]
		public AudioSource missFireAudio;

		[Space(10f)]
		public GameObject laser;

		[Space(10f)]
		public Animator animator;

		private static readonly int _Shoot = Animator.StringToHash("Shoot");

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: 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_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: 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)
			((GrabbableObject)this).ItemActivate(used, buttonDown);
			if (base.playerHeldBy == null || (Object)(object)base.playerHeldBy != (Object)(object)GameNetworkManager.Instance.localPlayerController)
			{
				return;
			}
			if (!((NetworkBehaviour)this).IsHost)
			{
				ShootSpawnGunServerRpc();
			}
			else
			{
				ShootSpawnGunClientRpc();
			}
			if (!(base.insertedBattery.charge <= 0f))
			{
				Vector3 position = firePoint.position + firePoint.forward * raycastDistance;
				Ray val = default(Ray);
				((Ray)(ref val))..ctor(firePoint.position, firePoint.forward);
				RaycastHit val2 = default(RaycastHit);
				if (Physics.Raycast(val, ref val2, raycastDistance))
				{
					position = ((RaycastHit)(ref val2)).point;
				}
				if (!((NetworkBehaviour)this).IsHost)
				{
					UseSpawnGunServerRpc(position);
				}
				else
				{
					SpawnSoupClientRpc(position);
				}
			}
		}

		public override void ChargeBatteries()
		{
			((GrabbableObject)this).ChargeBatteries();
			SetActive(active: true);
		}

		[ServerRpc(RequireOwnership = false)]
		private void UseSpawnGunServerRpc(Vector3 position)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(387090984u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe(ref position);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 387090984u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
					SpawnSoupClientRpc(position);
				}
			}
		}

		[ClientRpc]
		private void SpawnSoupClientRpc(Vector3 position)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1203730062u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe(ref position);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1203730062u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
				Battery insertedBattery = base.insertedBattery;
				insertedBattery.charge -= 0.1f;
				if (base.insertedBattery.charge <= 0f)
				{
					SetActive(active: false);
				}
				if (((NetworkBehaviour)this).IsHost)
				{
					GameObject val3 = Object.Instantiate<GameObject>(spawnObject, position, Quaternion.identity);
					NetworkObject component = val3.GetComponent<NetworkObject>();
					component.Spawn(false);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		private void ShootSpawnGunServerRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3351750699u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3351750699u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
					ShootSpawnGunClientRpc();
				}
			}
		}

		[ClientRpc]
		private void ShootSpawnGunClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: 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_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2638741765u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2638741765u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost))
			{
				((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0;
				if (base.insertedBattery.charge <= 0f)
				{
					missFireAudio.Play();
					SetActive(active: false);
				}
				else
				{
					animator.SetTrigger(_Shoot);
					spawnAudio.Play();
				}
			}
		}

		public override void UseUpBatteries()
		{
			((GrabbableObject)this).UseUpBatteries();
			SetActive(active: false);
		}

		public override void DiscardItem()
		{
			((GrabbableObject)this).DiscardItem();
			SetActive(active: false);
		}

		public override void PocketItem()
		{
			((GrabbableObject)this).PocketItem();
			SetActive(active: false);
		}

		public override void GrabItem()
		{
			((GrabbableObject)this).GrabItem();
			if (base.insertedBattery.charge <= 0f)
			{
				SetActive(active: false);
			}
			else
			{
				SetActive(active: true);
			}
		}

		public override void EquipItem()
		{
			((GrabbableObject)this).EquipItem();
			if (base.insertedBattery.charge <= 0f)
			{
				SetActive(active: false);
			}
			else
			{
				SetActive(active: true);
			}
		}

		private void SetActive(bool active)
		{
			active = active && base.playerHeldBy != null;
			if (laser.activeSelf != active)
			{
				laser.SetActive(active);
				MeshRenderer component = laser.GetComponent<MeshRenderer>();
				if (component != null && ((Renderer)component).enabled != active)
				{
					((Renderer)component).enabled = active;
				}
			}
			if (base.playerHeldBy != null)
			{
				base.playerHeldBy.equippedUsableItemQE = true;
			}
		}

		protected override void __initializeVariables()
		{
			((GrabbableObject)this).__initializeVariables();
		}

		protected override void __initializeRpcs()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Expected O, but got Unknown
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Expected O, but got Unknown
			((NetworkBehaviour)this).__registerRpc(387090984u, new RpcReceiveHandler(__rpc_handler_387090984), "UseSpawnGunServerRpc");
			((NetworkBehaviour)this).__registerRpc(1203730062u, new RpcReceiveHandler(__rpc_handler_1203730062), "SpawnSoupClientRpc");
			((NetworkBehaviour)this).__registerRpc(3351750699u, new RpcReceiveHandler(__rpc_handler_3351750699), "ShootSpawnGunServerRpc");
			((NetworkBehaviour)this).__registerRpc(2638741765u, new RpcReceiveHandler(__rpc_handler_2638741765), "ShootSpawnGunClientRpc");
			((GrabbableObject)this).__initializeRpcs();
		}

		private static void __rpc_handler_387090984(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				Vector3 position = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref position);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((SpawnGun)(object)target).UseSpawnGunServerRpc(position);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1203730062(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				Vector3 position = default(Vector3);
				((FastBufferReader)(ref reader)).ReadValueSafe(ref position);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((SpawnGun)(object)target).SpawnSoupClientRpc(position);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3351750699(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((SpawnGun)(object)target).ShootSpawnGunServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2638741765(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((SpawnGun)(object)target).ShootSpawnGunClientRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		protected internal override string __getTypeName()
		{
			return "SpawnGun";
		}
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
	internal sealed class IgnoresAccessChecksToAttribute : Attribute
	{
		public IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
}
namespace __GEN
{
	internal class NetworkVariableSerializationHelper
	{
		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeSerialization()
		{
		}
	}
}
namespace TestAccount666.VoidLeak.NetcodePatcher
{
	[AttributeUsage(AttributeTargets.Module)]
	internal class NetcodePatchedAssemblyAttribute : Attribute
	{
	}
}