Decompiled source of ChillaxSCRAPS v0.8.3

ChillaxMods.dll

Decompiled a month 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 System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using ChillaxMods.NetcodePatcher;
using GameNetcodeStuff;
using HarmonyLib;
using LethalLib;
using LethalLib.Extras;
using LethalLib.Modules;
using LethalThings;
using LethalThings.Extensions;
using Microsoft.CodeAnalysis;
using TMPro;
using Unity.Netcode;
using Unity.Netcode.Components;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("ChillaxMods")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Chillax Mods")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+c0324eed5311fb7bd30a3a4028d035d4b72196d9")]
[assembly: AssemblyProduct("ChillaxMods")]
[assembly: AssemblyTitle("ChillaxMods")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
internal class <Module>
{
	static <Module>()
	{
		NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpy<bool>();
		NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<bool>();
	}
}
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ChillaxMods
{
	public class DeathDanceCanvas : MonoBehaviour
	{
		[SerializeField]
		private Transform container;

		[SerializeField]
		private GameObject namePrefab;

		[SerializeField]
		private Button closeButton;

		public void Initialize(DeathDanceNote note)
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			Debug.Log((object)"Initialized Canvas");
			((UnityEvent)closeButton.onClick).AddListener(new UnityAction(note.Close));
			List<PlayerControllerB> playerList = note.playerList;
			foreach (PlayerControllerB item in playerList)
			{
				DeathDanceName component = Object.Instantiate<GameObject>(namePrefab, container).GetComponent<DeathDanceName>();
				component.Initialize(item, note);
			}
		}
	}
	public class DeathDanceName : MonoBehaviour
	{
		[SerializeField]
		private TMP_Text playerName;

		[SerializeField]
		private Button activateButton;

		public void Initialize(PlayerControllerB player, DeathDanceNote note)
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Expected O, but got Unknown
			playerName.text = player.playerUsername;
			((UnityEvent)activateButton.onClick).AddListener((UnityAction)delegate
			{
				note.ActivateDeathDance(player);
			});
		}
	}
	public class DeathDanceNote : NoisemakerProp
	{
		[SerializeField]
		private DeathDanceCanvas canvasPrefab;

		[SerializeField]
		private GameObject warningPrefab;

		[SerializeField]
		private Vector3 aoeCenter;

		[SerializeField]
		private float aoeRadius;

		[SerializeField]
		private GameObject glowingParticle;

		[SerializeField]
		private GameObject aoeParticle;

		public List<AudioClip> musicClips;

		[SerializeField]
		private GameObject danceMusic;

		private GameObject _tempMusic;

		public List<PlayerControllerB> playerList;

		private DeathDanceCanvas _temp;

		private bool _opened;

		private NetworkVariable<int> playerDancing = new NetworkVariable<int>(-1, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);

		private NetworkVariable<bool> canPickUp = new NetworkVariable<bool>(false, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);

		[SerializeField]
		private float transitionTime;

		[SerializeField]
		private float danceTime;

		private GameObject _tempGlow;

		private float _elapsedTransitionTime;

		private float _elapsedDanceTime;

		private bool _spawned;

		private bool _activated;

		public override void OnNetworkSpawn()
		{
			((NetworkBehaviour)this).OnNetworkSpawn();
			if (((NetworkBehaviour)this).IsHost)
			{
				canPickUp.Value = true;
			}
			NetworkVariable<bool> obj = canPickUp;
			obj.OnValueChanged = (OnValueChangedDelegate<bool>)(object)Delegate.Combine((Delegate?)(object)obj.OnValueChanged, (Delegate?)(object)(OnValueChangedDelegate<bool>)delegate(bool oldValue, bool newValue)
			{
				((GrabbableObject)this).grabbableToEnemies = newValue;
				((GrabbableObject)this).grabbable = newValue;
				if (!newValue && (Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
				{
					PlayerControllerExtensions.DropItem(((GrabbableObject)this).playerHeldBy, (GrabbableObject)(object)this, 0, true);
				}
			});
			_opened = false;
			_spawned = true;
			_elapsedDanceTime = danceTime;
			_elapsedTransitionTime = transitionTime;
		}

		private void OnDrawGizmos()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			Gizmos.color = new Color(1f, 0f, 0f, 0.5f);
			Gizmos.DrawSphere(((Component)this).transform.position + aoeCenter, aoeRadius);
		}

		public override void Update()
		{
			((GrabbableObject)this).Update();
			((GrabbableObject)this).grabbable = canPickUp.Value;
			((GrabbableObject)this).grabbableToEnemies = canPickUp.Value;
			if (!_spawned || (Object)(object)StartOfRound.Instance.localPlayerController == (Object)null)
			{
				return;
			}
			int num = (int)StartOfRound.Instance.localPlayerController.playerClientId;
			if (num != playerDancing.Value)
			{
				return;
			}
			_elapsedTransitionTime -= Time.deltaTime;
			if (!(_elapsedTransitionTime > 0f))
			{
				_elapsedDanceTime -= Time.deltaTime;
				if (_elapsedDanceTime <= 0f)
				{
					ResetServerRpc();
					AOEKills(StartOfRound.Instance.localPlayerController);
				}
				else
				{
					TargetedUpdate(StartOfRound.Instance.localPlayerController);
				}
			}
		}

		private void TargetedUpdate(PlayerControllerB player)
		{
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)_tempGlow))
			{
				PlayGlowingParticleServerRpc(player.playerClientId);
			}
			if (!player.performingEmote)
			{
				ResetServerRpc();
				Debug.Log((object)"KILL PLAYER CUZ HE WAS NOT DANCING");
				Vector3 val = new Vector3(Random.Range(-1f, 1f), Random.Range(0f, 1f), Random.Range(-1f, 1f));
				Vector3 normalized = ((Vector3)(ref val)).normalized;
				Vector3 val2 = normalized * 10f;
				val = default(Vector3);
				player.KillPlayer(val2, true, (CauseOfDeath)0, 0, val);
			}
		}

		private void AOEKills(PlayerControllerB player)
		{
			//IL_0061: 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_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			Debug.Log((object)"AOE KILL");
			PlayAOEParticleServerRpc(player.playerClientId);
			PlayerControllerB[] array = Object.FindObjectsOfType<PlayerControllerB>();
			foreach (PlayerControllerB val in array)
			{
				if (!((Object)(object)val == (Object)(object)player) && val.playerSteamId != 0)
				{
					float num = Vector3.Distance(((Component)player.thisPlayerBody).transform.position, ((Component)val.thisPlayerBody).transform.position);
					Debug.Log((object)$"Player {val.playerUsername}, Distance: {Vector3.Distance(((Component)player.thisPlayerBody).transform.position, ((Component)val.thisPlayerBody).transform.position)}");
					if (!(num > aoeRadius))
					{
						Vector3 val2 = ((Component)val.thisPlayerBody).transform.position - ((Component)player.thisPlayerBody).transform.position;
						Vector3 normalized = ((Vector3)(ref val2)).normalized;
						Vector3 val3 = normalized * 10f;
						val2 = default(Vector3);
						val.KillPlayer(val3, true, (CauseOfDeath)0, 0, val2);
					}
				}
			}
			EnemyAI[] array2 = Object.FindObjectsOfType<EnemyAI>();
			foreach (EnemyAI val4 in array2)
			{
				if (!((Object)(object)val4 == (Object)null) && val4.enemyType.canDie)
				{
					float num2 = Vector3.Distance(((Component)player.thisPlayerBody).transform.position, ((Component)val4).transform.position);
					if (!(num2 > aoeRadius))
					{
						val4.KillEnemy(false);
					}
				}
			}
		}

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			if (!_opened)
			{
				((NoisemakerProp)this).ItemActivate(used, buttonDown);
				if (!((Object)(object)StartOfRound.Instance.localPlayerController != (Object)(object)((GrabbableObject)this).playerHeldBy))
				{
					_opened = true;
					playerList = new List<PlayerControllerB>();
					playerList = UpdatePlayerList();
					_temp = Object.Instantiate<DeathDanceCanvas>(canvasPrefab);
					_temp.Initialize(this);
					Cursor.visible = true;
					Cursor.lockState = (CursorLockMode)0;
				}
			}
		}

		private IEnumerator DestroyDelay()
		{
			PlayerControllerExtensions.DropItem(((GrabbableObject)this).playerHeldBy, (GrabbableObject)(object)this, 0, true);
			if (((NetworkBehaviour)this).IsHost)
			{
				canPickUp.Value = false;
			}
			else
			{
				DisablePickupServerRpc();
			}
			yield return (object)new WaitForSeconds(transitionTime + danceTime);
			if (((NetworkBehaviour)this).IsHost)
			{
				((NetworkBehaviour)this).NetworkObject.Despawn(true);
			}
			else
			{
				DestroyServerRpc();
			}
		}

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

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

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

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

		public void Close()
		{
			if (!((Object)(object)StartOfRound.Instance.localPlayerController != (Object)(object)((GrabbableObject)this).playerHeldBy))
			{
				if ((Object)(object)_temp != (Object)null)
				{
					Object.Destroy((Object)(object)((Component)_temp).gameObject);
				}
				_opened = false;
				Cursor.visible = false;
				Cursor.lockState = (CursorLockMode)1;
			}
		}

		private List<PlayerControllerB> UpdatePlayerList()
		{
			List<PlayerControllerB> list = Object.FindObjectsOfType<PlayerControllerB>().ToList();
			List<PlayerControllerB> list2 = new List<PlayerControllerB>(list);
			foreach (PlayerControllerB item in list)
			{
				if (item.playerSteamId == 0)
				{
					list2.Remove(item);
				}
				Debug.Log((object)("Players in-game: " + item.playerUsername));
			}
			return list2;
		}

		public void ActivateDeathDance(PlayerControllerB player)
		{
			Close();
			if (!_activated)
			{
				_activated = true;
				((MonoBehaviour)this).Invoke("ResetActivate", transitionTime + danceTime);
				((MonoBehaviour)this).StartCoroutine(DestroyDelay());
				ActivateDeathDanceServerRpc(player.playerClientId);
			}
		}

		private void ResetActivate()
		{
			_activated = false;
		}

		[ServerRpc(RequireOwnership = false)]
		private void ActivateDeathDanceServerRpc(ulong 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(1946520276u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerId);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1946520276u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					playerDancing.Value = (int)playerId;
					Debug.Log((object)("Player Dancing is: " + playerDancing.Value));
					int clipToPlay = Random.Range(0, musicClips.Count);
					ActivateDeathDanceClientRpc(playerId, clipToPlay);
				}
			}
		}

		[ClientRpc]
		private void ActivateDeathDanceClientRpc(ulong playerId, int clipToPlay)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: 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_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: 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(1887628593u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, playerId);
				BytePacker.WriteValueBitPacked(val2, clipToPlay);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1887628593u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				PlayerControllerB component = StartOfRound.Instance.allPlayerObjects[playerId].GetComponent<PlayerControllerB>();
				if (Object.op_Implicit((Object)(object)component))
				{
					((MonoBehaviour)this).StartCoroutine(PlayMusic(component, clipToPlay));
				}
				else
				{
					Debug.Log((object)"TARGET PLAYER IS NULL");
				}
				if (playerId == StartOfRound.Instance.localPlayerController.playerClientId)
				{
					Debug.Log((object)"START DANCING");
					_elapsedTransitionTime = transitionTime;
					_elapsedDanceTime = danceTime;
					GameObject val3 = Object.Instantiate<GameObject>(warningPrefab);
					Object.Destroy((Object)(object)val3, transitionTime + 1f);
				}
			}
		}

		private IEnumerator PlayMusic(PlayerControllerB targetedPlayer, int clipToPlay)
		{
			if ((Object)(object)danceMusic != (Object)null)
			{
				Debug.Log((object)"Spawning Music");
				_tempMusic = Object.Instantiate<GameObject>(danceMusic, ((Component)targetedPlayer.thisPlayerBody).transform.position + Vector3.up, Quaternion.identity, ((Component)targetedPlayer).transform);
				_tempMusic.GetComponent<AudioSource>().clip = musicClips[clipToPlay];
				_tempMusic.GetComponent<AudioSource>().loop = false;
				_tempMusic.GetComponent<AudioSource>().Play();
			}
			else
			{
				Debug.Log((object)"MUSIC NOT AVAILABLE");
			}
			((MonoBehaviour)this).Invoke("DestroyTempMusic", transitionTime + danceTime);
			yield return null;
		}

		private void DestroyTempMusic()
		{
			if ((Object)(object)_tempMusic != (Object)null)
			{
				Debug.Log((object)"Destroy Music");
				Object.Destroy((Object)(object)_tempMusic);
			}
		}

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

		[ServerRpc(RequireOwnership = false)]
		private void PlayGlowingParticleServerRpc(ulong 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(2294252830u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerId);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2294252830u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					PlayGlowingParticleClientRpc(playerId);
				}
			}
		}

		[ClientRpc]
		private void PlayGlowingParticleClientRpc(ulong 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)
			//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_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			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(228266792u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, playerId);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 228266792u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && !((Object)(object)_tempGlow == (Object)null))
			{
				PlayerControllerB component = StartOfRound.Instance.allPlayerObjects[playerId].GetComponent<PlayerControllerB>();
				if ((Object)(object)component != (Object)null)
				{
					_tempGlow = Object.Instantiate<GameObject>(glowingParticle, ((Component)component.thisPlayerBody).transform.position + Vector3.up, Quaternion.identity, ((Component)component).transform);
					Debug.Log((object)"PLAYING GLOWING PARTICLE");
					Object.Destroy((Object)(object)_tempGlow.gameObject, transitionTime + danceTime);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		private void PlayAOEParticleServerRpc(ulong 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(2348203400u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerId);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2348203400u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					PlayAOEParticleClientRpc(playerId);
				}
			}
		}

		[ClientRpc]
		private void PlayAOEParticleClientRpc(ulong 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)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			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(1321187740u, val, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val2, playerId);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1321187740u, val, (RpcDelivery)0);
			}
			if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
			{
				PlayerControllerB component = StartOfRound.Instance.allPlayerObjects[playerId].GetComponent<PlayerControllerB>();
				if ((Object)(object)component != (Object)null)
				{
					GameObject val3 = Object.Instantiate<GameObject>(aoeParticle, ((Component)component.thisPlayerBody).transform.position + Vector3.up, Quaternion.identity);
					Object.Destroy((Object)(object)val3, 10f);
					Debug.Log((object)"PLAY AOE PARTICLE");
				}
			}
		}

		protected override void __initializeVariables()
		{
			if (playerDancing == null)
			{
				throw new Exception("DeathDanceNote.playerDancing cannot be null. All NetworkVariableBase instances must be initialized.");
			}
			((NetworkVariableBase)playerDancing).Initialize((NetworkBehaviour)(object)this);
			((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)playerDancing, "playerDancing");
			((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)playerDancing);
			if (canPickUp == null)
			{
				throw new Exception("DeathDanceNote.canPickUp cannot be null. All NetworkVariableBase instances must be initialized.");
			}
			((NetworkVariableBase)canPickUp).Initialize((NetworkBehaviour)(object)this);
			((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)canPickUp, "canPickUp");
			((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)canPickUp);
			((NoisemakerProp)this).__initializeVariables();
		}

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_DeathDanceNote()
		{
			//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
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Expected O, but got Unknown
			NetworkManager.__rpc_func_table.Add(3060219544u, new RpcReceiveHandler(__rpc_handler_3060219544));
			NetworkManager.__rpc_func_table.Add(92084580u, new RpcReceiveHandler(__rpc_handler_92084580));
			NetworkManager.__rpc_func_table.Add(1946520276u, new RpcReceiveHandler(__rpc_handler_1946520276));
			NetworkManager.__rpc_func_table.Add(1887628593u, new RpcReceiveHandler(__rpc_handler_1887628593));
			NetworkManager.__rpc_func_table.Add(2279872089u, new RpcReceiveHandler(__rpc_handler_2279872089));
			NetworkManager.__rpc_func_table.Add(2294252830u, new RpcReceiveHandler(__rpc_handler_2294252830));
			NetworkManager.__rpc_func_table.Add(228266792u, new RpcReceiveHandler(__rpc_handler_228266792));
			NetworkManager.__rpc_func_table.Add(2348203400u, new RpcReceiveHandler(__rpc_handler_2348203400));
			NetworkManager.__rpc_func_table.Add(1321187740u, new RpcReceiveHandler(__rpc_handler_1321187740));
		}

		private static void __rpc_handler_3060219544(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;
				((DeathDanceNote)(object)target).DisablePickupServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_92084580(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;
				((DeathDanceNote)(object)target).DestroyServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1946520276(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 playerId = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((DeathDanceNote)(object)target).ActivateDeathDanceServerRpc(playerId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1887628593(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong playerId = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				int clipToPlay = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref clipToPlay);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((DeathDanceNote)(object)target).ActivateDeathDanceClientRpc(playerId, clipToPlay);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2279872089(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;
				((DeathDanceNote)(object)target).ResetServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2294252830(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 playerId = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((DeathDanceNote)(object)target).PlayGlowingParticleServerRpc(playerId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_228266792(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 playerId = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((DeathDanceNote)(object)target).PlayGlowingParticleClientRpc(playerId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2348203400(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 playerId = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((DeathDanceNote)(object)target).PlayAOEParticleServerRpc(playerId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1321187740(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 playerId = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerId);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((DeathDanceNote)(object)target).PlayAOEParticleClientRpc(playerId);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "DeathDanceNote";
		}
	}
	public class DrainAllBatteries : GrabbableObject
	{
		[SerializeField]
		private AudioSource effectSource;

		public override void EquipItem()
		{
			((GrabbableObject)this).EquipItem();
			GrabbableObject[] itemSlots = base.playerHeldBy.ItemSlots;
			foreach (GrabbableObject val in itemSlots)
			{
				if (!((Object)(object)val == (Object)null) && val.insertedBattery != null)
				{
					val.insertedBattery.charge = 0f;
					val.insertedBattery.empty = true;
				}
			}
			PlayEffectServerRpc();
		}

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

		[ClientRpc]
		public void PlayEffectClientRpc()
		{
			//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(1607689738u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1607689738u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && !((Object)(object)effectSource == (Object)null))
				{
					effectSource.Play();
				}
			}
		}

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

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_DrainAllBatteries()
		{
			//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(901441707u, new RpcReceiveHandler(__rpc_handler_901441707));
			NetworkManager.__rpc_func_table.Add(1607689738u, new RpcReceiveHandler(__rpc_handler_1607689738));
		}

		private static void __rpc_handler_901441707(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;
				((DrainAllBatteries)(object)target).PlayEffectServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1607689738(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;
				((DrainAllBatteries)(object)target).PlayEffectClientRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "DrainAllBatteries";
		}
	}
	public class FixedScrapValue : GrabbableObject
	{
		public int newScrapValue = 0;

		public override void OnNetworkSpawn()
		{
			((NetworkBehaviour)this).OnNetworkSpawn();
			((GrabbableObject)this).SetScrapValue(newScrapValue);
		}

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

		protected internal override string __getTypeName()
		{
			return "FixedScrapValue";
		}
	}
	public class InifiniteKey : GrabbableObject
	{
		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			RaycastHit val = default(RaycastHit);
			if (!((Object)(object)base.playerHeldBy == (Object)null) && ((NetworkBehaviour)this).IsOwner && Physics.Raycast(new Ray(((Component)base.playerHeldBy.gameplayCamera).transform.position, ((Component)base.playerHeldBy.gameplayCamera).transform.forward), ref val, 3f, 2816))
			{
				DoorLock component = ((Component)((RaycastHit)(ref val)).transform).GetComponent<DoorLock>();
				if ((Object)(object)component != (Object)null && component.isLocked && !component.isPickingLock)
				{
					component.UnlockDoorSyncWithServer();
				}
			}
		}

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

		protected internal override string __getTypeName()
		{
			return "InifiniteKey";
		}
	}
	public class SuperSneakers : GrabbableObject
	{
		[SerializeField]
		private float jumpMultiplier = 2f;

		private float _originalJumpForce;

		public override void EquipItem()
		{
			((GrabbableObject)this).EquipItem();
			_originalJumpForce = base.playerHeldBy.jumpForce;
			PlayerControllerB playerHeldBy = base.playerHeldBy;
			playerHeldBy.jumpForce *= jumpMultiplier;
		}

		public override void PocketItem()
		{
			((GrabbableObject)this).PocketItem();
			base.playerHeldBy.jumpForce = _originalJumpForce;
		}

		public override void DiscardItem()
		{
			base.playerHeldBy.jumpForce = _originalJumpForce;
			((GrabbableObject)this).DiscardItem();
		}

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

		protected internal override string __getTypeName()
		{
			return "SuperSneakers";
		}
	}
	public class TotemOfUndying : GrabbableObject
	{
		private bool _spawned = false;

		private int _holdCount = 0;

		private NetworkVariable<bool> canPickUp = new NetworkVariable<bool>(false, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);

		public override void OnNetworkSpawn()
		{
			((NetworkBehaviour)this).OnNetworkSpawn();
			_spawned = true;
			if (((NetworkBehaviour)this).IsHost)
			{
				canPickUp.Value = true;
			}
			NetworkVariable<bool> obj = canPickUp;
			obj.OnValueChanged = (OnValueChangedDelegate<bool>)(object)Delegate.Combine((Delegate?)(object)obj.OnValueChanged, (Delegate?)(object)(OnValueChangedDelegate<bool>)delegate(bool oldValue, bool newValue)
			{
				base.grabbableToEnemies = newValue;
				base.grabbable = newValue;
				if (!newValue && (Object)(object)base.playerHeldBy != (Object)null)
				{
					PlayerControllerExtensions.DropItem(base.playerHeldBy, (GrabbableObject)(object)this, 0, true);
				}
			});
			_holdCount = 0;
		}

		public override void EquipItem()
		{
			((GrabbableObject)this).EquipItem();
			if (!((Object)(object)base.playerHeldBy != (Object)(object)StartOfRound.Instance.localPlayerController))
			{
				StartOfRound.Instance.allowLocalPlayerDeath = false;
				_holdCount++;
				if (_holdCount > 2)
				{
					((MonoBehaviour)this).StartCoroutine(DestroyDelay());
				}
			}
		}

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

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

		private void ResetInvincibility()
		{
			if ((Object)(object)base.playerHeldBy == (Object)(object)StartOfRound.Instance.localPlayerController)
			{
				StartOfRound.Instance.allowLocalPlayerDeath = true;
			}
		}

		private IEnumerator DestroyDelay()
		{
			PlayerControllerExtensions.DropItem(base.playerHeldBy, (GrabbableObject)(object)this, 0, true);
			if (((NetworkBehaviour)this).IsHost)
			{
				canPickUp.Value = false;
			}
			else
			{
				DisablePickupServerRpc();
			}
			yield return (object)new WaitForSeconds(1f);
			if (((NetworkBehaviour)this).IsHost)
			{
				((NetworkBehaviour)this).NetworkObject.Despawn(true);
			}
			else
			{
				DestroyServerRpc();
			}
		}

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

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

		protected override void __initializeVariables()
		{
			if (canPickUp == null)
			{
				throw new Exception("TotemOfUndying.canPickUp cannot be null. All NetworkVariableBase instances must be initialized.");
			}
			((NetworkVariableBase)canPickUp).Initialize((NetworkBehaviour)(object)this);
			((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)canPickUp, "canPickUp");
			((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)canPickUp);
			((GrabbableObject)this).__initializeVariables();
		}

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_TotemOfUndying()
		{
			//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(43596256u, new RpcReceiveHandler(__rpc_handler_43596256));
			NetworkManager.__rpc_func_table.Add(2506564063u, new RpcReceiveHandler(__rpc_handler_2506564063));
		}

		private static void __rpc_handler_43596256(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;
				((TotemOfUndying)(object)target).DisablePickupServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2506564063(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;
				((TotemOfUndying)(object)target).DestroyServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "TotemOfUndying";
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "ChillaxMods";

		public const string PLUGIN_NAME = "ChillaxMods";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}
namespace Chillax.Bastard.BogBog
{
	public class Boink : NoisemakerProp
	{
		private Vector3 targetForce;

		private bool push;

		private float _elapsedTime;

		public override void OnNetworkSpawn()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			((NetworkBehaviour)this).OnNetworkSpawn();
			targetForce = Vector3.zero;
			push = false;
			_elapsedTime = 0f;
			((GrabbableObject)this).useCooldown = Config.boinkCooldown.Value;
		}

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null))
			{
				Vector3 val = -((Component)this).transform.forward + Vector3.up;
				Push(((Vector3)(ref val)).normalized * 500f, 0.5f);
				ChillaxModPlugin.logger.LogInfo((object)"[CHILLAX] ACTIVATE BOINK!");
				((NoisemakerProp)this).ItemActivate(used, buttonDown);
			}
		}

		public override void Update()
		{
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			((GrabbableObject)this).Update();
			if (!((Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null) && push)
			{
				_elapsedTime -= Time.deltaTime;
				((GrabbableObject)this).playerHeldBy.externalForces = Vector3.Lerp(((GrabbableObject)this).playerHeldBy.externalForces, targetForce, Time.deltaTime * 5f);
				if (_elapsedTime <= 0f)
				{
					push = false;
				}
			}
		}

		private void Push(Vector3 targetForce, float duration)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null))
			{
				this.targetForce = targetForce;
				_elapsedTime = duration;
				push = true;
			}
		}

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

		protected internal override string __getTypeName()
		{
			return "Boink";
		}
	}
	public class BoinkCustomDirection : NoisemakerProp
	{
		private Vector3 targetForce;

		private bool push;

		private float _elapsedTime;

		[SerializeField]
		private bool random;

		[SerializeField]
		private bool forward;

		public override void OnNetworkSpawn()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			((NetworkBehaviour)this).OnNetworkSpawn();
			targetForce = Vector3.zero;
			push = false;
			_elapsedTime = 0f;
			((GrabbableObject)this).useCooldown = Config.boinkCooldown.Value;
		}

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: 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_00d7: 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_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null))
			{
				if (random)
				{
					Vector3 val = default(Vector3);
					((Vector3)(ref val))..ctor(Random.Range(-1f, 1f), 1f, Random.Range(-1f, 1f));
					Push(((Vector3)(ref val)).normalized * 500f, 0.5f);
				}
				else if (forward)
				{
					Vector3 val2 = ((Component)this).transform.forward + Vector3.up;
					Push(((Vector3)(ref val2)).normalized * 500f, 0.5f);
				}
				else
				{
					Vector3 val3 = -((Component)this).transform.forward + Vector3.up;
					Push(((Vector3)(ref val3)).normalized * 500f, 0.5f);
				}
				ChillaxModPlugin.logger.LogInfo((object)"[CHILLAX] ACTIVATE BOINK!");
				((NoisemakerProp)this).ItemActivate(used, buttonDown);
			}
		}

		public override void Update()
		{
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			((GrabbableObject)this).Update();
			if (!((Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null) && push)
			{
				_elapsedTime -= Time.deltaTime;
				((GrabbableObject)this).playerHeldBy.externalForces = Vector3.Lerp(((GrabbableObject)this).playerHeldBy.externalForces, targetForce, Time.deltaTime * 5f);
				if (_elapsedTime <= 0f)
				{
					push = false;
				}
			}
		}

		private void Push(Vector3 targetForce, float duration)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null))
			{
				this.targetForce = targetForce;
				_elapsedTime = duration;
				push = true;
			}
		}

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

		protected internal override string __getTypeName()
		{
			return "BoinkCustomDirection";
		}
	}
	[BepInPlugin("chillax.bastard.mod", "Chillax Mods", "0.8.2")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class ChillaxModPlugin : BaseUnityPlugin
	{
		public static ManualLogSource logger;

		public const string PluginGuid = "chillax.bastard.mod";

		public const string PluginName = "Chillax Mods";

		public const string PluginVersion = "0.8.2";

		public static readonly Harmony harmony = new Harmony("chillax.bastard.mod");

		public static ConfigFile config;

		public void Awake()
		{
			logger = ((BaseUnityPlugin)this).Logger;
			config = ((BaseUnityPlugin)this).Config;
			Config.Load();
			Content.Load();
			harmony.PatchAll(typeof(ChillaxModPlugin));
			((BaseUnityPlugin)this).Logger.LogInfo((object)"CHILLAX Plugin Loaded");
		}
	}
	public class Config
	{
		public static ConfigEntry<int> boinkSpawnChance;

		public static ConfigEntry<int> cupNoodleSpawnChance;

		public static ConfigEntry<int> freddySpawnChance;

		public static ConfigEntry<int> moaiSpawnChance;

		public static ConfigEntry<int> froggySpawnChance;

		public static ConfigEntry<int> eeveeSpawnChance;

		public static ConfigEntry<int> deathNoteSpawnChance;

		public static ConfigEntry<int> emergencyMeetingChance;

		public static ConfigEntry<bool> canUseDeathNote;

		public static ConfigEntry<int> superSneakChance;

		public static ConfigEntry<int> totemChance;

		public static ConfigEntry<int> deathDanceNote;

		public static ConfigEntry<int> masterSword;

		public static ConfigEntry<int> ocarinaSpawn;

		public static ConfigEntry<int> unoReverseCardSpawnChance;

		public static ConfigEntry<bool> enableUnoReverseCard;

		public static ConfigEntry<int> boinkCooldown;

		public static ConfigEntry<int> blueDuckSpawnChance;

		public static ConfigEntry<int> redDuckSpawnChance;

		public static ConfigEntry<int> goldDuckSpawnChance;

		public static void Load()
		{
			boinkSpawnChance = ChillaxModPlugin.config.Bind<int>("Scrap", "Boink", 15, "How much does this Item spawn, higher = more common");
			boinkCooldown = ChillaxModPlugin.config.Bind<int>("Scrap", "BoinkCooldown", 5, "Boink's cooldown in seconds");
			cupNoodleSpawnChance = ChillaxModPlugin.config.Bind<int>("Scrap", "CupNoodle", 15, "How much does this Item spawn, higher = more common");
			moaiSpawnChance = ChillaxModPlugin.config.Bind<int>("Scrap", "Moai", 10, "How much does this Item spawn, higher = more common");
			froggySpawnChance = ChillaxModPlugin.config.Bind<int>("Scrap", "Froggy", 15, "How much does this Item spawn, higher = more common");
			eeveeSpawnChance = ChillaxModPlugin.config.Bind<int>("Scrap", "Eevee", 10, "How much does this Item spawn, higher = more common");
			deathNoteSpawnChance = ChillaxModPlugin.config.Bind<int>("Scrap", "DeathNote", 5, "How much does this Item spawn, higher = more common");
			canUseDeathNote = ChillaxModPlugin.config.Bind<bool>("Death Note", "DeathNoteActive", true, "Can the Death Note be used, turn this off to avoid griefing");
			emergencyMeetingChance = ChillaxModPlugin.config.Bind<int>("Scrap", "EmergencyMeeting", 10, "How much does this Item spawn, higher = more common");
			superSneakChance = ChillaxModPlugin.config.Bind<int>("Scrap", "SuperSneakers", 15, "How much does this Item spawn, higher = more common");
			deathDanceNote = ChillaxModPlugin.config.Bind<int>("Scrap", "DeathDanceNote", 5, "How much does this Item spawn, higher = more common");
			masterSword = ChillaxModPlugin.config.Bind<int>("Scrap", "MasterSword", 5, "How much does this Item spawn, higher = more common");
			ocarinaSpawn = ChillaxModPlugin.config.Bind<int>("Scrap", "Ocarina", 5, "How much does this Item spawn, higher = more common");
			unoReverseCardSpawnChance = ChillaxModPlugin.config.Bind<int>("Scrap", "UnoReverseCard", 5, "How much does this Item spawn, higher = more common");
			enableUnoReverseCard = ChillaxModPlugin.config.Bind<bool>("UnoReverseCard", "UnoReverseCardActive", true, "Enable Uno Reverse Card (Can be jank, and have bugs)");
			blueDuckSpawnChance = ChillaxModPlugin.config.Bind<int>("Scrap", "BlueDuck", 5, "How much does this Item spawn, higher = more common");
			redDuckSpawnChance = ChillaxModPlugin.config.Bind<int>("Scrap", "RedDuck", 5, "How much does this Item spawn, higher = more common");
			goldDuckSpawnChance = ChillaxModPlugin.config.Bind<int>("Scrap", "GoldDuck", 5, "How much does this Item spawn, higher = more common");
		}
	}
	public class Content
	{
		public class CustomItem
		{
			public string name = "";

			public string itemPath = "";

			public string infoPath = "";

			public Action<Item> itemAction = delegate
			{
			};

			public bool enabled = true;

			public CustomItem(string name, string itemPath, string infoPath, Action<Item> action = null)
			{
				this.name = name;
				this.itemPath = itemPath;
				this.infoPath = infoPath;
				if (action != null)
				{
					itemAction = action;
				}
			}

			public static CustomItem Add(string name, string itemPath, string infoPath = null, Action<Item> action = null)
			{
				return new CustomItem(name, itemPath, infoPath, action);
			}
		}

		public class CustomUnlockable
		{
			public string name = "";

			public string unlockablePath = "";

			public string infoPath = "";

			public Action<UnlockableItem> unlockableAction = delegate
			{
			};

			public bool enabled = true;

			public int unlockCost = -1;

			public CustomUnlockable(string name, string unlockablePath, string infoPath, Action<UnlockableItem> action = null, int unlockCost = -1)
			{
				this.name = name;
				this.unlockablePath = unlockablePath;
				this.infoPath = infoPath;
				if (action != null)
				{
					unlockableAction = action;
				}
				this.unlockCost = unlockCost;
			}

			public static CustomUnlockable Add(string name, string unlockablePath, string infoPath = null, Action<UnlockableItem> action = null, int unlockCost = -1, bool enabled = true)
			{
				return new CustomUnlockable(name, unlockablePath, infoPath, action, unlockCost)
				{
					enabled = enabled
				};
			}
		}

		public class CustomShopItem : CustomItem
		{
			public int itemPrice;

			public CustomShopItem(string name, string itemPath, string infoPath = null, int itemPrice = 0, Action<Item> action = null)
				: base(name, itemPath, infoPath, action)
			{
				this.itemPrice = itemPrice;
			}

			public static CustomShopItem Add(string name, string itemPath, string infoPath = null, int itemPrice = 0, Action<Item> action = null, bool enabled = true)
			{
				CustomShopItem customShopItem = new CustomShopItem(name, itemPath, infoPath, itemPrice, action);
				customShopItem.enabled = enabled;
				return customShopItem;
			}
		}

		public class CustomScrap : CustomItem
		{
			public LevelTypes levelType = (LevelTypes)(-1);

			public int rarity;

			public CustomScrap(string name, string itemPath, LevelTypes levelType, int rarity, Action<Item> action = null)
				: base(name, itemPath, null, action)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0015: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				this.levelType = levelType;
				this.rarity = rarity;
			}

			public static CustomScrap Add(string name, string itemPath, LevelTypes levelType, int rarity, Action<Item> action = null)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				return new CustomScrap(name, itemPath, levelType, rarity, action);
			}
		}

		public class CustomEnemy
		{
			public string name;

			public string enemyPath;

			public int rarity;

			public LevelTypes levelFlags;

			public SpawnType spawnType;

			public string infoKeyword;

			public string infoNode;

			public bool enabled = true;

			public CustomEnemy(string name, string enemyPath, int rarity, LevelTypes levelFlags, SpawnType spawnType, string infoKeyword, string infoNode)
			{
				//IL_0025: Unknown result type (might be due to invalid IL or missing references)
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_002d: Unknown result type (might be due to invalid IL or missing references)
				//IL_002f: Unknown result type (might be due to invalid IL or missing references)
				this.name = name;
				this.enemyPath = enemyPath;
				this.rarity = rarity;
				this.levelFlags = levelFlags;
				this.spawnType = spawnType;
				this.infoKeyword = infoKeyword;
				this.infoNode = infoNode;
			}

			public static CustomEnemy Add(string name, string enemyPath, int rarity, LevelTypes levelFlags, SpawnType spawnType, string infoKeyword, string infoNode, bool enabled = true)
			{
				//IL_0004: Unknown result type (might be due to invalid IL or missing references)
				//IL_0005: Unknown result type (might be due to invalid IL or missing references)
				return new CustomEnemy(name, enemyPath, rarity, levelFlags, spawnType, infoKeyword, infoNode)
				{
					enabled = enabled
				};
			}
		}

		public class CustomMapObject
		{
			public string name;

			public string objectPath;

			public LevelTypes levelFlags;

			public Func<SelectableLevel, AnimationCurve> spawnRateFunction;

			public bool enabled = true;

			public CustomMapObject(string name, string objectPath, LevelTypes levelFlags, Func<SelectableLevel, AnimationCurve> spawnRateFunction = null, bool enabled = false)
			{
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				//IL_001f: Unknown result type (might be due to invalid IL or missing references)
				this.name = name;
				this.objectPath = objectPath;
				this.levelFlags = levelFlags;
				this.spawnRateFunction = spawnRateFunction;
				this.enabled = enabled;
			}

			public static CustomMapObject Add(string name, string objectPath, LevelTypes levelFlags, Func<SelectableLevel, AnimationCurve> spawnRateFunction = null, bool enabled = false)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				return new CustomMapObject(name, objectPath, levelFlags, spawnRateFunction, enabled);
			}
		}

		public static AssetBundle MainAssets;

		public static Dictionary<string, GameObject> Prefabs = new Dictionary<string, GameObject>();

		public static List<CustomUnlockable> customUnlockables;

		public static List<CustomItem> customItems;

		public static List<CustomEnemy> customEnemies;

		public static List<CustomMapObject> customMapObjects;

		public static GameObject ConfigManagerPrefab;

		public static void TryLoadAssets()
		{
			if ((Object)(object)MainAssets == (Object)null)
			{
				MainAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "chillaxBundle"));
				Plugin.logger.LogInfo((object)"Loaded asset bundle");
			}
		}

		public static void Load()
		{
			//IL_03c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0571: Unknown result type (might be due to invalid IL or missing references)
			//IL_0578: Unknown result type (might be due to invalid IL or missing references)
			//IL_0614: Unknown result type (might be due to invalid IL or missing references)
			TryLoadAssets();
			customItems = new List<CustomItem>
			{
				CustomScrap.Add("Boink", "Assets/Chillax/ChillaxMods/Boink/Boink.asset", (LevelTypes)(-1), Config.boinkSpawnChance.Value),
				CustomScrap.Add("MamaMooSup", "Assets/Chillax/ChillaxMods/Cup Noodle/Cup Noodle.asset", (LevelTypes)(-1), Config.cupNoodleSpawnChance.Value),
				CustomScrap.Add("Moai", "Assets/Chillax/ChillaxMods/Moai/Moai.asset", (LevelTypes)(-1), Config.moaiSpawnChance.Value),
				CustomScrap.Add("Froggy", "Assets/Chillax/ChillaxMods/Froggy Chair/Froggy Chair.asset", (LevelTypes)(-1), Config.froggySpawnChance.Value),
				CustomScrap.Add("Eevee", "Assets/Chillax/ChillaxMods/Eevee Plush/Eevee.asset", (LevelTypes)(-1), Config.eeveeSpawnChance.Value),
				CustomScrap.Add("DeathNote", "Assets/Chillax/ChillaxMods/DeathNote/DeathNote.asset", (LevelTypes)(-1), Config.deathNoteSpawnChance.Value),
				CustomScrap.Add("EmergencyMeeting", "Assets/Chillax/ChillaxMods/EmergencyMeeting/EmergencyMeeting.asset", (LevelTypes)(-1), Config.emergencyMeetingChance.Value),
				CustomScrap.Add("SuperSneakers", "Assets/Chillax/ChillaxMods/SuperSneakers/SuperSneakers.asset", (LevelTypes)(-1), Config.superSneakChance.Value),
				CustomScrap.Add("DeathDanceNote", "Assets/Chillax/ChillaxMods/DeathDanceNote/DeathDanceNote.asset", (LevelTypes)(-1), Config.deathDanceNote.Value),
				CustomScrap.Add("MasterSword", "Assets/Chillax/ChillaxMods/MasterSword/MasterSword.asset", (LevelTypes)(-1), Config.masterSword.Value),
				CustomScrap.Add("Ocarina", "Assets/Chillax/ChillaxMods/Ocarina/Ocarina.asset", (LevelTypes)(-1), Config.ocarinaSpawn.Value),
				CustomScrap.Add("BlueDuck", "Assets/Chillax/ChillaxMods/BlueDuck/BlueDuck.asset", (LevelTypes)(-1), Config.blueDuckSpawnChance.Value),
				CustomScrap.Add("RedDuck", "Assets/Chillax/ChillaxMods/RedDuck/RedDuck.asset", (LevelTypes)(-1), Config.redDuckSpawnChance.Value),
				CustomScrap.Add("GoldDuck", "Assets/Chillax/ChillaxMods/GoldDuck/GoldDuck.asset", (LevelTypes)(-1), Config.goldDuckSpawnChance.Value),
				CustomScrap.Add("CursedBlueDuck", "Assets/Chillax/ChillaxMods/CursedBlueDuck/CursedBlueDuck.asset", (LevelTypes)(-1), Config.blueDuckSpawnChance.Value),
				CustomScrap.Add("CursedRedDuck", "Assets/Chillax/ChillaxMods/CursedRedDuck/CursedRedDuck.asset", (LevelTypes)(-1), Config.redDuckSpawnChance.Value)
			};
			if (Config.enableUnoReverseCard.Value)
			{
				customItems.Add(CustomScrap.Add("UnoReverse", "Assets/Chillax/ChillaxMods/UnoReverse/UnoReverse.asset", (LevelTypes)(-1), Config.unoReverseCardSpawnChance.Value));
			}
			customEnemies = new List<CustomEnemy>();
			customUnlockables = new List<CustomUnlockable>();
			customMapObjects = new List<CustomMapObject>();
			foreach (CustomItem customItem in customItems)
			{
				if (customItem.enabled)
				{
					Item val = MainAssets.LoadAsset<Item>(customItem.itemPath);
					if ((Object)(object)val.spawnPrefab.GetComponent<NetworkTransform>() == (Object)null)
					{
						val.spawnPrefab.AddComponent<NetworkTransform>();
					}
					Prefabs.Add(customItem.name, val.spawnPrefab);
					NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab);
					customItem.itemAction(val);
					if (customItem is CustomShopItem)
					{
						TerminalNode val2 = MainAssets.LoadAsset<TerminalNode>(customItem.infoPath);
						Plugin.logger.LogInfo((object)$"Registering shop item {customItem.name} with price {((CustomShopItem)customItem).itemPrice}");
						Items.RegisterShopItem(val, (TerminalNode)null, (TerminalNode)null, val2, ((CustomShopItem)customItem).itemPrice);
					}
					else if (customItem is CustomScrap customScrap)
					{
						ChillaxModPlugin.logger.LogInfo((object)$"[CHILLAX] Registering... {val.itemName} at rarity {customScrap.rarity}");
						Items.RegisterScrap(val, customScrap.rarity, customScrap.levelType);
					}
				}
			}
			foreach (CustomUnlockable customUnlockable in customUnlockables)
			{
				if (customUnlockable.enabled)
				{
					UnlockableItem unlockable = MainAssets.LoadAsset<UnlockableItemDef>(customUnlockable.unlockablePath).unlockable;
					if ((Object)(object)unlockable.prefabObject != (Object)null)
					{
						NetworkPrefabs.RegisterNetworkPrefab(unlockable.prefabObject);
					}
					Prefabs.Add(customUnlockable.name, unlockable.prefabObject);
					TerminalNode val3 = null;
					if (customUnlockable.infoPath != null)
					{
						val3 = MainAssets.LoadAsset<TerminalNode>(customUnlockable.infoPath);
					}
					Unlockables.RegisterUnlockable(unlockable, (StoreType)2, (TerminalNode)null, (TerminalNode)null, val3, customUnlockable.unlockCost);
				}
			}
			foreach (CustomEnemy customEnemy in customEnemies)
			{
				if (customEnemy.enabled)
				{
					EnemyType val4 = MainAssets.LoadAsset<EnemyType>(customEnemy.enemyPath);
					TerminalNode val5 = MainAssets.LoadAsset<TerminalNode>(customEnemy.infoNode);
					TerminalKeyword val6 = null;
					if (customEnemy.infoKeyword != null)
					{
						val6 = MainAssets.LoadAsset<TerminalKeyword>(customEnemy.infoKeyword);
					}
					NetworkPrefabs.RegisterNetworkPrefab(val4.enemyPrefab);
					Prefabs.Add(customEnemy.name, val4.enemyPrefab);
					Enemies.RegisterEnemy(val4, customEnemy.rarity, customEnemy.levelFlags, customEnemy.spawnType, val5, val6);
				}
			}
			foreach (CustomMapObject customMapObject in customMapObjects)
			{
				if (customMapObject.enabled)
				{
					SpawnableMapObjectDef val7 = MainAssets.LoadAsset<SpawnableMapObjectDef>(customMapObject.objectPath);
					NetworkPrefabs.RegisterNetworkPrefab(val7.spawnableMapObject.prefabToSpawn);
					Prefabs.Add(customMapObject.name, val7.spawnableMapObject.prefabToSpawn);
					MapObjects.RegisterMapObject(val7, customMapObject.levelFlags, customMapObject.spawnRateFunction);
				}
			}
			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);
					}
				}
			}
			Plugin.logger.LogInfo((object)"[CHILLAX] Custom content loaded!");
		}
	}
	public class DeathNote : NoisemakerProp
	{
		private NetworkVariable<bool> canUseDeathNote = new NetworkVariable<bool>(true, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);

		[SerializeField]
		private AudioClip killSfx;

		[SerializeField]
		private GameObject canvasPrefab;

		private float _currentCooldown;

		[SerializeField]
		private float checkRate;

		[SerializeField]
		private Renderer deathNoteRenderer;

		[SerializeField]
		private Material[] materials;

		[SerializeField]
		private string[] textNodes;

		[SerializeField]
		private Sprite[] icons;

		[SerializeField]
		private ScanNodeProperties scanNodeProperties;

		private DeathNoteCanvas _temp;

		public List<PlayerControllerB> playerList;

		public List<EnemyAI> enemyList;

		private bool _opened;

		public override void OnNetworkSpawn()
		{
			((NetworkBehaviour)this).OnNetworkSpawn();
			canUseDeathNote = new NetworkVariable<bool>(true, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);
			playerList = new List<PlayerControllerB>();
			enemyList = new List<EnemyAI>();
			Item itemProperties = Object.Instantiate<Item>(((GrabbableObject)this).itemProperties);
			((GrabbableObject)this).itemProperties = itemProperties;
			UpdateList();
			_opened = false;
			((MonoBehaviour)this).InvokeRepeating("ProcessCooldown", checkRate, checkRate);
			if (((NetworkBehaviour)this).IsHost)
			{
				canUseDeathNote.Value = Config.canUseDeathNote.Value;
				UpdateVisuals(0);
				UpdateVisualsClientRpc(0);
			}
		}

		[ClientRpc]
		private void UpdateVisualsClientRpc(int index)
		{
			//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(531245751u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, index);
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 531245751u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					UpdateVisuals(index);
				}
			}
		}

		private void UpdateVisuals(int index)
		{
			if ((Object)(object)deathNoteRenderer.material != (Object)(object)materials[index])
			{
				deathNoteRenderer.material = materials[index];
			}
			scanNodeProperties.headerText = textNodes[index];
			((GrabbableObject)this).itemProperties.itemName = textNodes[index];
			((GrabbableObject)this).itemProperties.itemIcon = icons[index];
		}

		[ServerRpc(RequireOwnership = false)]
		private void StartCooldownServerRpc()
		{
			//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(246655775u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 246655775u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					Random random = new Random();
					StartCooldownClientRpc(_currentCooldown = random.Next(600, 1800));
				}
			}
		}

		[ClientRpc]
		private void StartCooldownClientRpc(float cooldown)
		{
			//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(316831956u, val, (RpcDelivery)0);
					((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref cooldown, default(ForPrimitives));
					((NetworkBehaviour)this).__endSendClientRpc(ref val2, 316831956u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					_currentCooldown = cooldown;
				}
			}
		}

		private void ProcessCooldown()
		{
			if (_currentCooldown > 0f)
			{
				_currentCooldown -= checkRate;
				UpdateVisuals(1);
			}
			else
			{
				UpdateVisuals(0);
			}
		}

		private void UpdateList()
		{
			List<PlayerControllerB> list = Object.FindObjectsOfType<PlayerControllerB>().ToList();
			List<PlayerControllerB> list2 = new List<PlayerControllerB>(list);
			foreach (PlayerControllerB item in list)
			{
				if (item.playerSteamId == 0)
				{
					list2.Remove(item);
				}
			}
			playerList = list2;
			enemyList = Object.FindObjectsOfType<EnemyAI>().ToList();
		}

		private void OnDisable()
		{
			if ((Object)(object)_temp != (Object)null)
			{
				_temp.Close();
			}
		}

		public override void DiscardItem()
		{
			((GrabbableObject)this).DiscardItem();
			if ((Object)(object)_temp != (Object)null)
			{
				_temp.Close();
			}
		}

		public override void PocketItem()
		{
			((GrabbableObject)this).PocketItem();
			if ((Object)(object)_temp != (Object)null)
			{
				_temp.Close();
			}
		}

		public override void ItemActivate(bool used, bool buttonDown = true)
		{
			if (canUseDeathNote.Value && !_opened && !(_currentCooldown > 0f))
			{
				((NoisemakerProp)this).ItemActivate(used, buttonDown);
				if (((NetworkBehaviour)((GrabbableObject)this).playerHeldBy).IsOwner)
				{
					UpdateList();
					_temp = Object.Instantiate<GameObject>(canvasPrefab, ((Component)this).transform).GetComponent<DeathNoteCanvas>();
					_temp.Initialize(this);
					_opened = true;
					Cursor.visible = true;
					Cursor.lockState = (CursorLockMode)0;
					DeathNoteCanvas temp = _temp;
					temp.onExit = (Action)Delegate.Combine(temp.onExit, new Action(OnExit));
				}
			}
		}

		private void OnExit()
		{
			Cursor.visible = false;
			Cursor.lockState = (CursorLockMode)1;
			_opened = false;
		}

		public void ActivateDeathNote(GameObject objectToKill)
		{
			OnExit();
			if (Object.op_Implicit((Object)(object)objectToKill.GetComponent<PlayerControllerB>()))
			{
				KillPlayer(objectToKill.GetComponent<PlayerControllerB>());
			}
			if (Object.op_Implicit((Object)(object)objectToKill.GetComponent<EnemyAI>()))
			{
				KillEnemy(objectToKill.GetComponent<EnemyAI>());
			}
			StartCooldownServerRpc();
		}

		private void KillPlayer(PlayerControllerB controller)
		{
			if (!((Object)(object)controller == (Object)null))
			{
				Debug.Log((object)("[CHILLAX] [DEATH NOTE] killing off player: " + controller.playerUsername));
				DeathNoteServerRpc(controller.playerClientId, ((NetworkBehaviour)controller).OwnerClientId);
			}
		}

		private void KillEnemy(EnemyAI enemy)
		{
			if (!((Object)(object)enemy == (Object)null))
			{
				Debug.Log((object)("[CHILLAX] [DEATH NOTE] killing off enemy: " + enemy.enemyType.enemyName));
				enemy.KillEnemyServerRpc(false);
			}
		}

		[ServerRpc(RequireOwnership = false)]
		private void DeathNoteServerRpc(ulong playerID, ulong clientID)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: 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_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: 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)
			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(2937588739u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, playerID);
					BytePacker.WriteValueBitPacked(val2, clientID);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2937588739u, val, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					PlayerControllerB component = StartOfRound.Instance.allPlayerObjects[playerID].GetComponent<PlayerControllerB>();
					Debug.Log((object)("[DEATH NOTE] Receive Server RPC, player to kill: " + component.playerUsername));
					ClientRpcParams val3 = default(ClientRpcParams);
					val3.Send = new ClientRpcSendParams
					{
						TargetClientIds = new ulong[1] { clientID }
					};
					ClientRpcParams clientRpcParams = val3;
					DeathNoteClientRpc(component.playerClientId, clientRpcParams);
				}
			}
		}

		[ClientRpc]
		private void DeathNoteClientRpc(ulong playerID, ClientRpcParams clientRpcParams = default(ClientRpcParams))
		{
			//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))
				{
					FastBufferWriter val = ((NetworkBehaviour)this).__beginSendClientRpc(2281964886u, clientRpcParams, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val, playerID);
					((NetworkBehaviour)this).__endSendClientRpc(ref val, 2281964886u, clientRpcParams, (RpcDelivery)0);
				}
				if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
				{
					PlayerControllerB component = StartOfRound.Instance.allPlayerObjects[playerID].GetComponent<PlayerControllerB>();
					Debug.Log((object)("[DEATH NOTE] Receive Client RPC, player to kill: " + component.playerUsername));
					Debug.Log((object)("[DEATH NOTE] Killing: " + component.playerUsername));
					((MonoBehaviour)this).StartCoroutine(KilLDelay(component));
				}
			}
		}

		private IEnumerator KilLDelay(PlayerControllerB controller)
		{
			if (((NetworkBehaviour)controller).IsOwner)
			{
				AudioSource tempSource = ((Component)controller).gameObject.AddComponent<AudioSource>();
				tempSource.PlayOneShot(killSfx);
				Object.Destroy((Object)(object)tempSource, 3f);
			}
			yield return (object)new WaitForSeconds(3f);
			Debug.Log((object)("[DEATH NOTE] Kill On Player Client: " + controller.playerUsername + " Is Owner: " + ((NetworkBehaviour)controller).IsOwner));
			controller.KillPlayer(Vector3.up * 10f, true, (CauseOfDeath)0, 0, default(Vector3));
		}

		protected override void __initializeVariables()
		{
			if (canUseDeathNote == null)
			{
				throw new Exception("DeathNote.canUseDeathNote cannot be null. All NetworkVariableBase instances must be initialized.");
			}
			((NetworkVariableBase)canUseDeathNote).Initialize((NetworkBehaviour)(object)this);
			((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)canUseDeathNote, "canUseDeathNote");
			((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)canUseDeathNote);
			((NoisemakerProp)this).__initializeVariables();
		}

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_DeathNote()
		{
			//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
			NetworkManager.__rpc_func_table.Add(531245751u, new RpcReceiveHandler(__rpc_handler_531245751));
			NetworkManager.__rpc_func_table.Add(246655775u, new RpcReceiveHandler(__rpc_handler_246655775));
			NetworkManager.__rpc_func_table.Add(316831956u, new RpcReceiveHandler(__rpc_handler_316831956));
			NetworkManager.__rpc_func_table.Add(2937588739u, new RpcReceiveHandler(__rpc_handler_2937588739));
			NetworkManager.__rpc_func_table.Add(2281964886u, new RpcReceiveHandler(__rpc_handler_2281964886));
		}

		private static void __rpc_handler_531245751(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 index = default(int);
				ByteUnpacker.ReadValueBitPacked(reader, ref index);
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((DeathNote)(object)target).UpdateVisualsClientRpc(index);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_246655775(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;
				((DeathNote)(object)target).StartCooldownServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_316831956(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)
			{
				float cooldown = default(float);
				((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref cooldown, default(ForPrimitives));
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((DeathNote)(object)target).StartCooldownClientRpc(cooldown);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2937588739(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong playerID = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerID);
				ulong clientID = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref clientID);
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((DeathNote)(object)target).DeathNoteServerRpc(playerID, clientID);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2281964886(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: 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_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong playerID = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref playerID);
				ClientRpcParams client = rpcParams.Client;
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((DeathNote)(object)target).DeathNoteClientRpc(playerID, client);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "DeathNote";
		}
	}
	public class DeathNoteCanvas : MonoBehaviour
	{
		[SerializeField]
		private Button closeButton;

		[SerializeField]
		private GameObject namesPrefab;

		[SerializeField]
		private Transform contentContainer;

		private string _chosenName;

		private DeathNote _deathNote;

		public Action onExit;

		public void Initialize(DeathNote deathNote)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Expected O, but got Unknown
			foreach (Transform item in contentContainer)
			{
				Transform val = item;
				Object.Destroy((Object)(object)((Component)val).gameObject);
			}
			((UnityEvent)closeButton.onClick).AddListener(new UnityAction(Close));
			_deathNote = deathNot