Decompiled source of LCPlanAssassin v2.7.0

plugins/LCPlanAssassin/LCPlanAssassin.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using Dissonance;
using GameNetcodeStuff;
using HarmonyLib;
using JetBrains.Annotations;
using LCPlanAssassin.AssetLoader;
using LCPlanAssassin.Components;
using LCPlanAssassin.Items;
using LCPlanAssassin.NetcodePatcher;
using LCPlanAssassin.Patchers;
using LCPlanAssassin.TarotCard;
using LCPlanAssassin.UI;
using LCPlanAssassin.Utils;
using LCTarrotCard;
using LCTarrotCard.Cards;
using LCTarrotCard.Items;
using LCTarrotCard.Ressource;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.Video;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("0.0.0.0")]
[module: NetcodePatchedAssembly]
internal class <Module>
{
	static <Module>()
	{
	}
}
namespace LCPlanAssassin
{
	[BepInPlugin("LCPlanAssassin", "Plan d'assassin", "2.7.0")]
	[BepInDependency("LCTarotCard", "1.1.2")]
	public class ModBase : BaseUnityPlugin
	{
		public static ModBase Instance;

		public ManualLogSource logger;

		internal Harmony harmony;

		internal static bool hasError;

		public static KeyboardShortcut testKey;

		private void Awake()
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			//IL_003f: 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)
			if (!((Object)(object)Instance != (Object)null))
			{
				Instance = this;
				harmony = new Harmony("LCPlanAssassin");
				logger = Logger.CreateLogSource("LCPlanAssassin");
				testKey = new KeyboardShortcut((KeyCode)96, Array.Empty<KeyCode>());
				RPC_Init();
				Assets.LoadBundles();
				if (!hasError)
				{
					harmony.PatchAll();
					logger.LogInfo((object)"LCPlanAssassin correctly loaded");
				}
			}
		}

		private static void RPC_Init()
		{
			Type[] types = Assembly.GetExecutingAssembly().GetTypes();
			foreach (Type type in types)
			{
				MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
				foreach (MethodInfo methodInfo in methods)
				{
					if (methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false).Length != 0)
					{
						methodInfo.Invoke(null, null);
					}
				}
			}
		}
	}
	[HarmonyPatch(typeof(PlayerControllerB))]
	internal class Test
	{
		[HarmonyPatch("Update")]
		[HarmonyPostfix]
		private static void TestPatch(PlayerControllerB __instance)
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			if (!((KeyboardShortcut)(ref ModBase.testKey)).IsDown() || ((NetworkBehaviour)__instance).IsOwner)
			{
			}
			if (1 == 0)
			{
				InstantiateAndReturnGrabbableObject(Assets.CheeseItem.spawnPrefab, ((Component)__instance).transform.position);
				InstantiateAndReturnGrabbableObject(Assets.PlanAssassin.spawnPrefab, ((Component)__instance).transform.position);
			}
		}

		private static GrabbableObject InstantiateAndReturnGrabbableObject(GameObject prefab, Vector3 position)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Object.Instantiate<GameObject>(prefab, position, Quaternion.identity, RoundManager.Instance.spawnedScrapContainer);
			GrabbableObject component = val.GetComponent<GrabbableObject>();
			((Component)component).transform.rotation = Quaternion.Euler(component.itemProperties.restingRotation);
			component.fallTime = 0f;
			component.scrapValue = 1;
			val.GetComponent<NetworkObject>().Spawn(false);
			return component;
		}
	}
	public static class ModConstants
	{
		public const string MOD_GUID = "LCPlanAssassin";

		public const string MOD_NAME = "Plan d'assassin";

		public const string MOD_VERSION = "2.7.0";

		public const bool TEST_MODE = false;
	}
}
namespace LCPlanAssassin.AssetLoader
{
	internal static class Assets
	{
		internal static AssetBundle planBundle;

		public static AudioClip EatClip;

		public static readonly List<AudioClip> PlanClips = new List<AudioClip>();

		public static readonly List<AudioClip> KaquiteClips = new List<AudioClip>();

		public static readonly List<AudioClip> KeyboardClips = new List<AudioClip>();

		public static AudioClip LowFan;

		public static AudioClip HighFan;

		public static AudioClip MowStartClip;

		public static AudioClip MowLoopClip;

		public static AudioClip MowEndClip;

		public static Material ScreenOffMat;

		public static Material ScreenOnMat;

		public static VideoClip TranstitionClip;

		public static readonly List<VideoClip> ScreenClips = new List<VideoClip>();

		public static AudioClip Comsau;

		public static List<AudioClip> SpringClips = new List<AudioClip>();

		public static AudioClip RingtoneClip;

		public static List<VideoClip> TelClips = new List<VideoClip>();

		public static Material TelMat;

		public static Material CallingMat;

		public static AudioClip RightClip;

		public static AudioClip WrongClip;

		public static Material WrongMat;

		public static Material RightMat;

		public static AudioClip VacuumStartClip;

		public static AudioClip VacuumLoopClip;

		public static AudioClip VacuumEndClip;

		public static List<AudioClip> FartClips = new List<AudioClip>();

		public static AudioClip SplatClip;

		public static AudioClip FluteClip;

		public static AudioClip JetpackBroken;

		public static AudioClip JetPackThrustStart;

		public static Material OrangeBurn;

		public static AudioClip JeSuisOuClip;

		public static AudioClip TheMoolClip;

		public static List<AudioClip> RotateClips = new List<AudioClip>();

		public static List<AudioClip> SpectrumMusics = new List<AudioClip>();

		public static VideoClip GordionClip;

		public static VideoClip OtherClip;

		public static VideoClip Valo1;

		public static VideoClip Valo2;

		public static VideoClip Planet;

		public static VideoClip TintinClip;

		public static AudioClip TintinAudio;

		public static readonly List<VideoClip> NClips = new List<VideoClip>();

		internal static GameObject JumpscareCanvas;

		public static GameObject JumpscareObj;

		public static readonly List<AudioClip> ScreamClips = new List<AudioClip>();

		public static Item RouterItem;

		public static Item OysterItem;

		public static Item BolItem;

		public static Item BoosterItem;

		public static Item CheeseItem;

		public static List<AudioClip> StomachacheClips = new List<AudioClip>();

		public static Item KkItem;

		public static Item AtiItem;

		public static Item ChopstickItem;

		public static Item FluteItem;

		public static Item LieDetectorItem;

		public static AudioClip LeFauxClip;

		public static Material JsuiouMat;

		public static Material NWordMat;

		public static Material TheMoolMat;

		public static Material SpectrumMat;

		public static Material RotateMat;

		public static Material PlusTardMat;

		public static AudioClip PlusTardClip;

		public static Material DiscoMat;

		public static SpawnRarity PlanRarity;

		public static SpawnRarity SausageTicketRarity;

		public static SpawnRarity PCRarity;

		public static SpawnRarity CasqueRarity;

		public static SpawnRarity HandRarity;

		public static SpawnRarity KeyboardRarity;

		public static SpawnRarity KakahuetRarity;

		public static SpawnRarity MowerRarity;

		public static SpawnRarity ScreenRarity;

		public static SpawnRarity RouterRarity;

		public static SpawnRarity RavcamRarity;

		public static SpawnRarity TelephoneRarity;

		public static SpawnRarity LieDetectorRarity;

		public static SpawnRarity VacuumRarity;

		public static SpawnRarity CheeseRarity;

		public static SpawnRarity FluteRarity;

		public static SpawnRarity ChopstickRarity;

		public static SpawnRarity BolRarity;

		public static SpawnRarity BoosterRarity;

		public static SpawnRarity AtiRarity;

		public static GameObject DiscoBall;

		public static Item PlanAssassin { get; private set; }

		public static Item SausageTicket { get; private set; }

		public static Item Sausage { get; private set; }

		public static Item PCRavix { get; private set; }

		public static Item MicroKaquite { get; private set; }

		public static Item LeftHeadsetItem { get; private set; }

		public static Item RightHeadsetItem { get; private set; }

		public static Item HandItem { get; private set; }

		public static Item KeyboardItem { get; private set; }

		public static Item KakahuetItem { get; private set; }

		public static Item MowerItem { get; private set; }

