Decompiled source of ZinthosScavenger v1.0.0

ZinthosReplacement.dll

Decompiled a week ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Threading.Tasks;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using Dissonance;
using GameNetcodeStuff;
using HarmonyLib;
using JigglePhysics;
using LethalConfig;
using LethalConfig.ConfigItems;
using Microsoft.CodeAnalysis;
using ModelReplacement;
using Unity.Netcode;
using UnityEngine;
using ZinthosReplacement.NetcodePatcher;

[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("ZinthosReplacement")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ZinthosReplacement")]
[assembly: AssemblyTitle("ZinthosReplacement")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: NetcodePatchedAssembly]
internal class <Module>
{
	static <Module>()
	{
	}
}
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

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

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

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace ZinthosReplacement
{
	public class MRZINTHOS : BodyReplacementBase
	{
		public enum SweaterColors
		{
			Red,
			Orange,
			Yellow,
			Lime,
			Green,
			LightBlue,
			Blue,
			Purple,
			Pink,
			Brown,
			Black,
			White
		}

		private int[] usedBlendShapes = new int[10] { 81, 105, 106, 109, 110, 112, 116, 115, 118, 120 };

		private PlayerMicVolume playerMicVolume;

		private int danceNumber = 0;

		private int previousDanceNumber = 0;

		private SkinnedMeshRenderer body;

		private SkinnedMeshRenderer collar;

		private SkinnedMeshRenderer sweater;

		private JiggleRigBuilder chain;

		internal bool TestVariable = false;

		protected override void Awake()
		{
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Unknown result type (might be due to invalid IL or missing references)
			((BodyReplacementBase)this).Awake();
			body = ((Component)base.replacementModel.transform.Find("Body")).GetComponent<SkinnedMeshRenderer>();
			collar = ((Component)base.replacementModel.transform.Find("Outfit - Accesorries")).GetComponent<SkinnedMeshRenderer>();
			sweater = ((Component)base.replacementModel.transform.Find("Outfit - Sweater")).GetComponent<SkinnedMeshRenderer>();
			chain = ((Component)base.replacementModel.transform.Find("Armature/Hips/spine/chest/Chain")).GetComponent<JiggleRigBuilder>();
			playerMicVolume = base.replacementModel.AddComponent<PlayerMicVolume>();
			playerMicVolume.controller = ((BodyReplacementBase)this).controller;
			playerMicVolume.localPlayer = ((NetworkBehaviour)((BodyReplacementBase)this).controller).IsLocalPlayer;
			if (((BodyReplacementBase)this).controller.playerClientId == GameNetworkManager.Instance.localPlayerController.playerClientId)
			{
				ChangeAllClothes(Plugin.enableSweater.Value, Plugin.enableCollar.Value, Plugin.sweaterColor.Value, sendToNetwork: false);
			}
			else if (Plugin.AllPlayersLoaded)
			{
				ZinNetworking.Instance.RequestClothesFromPlayerServerRpc(((BodyReplacementBase)this).controller.actualClientId);
			}
		}

		protected void Update()
		{
			previousDanceNumber = danceNumber;
			danceNumber = ((BodyReplacementBase)this).controller.playerBodyAnimator.GetInteger("emoteNumber");
			if (previousDanceNumber != danceNumber)
			{
				OnEmoteChange(danceNumber);
			}
			if ((Object)(object)playerMicVolume != (Object)null)
			{
				body.SetBlendShapeWeight(0, playerMicVolume.detectedVolumeAmplitude * 75f);
			}
		}

		internal void ChangeAllClothes(bool sweaterActive, bool collarActive, SweaterColors sweaterColor, bool sendToNetwork = true)
		{
			ChangeSweater(sweaterActive);
			ChangeCollar(collarActive);
			ChangeSweaterColor(sweaterColor);
			if (sendToNetwork)
			{
				ZinNetworking.Instance.SendToAllPlayersServerRpc(ZinNetworking.Instance.GetLocalPlayerID(), sweaterActive, collarActive, sweaterColor);
			}
		}

		internal void ChangeSweater(bool sweaterActive)
		{
			if (sweaterActive && !((Component)sweater).gameObject.activeSelf)
			{
				collar.SetBlendShapeWeight(3, 100f);
				((Component)body).gameObject.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(99, 100f);
				((Component)body).gameObject.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(101, 100f);
			}
			else
			{
				((Component)collar).gameObject.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(3, 0f);
				((Component)body).gameObject.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(99, 0f);
				((Component)body).gameObject.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(101, 0f);
			}
			((Component)sweater).gameObject.SetActive(sweaterActive);
		}

		internal void ChangeCollar(bool collarActive)
		{
			if (collarActive)
			{
				foreach (Collider collider in chain.colliders)
				{
					collider.enabled = true;
				}
				((Behaviour)chain).enabled = true;
				collar.SetBlendShapeWeight(2, 0f);
				return;
			}
			((Behaviour)chain).enabled = false;
			foreach (Collider collider2 in chain.colliders)
			{
				collider2.enabled = false;
			}
			collar.SetBlendShapeWeight(2, 100f);
		}

		protected void OnEmoteChange(int emoteId)
		{
			Plugin.logger.LogInfo((object)emoteId);
			switch (emoteId)
			{
			case 1:
				ChangeExpression(new Dictionary<int, float>
				{
					{ 115, 100f },
					{ 118, 63.4f }
				});
				break;
			case 2:
				ChangeExpression(new Dictionary<int, float> { { 81, 100f } });
				break;
			case 3:
				ChangeExpression(new Dictionary<int, float>
				{
					{ 105, 100f },
					{ 116, 59.6f }
				});
				break;
			case 4:
				ChangeExpression(new Dictionary<int, float> { { 112, 100f } });
				break;
			case 5:
				ChangeExpression(new Dictionary<int, float>
				{
					{ 120, 100f },
					{ 109, 40.6f }
				});
				break;
			case 6:
				ChangeExpression(new Dictionary<int, float>
				{
					{ 112, 47f },
					{ 115, 100f }
				});
				break;
			case 8:
				ChangeExpression(new Dictionary<int, float> { { 110, 100f } });
				break;
			case 9:
				ChangeExpression(new Dictionary<int, float> { { 106, 100f } });
				break;
			case 1010:
				ChangeExpression(new Dictionary<int, float> { { 115, 100f } });
				break;
			default:
				ChangeExpression(new Dictionary<int, float>());
				break;
			}
		}

		protected override void OnDeath()
		{
			SkinnedMeshRenderer component = ((Component)base.replacementDeadBody.transform.Find("Body")).GetComponent<SkinnedMeshRenderer>();
			component.SetBlendShapeWeight(107, 100f);
			component.SetBlendShapeWeight(116, 45.3f);
		}

		private void ChangeExpression(Dictionary<int, float> blendShapes)
		{
			int[] array = usedBlendShapes;
			foreach (int num in array)
			{
				if (!blendShapes.ContainsKey(num))
				{
					((MonoBehaviour)this).StartCoroutine(FadeToBlendShape(num, 0f, body));
				}
			}
			foreach (KeyValuePair<int, float> blendShape in blendShapes)
			{
				((MonoBehaviour)this).StartCoroutine(FadeToBlendShape(blendShape.Key, blendShape.Value, body));
			}
		}

		private IEnumerator FadeToBlendShape(int index, float value, SkinnedMeshRenderer skinnedMeshRenderer)
		{
			float timeElapsed = 0f;
			float duration = 0.1f;
			float startValue = skinnedMeshRenderer.GetBlendShapeWeight(index);
			if (startValue != value)
			{
				while (timeElapsed < duration)
				{
					skinnedMeshRenderer.SetBlendShapeWeight(index, Mathf.Lerp(startValue, value, timeElapsed / duration));
					timeElapsed += Time.deltaTime;
					yield return null;
				}
				skinnedMeshRenderer.SetBlendShapeWeight(index, value);
			}
		}

		protected override GameObject LoadAssetsAndReturnModel()
		{
			string text = "Zinthos";
			return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
		}

		internal void ChangeSweaterColor(SweaterColors value)
		{
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			Color color = default(Color);
			switch (value)
			{
			case SweaterColors.Red:
				((Color)(ref color))..ctor(0.5f, 0.002358496f, 0.002358496f);
				break;
			case SweaterColors.Orange:
				((Color)(ref color))..ctor(0.679f, 0.3478743f, 0.15617f);
				break;
			case SweaterColors.Yellow:
				((Color)(ref color))..ctor(0.6603774f, 0.5796978f, 0f);
				break;
			case SweaterColors.Lime:
				((Color)(ref color))..ctor(0.4266146f, 0.5754716f, 0f);
				break;
			case SweaterColors.Green:
				((Color)(ref color))..ctor(0.009288041f, 0.4622641f, 0f);
				break;
			case SweaterColors.LightBlue:
				((Color)(ref color))..ctor(0.5868636f, 0.6702911f, 0.7924528f);
				break;
			case SweaterColors.Blue:
				((Color)(ref color))..ctor(0.05f, 0.05f, 0.482f);
				break;
			case SweaterColors.Purple:
				((Color)(ref color))..ctor(0.3197155f, 0f, 0.5f);
				break;
			case SweaterColors.Pink:
				((Color)(ref color))..ctor(0.6980392f, 0.3921568f, 0.5580437f);
				break;
			case SweaterColors.Brown:
				((Color)(ref color))..ctor(0.3568628f, 0.1654893f, 0.08627448f);
				break;
			case SweaterColors.Black:
				((Color)(ref color))..ctor(0.133f, 0.121f, 0.118f);
				break;
			case SweaterColors.White:
				((Color)(ref color))..ctor(0.75f, 0.75f, 0.75f);
				break;
			default:
				((Color)(ref color))..ctor(1f, 0f, 1f);
				break;
			}
			((Renderer)sweater).material.color = color;
		}
	}
	internal class ConfigManager
	{
		private static bool SettingChanged;

		public static void lethalConfigSetup()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Expected O, but got Unknown
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Expected O, but got Unknown
			LethalConfigManager.SkipAutoGen();
			BoolCheckBoxConfigItem val = new BoolCheckBoxConfigItem(Plugin.enableSweater, false);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val);
			BoolCheckBoxConfigItem val2 = new BoolCheckBoxConfigItem(Plugin.enableCollar, false);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val2);
			EnumDropDownConfigItem<MRZINTHOS.SweaterColors> val3 = new EnumDropDownConfigItem<MRZINTHOS.SweaterColors>(Plugin.sweaterColor, false);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val3);
		}

		public static void configEventListeners()
		{
			Plugin.enableSweater.SettingChanged += delegate
			{
				SendUpdatedClothes();
			};
			Plugin.enableCollar.SettingChanged += delegate
			{
				SendUpdatedClothes();
			};
			Plugin.sweaterColor.SettingChanged += delegate
			{
				SendUpdatedClothes();
			};
		}

		public static void SendUpdatedClothes()
		{
			if (SettingChanged)
			{
				return;
			}
			SettingChanged = true;
			if (!((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null))
			{
				MRZINTHOS component = ((Component)GameNetworkManager.Instance.localPlayerController).gameObject.GetComponent<MRZINTHOS>();
				if ((Object)(object)component != (Object)null)
				{
					component.ChangeAllClothes(Plugin.enableSweater.Value, Plugin.enableCollar.Value, Plugin.sweaterColor.Value);
				}
				Task.Delay(100).ContinueWith((Task t) => SettingChanged = false);
			}
		}
	}
	public class PlayerMicVolume2 : MonoBehaviour
	{
		public bool useDissonanceForMicDetection = true;

		[Space(3f)]
		private DissonanceComms comms;

		public float detectedVolumeAmplitude;

		private AudioClip _clipRecord;

		private int _sampleWindow = 128;

		public PlayerControllerB controller;

		private float LevelMax()
		{
			float num = 0f;
			float[] array = new float[_sampleWindow];
			int num2 = Microphone.GetPosition(IngamePlayerSettings.Instance.settings.micDevice) - (_sampleWindow + 1);
			if (num2 < 0)
			{
				return 0f;
			}
			_clipRecord.GetData(array, num2);
			for (int i = 0; i < _sampleWindow; i++)
			{
				float num3 = array[i] * array[i];
				if (num < num3)
				{
					num = num3;
				}
			}
			return num;
		}

		private void Update()
		{
			if (((NetworkBehaviour)controller).IsLocalPlayer)
			{
				detectedVolumeAmplitude = 0f;
				if (!IngamePlayerSettings.Instance.settings.micEnabled || (IngamePlayerSettings.Instance.settings.pushToTalk && !IngamePlayerSettings.Instance.playerInput.actions.FindAction("VoiceButton", false).IsPressed() && !GameNetworkManager.Instance.localPlayerController.speakingToWalkieTalkie))
				{
					return;
				}
				if (useDissonanceForMicDetection && (Object)(object)NetworkManager.Singleton != (Object)null)
				{
					if ((Object)(object)comms == (Object)null)
					{
						comms = Object.FindObjectOfType<DissonanceComms>();
					}
					detectedVolumeAmplitude = Mathf.Clamp(comms.FindPlayer(comms.LocalPlayerName).Amplitude * 35f, 0f, 1f);
				}
				else
				{
					detectedVolumeAmplitude = Mathf.Clamp(LevelMax() * 300f, 0f, 1f);
				}
				if (detectedVolumeAmplitude < 0.25f)
				{
					detectedVolumeAmplitude = 0f;
				}
			}
			else if (controller.voicePlayerState != null)
			{
				detectedVolumeAmplitude = Mathf.Clamp(controller.voicePlayerState.Amplitude * 35f, 0f, 1f);
			}
			Plugin.logger.LogInfo((object)detectedVolumeAmplitude);
		}

		private void Awake()
		{
		}
	}
	public class PlayerMicVolume : MonoBehaviour
	{
		public bool useDissonanceForMicDetection = true;

		[Space(3f)]
		private DissonanceComms comms;

		public float detectedVolumeAmplitude;

		public float MicLoudness;

		private AudioClip _clipRecord;

		private int _sampleWindow = 128;

		public PlayerControllerB controller;

		public bool localPlayer = false;

		private float LevelMax()
		{
			float num = 0f;
			float[] array = new float[_sampleWindow];
			int num2 = Microphone.GetPosition(IngamePlayerSettings.Instance.unsavedSettings.micDevice) - (_sampleWindow + 1);
			if (num2 < 0)
			{
				return 0f;
			}
			_clipRecord.GetData(array, num2);
			for (int i = 0; i < _sampleWindow; i++)
			{
				float num3 = array[i] * array[i];
				if (num < num3)
				{
					num = num3;
				}
			}
			return num;
		}

		private void Update()
		{
			if ((Object)(object)controller != (Object)null && controller.voicePlayerState == null)
			{
				detectedVolumeAmplitude = 0f;
				if (!IngamePlayerSettings.Instance.unsavedSettings.micEnabled || (IngamePlayerSettings.Instance.settings.pushToTalk && !IngamePlayerSettings.Instance.playerInput.actions.FindAction("VoiceButton", false).IsPressed() && !GameNetworkManager.Instance.localPlayerController.speakingToWalkieTalkie))
				{
					return;
				}
				if (useDissonanceForMicDetection && (Object)(object)NetworkManager.Singleton != (Object)null)
				{
					if ((Object)(object)comms == (Object)null)
					{
						comms = Object.FindObjectOfType<DissonanceComms>();
					}
					detectedVolumeAmplitude = Mathf.Clamp(comms.FindPlayer(comms.LocalPlayerName).Amplitude * 35f, 0f, 1f);
				}
				else
				{
					detectedVolumeAmplitude = Mathf.Clamp(LevelMax() * 300f, 0f, 1f);
				}
				if (detectedVolumeAmplitude < 0.25f)
				{
					detectedVolumeAmplitude = 0f;
				}
			}
			else
			{
				detectedVolumeAmplitude = Mathf.Clamp(controller.voicePlayerState.Amplitude * 35f, 0f, 1f);
			}
		}
	}
	[BepInPlugin("julian0555.zinthos", "Zinthos Scavenger", "1.0.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		public static ConfigFile config;

		public static ManualLogSource logger;

		public static bool AllPlayersLoaded;

		public static ConfigEntry<bool> enableModelForAllSuits { get; private set; }

		public static ConfigEntry<bool> enableModelAsDefault { get; private set; }

		public static ConfigEntry<string> suitNamesToEnableModel { get; private set; }

		public static ConfigEntry<bool> enableSweater { get; private set; }

		public static ConfigEntry<bool> enableCollar { get; private set; }

		public static ConfigEntry<MRZINTHOS.SweaterColors> sweaterColor { get; private set; }

		private static void InitConfig()
		{
			enableModelForAllSuits = config.Bind<bool>("Suits to Replace Settings", "Enable Model for all Suits", false, "Enable to model replace every suit. Set to false to specify suits");
			enableModelAsDefault = config.Bind<bool>("Suits to Replace Settings", "Enable Model as default", false, "Enable to model replace every suit that hasn't been otherwise registered.");
			suitNamesToEnableModel = config.Bind<string>("Suits to Replace Settings", "Suits to enable Model for", "Zinthos", "Enter a comma separated list of suit names.(Additionally, [Green suit,Pajama suit,Hazard suit])");
			enableSweater = config.Bind<bool>("Zinthos Customization (Self Only)", "Enable Sweater", false, "Enables sweater on local player's Zinthos model.");
			enableCollar = config.Bind<bool>("Zinthos Customization (Self Only)", "Enable Collar", false, "Enables collar on local player's Zinthos model.");
			sweaterColor = config.Bind<MRZINTHOS.SweaterColors>("Zinthos Customization (Self Only)", "Sweater Color", MRZINTHOS.SweaterColors.Red, "Sets the color used on local player's sweater.");
			if (Chainloader.PluginInfos.ContainsKey("ainavt.lc.lethalconfig"))
			{
				ConfigManager.lethalConfigSetup();
				ConfigManager.configEventListeners();
			}
		}

		private void Awake()
		{
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Expected O, but got Unknown
			config = ((BaseUnityPlugin)this).Config;
			InitConfig();
			Assets.PopulateAssets();
			if (enableModelForAllSuits.Value)
			{
				ModelReplacementAPI.RegisterModelReplacementOverride(typeof(MRZINTHOS));
			}
			if (enableModelAsDefault.Value)
			{
				ModelReplacementAPI.RegisterModelReplacementDefault(typeof(MRZINTHOS));
			}
			string[] array = suitNamesToEnableModel.Value.Split(',');
			string[] array2 = array;
			foreach (string text in array2)
			{
				ModelReplacementAPI.RegisterSuitModelReplacement(text, typeof(MRZINTHOS));
			}
			Harmony val = new Harmony("julian0555.zinthos");
			val.PatchAll();
			NetcodePatcher();
			logger = ((BaseUnityPlugin)this).Logger;
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin julian0555.zinthos is loaded!");
		}

		private static void NetcodePatcher()
		{
			Type[] types = Assembly.GetExecutingAssembly().GetTypes();
			Type[] array = types;
			foreach (Type type in array)
			{
				MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
				MethodInfo[] array2 = methods;
				foreach (MethodInfo methodInfo in array2)
				{
					object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false);
					if (customAttributes.Length != 0)
					{
						methodInfo.Invoke(null, null);
					}
				}
			}
		}

		internal bool IsPlayerZinthos(PlayerControllerB playerController)
		{
			if ((Object)(object)playerController == (Object)null)
			{
				return false;
			}
			if ((Object)(object)((Component)playerController).gameObject.GetComponent<MRZINTHOS>() == (Object)null)
			{
				return false;
			}
			return true;
		}
	}
	public static class Assets
	{
		public static string mainAssetBundleName = "zinthos";

		public static AssetBundle MainAssetBundle = null;

		private static string GetAssemblyName()
		{
			return Assembly.GetExecutingAssembly().GetName().Name.Replace(" ", "_");
		}

		public static void PopulateAssets()
		{
			if ((Object)(object)MainAssetBundle == (Object)null)
			{
				Console.WriteLine(GetAssemblyName() + "." + mainAssetBundleName);
				using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(GetAssemblyName() + "." + mainAssetBundleName);
				MainAssetBundle = AssetBundle.LoadFromStream(stream);
			}
		}
	}
	[HarmonyPatch]
	public class NetworkObjectManager
	{
		private static GameObject networkPrefab;

		[HarmonyPostfix]
		[HarmonyPatch(typeof(GameNetworkManager), "Start")]
		public static void Init()
		{
			if (!((Object)(object)networkPrefab != (Object)null))
			{
				networkPrefab = Assets.MainAssetBundle.LoadAsset<GameObject>("ZinNetwork");
				networkPrefab.AddComponent<ZinNetworking>();
				Plugin.logger.LogInfo((object)(((Object)(object)NetworkManager.Singleton == (Object)null) ? "NetworkManager is null!" : "Initiating Networking"));
				NetworkManager.Singleton.AddNetworkPrefab(networkPrefab);
			}
		}

		[HarmonyPostfix]
		[HarmonyPatch(typeof(StartOfRound), "Awake")]
		private static void ZinthosStartOfRound()
		{
			Plugin.AllPlayersLoaded = false;
			SpawnNetworkHandler();
			((MonoBehaviour)StartOfRound.Instance).StartCoroutine(WaitForPlayersToLoad());
		}

		private static void SpawnNetworkHandler()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			if (NetworkManager.Singleton.IsHost || NetworkManager.Singleton.IsServer)
			{
				GameObject val = Object.Instantiate<GameObject>(networkPrefab, Vector3.zero, Quaternion.identity);
				val.GetComponent<NetworkObject>().Spawn(false);
				Plugin.logger.LogInfo((object)"Spawned Network Handler");
			}
		}

		private static void RequestModData()
		{
			//IL_0029: 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)
			if (!NetworkManager.Singleton.IsHost && !NetworkManager.Singleton.IsServer)
			{
				ZinNetworking.Instance.RequestClothesOnJoinServerRpc();
			}
		}

		private static IEnumerator WaitForPlayersToLoad()
		{
			Plugin.logger.LogInfo((object)"Waiting for all players to load!");
			yield return (object)new WaitUntil((Func<bool>)(() => StartOfRound.Instance.fullyLoadedPlayers.Count >= GameNetworkManager.Instance.connectedPlayers));
			yield return (object)new WaitForSeconds(0.5f);
			Plugin.logger.LogInfo((object)"Loaded?");
			RequestModData();
			Plugin.AllPlayersLoaded = true;
		}
	}
	public class ZinNetworking : NetworkBehaviour
	{
		public static ZinNetworking Instance { get; private set; }

		private void Awake()
		{
			Instance = this;
			Plugin.logger.LogInfo((object)"Zin Network Awake");
		}

		[ServerRpc(RequireOwnership = false)]
		internal void RequestClothesOnJoinServerRpc(ServerRpcParams serverRpcParams = default(ServerRpcParams))
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					FastBufferWriter val = ((NetworkBehaviour)this).__beginSendServerRpc(3136181203u, serverRpcParams, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val, 3136181203u, serverRpcParams, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					Plugin.logger.LogInfo((object)$"Player (SenderClientId = {serverRpcParams.Receive.SenderClientId}) is requesting clothes from other players.");
					SendClothesToPlayerClientRpc(serverRpcParams.Receive.SenderClientId);
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		internal void RequestClothesFromPlayerServerRpc(ulong target, ServerRpcParams serverRpcParams = default(ServerRpcParams))
		{
			//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_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: 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_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: 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_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					FastBufferWriter val = ((NetworkBehaviour)this).__beginSendServerRpc(4077452656u, serverRpcParams, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val, target);
					((NetworkBehaviour)this).__endSendServerRpc(ref val, 4077452656u, serverRpcParams, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					Plugin.logger.LogInfo((object)$"Player (SenderClientId = {serverRpcParams.Receive.SenderClientId}) is requesting clothes from player {target}.");
					SendClothesToPlayerClientRpc(serverRpcParams.Receive.SenderClientId, new ClientRpcParams
					{
						Send = new ClientRpcSendParams
						{
							TargetClientIds = new ulong[1] { target }
						}
					});
				}
			}
		}

		[ClientRpc]
		internal void SendClothesToPlayerClientRpc(ulong target, 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)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				FastBufferWriter val = ((NetworkBehaviour)this).__beginSendClientRpc(1550778414u, clientRpcParams, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val, target);
				((NetworkBehaviour)this).__endSendClientRpc(ref val, 1550778414u, clientRpcParams, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			Plugin.logger.LogInfo((object)$"Player {target} has requested clothes.");
			if (target == NetworkManager.Singleton.LocalClientId)
			{
				return;
			}
			PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController;
			if ((Object)(object)localPlayerController != (Object)null)
			{
				MRZINTHOS component = ((Component)localPlayerController).gameObject.GetComponent<MRZINTHOS>();
				if ((Object)(object)component != (Object)null)
				{
					Plugin.logger.LogInfo((object)$"Sending clothes to target: {target}");
					SendFromPlayerToTargetServerRpc(target, localPlayerController.playerClientId, Plugin.enableSweater.Value, Plugin.enableCollar.Value, Plugin.sweaterColor.Value);
				}
			}
			else
			{
				Plugin.logger.LogInfo((object)"SendClothesToPlayerClientRpc NULL?");
			}
		}

		[ServerRpc(RequireOwnership = false)]
		internal void SendFromPlayerToTargetServerRpc(ulong target, ulong player, bool sweater, bool collar, MRZINTHOS.SweaterColors sweaterColor)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: 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_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: 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_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: 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_0173: Unknown result type (might be due to invalid IL or missing references)
			//IL_0178: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1907966917u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, target);
					BytePacker.WriteValueBitPacked(val2, player);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref sweater, default(ForPrimitives));
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref collar, default(ForPrimitives));
					((FastBufferWriter)(ref val2)).WriteValueSafe<MRZINTHOS.SweaterColors>(ref sweaterColor, default(ForEnums));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1907966917u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					Plugin.logger.LogInfo((object)$"Server received data from {player} and is sending it to {target}.");
					ReceiveDataFromPlayerClientRpc(player, sweater, collar, sweaterColor, new ClientRpcParams
					{
						Send = new ClientRpcSendParams
						{
							TargetClientIds = new ulong[1] { target }
						}
					});
				}
			}
		}

		[ClientRpc]
		internal void ReceiveDataFromPlayerClientRpc(ulong player, bool sweater, bool collar, MRZINTHOS.SweaterColors sweaterColor, 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_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: 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_008a: 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_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager == null || !networkManager.IsListening)
			{
				return;
			}
			if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
			{
				FastBufferWriter val = ((NetworkBehaviour)this).__beginSendClientRpc(2035142953u, clientRpcParams, (RpcDelivery)0);
				BytePacker.WriteValueBitPacked(val, player);
				((FastBufferWriter)(ref val)).WriteValueSafe<bool>(ref sweater, default(ForPrimitives));
				((FastBufferWriter)(ref val)).WriteValueSafe<bool>(ref collar, default(ForPrimitives));
				((FastBufferWriter)(ref val)).WriteValueSafe<MRZINTHOS.SweaterColors>(ref sweaterColor, default(ForEnums));
				((NetworkBehaviour)this).__endSendClientRpc(ref val, 2035142953u, clientRpcParams, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost) || player == GetLocalPlayerID())
			{
				return;
			}
			Plugin.logger.LogInfo((object)$"Received data from {player}.");
			for (int i = 0; i < StartOfRound.Instance.allPlayerScripts.Length; i++)
			{
				PlayerControllerB val2 = StartOfRound.Instance.allPlayerScripts[i];
				if (val2.playerClientId == player && val2.isPlayerControlled)
				{
					MRZINTHOS component = ((Component)val2).gameObject.GetComponent<MRZINTHOS>();
					if ((Object)(object)component != (Object)null)
					{
						component.ChangeAllClothes(sweater, collar, sweaterColor, sendToNetwork: false);
					}
					else
					{
						Plugin.logger.LogInfo((object)$"Sender {player} isn't Zinthos?");
					}
					break;
				}
			}
		}

		[ServerRpc(RequireOwnership = false)]
		internal void SendToAllPlayersServerRpc(ulong player, bool sweater, bool collar, MRZINTHOS.SweaterColors sweaterColor)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: 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_008a: 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_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: 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)
			NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1271191814u, val, (RpcDelivery)0);
					BytePacker.WriteValueBitPacked(val2, player);
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref sweater, default(ForPrimitives));
					((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref collar, default(ForPrimitives));
					((FastBufferWriter)(ref val2)).WriteValueSafe<MRZINTHOS.SweaterColors>(ref sweaterColor, default(ForEnums));
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1271191814u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					ReceiveDataFromPlayerClientRpc(player, sweater, collar, sweaterColor);
				}
			}
		}

		internal ulong GetLocalPlayerID()
		{
			return GameNetworkManager.Instance.localPlayerController.playerClientId;
		}

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

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_ZinNetworking()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Expected O, but got Unknown
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Expected O, but got Unknown
			NetworkManager.__rpc_func_table.Add(3136181203u, new RpcReceiveHandler(__rpc_handler_3136181203));
			NetworkManager.__rpc_func_table.Add(4077452656u, new RpcReceiveHandler(__rpc_handler_4077452656));
			NetworkManager.__rpc_func_table.Add(1550778414u, new RpcReceiveHandler(__rpc_handler_1550778414));
			NetworkManager.__rpc_func_table.Add(1907966917u, new RpcReceiveHandler(__rpc_handler_1907966917));
			NetworkManager.__rpc_func_table.Add(2035142953u, new RpcReceiveHandler(__rpc_handler_2035142953));
			NetworkManager.__rpc_func_table.Add(1271191814u, new RpcReceiveHandler(__rpc_handler_1271191814));
		}

		private static void __rpc_handler_3136181203(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ServerRpcParams server = rpcParams.Server;
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((ZinNetworking)(object)target).RequestClothesOnJoinServerRpc(server);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_4077452656(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 target2 = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref target2);
				ServerRpcParams server = rpcParams.Server;
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((ZinNetworking)(object)target).RequestClothesFromPlayerServerRpc(target2, server);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1550778414(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 target2 = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref target2);
				ClientRpcParams client = rpcParams.Client;
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((ZinNetworking)(object)target).SendClothesToPlayerClientRpc(target2, client);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1907966917(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_0049: 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_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: 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)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong target2 = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref target2);
				ulong player = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref player);
				bool sweater = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref sweater, default(ForPrimitives));
				bool collar = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref collar, default(ForPrimitives));
				MRZINTHOS.SweaterColors sweaterColor = default(MRZINTHOS.SweaterColors);
				((FastBufferReader)(ref reader)).ReadValueSafe<MRZINTHOS.SweaterColors>(ref sweaterColor, default(ForEnums));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((ZinNetworking)(object)target).SendFromPlayerToTargetServerRpc(target2, player, sweater, collar, sweaterColor);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_2035142953(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: 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_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: 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_0078: 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_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong player = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref player);
				bool sweater = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref sweater, default(ForPrimitives));
				bool collar = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref collar, default(ForPrimitives));
				MRZINTHOS.SweaterColors sweaterColor = default(MRZINTHOS.SweaterColors);
				((FastBufferReader)(ref reader)).ReadValueSafe<MRZINTHOS.SweaterColors>(ref sweaterColor, default(ForEnums));
				ClientRpcParams client = rpcParams.Client;
				target.__rpc_exec_stage = (__RpcExecStage)2;
				((ZinNetworking)(object)target).ReceiveDataFromPlayerClientRpc(player, sweater, collar, sweaterColor, client);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_1271191814(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
		{
			//IL_0023: 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_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: 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_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			NetworkManager networkManager = target.NetworkManager;
			if (networkManager != null && networkManager.IsListening)
			{
				ulong player = default(ulong);
				ByteUnpacker.ReadValueBitPacked(reader, ref player);
				bool sweater = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref sweater, default(ForPrimitives));
				bool collar = default(bool);
				((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref collar, default(ForPrimitives));
				MRZINTHOS.SweaterColors sweaterColor = default(MRZINTHOS.SweaterColors);
				((FastBufferReader)(ref reader)).ReadValueSafe<MRZINTHOS.SweaterColors>(ref sweaterColor, default(ForEnums));
				target.__rpc_exec_stage = (__RpcExecStage)1;
				((ZinNetworking)(object)target).SendToAllPlayersServerRpc(player, sweater, collar, sweaterColor);
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "ZinNetworking";
		}
	}
}
namespace ZinthosReplacement.NetcodePatcher
{
	[AttributeUsage(AttributeTargets.Module)]
	internal class NetcodePatchedAssemblyAttribute : Attribute
	{
	}
}