		public static Item ScreenItem { get; private set; }

		public static Item RavcamItem { get; private set; }

		public static Item TelephoneItem { get; private set; }

		public static Item VacuumItem { get; private set; }

		public static void LoadBundles()
		{
			Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("LCPlanAssassin.Resources.planbundle");
			if (manifestResourceStream == null)
			{
				ModBase.Instance.logger.LogError((object)"Cannot load assets bundle, stream is null");
				ModBase.hasError = true;
				return;
			}
			planBundle = AssetBundle.LoadFromStream(manifestResourceStream);
			if ((Object)(object)planBundle == (Object)null)
			{
				ModBase.Instance.logger.LogError((object)"Cannot load assets bundle, bundle is null");
				ModBase.hasError = true;
			}
			else
			{
				LoadTarotCards();
				LoadAssets();
				InitScraps();
			}
		}

		private static void LoadAssets()
		{
			PlanAssassin = planBundle.LoadAsset<Item>("Assets/PlanAssassin.asset");
			PlanAssassinBehaviour planAssassinBehaviour = PlanAssassin.spawnPrefab.AddComponent<PlanAssassinBehaviour>();
			((GrabbableObject)planAssassinBehaviour).grabbable = true;
			((GrabbableObject)planAssassinBehaviour).grabbableToEnemies = false;
			((GrabbableObject)planAssassinBehaviour).itemProperties = PlanAssassin;
			PlanClips.Add(planBundle.LoadAsset<AudioClip>("Assets/SFX/ballon.ogg"));
			PlanClips.Add(planBundle.LoadAsset<AudioClip>("Assets/SFX/cabane.ogg"));
			PlanClips.Add(planBundle.LoadAsset<AudioClip>("Assets/SFX/camion.ogg"));
			PlanClips.Add(planBundle.LoadAsset<AudioClip>("Assets/SFX/harbor.ogg"));
			PlanClips.Add(planBundle.LoadAsset<AudioClip>("Assets/SFX/planassassin.ogg"));
			PlanClips.Add(planBundle.LoadAsset<AudioClip>("Assets/SFX/temaplan.ogg"));
			PlanClips.Add(planBundle.LoadAsset<AudioClip>("Assets/SFX/vandal.ogg"));
			PlanClips.Add(planBundle.LoadAsset<AudioClip>("Assets/SFX/chien.ogg"));
			PlanClips.Add(planBundle.LoadAsset<AudioClip>("Assets/SFX/monde.ogg"));
			PlanClips.Add(planBundle.LoadAsset<AudioClip>("Assets/SFX/pigeon.ogg"));
			Sausage = planBundle.LoadAsset<Item>("Assets/Sausage.asset");
			SausageBehaviour sausageBehaviour = Sausage.spawnPrefab.AddComponent<SausageBehaviour>();
			((GrabbableObject)sausageBehaviour).grabbable = true;
			((GrabbableObject)sausageBehaviour).grabbableToEnemies = true;
			((GrabbableObject)sausageBehaviour).itemProperties = Sausage;
			PCRavix = planBundle.LoadAsset<Item>("Assets/PC/pc_ravix.asset");
			PcRavixBehaviour pcRavixBehaviour = PCRavix.spawnPrefab.AddComponent<PcRavixBehaviour>();
			((GrabbableObject)pcRavixBehaviour).grabbable = true;
			((GrabbableObject)pcRavixBehaviour).grabbableToEnemies = true;
			((GrabbableObject)pcRavixBehaviour).itemProperties = PCRavix;
			SausageTicket = planBundle.LoadAsset<Item>("Assets/Ticket/ticket.asset");
			SausageTicketBehaviour sausageTicketBehaviour = SausageTicket.spawnPrefab.AddComponent<SausageTicketBehaviour>();
			((GrabbableObject)sausageTicketBehaviour).grabbable = true;
			((GrabbableObject)sausageTicketBehaviour).grabbableToEnemies = true;
			((GrabbableObject)sausageTicketBehaviour).itemProperties = SausageTicket;
			MicroKaquite = planBundle.LoadAsset<Item>("Assets/Micro/casque.asset");
			CasqueBehaviour casqueBehaviour = MicroKaquite.spawnPrefab.AddComponent<CasqueBehaviour>();
			((GrabbableObject)casqueBehaviour).grabbable = true;
			((GrabbableObject)casqueBehaviour).grabbableToEnemies = true;
			((GrabbableObject)casqueBehaviour).itemProperties = MicroKaquite;
			LeftHeadsetItem = planBundle.LoadAsset<Item>("Assets/Micro/casql.asset");
			RightHeadsetItem = planBundle.LoadAsset<Item>("Assets/Micro/casqr.asset");
			HandItem = planBundle.LoadAsset<Item>("Assets/Hand/Hand.asset");
			HandBehaviour handBehaviour = HandItem.spawnPrefab.AddComponent<HandBehaviour>();
			((GrabbableObject)handBehaviour).grabbable = true;
			((GrabbableObject)handBehaviour).grabbableToEnemies = true;
			((GrabbableObject)handBehaviour).itemProperties = HandItem;
			KeyboardItem = planBundle.LoadAsset<Item>("Assets/Clavier/keyboard.asset");
			KeyboardBehaviour keyboardBehaviour = KeyboardItem.spawnPrefab.AddComponent<KeyboardBehaviour>();
			((GrabbableObject)keyboardBehaviour).grabbable = true;
			((GrabbableObject)keyboardBehaviour).grabbableToEnemies = true;
			((GrabbableObject)keyboardBehaviour).itemProperties = KeyboardItem;
			KakahuetItem = planBundle.LoadAsset<Item>("Assets/kakahuet/kakahuet.asset");
			KakahuetBehaviour kakahuetBehaviour = KakahuetItem.spawnPrefab.AddComponent<KakahuetBehaviour>();
			((GrabbableObject)kakahuetBehaviour).grabbable = true;
			((GrabbableObject)kakahuetBehaviour).grabbableToEnemies = true;
			((GrabbableObject)kakahuetBehaviour).itemProperties = KakahuetItem;
			MowerItem = planBundle.LoadAsset<Item>("Assets/mower/mower.asset");
			MowerBehaviour mowerBehaviour = MowerItem.spawnPrefab.AddComponent<MowerBehaviour>();
			((GrabbableObject)mowerBehaviour).grabbable = true;
			((GrabbableObject)mowerBehaviour).grabbableToEnemies = true;
			((GrabbableObject)mowerBehaviour).itemProperties = MowerItem;
			ScreenItem = planBundle.LoadAsset<Item>("Assets/Screen/screen.asset");
			ScreenBehaviour screenBehaviour = ScreenItem.spawnPrefab.AddComponent<ScreenBehaviour>();
			((GrabbableObject)screenBehaviour).grabbable = true;
			((GrabbableObject)screenBehaviour).grabbableToEnemies = true;
			((GrabbableObject)screenBehaviour).itemProperties = ScreenItem;
			ScreenOffMat = planBundle.LoadAsset<Material>("Assets/Screen/ScreenOff.mat");
			ScreenOnMat = planBundle.LoadAsset<Material>("Assets/Screen/ScreenRenderMat.mat");
			TranstitionClip = planBundle.LoadAsset<VideoClip>("Assets/Screen/transition.mp4");
			for (int i = 0; i < 25; i++)
			{
				string text = "Assets/Screen/Clips/cg" + (i + 1) + ".mp4";
				VideoClip item = planBundle.LoadAsset<VideoClip>(text);
				ScreenClips.Add(item);
			}
			RouterItem = planBundle.LoadAsset<Item>("Assets/Router/router.asset");
			RouterBehaviour routerBehaviour = RouterItem.spawnPrefab.AddComponent<RouterBehaviour>();
			((GrabbableObject)routerBehaviour).grabbable = true;
			((GrabbableObject)routerBehaviour).grabbableToEnemies = true;
			((GrabbableObject)routerBehaviour).itemProperties = RouterItem;
			OysterItem = planBundle.LoadAsset<Item>("Assets/PlanTarot/Oyster/themool.asset");
			OysterBehaviour oysterBehaviour = OysterItem.spawnPrefab.AddComponent<OysterBehaviour>();
			((GrabbableObject)oysterBehaviour).grabbable = true;
			((GrabbableObject)oysterBehaviour).grabbableToEnemies = true;
			((GrabbableObject)oysterBehaviour).itemProperties = OysterItem;
			RavcamItem = planBundle.LoadAsset<Item>("Assets/Ravcam/ravixcam.asset");
			RavcamBehaviour ravcamBehaviour = RavcamItem.spawnPrefab.AddComponent<RavcamBehaviour>();
			((GrabbableObject)ravcamBehaviour).grabbable = true;
			((GrabbableObject)ravcamBehaviour).grabbableToEnemies = true;
			((GrabbableObject)ravcamBehaviour).itemProperties = RavcamItem;
			for (int j = 0; j < 3; j++)
			{
				SpringClips.Add(planBundle.LoadAsset<AudioClip>("Assets/Ravcam/sp" + j + ".mp3"));
			}
			TelephoneItem = planBundle.LoadAsset<Item>("Assets/Telephone/telephone.asset");
			TelephoneBehaviour telephoneBehaviour = TelephoneItem.spawnPrefab.AddComponent<TelephoneBehaviour>();
			((GrabbableObject)telephoneBehaviour).grabbable = true;
			((GrabbableObject)telephoneBehaviour).grabbableToEnemies = true;
			((GrabbableObject)telephoneBehaviour).itemProperties = TelephoneItem;
			RingtoneClip = planBundle.LoadAsset<AudioClip>("Assets/Telephone/Clips/ling.mp3");
			for (int k = 0; k < 5; k++)
			{
				TelClips.Add(planBundle.LoadAsset<VideoClip>("Assets/Telephone/Clips/v" + k + ".mp4"));
			}
			TelMat = planBundle.LoadAsset<Material>("Assets/Telephone/TelScreenMat.mat");
			CallingMat = planBundle.LoadAsset<Material>("Assets/Telephone/calling.mat");
			LieDetectorItem = planBundle.LoadAsset<Item>("Assets/Lie/liedetec.asset");
			LieDetectorBehaviour lieDetectorBehaviour = LieDetectorItem.spawnPrefab.AddComponent<LieDetectorBehaviour>();
			((GrabbableObject)lieDetectorBehaviour).grabbable = true;
			((GrabbableObject)lieDetectorBehaviour).grabbableToEnemies = true;
			((GrabbableObject)lieDetectorBehaviour).itemProperties = LieDetectorItem;
			RightClip = planBundle.LoadAsset<AudioClip>("Assets/Lie/correct.ogg");
			WrongClip = planBundle.LoadAsset<AudioClip>("Assets/Lie/wrong.ogg");
			WrongMat = planBundle.LoadAsset<Material>("Assets/Lie/wrong.mat");
			RightMat = planBundle.LoadAsset<Material>("Assets/Lie/right.mat");
			VacuumItem = planBundle.LoadAsset<Item>("Assets/Aspi/aspi.asset");
			AspiBehaviour aspiBehaviour = VacuumItem.spawnPrefab.AddComponent<AspiBehaviour>();
			((GrabbableObject)aspiBehaviour).grabbable = true;
			((GrabbableObject)aspiBehaviour).grabbableToEnemies = true;
			((GrabbableObject)aspiBehaviour).itemProperties = VacuumItem;
			CheeseItem = planBundle.LoadAsset<Item>("Assets/Cheese/cheese_item.asset");
			CheeseBehaviour cheeseBehaviour = CheeseItem.spawnPrefab.AddComponent<CheeseBehaviour>();
			((GrabbableObject)cheeseBehaviour).grabbable = true;
			((GrabbableObject)cheeseBehaviour).grabbableToEnemies = true;
			((GrabbableObject)cheeseBehaviour).itemProperties = CheeseItem;
			KkItem = planBundle.LoadAsset<Item>("Assets/Cheese/kk_item.asset");
			KkBehaviour kkBehaviour = KkItem.spawnPrefab.AddComponent<KkBehaviour>();
			((GrabbableObject)kkBehaviour).grabbable = true;
			((GrabbableObject)kkBehaviour).grabbableToEnemies = true;
			((GrabbableObject)kkBehaviour).itemProperties = KkItem;
			SplatClip = planBundle.LoadAsset<AudioClip>("Assets/Cheese/splat.ogg");
			ChopstickItem = planBundle.LoadAsset<Item>("Assets/ChopSticks/chopsticks.asset");
			ChopstickBehaviour chopstickBehaviour = ChopstickItem.spawnPrefab.AddComponent<ChopstickBehaviour>();
			((GrabbableObject)chopstickBehaviour).grabbable = true;
			((GrabbableObject)chopstickBehaviour).grabbableToEnemies = true;
			((GrabbableObject)chopstickBehaviour).itemProperties = ChopstickItem;
			FluteItem = planBundle.LoadAsset<Item>("Assets/Flute/flute_item.asset");
			FluteBehaviour fluteBehaviour = FluteItem.spawnPrefab.AddComponent<FluteBehaviour>();
			((GrabbableObject)fluteBehaviour).grabbable = true;
			((GrabbableObject)fluteBehaviour).grabbableToEnemies = true;
			((GrabbableObject)fluteBehaviour).itemProperties = FluteItem;
			FluteClip = planBundle.LoadAsset<AudioClip>("Assets/Flute/dj.ogg");
			BolItem = planBundle.LoadAsset<Item>("Assets/Ravix/Bol/bol.asset");
			BolBehaviour bolBehaviour = BolItem.spawnPrefab.AddComponent<BolBehaviour>();
			((GrabbableObject)bolBehaviour).grabbable = true;
			((GrabbableObject)bolBehaviour).grabbableToEnemies = true;
			((GrabbableObject)bolBehaviour).itemProperties = BolItem;
			BoosterItem = planBundle.LoadAsset<Item>("Assets/Ravix/Booster/Booster.asset");
			BoosterBehaviour boosterBehaviour = BoosterItem.spawnPrefab.AddComponent<BoosterBehaviour>();
			((GrabbableObject)boosterBehaviour).grabbable = true;
			((GrabbableObject)boosterBehaviour).grabbableToEnemies = true;
			((GrabbableObject)boosterBehaviour).itemProperties = BoosterItem;
			JetpackBroken = planBundle.LoadAsset<AudioClip>("Assets/Ravix/Booster/JetpackBroken.wav");
			JetPackThrustStart = planBundle.LoadAsset<AudioClip>("Assets/Ravix/Booster/JetPackThrustStart.wav");
			AtiItem = planBundle.LoadAsset<Item>("Assets/Ravix/ATI/ati.asset");
			AtiBehaviour atiBehaviour = AtiItem.spawnPrefab.AddComponent<AtiBehaviour>();
			((GrabbableObject)atiBehaviour).grabbable = true;
			((GrabbableObject)atiBehaviour).grabbableToEnemies = true;
			((GrabbableObject)atiBehaviour).itemProperties = AtiItem;
			VacuumStartClip = planBundle.LoadAsset<AudioClip>("Assets/Aspi/vac_start.ogg");
			VacuumLoopClip = planBundle.LoadAsset<AudioClip>("Assets/Aspi/vac_loop.ogg");
			VacuumEndClip = planBundle.LoadAsset<AudioClip>("Assets/Aspi/vac_end.ogg");
			JsuiouMat = planBundle.LoadAsset<Material>("Assets/PlanTarot/Mats/JsuiouMat.mat");
			NWordMat = planBundle.LoadAsset<Material>("Assets/PlanTarot/Mats/nwordMat.mat");
			TheMoolMat = planBundle.LoadAsset<Material>("Assets/PlanTarot/Mats/themoolMat.mat");
			SpectrumMat = planBundle.LoadAsset<Material>("Assets/PlanTarot/Spectrum/SpecMat.mat");
			RotateMat = planBundle.LoadAsset<Material>("Assets/PlanTarot/Mats/360Mat.mat");
			RotateClips.Add(planBundle.LoadAsset<AudioClip>("Assets/PlanTarot/Audio/aso36.ogg"));
			RotateClips.Add(planBundle.LoadAsset<AudioClip>("Assets/PlanTarot/Audio/tomo36.ogg"));
			OrangeBurn = planBundle.LoadAsset<Material>("Assets/PlanTarot/Mats/OrangeBurn.mat");
			JeSuisOuClip = planBundle.LoadAsset<AudioClip>("Assets/PlanTarot/Audio/jsuiou.ogg");
			TheMoolClip = planBundle.LoadAsset<AudioClip>("Assets/PlanTarot/Audio/themool.ogg");
			for (int l = 0; l < 6; l++)
			{
				SpectrumMusics.Add(planBundle.LoadAsset<AudioClip>("Assets/PlanTarot/Spectrum/s" + (l + 1) + ".mp3"));
			}
			EatClip = planBundle.LoadAsset<AudioClip>("Assets/nomnom.ogg");
			Comsau = planBundle.LoadAsset<AudioClip>("Assets/comsau.mp3");
			GordionClip = planBundle.LoadAsset<VideoClip>("Assets/scout.mp4");
			OtherClip = planBundle.LoadAsset<VideoClip>("Assets/roblox.mp4");
			Valo1 = planBundle.LoadAsset<VideoClip>("Assets/val1.mp4");
			Valo2 = planBundle.LoadAsset<VideoClip>("Assets/val2.mp4");
			Planet = planBundle.LoadAsset<VideoClip>("Assets/plan1.mp4");
			TintinClip = planBundle.LoadAsset<VideoClip>("Assets/dupon.mp4");
			TintinAudio = planBundle.LoadAsset<AudioClip>("Assets/tintin.mp3");
			LowFan = planBundle.LoadAsset<AudioClip>("Assets/PC/fan_low.ogg");
			HighFan = planBundle.LoadAsset<AudioClip>("Assets/PC/fan_high.ogg");
			HandBehaviour.RiseSfx = planBundle.LoadAsset<AudioClip>("Assets/Hand/rise.ogg");
			HandBehaviour.FunnySfx = planBundle.LoadAsset<AudioClip>("Assets/Hand/funny.ogg");
			HandBehaviour.DownSfx = planBundle.LoadAsset<AudioClip>("Assets/Hand/down.ogg");
			for (int m = 0; m < 7; m++)
			{
				string text2 = "Assets/Micro/p" + (m + 1) + ".ogg";
				AudioClip item2 = planBundle.LoadAsset<AudioClip>(text2);
				KaquiteClips.Add(item2);
			}
			MowStartClip = planBundle.LoadAsset<AudioClip>("Assets/mower/mow_start.ogg");
			MowLoopClip = planBundle.LoadAsset<AudioClip>("Assets/mower/mow_loop.ogg");
			MowEndClip = planBundle.LoadAsset<AudioClip>("Assets/mower/mow_stop.ogg");
			for (int n = 0; n < 5; n++)
			{
				string text3 = "Assets/Clavier/cl" + (n + 1) + ".ogg";
				AudioClip item3 = planBundle.LoadAsset<AudioClip>(text3);
				KeyboardClips.Add(item3);
			}
			for (int num = 0; num < 3; num++)
			{
				string text4 = "Assets/Cheese/s" + (num + 1) + ".ogg";
				AudioClip item4 = planBundle.LoadAsset<AudioClip>(text4);
				StomachacheClips.Add(item4);
			}
			FartClips.Add(planBundle.LoadAsset<AudioClip>("Assets/Cheese/F1.mp3"));
			FartClips.Add(planBundle.LoadAsset<AudioClip>("Assets/Cheese/F1.mp3"));
			NClips.Add(planBundle.LoadAsset<VideoClip>("Assets/PlanTarot/Jumpscare/nga.mp4"));
			NClips.Add(planBundle.LoadAsset<VideoClip>("Assets/PlanTarot/Jumpscare/nword.mp4"));
			NClips.Add(planBundle.LoadAsset<VideoClip>("Assets/PlanTarot/Jumpscare/nword1.mp4"));
			NClips.Add(planBundle.LoadAsset<VideoClip>("Assets/PlanTarot/Jumpscare/nword2.mp4"));
			JumpscareCanvas = planBundle.LoadAsset<GameObject>("Assets/PlanTarot/Jumpscare/JumpscareCanvas.prefab");
			JumpscareCanvas.AddComponent<Jumpscare>();
			for (int num2 = 0; num2 < 6; num2++)
			{
				ScreamClips.Add(planBundle.LoadAsset<AudioClip>("Assets/Scream/s" + (num2 + 1) + ".ogg"));
			}
			PlusTardMat = planBundle.LoadAsset<Material>("Assets/PlanTarot/Mats/PlustardMat.mat");
			PlusTardClip = planBundle.LoadAsset<AudioClip>("Assets/PlanTarot/Audio/plustard.mp3");
			DiscoMat = planBundle.LoadAsset<Material>("Assets/PlanTarot/Mats/DiscoMat.mat");
			LeFauxClip = planBundle.LoadAsset<AudioClip>("Assets/faux.ogg");
		}

		private static void InitScraps()
		{
			PlanRarity = new SpawnRarity(10, PlanAssassin);
			PlanRarity.SetValues(-1, -1, 15, 35, 20, -1, 30, 30, 60, 50, 25);
			SausageTicketRarity = new SpawnRarity(20, SausageTicket);
			SausageTicketRarity.SetValues(15, -1, -1, 25, -1, 17, 30, 33, 45, 50);
			PCRarity = new SpawnRarity(9, PCRavix);
			PCRarity.SetValues(-1, 10, -1, 15, -1, 13, 22, 25, 40, 44, 40);
			CasqueRarity = new SpawnRarity(15, MicroKaquite);
			CasqueRarity.SetValues(10, -1, 13, 22, -1, 22, 20, 20, 40, 26, 33);
			HandRarity = new SpawnRarity(7, HandItem);
			HandRarity.SetValues(10, 15, 15, 40, -1, 30, 13, 10, 10, 35, 20);
			KeyboardRarity = new SpawnRarity(13, KeyboardItem);
			KeyboardRarity.SetValues(7, -1, 15, 20, 15, -1, 20, 25, 35, 35, 25);
			KakahuetRarity = new SpawnRarity(23, KakahuetItem);
			KakahuetRarity.SetValues(-1, -1, 25, 30, 30, -1, 30, 30, 35, 40);
			MowerRarity = new SpawnRarity(10, MowerItem);
			MowerRarity.SetValues(4, -1, 15, 15, 11, -1, 20, 25, 30, 28, 20);
			ScreenRarity = new SpawnRarity(12, ScreenItem);
			ScreenRarity.SetValues(5, 13, 15, 18, -1, 18, 19, 25, 20, 30);
			RouterRarity = new SpawnRarity(10, RouterItem);
			RouterRarity.CopyRaritiesFrom(KeyboardRarity);
			RavcamRarity = new SpawnRarity(15, RavcamItem);
			RavcamRarity.SetValues(10, -1, 15, 20, 15, -1, 20, 25, 35, 35, 25);
			TelephoneRarity = new SpawnRarity(10, TelephoneItem);
			TelephoneRarity.CopyRaritiesFrom(ScreenRarity);
			LieDetectorRarity = new SpawnRarity(10, LieDetectorItem);
			LieDetectorRarity.CopyRaritiesFrom(ScreenRarity);
			VacuumRarity = new SpawnRarity(15, VacuumItem);
			VacuumRarity.CopyRaritiesFrom(MowerRarity);
			CheeseRarity = new SpawnRarity(20, CheeseItem);
			CheeseRarity.CopyRaritiesFrom(SausageTicketRarity);
			FluteRarity = new SpawnRarity(7, FluteItem);
			FluteRarity.CopyRaritiesFrom(HandRarity);
			ChopstickRarity = new SpawnRarity(5, ChopstickItem);
			ChopstickRarity.CopyRaritiesFrom(RavcamRarity);
			ChopstickRarity.Multiply(2f);
			BolRarity = new SpawnRarity(15, BolItem);
			BolRarity.CopyRaritiesFrom(HandRarity);
			BoosterRarity = new SpawnRarity(8, BoosterItem);
			BoosterRarity.SetValues(-1, -1, -1, 12, 15, 10, 15, 17, 35, 22, 35);
			AtiRarity = new SpawnRarity(10, AtiItem);
			AtiRarity.CopyRaritiesFrom(RouterRarity);
		}

		private static void LoadTarotCards()
		{
			AllCards.RegisterCard(typeof(JsuisouCard), 2);
			AllCards.RegisterCard(typeof(NWordCard), 3);
			AllCards.RegisterCard(typeof(SpectrumCard), 5);
			AllCards.RegisterCard(typeof(RotateCard), 4);
			AllCards.RegisterCard(typeof(PlusTardCard), 4);
			AllCards.RegisterCard(typeof(DiscoCard), 5);
		}
	}
	[HarmonyPatch(typeof(GameNetworkManager))]
	internal class NetworkPatcher
	{
		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void RegisterItems()
		{
			NetworkManager component = ((Component)GameNetworkManager.Instance).GetComponent<NetworkManager>();
			component.AddNetworkPrefab(Assets.PlanAssassin.spawnPrefab);
			component.AddNetworkPrefab(Assets.Sausage.spawnPrefab);
			component.AddNetworkPrefab(Assets.PCRavix.spawnPrefab);
			component.AddNetworkPrefab(Assets.SausageTicket.spawnPrefab);
			component.AddNetworkPrefab(Assets.MicroKaquite.spawnPrefab);
			component.AddNetworkPrefab(Assets.LeftHeadsetItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.RightHeadsetItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.HandItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.KakahuetItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.KeyboardItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.MowerItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.ScreenItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.RouterItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.OysterItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.RavcamItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.TelephoneItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.LieDetectorItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.VacuumItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.CheeseItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.KkItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.ChopstickItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.FluteItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.BolItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.BoosterItem.spawnPrefab);
			component.AddNetworkPrefab(Assets.AtiItem.spawnPrefab);
		}
	}
	[HarmonyPatch(typeof(StartOfRound))]
	internal class StartOfRoundPatch
	{
		[HarmonyPatch("Start")]
		[HarmonyPostfix]
		private static void InstantiateJump()
		{
			Assets.JumpscareObj = Object.Instantiate<GameObject>(Assets.JumpscareCanvas);
		}

		[HarmonyPatch("Awake")]
		[HarmonyPostfix]
		private static void AddScrapItem(StartOfRound __instance)
		{
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			using (IEnumerator<UnlockableItem> enumerator = __instance.unlockablesList.unlockables.Where((UnlockableItem unlockable) => unlockable.unlockableName == "Disco Ball").GetEnumerator())
			{
				if (enumerator.MoveNext())
				{
					UnlockableItem current = enumerator.Current;
					Assets.DiscoBall = Object.Instantiate<GameObject>(current.prefabObject, (Transform)null, true);
					Assets.DiscoBall.transform.position = new Vector3(0f, -1000f, 0f);
					((Behaviour)Assets.DiscoBall.GetComponent<AutoParentToShip>()).enabled = false;
					((Behaviour)Assets.DiscoBall.GetComponentInChildren<CozyLights>()).enabled = false;
					((Behaviour)Assets.DiscoBall.GetComponentInChildren<Animator>()).enabled = false;
					((Component)Assets.DiscoBall.transform.GetChild(1)).gameObject.SetActive(false);
					((Renderer)((Component)Assets.DiscoBall.transform.GetChild(0).GetChild(0)).gameObject.GetComponent<MeshRenderer>()).enabled = false;
				}
			}
			SelectableLevel[] levels = __instance.levels;
			foreach (SelectableLevel val in levels)
			{
				switch (val.levelID)
				{
				case 2:
					val.videoReel = Assets.Valo1;
					break;
				case 3:
					val.videoReel = Assets.GordionClip;
					break;
				case 5:
					val.videoReel = Assets.OtherClip;
					break;
				case 7:
					val.videoReel = Assets.Valo2;
					break;
				case 9:
					val.videoReel = Assets.Planet;
					break;
				}
				Assets.PlanRarity.ApplySpawnRarity(val);
				Assets.SausageTicketRarity.ApplySpawnRarity(val);
				Assets.PCRarity.ApplySpawnRarity(val);
				Assets.CasqueRarity.ApplySpawnRarity(val);
				Assets.HandRarity.ApplySpawnRarity(val);
				Assets.KeyboardRarity.ApplySpawnRarity(val);
				Assets.KakahuetRarity.ApplySpawnRarity(val);
				Assets.MowerRarity.ApplySpawnRarity(val);
				Assets.ScreenRarity.ApplySpawnRarity(val);
				Assets.RouterRarity.ApplySpawnRarity(val);
				Assets.RavcamRarity.ApplySpawnRarity(val);
				Assets.TelephoneRarity.ApplySpawnRarity(val);
				Assets.LieDetectorRarity.ApplySpawnRarity(val);
				Assets.VacuumRarity.ApplySpawnRarity(val);
				Assets.CheeseRarity.ApplySpawnRarity(val);
				Assets.FluteRarity.ApplySpawnRarity(val);
				Assets.ChopstickRarity.ApplySpawnRarity(val);
				Assets.BolRarity.ApplySpawnRarity(val);
				Assets.BoosterRarity.ApplySpawnRarity(val);
				Assets.AtiRarity.ApplySpawnRarity(val);
			}
			RegisterItem(Assets.PlanAssassin, __instance);
			RegisterItem(Assets.Sausage, __instance);
			RegisterItem(Assets.PCRavix, __instance);
			RegisterItem(Assets.SausageTicket, __instance);
			RegisterItem(Assets.MicroKaquite, __instance);
			RegisterItem(Assets.LeftHeadsetItem, __instance);
			RegisterItem(Assets.RightHeadsetItem, __instance);
			RegisterItem(Assets.HandItem, __instance);
			RegisterItem(Assets.KeyboardItem, __instance);
			RegisterItem(Assets.KakahuetItem, __instance);
			RegisterItem(Assets.MowerItem, __instance);
			RegisterItem(Assets.ScreenItem, __instance);
			RegisterItem(Assets.RouterItem, __instance);
			RegisterItem(Assets.OysterItem, __instance);
			RegisterItem(Assets.RavcamItem, __instance);
			RegisterItem(Assets.TelephoneItem, __instance);
			RegisterItem(Assets.LieDetectorItem, __instance);
			RegisterItem(Assets.VacuumItem, __instance);
			RegisterItem(Assets.CheeseItem, __instance);
			RegisterItem(Assets.KkItem, __instance);
			RegisterItem(Assets.ChopstickItem, __instance);
			RegisterItem(Assets.FluteItem, __instance);
			RegisterItem(Assets.BolItem, __instance);
			RegisterItem(Assets.BoosterItem, __instance);
			RegisterItem(Assets.AtiItem, __instance);
		}

		private static void RegisterItem(Item item, StartOfRound manager)
		{
			if (!manager.allItemsList.itemsList.Contains(item))
			{
				manager.allItemsList.itemsList.Add(item);
			}
		}
	}
}
namespace LCPlanAssassin.Items
{
	public class AspiBehaviour : NoisemakerProp
	{
		private AudioSource itemAudio;

		private AudioSource loopSource;

		private Transform suckPoint;

		private bool isOn;

		private float lastUse;

		private readonly float suckForce = 6f;

		private readonly float suckRange = 5f;

		public override void Start()
		{
			((NoisemakerProp)this).Start();
			itemAudio = ((Component)this).gameObject.GetComponent<AudioSource>();
			((Component)itemAudio).gameObject.AddComponent<AudioDistortionFilter>().distortionLevel = 0.6f;
			loopSource = ((Component)this).gameObject.AddComponent<AudioSource>();
			loopSource.volume = 1f;
			loopSource.spatialBlend = 1f;
			loopSource.dopplerLevel = 0.45f;
			loopSource.spread = 45f;
			loopSource.rolloffMode = (AudioRolloffMode)1;
			loopSource.minDistance = 3f;
			loopSource.maxDistance = 60f;
			loopSource.loop = true;
			loopSource.clip = Assets.VacuumLoopClip;
			suckPoint = ((Component)this).gameObject.transform.GetChild(2);
		}

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			if (((NetworkBehaviour)this).IsOwner && buttonDown && !((double)Time.time - (double)lastUse < 5.0))
			{
				lastUse = Time.time;
				UseItemServerRpc();
			}
		}

		public override void Update()
		{
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: 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_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			((GrabbableObject)this).Update();
			((GrabbableObject)this).useCooldown = (((double)(Time.time - lastUse) >= 5.0) ? 0f : 10f);
			if (!isOn)
			{
				return;
			}
			PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController;
			if (Object.op_Implicit((Object)(object)localPlayerController) && localPlayerController.isPlayerControlled && !localPlayerController.isPlayerDead && (!Object.op_Implicit((Object)(object)((GrabbableObject)this).playerHeldBy) || localPlayerController.playerClientId != ((GrabbableObject)this).playerHeldBy.playerClientId))
			{
				float num = Vector3.Distance(((Component)localPlayerController).transform.position, suckPoint.position);
				if (!(num > suckRange))
				{
					Vector3 val = suckPoint.position - ((Component)localPlayerController).transform.position;
					Vector3 val2 = ((Vector3)(ref val)).normalized * (suckForce * (float)(1.0 - (double)(num / suckRange)));
					localPlayerController.externalForces += val2;
				}
			}
		}

		private IEnumerator StartVacuumCoroutine()
		{
			if (!isOn)
			{
				isOn = true;
				itemAudio.PlayOneShot(Assets.VacuumStartClip);
				yield return (object)new WaitForSeconds(Assets.VacuumStartClip.length - 0.2f);
				loopSource.Play();
				loopSource.volume = 0f;
				float deltaTime = 0f;
				while ((double)deltaTime < 0.2)
				{
					loopSource.volume = deltaTime / 0.2f;
					deltaTime += Time.deltaTime;
					yield return null;
				}
				loopSource.volume = 1f;
			}
		}

		private IEnumerator StopVacuumCoroutine()
		{
			if (isOn)
			{
				isOn = false;
				itemAudio.volume = 0.5f;
				itemAudio.PlayOneShot(Assets.VacuumEndClip);
				loopSource.volume = 1f;
				float deltaTime = 0f;
				while ((double)deltaTime < 0.25)
				{
					loopSource.volume = (float)(1.0 - (double)deltaTime / 0.25);
					itemAudio.volume = Mathf.Lerp(0.5f, 1f, deltaTime / 0.25f);
					deltaTime += Time.deltaTime;
					yield return null;
				}
				loopSource.Stop();
				loopSource.volume = 1f;
				itemAudio.volume = 1f;
			}
		}

		[ServerRpc(RequireOwnership = false)]
		private void UseItemServerRpc()
		{
			//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)
			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(2950870372u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2950870372u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					SetStateClientRpc(!isOn);
				}
			}
		}

		[ClientRpc]
		private void SetStateClientRpc(bool state)
		{
			//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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3699694096u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref state, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3699694096u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					((MonoBehaviour)this).StartCoroutine(state ? StartVacuumCoroutine() : StopVacuumCoroutine());
				}
			}
		}

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

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_AspiBehaviour()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			NetworkManager.__rpc_func_table.Add(2950870372u, new RpcReceiveHandler(__rpc_handler_2950870372));
			NetworkManager.__rpc_func_table.Add(3699694096u, new RpcReceiveHandler(__rpc_handler_3699694096));
		}

		private static void __rpc_handler_2950870372(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;
				((AspiBehaviour)(object)target).UseItemServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3699694096(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_005e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				bool stateClientRpc = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref stateClientRpc, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((AspiBehaviour)(object)target).SetStateClientRpc(stateClientRpc);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "AspiBehaviour";
		}
	}
	public class AtiBehaviour : GrabbableObject
	{
		private PlayerControllerB previousHolder;

		public override void GrabItem()
		{
			((GrabbableObject)this).GrabItem();
			if (Object.op_Implicit((Object)(object)base.playerHeldBy) && !base.playerHeldBy.isPlayerDead && base.playerHeldBy.isPlayerControlled && !((Object)(object)base.playerHeldBy != (Object)(object)GameNetworkManager.Instance.localPlayerController))
			{
				if (!Object.op_Implicit((Object)(object)((Component)base.playerHeldBy).gameObject.GetComponent<LowFPSComponent>()))
				{
					((Component)base.playerHeldBy).gameObject.AddComponent<LowFPSComponent>();
				}
				LowFPSComponent component = ((Component)base.playerHeldBy).gameObject.GetComponent<LowFPSComponent>();
				component.targetFPS = 10;
				((MonoBehaviour)this).StartCoroutine(LowFPSCoroutine(component));
				previousHolder = base.playerHeldBy;
			}
		}

		private IEnumerator LowFPSCoroutine(LowFPSComponent component)
		{
			yield return (object)new WaitForFixedUpdate();
			component.SetActive(active: true);
		}

		public override void DiscardItem()
		{
			((GrabbableObject)this).DiscardItem();
			if (Object.op_Implicit((Object)(object)previousHolder) && !previousHolder.isPlayerDead && previousHolder.isPlayerControlled && !((Object)(object)previousHolder != (Object)(object)GameNetworkManager.Instance.localPlayerController))
			{
				LowFPSComponent component = ((Component)previousHolder).gameObject.GetComponent<LowFPSComponent>();
				if (Object.op_Implicit((Object)(object)component))
				{
					component.SetActive(active: false);
					previousHolder = null;
				}
			}
		}

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

		protected internal override string __getTypeName()
		{
			return "AtiBehaviour";
		}
	}
	public class BolBehaviour : GrabbableObject
	{
		private AudioSource source;

		public override void Start()
		{
			((GrabbableObject)this).Start();
			source = ((Component)this).gameObject.GetComponent<AudioSource>();
		}

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			if (((NetworkBehaviour)this).IsOwner && !base.deactivated && buttonDown && base.isHeld && !((Object)(object)base.playerHeldBy == (Object)null))
			{
				UseItemServerRpc();
			}
		}

		public override void PlayDropSFX()
		{
			if (!((Behaviour)this).enabled)
			{
				base.hasHitGround = true;
			}
			else
			{
				((GrabbableObject)this).PlayDropSFX();
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void UseItemServerRpc()
		{
			//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)
			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(1859503350u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1859503350u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					UseItemClientRpc();
				}
			}
		}

		[ClientRpc]
		public void UseItemClientRpc()
		{
			//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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1442989681u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1442989681u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				source.PlayOneShot(Assets.EatClip);
				PlayerControllerBPatch.SausageDict[base.playerHeldBy.playerClientId] = Time.time;
				if ((Object)(object)base.playerHeldBy == (Object)(object)GameNetworkManager.Instance.localPlayerController)
				{
					AddShieldServerRpc((int)base.playerHeldBy.playerClientId);
					HUDManager.Instance.DisplayTip("Shield", "Vous avez un bouclier en plus", false, false, "LC_Tip1");
				}
				((Behaviour)this).enabled = false;
				((GrabbableObject)this).DestroyObjectInHand(base.playerHeldBy);
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void AddShieldServerRpc(int playerId)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_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_0071: 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)
			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(1324677713u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerId);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1324677713u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					AddShieldClientRpc(playerId);
				}
			}
		}

		[ClientRpc]
		public void AddShieldClientRpc(int playerId)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_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_0071: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2802635675u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, playerId);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2802635675u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				if (PlayerControllerBPatch.ShieldDict.ContainsKey((ulong)playerId))
				{
					PlayerControllerBPatch.ShieldDict[(ulong)playerId]++;
				}
				else
				{
					PlayerControllerBPatch.ShieldDict.Add((ulong)playerId, 1);
				}
			}
		}

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

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_BolBehaviour()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			NetworkManager.__rpc_func_table.Add(1859503350u, new RpcReceiveHandler(__rpc_handler_1859503350));
			NetworkManager.__rpc_func_table.Add(1442989681u, new RpcReceiveHandler(__rpc_handler_1442989681));
			NetworkManager.__rpc_func_table.Add(1324677713u, new RpcReceiveHandler(__rpc_handler_1324677713));
			NetworkManager.__rpc_func_table.Add(2802635675u, new RpcReceiveHandler(__rpc_handler_2802635675));
		}

		private static void __rpc_handler_1859503350(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;
				((BolBehaviour)(object)target).UseItemServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1442989681(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)2;
				((BolBehaviour)(object)target).UseItemClientRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1324677713(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((BolBehaviour)(object)target).AddShieldServerRpc(playerId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2802635675(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				int playerId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((BolBehaviour)(object)target).AddShieldClientRpc(playerId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "BolBehaviour";
		}
	}
	public class BoosterBehaviour : GrabbableObject
	{
		private AudioSource audioSource;

		public bool active;

		public float fuel = 100f;

		public float power = 1f;

		public bool broken;

		private Vector3 force = Vector3.zero;

		private readonly float acceleration = 10f;

		public override void Start()
		{
			((GrabbableObject)this).Start();
			audioSource = ((Component)this).GetComponent<AudioSource>();
			audioSource.loop = true;
		}

		public override void Update()
		{
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0194: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
			((GrabbableObject)this).Update();
			if (!((NetworkBehaviour)this).IsOwner)
			{
				return;
			}
			if ((double)fuel <= 0.0)
			{
				if (active)
				{
					ActivateBoosterServerRpc(activate: false);
				}
			}
			else if (!((Object)(object)base.playerHeldBy == (Object)null))
			{
				if (active)
				{
					power = Mathf.Clamp(power + Time.deltaTime * acceleration, 1f, 100f);
					force = Vector3.Lerp(force, ((Component)base.playerHeldBy).transform.up * power, Time.deltaTime * acceleration);
					fuel -= Time.deltaTime * (power / 5f);
				}
				else
				{
					power = 0f;
					force = Vector3.zero;
				}
				RaycastHit val = default(RaycastHit);
				if (!base.playerHeldBy.isPlayerDead && Physics.Raycast(((Component)base.playerHeldBy).transform.position, force, ref val, 25f, StartOfRound.Instance.allPlayersCollideWithMask, (QueryTriggerInteraction)1) && (double)(((Vector3)(ref force)).magnitude - ((RaycastHit)(ref val)).distance) > 50.0 && (double)((RaycastHit)(ref val)).distance < 4.0)
				{
					base.playerHeldBy.KillPlayer(force, true, (CauseOfDeath)16, 0, default(Vector3));
				}
				PlayerControllerB playerHeldBy = base.playerHeldBy;
				playerHeldBy.externalForces += force;
			}
		}

		public override void OnHitGround()
		{
			((GrabbableObject)this).OnHitGround();
			if (active)
			{
				ActivateBoosterServerRpc(activate: false);
				audioSource.Stop();
				ExplodeBoosterServerRpc();
			}
		}

		public override void DiscardItem()
		{
			if (((NetworkBehaviour)this).IsOwner && base.playerHeldBy.isPlayerDead && !broken && base.playerHeldBy.jetpackControls)
			{
				ActivateBoosterServerRpc(activate: false);
				ExplodeBoosterServerRpc();
			}
			if (base.playerHeldBy.jetpackControls)
			{
				base.playerHeldBy.disablingJetpackControls = true;
			}
			((GrabbableObject)this).DiscardItem();
		}

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			if (((NetworkBehaviour)this).IsOwner && buttonDown && ((Behaviour)this).enabled && StartOfRound.Instance.shipHasLanded)
			{
				if (broken)
				{
					UseBrokenServerRpc();
				}
				else
				{
					ActivateBoosterServerRpc(activate: true);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void ActivateBoosterServerRpc(bool activate)
		{
			//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)
			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(3723853076u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref activate, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3723853076u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost) && !broken)
			{
				if ((double)fuel <= 0.0)
				{
					activate = false;
				}
				ActivateBoosterClientRpc(activate);
			}
		}

		[ClientRpc]
		public void ActivateBoosterClientRpc(bool activate)
		{
			//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_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				ClientRpcParams val = default(ClientRpcParams);
				FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1457532584u, val, (RpcDelivery)0);
				((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref activate, default(ForPrimitives));
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1457532584u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				active = activate;
				base.playerHeldBy.disablingJetpackControls = !active;
				if (!active)
				{
					audioSource.Stop();
					return;
				}
				base.playerHeldBy.jetpackControls = true;
				base.playerHeldBy.syncFullRotation = ((Component)base.playerHeldBy).transform.eulerAngles;
				audioSource.PlayOneShot(Assets.JetPackThrustStart);
				audioSource.Play();
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void ExplodeBoosterServerRpc()
		{
			//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)
			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(1032996413u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1032996413u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost) && !broken && !((double)fuel <= 0.0))
				{
					ExplodeBoosterClientRpc();
				}
			}
		}

		[ClientRpc]
		public void ExplodeBoosterClientRpc()
		{
			//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_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 != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1037012854u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1037012854u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					broken = true;
					fuel = 0f;
					audioSource.Stop();
					((GrabbableObject)this).SetScrapValue(base.scrapValue / 5);
					Landmine.SpawnExplosion(((Component)this).transform.position, true, 2f, 5f, 50, 5f, (GameObject)null, false);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void UseBrokenServerRpc()
		{
			//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)
			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(634672759u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 634672759u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					UseBrokenClientRpc();
				}
			}
		}

		[ClientRpc]
		public void UseBrokenClientRpc()
		{
			//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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2266048005u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2266048005u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					audioSource.PlayOneShot(Assets.JetpackBroken);
				}
			}
		}

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

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_BoosterBehaviour()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Expected O, but got Unknown
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Expected O, but got Unknown
			NetworkManager.__rpc_func_table.Add(3723853076u, new RpcReceiveHandler(__rpc_handler_3723853076));
			NetworkManager.__rpc_func_table.Add(1457532584u, new RpcReceiveHandler(__rpc_handler_1457532584));
			NetworkManager.__rpc_func_table.Add(1032996413u, new RpcReceiveHandler(__rpc_handler_1032996413));
			NetworkManager.__rpc_func_table.Add(1037012854u, new RpcReceiveHandler(__rpc_handler_1037012854));
			NetworkManager.__rpc_func_table.Add(634672759u, new RpcReceiveHandler(__rpc_handler_634672759));
			NetworkManager.__rpc_func_table.Add(2266048005u, new RpcReceiveHandler(__rpc_handler_2266048005));
		}

		private static void __rpc_handler_3723853076(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_005e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				bool activate = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref activate, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((BoosterBehaviour)(object)target).ActivateBoosterServerRpc(activate);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1457532584(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_005e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				bool activate = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref activate, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((BoosterBehaviour)(object)target).ActivateBoosterClientRpc(activate);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1032996413(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;
				((BoosterBehaviour)(object)target).ExplodeBoosterServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1037012854(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)2;
				((BoosterBehaviour)(object)target).ExplodeBoosterClientRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_634672759(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;
				((BoosterBehaviour)(object)target).UseBrokenServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2266048005(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)2;
				((BoosterBehaviour)(object)target).UseBrokenClientRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "BoosterBehaviour";
		}
	}
	public class CasqueBehaviour : NoisemakerProp
	{
		private AudioSource itemAudio;

		private float lastTimeUsed;

		private AudioDistortionFilter distortionFilter;

		private float breakChance = 5f;

		public override void Start()
		{
			((NoisemakerProp)this).Start();
			itemAudio = ((Component)this).gameObject.GetComponent<AudioSource>();
			distortionFilter = ((Component)this).gameObject.AddComponent<AudioDistortionFilter>();
			distortionFilter.distortionLevel = 0.75f;
		}

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			if (!buttonDown || !((NetworkBehaviour)this).IsOwner || (double)(Time.time - lastTimeUsed) < 3.0 || ((GrabbableObject)this).deactivated)
			{
				return;
			}
			if (Random.Range(0f, 100f) <= breakChance && StartOfRound.Instance.shipHasLanded)
			{
				BreakServerRpc();
				if (!((Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null))
				{
					ItemDropServerRpc(((GrabbableObject)this).playerHeldBy.playerClientId);
				}
			}
			else
			{
				lastTimeUsed = Time.time;
				PlayRandomSoundServerRpc();
			}
		}

		public override void Update()
		{
			((GrabbableObject)this).Update();
			((GrabbableObject)this).useCooldown = ((Time.time - lastTimeUsed >= 3f) ? 0f : 10f);
		}

		public override void GrabItem()
		{
			if (!((GrabbableObject)this).deactivated && ((NetworkBehaviour)this).IsOwner && Object.op_Implicit((Object)(object)((GrabbableObject)this).playerHeldBy))
			{
				ItemGrabServerRpc(((GrabbableObject)this).playerHeldBy.playerClientId);
			}
			distortionFilter.distortionLevel = 0.75f;
			((GrabbableObject)this).GrabItem();
		}

		public override void DiscardItem()
		{
			if (!((GrabbableObject)this).deactivated && ((NetworkBehaviour)this).IsOwner && Object.op_Implicit((Object)(object)((GrabbableObject)this).playerHeldBy))
			{
				ItemDropServerRpc(((GrabbableObject)this).playerHeldBy.playerClientId);
			}
			distortionFilter.distortionLevel = 0f;
			((GrabbableObject)this).DiscardItem();
		}

		public void PlaySoundLocal(int soundId)
		{
			itemAudio.PlayOneShot(Assets.KaquiteClips[soundId]);
		}

		private bool IsAnyCasqueInInventory(PlayerControllerB player, bool grab)
		{
			return player.ItemSlots.Any((GrabbableObject item) => (item is CasqueBehaviour && (Object)(object)item != (Object)(object)this) || grab);
		}

		public void ItemGrabLocal(ulong playerWhoGrabbed)
		{
			if (GameNetworkManager.Instance.localPlayerController.playerClientId == playerWhoGrabbed)
			{
				return;
			}
			PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts;
			foreach (PlayerControllerB val in allPlayerScripts)
			{
				if (val.playerClientId == playerWhoGrabbed)
				{
					SetPlayerDistortion(val, IsAnyCasqueInInventory(val, grab: true) ? 0.8f : 0f);
				}
			}
		}

		public void ItemDropLocal(ulong playerWhoDropped)
		{
			if (GameNetworkManager.Instance.localPlayerController.playerClientId == playerWhoDropped)
			{
				return;
			}
			PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts;
			foreach (PlayerControllerB val in allPlayerScripts)
			{
				if (val.playerClientId == playerWhoDropped)
				{
					SetPlayerDistortion(val, IsAnyCasqueInInventory(val, grab: false) ? 0.8f : 0f);
				}
			}
		}

		private static void SetPlayerDistortion(PlayerControllerB player, float distortionLevel)
		{
			AudioDistortionFilter filterForPlayer = PlayerDistortionManager.GetFilterForPlayer(player);
			if (Object.op_Implicit((Object)(object)filterForPlayer))
			{
				filterForPlayer.distortionLevel = distortionLevel;
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void PlayRandomSoundServerRpc()
		{
			//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_00c7: 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(3032412797u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3032412797u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				RoundManager.Instance.PlayAudibleNoise(((Component)this).transform.position, 25f, 0.9f, 0, false, 0);
				int soundId = Random.Range(0, Assets.KaquiteClips.Count);
				if (!((NetworkBehaviour)this).IsHost)
				{
					PlaySoundLocal(soundId);
				}
				PlaySoundClientRpc(soundId);
			}
		}

		[ClientRpc]
		public void PlaySoundClientRpc(int soundId)
		{
			//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_0071: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1612812337u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, soundId);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1612812337u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					PlaySoundLocal(soundId);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void ItemGrabServerRpc(ulong playerWhoGrabbed)
		{
			//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_0071: 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)
			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(3726082168u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, playerWhoGrabbed);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3726082168u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				if (!((NetworkBehaviour)this).IsHost)
				{
					ItemGrabLocal(playerWhoGrabbed);
				}
				ItemGrabClientRpc(playerWhoGrabbed);
			}
		}

		[ClientRpc]
		public void ItemGrabClientRpc(ulong playerWhoGrabbed)
		{
			//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_0071: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1583903099u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerWhoGrabbed);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1583903099u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					ItemGrabLocal(playerWhoGrabbed);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		public void ItemDropServerRpc(ulong playerWhoDropped)
		{
			//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_0071: 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)
			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(1507338783u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, playerWhoDropped);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1507338783u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				if (!((NetworkBehaviour)this).IsHost)
				{
					ItemDropLocal(playerWhoDropped);
				}
				ItemDropClientRpc(playerWhoDropped);
			}
		}

		[ClientRpc]
		public void ItemDropClientRpc(ulong playerWhoDropped)
		{
			//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_0071: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3140763079u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerWhoDropped);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3140763079u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					ItemDropLocal(playerWhoDropped);
				}
			}
		}

		private void SpawnItem(Item item, Vector3 deltaPos)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Object.Instantiate<GameObject>(item.spawnPrefab, ((Component)this).transform.position + deltaPos, Quaternion.identity);
			GrabbableObject component = val.GetComponent<GrabbableObject>();
			((Component)component).transform.rotation = Quaternion.Euler(component.itemProperties.restingRotation);
			component.fallTime = 0f;
			val.GetComponent<NetworkObject>().Spawn(false);
			component.FallToGround(true, true, default(Vector3));
			component.SetScrapValue(((GrabbableObject)this).scrapValue / 2);
		}

		[ServerRpc(RequireOwnership = false)]
		public void BreakServerRpc()
		{
			//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_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			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(1848940189u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1848940189u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
			{
				Vector3 val3 = default(Vector3);
				((Vector3)(ref val3))..ctor(0.25f, 0f, 0f);
				if ((Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null && !((GrabbableObject)this).playerHeldBy.isPlayerDead && ((GrabbableObject)this).playerHeldBy.isPlayerControlled)
				{
					val3 = ((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.right;
					((Vector3)(ref val3)).Normalize();
					val3 *= 0.25f;
				}
				SpawnItem(Assets.LeftHeadsetItem, val3);
				SpawnItem(Assets.RightHeadsetItem, -val3);
				BreakClientRpc();
			}
		}

		[ClientRpc]
		public void BreakClientRpc()
		{
			//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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
				{
					ClientRpcParams val = default(ClientRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(301355523u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 301355523u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					((GrabbableObject)this).deactivated = true;
					itemAudio.Stop();
					((GrabbableObject)this).DestroyObjectInHand(((GrabbableObject)this).playerHeldBy);
				}
			}
		}

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

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_CasqueBehaviour()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Expected O, but got Unknown
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Expected O, but got Unknown
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Expected O, but got Unknown
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Expected O, but got Unknown
			NetworkManager.__rpc_func_table.Add(3032412797u, new RpcReceiveHandler(__rpc_handler_3032412797));
			NetworkManager.__rpc_func_table.Add(1612812337u, new RpcReceiveHandler(__rpc_handler_1612812337));
			NetworkManager.__rpc_func_table.Add(3726082168u, new RpcReceiveHandler(__rpc_handler_3726082168));
			NetworkManager.__rpc_func_table.Add(1583903099u, new RpcReceiveHandler(__rpc_handler_1583903099));
			NetworkManager.__rpc_func_table.Add(1507338783u, new RpcReceiveHandler(__rpc_handler_1507338783));
			NetworkManager.__rpc_func_table.Add(3140763079u, new RpcReceiveHandler(__rpc_handler_3140763079));
			NetworkManager.__rpc_func_table.Add(1848940189u, new RpcReceiveHandler(__rpc_handler_1848940189));
			NetworkManager.__rpc_func_table.Add(301355523u, new RpcReceiveHandler(__rpc_handler_301355523));
		}

		private static void __rpc_handler_3032412797(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;
				((CasqueBehaviour)(object)target).PlayRandomSoundServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1612812337(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				int soundId = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref soundId);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((CasqueBehaviour)(object)target).PlaySoundClientRpc(soundId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3726082168(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong playerWhoGrabbed = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerWhoGrabbed);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((CasqueBehaviour)(object)target).ItemGrabServerRpc(playerWhoGrabbed);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1583903099(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong playerWhoGrabbed = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerWhoGrabbed);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((CasqueBehaviour)(object)target).ItemGrabClientRpc(playerWhoGrabbed);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1507338783(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong playerWhoDropped = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerWhoDropped);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((CasqueBehaviour)(object)target).ItemDropServerRpc(playerWhoDropped);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3140763079(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong playerWhoDropped = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerWhoDropped);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((CasqueBehaviour)(object)target).ItemDropClientRpc(playerWhoDropped);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1848940189(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;
				((CasqueBehaviour)(object)target).BreakServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_301355523(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)