Mods/Lillys_BL_Koogles_Vore_Fork.dll

Decompiled 5 hours ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using Mirror;
using Steamworks;
using UnityEngine;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("LillysBeyondLimits")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("LillysBeyondLimits")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("6d7c1bda-ed8d-4f4c-8520-0cf2425fc134")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
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 Lilly_s_Beyond_Limits
{
	[BepInPlugin("0a26c5bd-f173-47f8-8f50-006dd6806ce6", "ATLYSS VORE", "7.1.1")]
	public class Bepin : BaseUnityPlugin
	{
		private ConfigEntry<bool> cameraCol;

		private ConfigEntry<Vector2> _headWidthRange;

		private ConfigEntry<Vector2> _headModRange;

		private ConfigEntry<Vector2> _heightRange;

		private ConfigEntry<Vector2> _widthRange;

		private ConfigEntry<Vector2> _torsoRange;

		private ConfigEntry<Vector2> _boobRange;

		private ConfigEntry<Vector2> _armRange;

		private ConfigEntry<Vector2> _bellyRange;

		private ConfigEntry<Vector2> _bottomRange;

		private ConfigEntry<Vector2> _pitchRange;

		private BeyondCore beyondcore;

		private void Awake()
		{
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: 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_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0260: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: Expected O, but got Unknown
			//IL_028f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0294: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_0318: Unknown result type (might be due to invalid IL or missing references)
			//IL_0329: Unknown result type (might be due to invalid IL or missing references)
			//IL_032e: Unknown result type (might be due to invalid IL or missing references)
			//IL_033f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0344: Unknown result type (might be due to invalid IL or missing references)
			//IL_0355: Unknown result type (might be due to invalid IL or missing references)
			//IL_035a: Unknown result type (might be due to invalid IL or missing references)
			cameraCol = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "CameralCollision", true, "Toggles Camera Colision and Infinite Zoom");
			_headWidthRange = ((BaseUnityPlugin)this).Config.Bind<Vector2>("General", "SliderHeadWidth", new Vector2(0.95f, 1.15f), "Sets Sliider Limits For Head Width");
			_headModRange = ((BaseUnityPlugin)this).Config.Bind<Vector2>("General", "SliderMuzzle", new Vector2(0f, 100f), "Sets Sliider Limits For Muzzle");
			_heightRange = ((BaseUnityPlugin)this).Config.Bind<Vector2>("General", "SliderHeight", new Vector2(0.95f, 1.055f), "Sets Sliider Limits For Height");
			_widthRange = ((BaseUnityPlugin)this).Config.Bind<Vector2>("General", "SliderWidth", new Vector2(0.95f, 1.15f), "Sets Sliider Limits For Width");
			_torsoRange = ((BaseUnityPlugin)this).Config.Bind<Vector2>("General", "SliderTorso", new Vector2(-10f, 105f), "Sets Sliider Limits For Torso");
			_boobRange = ((BaseUnityPlugin)this).Config.Bind<Vector2>("General", "SliderBoobs", new Vector2(-20f, 100f), "Sets Sliider Limits For Boobs");
			_armRange = ((BaseUnityPlugin)this).Config.Bind<Vector2>("General", "SliderArms", new Vector2(-5f, 105f), "Sets Sliider Limits For Arms");
			_bellyRange = ((BaseUnityPlugin)this).Config.Bind<Vector2>("General", "SliderBelly", new Vector2(-20f, 120f), "Sets Sliider Limits For Belly");
			_bottomRange = ((BaseUnityPlugin)this).Config.Bind<Vector2>("General", "SliderButt", new Vector2(-50f, 100f), "Sets Sliider Limits For Butt");
			_pitchRange = ((BaseUnityPlugin)this).Config.Bind<Vector2>("General", "SliderVoice", new Vector2(0.6f, 1.25f), "Sets Sliider Limits For Voice");
			if (!((Object)(object)BeyondCore.Beyondinstance != (Object)null))
			{
				GameObject val = Object.Instantiate<GameObject>(GameObject.CreatePrimitive((PrimitiveType)3));
				((Object)val).hideFlags = (HideFlags)61;
				beyondcore = val.AddComponent<BeyondCore>();
				beyondcore.Logger = logger;
				beyondcore.saveConfig = saveSettings;
				Harmony val2 = new Harmony("Lilly's Beyond Limits");
				val2.PatchAll();
				beyondcore.col = cameraCol.Value;
				beyondcore._headWidthRange = _headWidthRange.Value;
				beyondcore._headModRange = _headModRange.Value;
				beyondcore._heightRange = _heightRange.Value;
				beyondcore._widthRange = _widthRange.Value;
				beyondcore._torsoRange = _torsoRange.Value;
				beyondcore._boobRange = _boobRange.Value;
				beyondcore._armRange = _armRange.Value;
				beyondcore._bellyRange = _bellyRange.Value;
				beyondcore._bottomRange = _bottomRange.Value;
				beyondcore._pitchRange = _pitchRange.Value;
			}
		}

		public bool saveSettings(string _)
		{
			//IL_0025: 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_0053: 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_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: 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_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				cameraCol.Value = beyondcore.col;
				_headWidthRange.Value = beyondcore._headWidthRange;
				_headModRange.Value = beyondcore._headModRange;
				_heightRange.Value = beyondcore._heightRange;
				_widthRange.Value = beyondcore._widthRange;
				_torsoRange.Value = beyondcore._torsoRange;
				_boobRange.Value = beyondcore._boobRange;
				_armRange.Value = beyondcore._armRange;
				_bellyRange.Value = beyondcore._bellyRange;
				_bottomRange.Value = beyondcore._bottomRange;
				_pitchRange.Value = beyondcore._pitchRange;
				((BaseUnityPlugin)this).Config.Save();
				return true;
			}
			catch (Exception ex)
			{
				logger(ex.ToString());
				return false;
			}
		}

		private void OnApplicationQuit()
		{
			cameraCol.Value = beyondcore.col;
		}

		public bool logger(string mesg)
		{
			((BaseUnityPlugin)this).Logger.LogInfo((object)(mesg ?? ""));
			return true;
		}
	}
	public class BeyondCore : MonoBehaviour
	{
		private class PreyDigestInfo
		{
			public Player Prey;

			public StatusEntity Status;

			public int MaxHealth;

			public float DamageRemainder = 0f;

			public float VisualHealth;
		}

		private class PendingVore
		{
			public string SenderSteamID;
		}

		public class VoreRequest
		{
			public Player Sender;
		}

		[HarmonyPatch(typeof(Player), "OnGameConditionChange")]
		private static class HP_Player_OnGameConditionChange
		{
			[HarmonyPrefix]
			private static void Prefix(ref Player __instance)
			{
				//IL_0004: Unknown result type (might be due to invalid IL or missing references)
				//IL_000a: Invalid comparison between Unknown and I4
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				try
				{
					if ((int)__instance.Network_currentGameCondition == 1)
					{
						SendLobbyChat("Lillys Mod");
						SendLobbyChat("Lillys Vorable");
						SendLobbyChat($"VoreMe:{SteamUser.GetSteamID()},{(Beyondinstance.voreMe ? 1 : 0)}");
					}
				}
				catch
				{
				}
			}
		}

		[HarmonyPatch(typeof(InGameUI), "Handle_InGameUI")]
		private static class DBG_InGameUI_Handle
		{
			private static bool Prefix(InGameUI __instance)
			{
				try
				{
					Player mainPlayer = Player._mainPlayer;
					if ((Object)(object)mainPlayer == (Object)null)
					{
						return false;
					}
					if ((Object)(object)mainPlayer.Network_playerMapInstance == (Object)null)
					{
						return false;
					}
					return true;
				}
				catch
				{
					return false;
				}
			}
		}

		[HarmonyPatch(typeof(PlayerVisual), "UserCode_Rpc_VanitySparkleEffect")]
		public static class Patch_MuteMorphFX
		{
			private static bool Prefix()
			{
				return false;
			}
		}

		[HarmonyPatch(typeof(ChatBehaviour), "Cmd_SendChatMessage")]
		private static class HP_ChatBehaviour_CmdSendChat
		{
			[HarmonyPrefix]
			private static bool Prefix(ref ChatBehaviour __instance, ref string _message)
			{
				//IL_0f8a: Unknown result type (might be due to invalid IL or missing references)
				//IL_090b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0929: Unknown result type (might be due to invalid IL or missing references)
				//IL_05bc: Unknown result type (might be due to invalid IL or missing references)
				//IL_05c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_05c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_05cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_05d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_05ef: Unknown result type (might be due to invalid IL or missing references)
				//IL_07df: Unknown result type (might be due to invalid IL or missing references)
				//IL_07e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_0698: Unknown result type (might be due to invalid IL or missing references)
				//IL_069d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0b8e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c64: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c69: Unknown result type (might be due to invalid IL or missing references)
				//IL_0c6e: Unknown result type (might be due to invalid IL or missing references)
				string text = Regex.Replace(_message, "<.*?>", string.Empty);
				string text2 = text.ToLower();
				string[] array = text2.Split(new char[1] { ' ' });
				string[] array2 = text.Split(new char[1] { ' ' });
				if (array.Length == 0)
				{
					return true;
				}
				if (text2.StartsWith("/size"))
				{
					bool part = Beyondinstance.getPart(array, 0, add: false);
					__instance.New_ChatMessage(part ? "Size Changed" : "Size Change Failed");
					return false;
				}
				if (text2.StartsWith("/grow"))
				{
					bool part2 = Beyondinstance.getPart(array, 1, add: true);
					__instance.New_ChatMessage(part2 ? "Size Changed" : "Size Change Failed");
					return false;
				}
				if (text2.StartsWith("/slider"))
				{
					bool flag = Beyondinstance.setSliderLimit(array);
					__instance.New_ChatMessage(flag ? "Slider Size Changed" : "Slider Size Change Failed");
					if (flag)
					{
						Beyondinstance.saveConfig?.Invoke(string.Empty);
					}
					return false;
				}
				if (text2.StartsWith("/camera"))
				{
					Beyondinstance.col = !Beyondinstance.col;
					ChatBehaviour._current.New_ChatMessage($"Camera Collision: {Beyondinstance.col}");
					Func<string, bool> saveConfig = Beyondinstance.saveConfig;
					if (saveConfig != null && !saveConfig(string.Empty))
					{
						ChatBehaviour._current.New_ChatMessage("Failed To Save Config");
					}
					return false;
				}
				if (text2.StartsWith("/blhelp"))
				{
					ChatBehaviour._current.New_ChatMessage("Beyond Limits Commands:\n/Size /Grow /Slider /Camera");
					return false;
				}
				CSteamID val;
				switch (array[0])
				{
				case "/escape":
				{
					if (!Beyondinstance.Vored)
					{
						__instance.New_ChatMessage("You aren't vored.");
						return false;
					}
					if (Beyondinstance.VoreLock)
					{
						__instance.New_ChatMessage("Don't think you can get out that easily now.");
						return false;
					}
					Player voredBy = Beyondinstance.voredBy;
					if ((Object)(object)voredBy != (Object)null)
					{
						string text4 = RealSteamID(voredBy);
						SendLobbyChat("RestoreBelly:" + text4);
					}
					Beyondinstance.exitVore();
					__instance.New_ChatMessage("You escape the pred!");
					return false;
				}
				case "/unstuck":
				{
					if ((Object)(object)Beyondinstance.localPlayer == (Object)null)
					{
						__instance.New_ChatMessage("No local player yet.");
						return false;
					}
					Vector3 position = ((Component)Beyondinstance.localPlayer).transform.position;
					Vector3 val3 = default(Vector3);
					((Vector3)(ref val3))..ctor(position.x, position.y + 20f, position.z);
					((NetworkTransformBase)Beyondinstance.localNettransform).CmdTeleport(val3);
					__instance.New_ChatMessage("Weeeeeee");
					return false;
				}
				case "/perma":
				{
					if (array.Length == 1)
					{
						__instance.New_ChatMessage($"Perma: {Beyondinstance.permaEnabled}");
						return false;
					}
					if (!(array[1] == "true") && !(array[1] == "false"))
					{
						__instance.New_ChatMessage("Usage: /Perma true|false");
						return false;
					}
					Beyondinstance.permaEnabled = array[1] == "true";
					val = SteamUser.GetSteamID();
					string text3 = ((object)(CSteamID)(ref val)).ToString();
					Beyondinstance.permaStatus[text3] = Beyondinstance.permaEnabled;
					SendLobbyChat($"Perma:{text3},{(Beyondinstance.permaEnabled ? 1 : 0)}");
					__instance.New_ChatMessage($"Perma set to {Beyondinstance.permaEnabled}");
					return false;
				}
				case "/setlevel":
				{
					if (array.Length < 2)
					{
						Player localPlayer = Beyondinstance.localPlayer;
						PlayerStats val2 = ((localPlayer != null) ? ((Component)localPlayer).GetComponentInChildren<PlayerStats>() : null);
						__instance.New_ChatMessage($"Current level: {(Object.op_Implicit((Object)(object)val2) ? val2.Network_currentLevel : (-1))}");
						return false;
					}
					if (!int.TryParse(array[1], out var result))
					{
						__instance.New_ChatMessage("Usage: /SetLevel <number>");
						return false;
					}
					if (NetworkServer.active)
					{
						PlayerStats componentInChildren = ((Component)Beyondinstance.localPlayer).GetComponentInChildren<PlayerStats>();
						ApplyLevel(componentInChildren, result);
						__instance.New_ChatMessage($"Level set to {result}");
					}
					else
					{
						val = SteamUser.GetSteamID();
						string arg = ((object)(CSteamID)(ref val)).ToString();
						SendLobbyChat($"SetLevel:{arg},{result}");
						__instance.New_ChatMessage("Level-set request sent");
					}
					return false;
				}
				case "/vorebelly":
				{
					if (array.Length == 1)
					{
						__instance.New_ChatMessage($"Current vore belly size = {Beyondinstance.voreBellySize}");
						return false;
					}
					if (float.TryParse(array[1], out var result2) && result2 > 0f)
					{
						Beyondinstance.voreBellySize = result2;
						__instance.New_ChatMessage($"Vore belly size set to {result2}");
						Beyondinstance.saveConfig?.Invoke("");
					}
					else
					{
						__instance.New_ChatMessage("Usage: /VoreBelly <positive number>");
					}
					return false;
				}
				case "/voresetup":
					if ((Object)(object)Beyondinstance.playerVis == (Object)null)
					{
						__instance.New_ChatMessage("Can't see your avatar yet.");
					}
					else
					{
						Beyondinstance._normalSnapshot = Beyondinstance.playerVis._playerAppearanceStruct;
						Beyondinstance.baselineBellySize = Beyondinstance._normalSnapshot.Value._bellyWeight;
						Beyondinstance._baselineValid = true;
						__instance.New_ChatMessage("Saved current body and tummy as *NORMAL*.");
						Beyondinstance.saveConfig?.Invoke("");
					}
					return false;
				case "/absorb":
					if (!Beyondinstance._normalSnapshot.HasValue)
					{
						__instance.New_ChatMessage("Run /VoreSetup once first.");
						return false;
					}
					Beyondinstance.absorbEnabled = !Beyondinstance.absorbEnabled;
					if (Beyondinstance.absorbEnabled)
					{
						Beyondinstance.InitAbsorbXp();
					}
					__instance.New_ChatMessage($"Absorb: {Beyondinstance.absorbEnabled}");
					return false;
				case "/absorbtimer":
				{
					float result3;
					if (array.Length < 2)
					{
						__instance.New_ChatMessage($"Absorb total-time = {Beyondinstance.absorbTotalTime} s");
					}
					else if (!float.TryParse(array[1], out result3) || result3 <= 0f)
					{
						__instance.New_ChatMessage("Usage: /AbsorbTimer <seconds>");
					}
					else
					{
						Beyondinstance.absorbTotalTime = result3;
						__instance.New_ChatMessage($"Absorb TOTAL time set to {result3} s");
						Beyondinstance.saveConfig?.Invoke("");
					}
					return false;
				}
				case "/vore":
				{
					if (array2.Length < 2)
					{
						__instance.New_ChatMessage("No name given.");
						return false;
					}
					if (!Beyondinstance._normalSnapshot.HasValue)
					{
						__instance.New_ChatMessage("Please run /VoreSetup first.");
						return false;
					}
					bool flag2 = Beyondinstance.sendVoreRequest(array2);
					__instance.New_ChatMessage(flag2 ? "Vore request sent" : "Vore request failed");
					return false;
				}
				case "/vorable":
					if (array.Length > 1)
					{
						if (!(array[1] == "true") && !(array[1] == "false"))
						{
							__instance.New_ChatMessage("Usage: /Vorable true|false");
							return false;
						}
						Beyondinstance.voreMe = array[1] == "true";
						SendLobbyChat($"VoreMe:{SteamUser.GetSteamID()},{(Beyondinstance.voreMe ? 1 : 0)}");
						__instance.New_ChatMessage($"Others can vore me: {Beyondinstance.voreMe}");
						return false;
					}
					Beyondinstance.voreAble.RemoveAll((Player pl) => (Object)(object)pl == (Object)null);
					__instance.New_ChatMessage("Vorable players:");
					foreach (Player item in Beyondinstance.voreAble)
					{
						string? text5;
						if (!(item.Network_steamID == "localhost"))
						{
							text5 = item.Network_steamID;
						}
						else
						{
							val = SteamMatchmaking.GetLobbyOwner(new CSteamID(SteamLobby._current._currentLobbyID));
							text5 = ((object)(CSteamID)(ref val)).ToString();
						}
						string key = text5;
						if (!Beyondinstance.voreMeStatus.TryGetValue(key, out var value) || value)
						{
							__instance.New_ChatMessage(Regex.Replace(item._nickname, "<.*?>", ""));
						}
					}
					return false;
				case "/digest":
					if (array.Length == 1)
					{
						__instance.New_ChatMessage($"Digest: {Beyondinstance.digestEnabled}");
					}
					else if (array[1].Equals("true", StringComparison.OrdinalIgnoreCase) || array[1].Equals("false", StringComparison.OrdinalIgnoreCase))
					{
						Beyondinstance.digestEnabled = bool.Parse(array[1]);
						if (Beyondinstance.digestEnabled && !Beyondinstance._baselineValid)
						{
							__instance.New_ChatMessage("Warning: no baseline belly set (/VoreSetup). Digest will not run.");
						}
						__instance.New_ChatMessage($"Digest set to {Beyondinstance.digestEnabled}");
						Beyondinstance.saveConfig?.Invoke("");
					}
					else
					{
						__instance.New_ChatMessage("Usage: /Digest true|false");
					}
					return false;
				case "/digesttimer":
				{
					float result4;
					if (array.Length < 2)
					{
						__instance.New_ChatMessage($"Digest total-time = {Beyondinstance.digestTotalTime} s");
					}
					else if (!float.TryParse(array[1], out result4) || result4 <= 0f)
					{
						__instance.New_ChatMessage("Usage: /DigestTimer <positive seconds>");
					}
					else
					{
						Beyondinstance.digestTotalTime = result4;
						__instance.New_ChatMessage($"Digest TOTAL time set to {result4} s");
						Beyondinstance.saveConfig?.Invoke("");
					}
					return false;
				}
				case "/weightgain":
					if (array.Length == 1)
					{
						__instance.New_ChatMessage($"Weight-gain: {Beyondinstance.weightGainEnabled}");
						return false;
					}
					if (array[1].Equals("true", StringComparison.OrdinalIgnoreCase) || array[1].Equals("false", StringComparison.OrdinalIgnoreCase))
					{
						Beyondinstance.weightGainEnabled = bool.Parse(array[1]);
						__instance.New_ChatMessage($"Weight-gain set to {Beyondinstance.weightGainEnabled}");
						Beyondinstance.saveConfig?.Invoke("");
						return false;
					}
					__instance.New_ChatMessage("Usage: /WeightGain true|false");
					return false;
				case "/savesliders":
					if ((Object)(object)Beyondinstance.playerVis == (Object)null)
					{
						__instance.New_ChatMessage("No local player yet.");
						return false;
					}
					Beyondinstance.savedAppearance = Beyondinstance.playerVis._playerAppearanceStruct;
					__instance.New_ChatMessage("Body shape saved.");
					Beyondinstance.saveConfig?.Invoke("");
					return false;
				case "/loadsliders":
					if (!Beyondinstance.savedAppearance.HasValue)
					{
						__instance.New_ChatMessage("No saved body. Use /SaveSliders first.");
						return false;
					}
					Beyondinstance.applySavedBody();
					__instance.New_ChatMessage("Body shape restored.");
					return false;
				case "/unvore":
					if (array2.Length > 1)
					{
						Beyondinstance.unvore(array2);
						Beyondinstance.RestorePredatorBelly();
						return false;
					}
					if (!Beyondinstance.Vored)
					{
						__instance.New_ChatMessage("Not currently vored.");
						return false;
					}
					if (Beyondinstance.VoreLock)
					{
						__instance.New_ChatMessage("Can't escape (VoreLock ON)");
						return false;
					}
					Beyondinstance.exitVore();
					Beyondinstance.RestorePredatorBelly();
					return false;
				case "/vorelock":
					if (Beyondinstance.VoreLock && Beyondinstance.Vored)
					{
						__instance.New_ChatMessage("Don't think you can get out that easily now.");
						return false;
					}
					Beyondinstance.VoreLock = !Beyondinstance.VoreLock;
					__instance.New_ChatMessage($"VoreLock: {Beyondinstance.VoreLock}");
					Beyondinstance.saveConfig?.Invoke("");
					return false;
				case "/vorehelp":
				{
					ChatBehaviour chat = __instance;
					StringBuilder sb = new StringBuilder();
					L("<color=yellow>--------- CREDIT --------</color>");
					L();
					L("<color=yellow>Vore fork by Koogle - Original by ButteredLilly</color>");
					L();
					L("<color=blue>--------- BODY / SIZE --------</color>");
					L();
					L("/Size <part> <value>");
					L("^ set a slider directly");
					L("^ Boobs, Height, Head, Width, Butt, Belly, Muzzle, Voice, Torso, Arms, and Scale");
					L();
					L("/Grow <part> <delta>");
					L("^ add or subtract from a slider");
					L();
					L("/Slider <part> <min> <max>");
					L("^ change a slider's allowed range");
					L();
					L("/Camera");
					L("^ toggle camera collision");
					L();
					L("<color=blue>-------- VORE ACTIONS --------</color>");
					L();
					L("/VoreSetup");
					L("^ save current body as <color=red>NORMAL</color>");
					L("^ <color=red>ALWAYS RUN THIS AFTER ENTERING A SERVER</color>");
					L("^ <color=red> IN ORDER TO SET YOUR SILDERS' NORMAL VALUES </color>");
					L();
					L("/Vore <Name>");
					L("^ instantly vore the target if vorable");
					L();
					L("/Escape");
					L("^ Escape your pred! *Unless vorelocked");
					L();
					L("/Vorable true|false");
					L("^ toggle who can vore you");
					L();
					L("/Vorable");
					L("^ list players that are vorable (excluding yourself)");
					L("^ Note: you'll still show up here even if you toggle");
					L("^ vorable to false due to a bug I dont feel like fixing lol");
					L("^ but dont worry! you're safe if your vorable is false!");
					L();
					L("/UnVore [Name]");
					L("^ escape or eject prey");
					L();
					L("/VoreLock");
					L("^ toggle escape lock while inside pred");
					L("^ be careful ... its permanent ...");
					L();
					L("/VoreBelly <value>");
					L("^ set the size your tummy goes to after eating someone");
					L();
					L("<color=blue>----------- DIGESTION -----------</color>");
					L();
					L("/Digest true|false");
					L("^ start or stop shrinking the belly");
					L("^<color=yellow> you will sap your prey's health and gain mana! ;3c</color>");
					L();
					L("/DigestTimer <secs>");
					L("^ TOTAL time for complete digestion");
					L();
					L("/WeightGain true|false");
					L("^ grow boobs & butt while digesting");
					L("^ total growth amount depends on vorebelly size");
					L("<color=blue>---------- ABSORPTION ----------</color>");
					L();
					L("/Absorb");
					L("^ sliders drift back towards <color=red>NORMAL</color>");
					L("^ see (/voresetup) for info on <color=red>NORMAL</color>");
					L("^<color=yellow> you gain EXP as you absorb em >:] </color>");
					L("^<color=yellow> (EXP gain) = (prey HP drained) * 100</color>");
					L();
					L("/AbsorbTimer <secs>");
					L("^ TOTAL time for complete absorption");
					L();
					L("<color=blue>----------</color> <color=red>PERMAVORE</color> <color=blue>----------</color>");
					L();
					L("dont worry ... this is FALSE by default !!!");
					L();
					L("/perma true|false");
					L("^ Upon full digestion, you will be set to level 1");
					L("^ Your pred can do /absorb to gain all the levels you lost");
					L();
					L("<color=blue>---------- SAVE / LOAD ----------</color>");
					L();
					L("/SaveSliders");
					L("^ snapshot current sliders");
					L();
					L("/LoadSliders");
					L("^ restore the snapshot");
					L();
					L("<color=blue>---------- MISCELLANEOUS ----------</color>");
					L();
					L("/unstuck");
					L("^ use to teleport yourself into the air if you ever get stuck");
					L();
					L("<color=blue>---------- IMPORTANT NOTES ----------</color>");
					L();
					L("<color=red>BACK UP YOUR CHARACTER - STUFF MIGHT BREAK AND I'M NOT RESPONSIBLE IF YOU LOSE YOUR SAVE</color>");
					L("<color=yellow>Save files are stored here:</color>");
					L("<color=yellow>*\\Steam\\steamapps\\common\\ATLYSS\\ATLYSS_Data\\profileCollections</color>");
					L();
					L("<color=green>IF YOU WANT TO ENTER A DUNGEON WITH PREY MAKE SURE YOU ARE IN THE SAME PARTY TOGETHER</color>");
					L();
					L("<color=red>If you REALLY mess up your proportions just use /size or go to the mirror behind Angela</color>");
					L();
					L("<color=red>FOR PLAYERS TO TAKE DIGESTION DAMAGE YOU MUST BE IN A NON-SAFE AREA (CAN'T BE IN SPAWN)</color>");
					L();
					L("<color=red>HOST MUST HAVE THIS MOD IN ORDER FOR ANYTHING TO WORK</color>");
					L();
					L("<color=yellow>***</color><color=red>PLEASE RUN /voresetup EVERY TIME YOU JOIN A NEW SERVER TO SET YOUR *NORMAL* SLIDERS</color><color=yellow>***</color>");
					L();
					L("<color=red>Scroll up to see the rest of the mods features! :3</color>");
					L();
					Flush();
					return false;
				}
				default:
					return true;
				}
			}
		}

		[HarmonyPatch(typeof(Player), "Handle_ServerParameters")]
		private static class BL_FixPlayer
		{
			[HarmonyPostfix]
			private static void Postfix(ref Player __instance)
			{
				//IL_002a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0030: Invalid comparison between Unknown and I4
				//IL_007d: 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_011a: Unknown result type (might be due to invalid IL or missing references)
				//IL_014c: Unknown result type (might be due to invalid IL or missing references)
				try
				{
					if (!Beyondinstance.fix && ((NetworkBehaviour)__instance).isLocalPlayer && (int)__instance.Network_currentPlayerCondition == 2 && !((Object)(object)Beyondinstance.playerVis == (Object)null) && Beyondinstance.profile != null)
					{
						PlayerAppearanceStruct playerAppearanceStruct = Beyondinstance.playerVis._playerAppearanceStruct;
						PlayerAppearance_Profile profile = Beyondinstance.profile;
						playerAppearanceStruct._boobWeight = profile._boobWeight;
						playerAppearanceStruct._headWidth = profile._headWidth;
						playerAppearanceStruct._bottomWeight = profile._bottomWeight;
						playerAppearanceStruct._heightWeight = profile._heightWeight;
						playerAppearanceStruct._widthWeight = profile._widthWeight;
						playerAppearanceStruct._torsoWeight = profile._torsoWeight;
						playerAppearanceStruct._muzzleWeight = profile._muzzleWeight;
						playerAppearanceStruct._voicePitch = profile._voicePitch;
						playerAppearanceStruct._bellyWeight = profile._bellyWeight;
						playerAppearanceStruct._armWeight = profile._armWeight;
						Beyondinstance.playerVis.Cmd_SendNew_PlayerAppearanceStruct(playerAppearanceStruct);
						Beyondinstance.fix = true;
						ChatBehaviour._current.New_ChatMessage("Type /BLHelp For Commands");
						SendLobbyChat("Lillys Vorable");
						SendLobbyChat($"VoreMe:{SteamUser.GetSteamID()},{(Beyondinstance.voreMe ? 1 : 0)}");
					}
				}
				catch
				{
				}
			}
		}

		[HarmonyPatch(typeof(AtlyssNetworkManager), "OnStopClient")]
		private static class BL_OnStopClient
		{
			[HarmonyPostfix]
			private static void Postfix()
			{
				Beyondinstance.fix = false;
			}
		}

		[HarmonyPatch(typeof(CameraFunction), "FollowTargetObj")]
		private static class BL_CameraHeight
		{
			[HarmonyPrefix]
			private static void Prefix(ref CameraFunction __instance)
			{
				//IL_00aa: 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_00bd: Unknown result type (might be due to invalid IL or missing references)
				try
				{
					if (!((Object)(object)Beyondinstance.playerVis == (Object)null))
					{
						CameraFunction._current._mainCamera.farClipPlane = 10000f;
						Vector3 val = default(Vector3);
						((Vector3)(ref val))..ctor(0f, 2.15f, 0f);
						float heightWeight = Beyondinstance.playerVis._playerAppearanceStruct._heightWeight;
						bool flag = Beyondinstance.playerVis._visualAnimator.GetCurrentAnimatorClipInfo(11).Length != 0 && ((Object)((AnimatorClipInfo)(ref Beyondinstance.playerVis._visualAnimator.GetCurrentAnimatorClipInfo(11)[0])).clip).name.Contains("_sit");
						__instance.positionAdjust = val * (flag ? (heightWeight / 2f) : heightWeight);
					}
				}
				catch
				{
				}
			}
		}

		[HarmonyPatch(typeof(CameraFogDensity), "OnPreRender")]
		private static class BL_CameraFog
		{
			[HarmonyPrefix]
			private static bool Prefix(ref CameraFogDensity __instance)
			{
				__instance.fogDensity = 0.0001f;
				return false;
			}
		}

		[HarmonyPatch(typeof(CameraCollision), "<LateUpdate>g__Handle_DistanceControl|13_0")]
		private static class BL_SetMaxCamDistance
		{
			[HarmonyPrefix]
			private static bool Prefix(ref CameraCollision __instance)
			{
				try
				{
					float axis = Input.GetAxis("Mouse ScrollWheel");
					if (axis != 0f && !Player._mainPlayer._bufferingStatus && !Player._mainPlayer._inChat && !Player._mainPlayer._inUI)
					{
						CameraCollision obj = __instance;
						obj.maxDistance += axis * (35.5f + Mathf.Abs(Beyondinstance.camDis));
					}
					Beyondinstance.camDis = __instance.maxDistance;
					return false;
				}
				catch
				{
					return true;
				}
			}
		}

		[HarmonyPatch(typeof(CameraCollision), "Handle_DetectGroundLayer")]
		private static class BL_RemoveCamCollision
		{
			[HarmonyPostfix]
			private static void Postfix(ref bool __result)
			{
				if (!Beyondinstance.col)
				{
					CameraCollision._current.maxDistance = Beyondinstance.camDis;
					__result = false;
				}
			}
		}

		[HarmonyPatch(typeof(ScriptablePlayerRace), "Init_ParamsCheck")]
		private static class BL_BypassValidation
		{
			[HarmonyPrefix]
			private static bool Prefix(ref PlayerAppearance_Profile _aP, ref PlayerAppearance_Profile __result)
			{
				__result = _aP;
				return false;
			}
		}

		[HarmonyPatch(typeof(CharacterSelectManager), "Apply_CharacterSelectDisplay")]
		private static class BL_GetProfile
		{
			[HarmonyPostfix]
			private static void Postfix()
			{
				Beyondinstance.profile = ProfileDataManager._current._characterFile._appearanceProfile;
			}
		}

		[HarmonyPatch(typeof(PlayerVisual), "Apply_NetworkedCharacterDisplay")]
		private static class BL_CapturePlayerVisual
		{
			[HarmonyPrefix]
			private static void Prefix(ref PlayerVisual __instance)
			{
				if (((NetworkBehaviour)__instance).isLocalPlayer)
				{
					Beyondinstance.playerVis = __instance;
				}
			}
		}

		[HarmonyPatch(typeof(CharacterCreationManager), "SelectRace")]
		private static class BL_SetSlidersOnRaceSelect
		{
			[HarmonyPostfix]
			private static void Postfix(ref CharacterCreationManager __instance, ref int _i)
			{
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: 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)
				//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)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0051: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0061: Unknown result type (might be due to invalid IL or missing references)
				//IL_006c: 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_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_008c: 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_009c: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
				CharacterParamsGroup raceDisplayParams = __instance._raceDisplayModels[_i]._scriptablePlayerRace._raceDisplayParams;
				raceDisplayParams._headWidthRange = Beyondinstance._headWidthRange;
				raceDisplayParams._headModRange = Beyondinstance._headModRange;
				raceDisplayParams._heightRange = Beyondinstance._heightRange;
				raceDisplayParams._widthRange = Beyondinstance._widthRange;
				raceDisplayParams._torsoRange = Beyondinstance._torsoRange;
				raceDisplayParams._boobRange = Beyondinstance._boobRange;
				raceDisplayParams._armRange = Beyondinstance._armRange;
				raceDisplayParams._bellyRange = Beyondinstance._bellyRange;
				raceDisplayParams._bottomRange = Beyondinstance._bottomRange;
				raceDisplayParams._pitchRange = Beyondinstance._pitchRange;
			}
		}

		[HarmonyPatch(typeof(Player), "Handle_ServerParameters")]
		private static class HP_Vore_HandleServerParams
		{
			[HarmonyPostfix]
			private static void Postfix(ref Player __instance)
			{
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				//IL_001c: Invalid comparison between Unknown and I4
				try
				{
					if (!((Object)(object)Beyondinstance.localPlayer != (Object)null) && (int)__instance.Network_currentPlayerCondition == 2 && ((NetworkBehaviour)__instance).isLocalPlayer)
					{
						Beyondinstance.localPlayer = __instance;
						ref NetworkTransformUnreliable localNettransform = ref Beyondinstance.localNettransform;
						NetworkBehaviour obj = ((NetworkBehaviour)__instance).netIdentity.NetworkBehaviours[0];
						localNettransform = (NetworkTransformUnreliable)(object)((obj is NetworkTransformUnreliable) ? obj : null);
						ChatBehaviour._current.New_ChatMessage("Type /VoreHelp For Commands");
						if (Beyondinstance.currentRequest != null && Beyondinstance.autoAccept && !Beyondinstance.Vored)
						{
							Beyondinstance.acceptVore();
						}
					}
				}
				catch
				{
				}
			}
		}

		[HarmonyPatch(typeof(AtlyssNetworkManager), "OnStopClient")]
		private static class HP_Vore_OnStopClient
		{
			[HarmonyPostfix]
			private static void Postfix()
			{
				//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)
				try
				{
					if (Beyondinstance.Vored)
					{
						PlayerAppearanceStruct playerAppearanceStruct = Beyondinstance.localPlayer._pVisual._playerAppearanceStruct;
						PlayerAppearance_Profile appearanceProfile = ProfileDataManager._current._characterFile._appearanceProfile;
						playerAppearanceStruct._heightWeight = Beyondinstance.playSize.x;
						playerAppearanceStruct._widthWeight = Beyondinstance.playSize.y;
						appearanceProfile._heightWeight = Beyondinstance.playSize.x;
						appearanceProfile._widthWeight = Beyondinstance.playSize.y;
						ProfileDataManager._current._characterFile._appearanceProfile = appearanceProfile;
						ProfileDataManager._current.Save_ProfileData();
					}
					Beyondinstance.localPlayer = null;
					Beyondinstance.currentRequest = null;
					Beyondinstance.voredBy = null;
					Beyondinstance.Vored = false;
					Beyondinstance.voreAble.Clear();
				}
				catch
				{
				}
			}
		}

		private bool permaEnabled = false;

		private readonly Dictionary<string, bool> permaStatus = new Dictionary<string, bool>();

		private int permaLvlGain = 0;

		private int permaLevelsPerStep = 0;

		private const float ABSORB_XP_PER_HP = 100f;

		private float _nextFollowPing = 0f;

		private const float FOLLOW_PING_PERIOD = 0.5f;

		private const string TAG_VFOLLOW = "VFollowReq:";

		private const string HANDSHAKE_BL = "Lillys Mod";

		private const string HANDSHAKE_VORE = "Lillys Vorable";

		private const float TICK_INTERVAL = 0.1f;

		public Vector2[] maxSizes = (Vector2[])(object)new Vector2[10];

		public static BeyondCore Beyondinstance;

		public PlayerVisual playerVis;

		public PlayerAppearance_Profile profile;

		public PlayerAppearanceStruct playerapp;

		public bool fix = false;

		public bool isSitting = false;

		public bool col = false;

		public Vector2 _headWidthRange;

		public Vector2 _headModRange;

		public Vector2 _heightRange;

		public Vector2 _widthRange;

		public Vector2 _torsoRange;

		public Vector2 _boobRange;

		public Vector2 _armRange;

		public Vector2 _bellyRange;

		public Vector2 _bottomRange;

		public Vector2 _pitchRange;

		private const string TAG_VFOLLOW_ACK = "VFollowAck:";

		public Func<string, bool> Logger;

		public Func<string, bool> saveConfig;

		public float camDis;

		public float defaultcamDis;

		public bool autoAccept = true;

		public bool Vored = false;

		public bool VoreLock = false;

		public float voreBellySize = 250f;

		public bool digestEnabled = false;

		private float digestTimer = 0f;

		public float digestInterval = 2f;

		private const int EXTRA_DIGEST_DAMAGE = 5;

		private float _voreScanTimer = 0f;

		private const float VORE_SCAN_INTERVAL = 1f;

		public float digestTotalTime = 20f;

		public float absorbTotalTime = 20f;

		private float totalDigestDamage = 0f;

		private int absorbPayoutsLeft = 0;

		private float absorbPayoutTimer = 0f;

		private float absorbPayoutInterval = 0f;

		private int absorbChunk = 0;

		private PlayerAppearanceStruct? _normalSnapshot = null;

		private bool absorbEnabled = false;

		private float absorbTimer = 0f;

		public float absorbInterval = 2f;

		private int absorbManaGain = 0;

		private const string TAG_ABSORB_EXP = "AbsorbExp:";

		private float stepBoob;

		private float stepButt;

		private float stepBelly;

		private float stepHeight;

		private float stepWidth;

		private PendingVore _pendingVore;

		private bool _waitingInstanceMove = false;

		private readonly List<PreyDigestInfo> _digesting = new List<PreyDigestInfo>();

		private StatusEntity _predStatus;

		private StatusEntity predStatus = null;

		public float baselineBellySize = -1f;

		private bool _baselineValid = false;

		public bool weightGainEnabled = true;

		private int digestPhase = 0;

		private float lastGain = 0f;

		public bool voreMe = true;

		private readonly Dictionary<string, bool> voreMeStatus = new Dictionary<string, bool>();

		private PlayerAppearanceStruct? savedAppearance = null;

		public readonly List<Player> voreAble = new List<Player>();

		private Player localPlayer;

		private NetworkTransformUnreliable localNettransform;

		private Player voredBy;

		private VoreRequest currentRequest;

		private Vector2 playSize;

		private Callback<LobbyChatMsg_t> messageRecived;

		private bool getPart(string[] Parts, int type, bool add)
		{
			if (Parts.Length < 3)
			{
				return false;
			}
			if (!float.TryParse(Parts[2], out var result))
			{
				return false;
			}
			int num = 0;
			string text = Parts[1];
			bool flag;
			switch (text)
			{
			case "boobs":
			case "tits":
			case "boob":
			case "tit":
			case "breast":
			case "breasts":
				flag = true;
				break;
			default:
				flag = false;
				break;
			}
			if (flag)
			{
				num = 1;
			}
			else if ((text == "scale" || text == "size") ? true : false)
			{
				num = 2;
			}
			else
			{
				switch (text)
				{
				case "height":
					num = 3;
					break;
				case "head":
					num = 4;
					break;
				case "width":
					num = 5;
					break;
				case "butt":
				case "ass":
				case "bottom":
				case "rear":
				case "rump":
					flag = true;
					goto IL_0161;
				default:
					{
						flag = false;
						goto IL_0161;
					}
					IL_0161:
					if (flag)
					{
						num = 6;
						break;
					}
					switch (text)
					{
					case "belly":
					case "stomach":
					case "gut":
						flag = true;
						break;
					default:
						flag = false;
						break;
					}
					if (flag)
					{
						num = 7;
						break;
					}
					switch (text)
					{
					case "muzzle":
					case "snout":
					case "nose":
						flag = true;
						break;
					default:
						flag = false;
						break;
					}
					if (flag)
					{
						num = 8;
					}
					else if ((text == "voice" || text == "pitch") ? true : false)
					{
						num = 9;
					}
					else if ((text == "torso" || text == "chest") ? true : false)
					{
						num = 10;
					}
					else if ((text == "arms" || text == "arm") ? true : false)
					{
						num = 11;
					}
					break;
				}
			}
			return num != 0 && scalePlayer(num, result, add);
		}

		private bool scalePlayer(int part, float value, bool add)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_034e: Unknown result type (might be due to invalid IL or missing references)
			PlayerAppearanceStruct playerAppearanceStruct = playerVis._playerAppearanceStruct;
			PlayerAppearance_Profile val = profile;
			switch (part)
			{
			case 1:
				if (add)
				{
					playerAppearanceStruct._boobWeight += value;
					val._boobWeight += value;
				}
				else
				{
					playerAppearanceStruct._boobWeight = value;
					val._boobWeight = value;
				}
				break;
			case 2:
				if (add)
				{
					playerAppearanceStruct._heightWeight += value;
					playerAppearanceStruct._widthWeight += value;
					val._heightWeight += value;
					val._widthWeight += value;
				}
				else
				{
					playerAppearanceStruct._heightWeight = value;
					playerAppearanceStruct._widthWeight = value;
					val._heightWeight = value;
					val._widthWeight = value;
				}
				break;
			case 3:
				if (add)
				{
					playerAppearanceStruct._heightWeight += value;
					val._heightWeight += value;
				}
				else
				{
					playerAppearanceStruct._heightWeight = value;
					val._heightWeight = value;
				}
				break;
			case 4:
				if (add)
				{
					playerAppearanceStruct._headWidth += value;
					val._headWidth += value;
				}
				else
				{
					playerAppearanceStruct._headWidth = value;
					val._headWidth = value;
				}
				break;
			case 5:
				if (add)
				{
					playerAppearanceStruct._widthWeight += value;
					val._widthWeight += value;
				}
				else
				{
					playerAppearanceStruct._widthWeight = value;
					val._widthWeight = value;
				}
				break;
			case 6:
				if (add)
				{
					playerAppearanceStruct._bottomWeight += value;
					val._bottomWeight += value;
				}
				else
				{
					playerAppearanceStruct._bottomWeight = value;
					val._bottomWeight = value;
				}
				break;
			case 7:
				if (add)
				{
					playerAppearanceStruct._bellyWeight += value;
					val._bellyWeight += value;
				}
				else
				{
					playerAppearanceStruct._bellyWeight = value;
					val._bellyWeight = value;
				}
				break;
			case 8:
				if (add)
				{
					playerAppearanceStruct._muzzleWeight += value;
					val._muzzleWeight += value;
				}
				else
				{
					playerAppearanceStruct._muzzleWeight = value;
					val._muzzleWeight = value;
				}
				break;
			case 9:
				if (add)
				{
					playerAppearanceStruct._voicePitch += value;
					val._voicePitch += value;
				}
				else
				{
					playerAppearanceStruct._voicePitch = value;
					val._voicePitch = value;
				}
				break;
			case 10:
				if (add)
				{
					playerAppearanceStruct._torsoWeight += value;
					val._torsoWeight += value;
				}
				else
				{
					playerAppearanceStruct._torsoWeight = value;
					val._torsoWeight = value;
				}
				break;
			case 11:
				if (add)
				{
					playerAppearanceStruct._armWeight += value;
					val._armWeight += value;
				}
				else
				{
					playerAppearanceStruct._armWeight = value;
					val._armWeight = value;
				}
				break;
			default:
				return false;
			}
			playerVis.Cmd_SendNew_PlayerAppearanceStruct(playerAppearanceStruct);
			ProfileDataManager._current._characterFile._appearanceProfile = val;
			ProfileDataManager._current.Save_ProfileData();
			return true;
		}

		public bool setSliderLimit(string[] Parts)
		{
			//IL_00cc: 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_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: 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_00fa: 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_00fd: 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_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: 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_012a: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_024a: Unknown result type (might be due to invalid IL or missing references)
			//IL_024b: Unknown result type (might be due to invalid IL or missing references)
			//IL_024c: Unknown result type (might be due to invalid IL or missing references)
			//IL_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_0255: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_0294: Unknown result type (might be due to invalid IL or missing references)
			//IL_0295: Unknown result type (might be due to invalid IL or missing references)
			//IL_0297: Unknown result type (might be due to invalid IL or missing references)
			//IL_029c: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_02db: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0303: Unknown result type (might be due to invalid IL or missing references)
			//IL_0304: Unknown result type (might be due to invalid IL or missing references)
			//IL_0305: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_030c: Unknown result type (might be due to invalid IL or missing references)
			//IL_030e: Unknown result type (might be due to invalid IL or missing references)
			if (Parts.Length < 4)
			{
				return false;
			}
			if (!float.TryParse(Parts[2], out var result) || !float.TryParse(Parts[3], out var result2))
			{
				return false;
			}
			Vector2 val = default(Vector2);
			((Vector2)(ref val))..ctor(result, result2);
			CharacterParamsGroup raceDisplayParams = playerVis._playerRaceModel._scriptablePlayerRace._raceDisplayParams;
			string text = Parts[1];
			bool flag;
			switch (text)
			{
			case "boobs":
			case "tits":
			case "boob":
			case "tit":
			case "breast":
			case "breasts":
				flag = true;
				break;
			default:
				flag = false;
				break;
			}
			if (flag)
			{
				raceDisplayParams._boobRange = (_boobRange = val);
				return true;
			}
			switch (text)
			{
			case "height":
				raceDisplayParams._heightRange = (_heightRange = val);
				return true;
			case "head":
				raceDisplayParams._headWidthRange = (_headWidthRange = val);
				return true;
			case "width":
				raceDisplayParams._widthRange = (_widthRange = val);
				return true;
			case "butt":
			case "ass":
			case "bottom":
				flag = true;
				break;
			default:
				flag = false;
				break;
			}
			if (flag)
			{
				raceDisplayParams._bottomRange = (_bottomRange = val);
				return true;
			}
			if ((text == "belly" || text == "stomach") ? true : false)
			{
				raceDisplayParams._bellyRange = (_bellyRange = val);
				return true;
			}
			switch (text)
			{
			case "muzzle":
			case "snout":
			case "nose":
				flag = true;
				break;
			default:
				flag = false;
				break;
			}
			if (flag)
			{
				raceDisplayParams._headModRange = (_headModRange = val);
				return true;
			}
			if ((text == "voice" || text == "Pitch") ? true : false)
			{
				raceDisplayParams._pitchRange = (_pitchRange = val);
				return true;
			}
			if ((text == "torso" || text == "chest") ? true : false)
			{
				raceDisplayParams._torsoRange = (_torsoRange = val);
				return true;
			}
			if (text == "arms")
			{
				raceDisplayParams._armRange = (_armRange = val);
				return true;
			}
			return false;
		}

		[Server]
		private static void Server_MovePreyToPredInstance(Player pred, Player prey)
		{
			if (!NetworkServer.active || !Object.op_Implicit((Object)(object)pred) || !Object.op_Implicit((Object)(object)prey) || pred._bufferingStatus || prey._bufferingStatus)
			{
				return;
			}
			MapInstancingManager val = AtlyssNetworkManager._current?._mapInstanceManager;
			if (Object.op_Implicit((Object)(object)val))
			{
				string text = ScenePathOf(prey);
				string text2 = ScenePathOf(pred);
				if (text == text2)
				{
					SnapPreyToPred(pred, prey);
					return;
				}
				val.Init_SendPeer_ToScene(prey, text, text2, "", (ZoneDifficulty)0);
				SendLobbyChat("VFollowAck:" + RealSteamID(prey) + "," + pred.Network_mapName);
				((MonoBehaviour)Beyondinstance).StartCoroutine(Server_SnapAfterSceneLoad(pred, prey));
			}
		}

		[Server]
		private static IEnumerator Server_SnapAfterSceneLoad(Player pred, Player prey)
		{
			while (Object.op_Implicit((Object)(object)prey) && (prey._bufferingStatus || (Object)(object)prey.Network_playerMapInstance != (Object)(object)pred.Network_playerMapInstance))
			{
				yield return null;
			}
			if (Object.op_Implicit((Object)(object)prey) && Object.op_Implicit((Object)(object)pred))
			{
				SnapPreyToPred(pred, prey);
			}
		}

		[Server]
		private static void SnapPreyToPred(Player pred, Player prey)
		{
			//IL_0019: 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)
			NetworkTransformUnreliable component = ((Component)prey).GetComponent<NetworkTransformUnreliable>();
			if (Object.op_Implicit((Object)(object)component))
			{
				((NetworkTransformBase)component).RpcTeleport(((Component)pred).transform.position, ((Component)pred).transform.rotation);
			}
		}

		public void sendSteamChat(string message)
		{
			SendLobbyChat(message);
		}

		public bool unvore(string[] parts)
		{
			string value = string.Join(" ", parts, 1, parts.Length - 1);
			voreAble.RemoveAll((Player p) => (Object)(object)p == (Object)null);
			foreach (Player item in voreAble)
			{
				string text = Regex.Replace(item._nickname, "<.*?>", "");
				if (text.Equals(value, StringComparison.OrdinalIgnoreCase))
				{
					sendSteamChat(item._nickname + ",Unvore");
					return true;
				}
			}
			return false;
		}

		public bool sendVoreRequest(string[] parts)
		{
			//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)
			string value = string.Join(" ", parts, 1, parts.Length - 1);
			voreAble.RemoveAll((Player p) => (Object)(object)p == (Object)null);
			foreach (Player prey in voreAble)
			{
				string text = Regex.Replace(prey._nickname, "<.*?>", "");
				if (!text.Equals(value, StringComparison.OrdinalIgnoreCase))
				{
					continue;
				}
				string? text2;
				if (!(prey.Network_steamID == "localhost"))
				{
					text2 = prey.Network_steamID;
				}
				else
				{
					CSteamID lobbyOwner = SteamMatchmaking.GetLobbyOwner(new CSteamID(SteamLobby._current._currentLobbyID));
					text2 = ((object)(CSteamID)(ref lobbyOwner)).ToString();
				}
				string text3 = text2;
				if (voreMeStatus.TryGetValue(text3, out var value2) && !value2)
				{
					SendLobbyChat("VoreMe?:" + text3);
					ChatBehaviour._current.New_ChatMessage(text + " has not broadcast VoreMe true yet - waiting one second...");
					return false;
				}
				sendSteamChat("VoreReq:" + prey.Network_steamID);
				if ((Object)(object)playerVis != (Object)null)
				{
					if (!_baselineValid)
					{
						baselineBellySize = playerVis._playerAppearanceStruct._bellyWeight;
						_baselineValid = true;
					}
					scalePlayer(7, voreBellySize, add: false);
				}
				if (_digesting.Exists((PreyDigestInfo d) => (Object)(object)d.Prey == (Object)(object)prey))
				{
					return true;
				}
				PreyDigestInfo obj = new PreyDigestInfo
				{
					Prey = prey,
					Status = ((Component)prey).GetComponent<StatusEntity>()
				};
				StatusEntity component = ((Component)prey).GetComponent<StatusEntity>();
				obj.MaxHealth = ((component != null) ? component.Network_currentHealth : 0);
				PreyDigestInfo preyDigestInfo = obj;
				_digesting.Add(preyDigestInfo);
				preyDigestInfo.VisualHealth = preyDigestInfo.MaxHealth;
				if (NetworkServer.active)
				{
					if (_predStatus == null)
					{
						_predStatus = ((Component)localPlayer).GetComponent<StatusEntity>();
					}
				}
				else
				{
					SendLobbyChat("DigestInit:" + prey.Network_steamID + "," + localPlayer.Network_steamID);
				}
				return true;
			}
			return false;
		}

		public bool acceptVore()
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: 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)
			try
			{
				if (currentRequest == null)
				{
					return false;
				}
				PlayerVisual val = playerVis ?? localPlayer?._pVisual;
				if ((Object)(object)val == (Object)null)
				{
					((MonoBehaviour)this).Invoke("RetryAcceptVore", 0.05f);
					return false;
				}
				PlayerAppearanceStruct playerAppearanceStruct = val._playerAppearanceStruct;
				if (!Vored)
				{
					playSize = new Vector2(playerAppearanceStruct._heightWeight, playerAppearanceStruct._widthWeight);
				}
				playerAppearanceStruct._heightWeight = 0.001f;
				playerAppearanceStruct._widthWeight = 0.001f;
				val.Cmd_SendNew_PlayerAppearanceStruct(playerAppearanceStruct);
				voredBy = currentRequest.Sender;
				Vored = true;
				_waitingInstanceMove = false;
				return true;
			}
			catch (Exception ex)
			{
				Logger?.Invoke(ex.ToString());
				return false;
			}
		}

		private void RetryAcceptVore()
		{
			if (currentRequest != null && !Vored)
			{
				acceptVore();
			}
		}

		private void applySavedBody()
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: 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_0050: 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_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: 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_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: 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_00f9: 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_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: 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_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)playerVis == (Object)null) && savedAppearance.HasValue)
			{
				PlayerAppearanceStruct playerAppearanceStruct = playerVis._playerAppearanceStruct;
				PlayerAppearanceStruct value = savedAppearance.Value;
				playerAppearanceStruct._boobWeight = value._boobWeight;
				playerAppearanceStruct._headWidth = value._headWidth;
				playerAppearanceStruct._bottomWeight = value._bottomWeight;
				playerAppearanceStruct._heightWeight = value._heightWeight;
				playerAppearanceStruct._widthWeight = value._widthWeight;
				playerAppearanceStruct._torsoWeight = value._torsoWeight;
				playerAppearanceStruct._muzzleWeight = value._muzzleWeight;
				playerAppearanceStruct._voicePitch = value._voicePitch;
				playerAppearanceStruct._bellyWeight = value._bellyWeight;
				playerAppearanceStruct._armWeight = value._armWeight;
				playerVis.Cmd_SendNew_PlayerAppearanceStruct(playerAppearanceStruct);
				PlayerAppearance_Profile appearanceProfile = ProfileDataManager._current._characterFile._appearanceProfile;
				appearanceProfile._boobWeight = value._boobWeight;
				appearanceProfile._headWidth = value._headWidth;
				appearanceProfile._bottomWeight = value._bottomWeight;
				appearanceProfile._heightWeight = value._heightWeight;
				appearanceProfile._widthWeight = value._widthWeight;
				appearanceProfile._torsoWeight = value._torsoWeight;
				appearanceProfile._muzzleWeight = value._muzzleWeight;
				appearanceProfile._voicePitch = value._voicePitch;
				appearanceProfile._bellyWeight = value._bellyWeight;
				appearanceProfile._armWeight = value._armWeight;
				ProfileDataManager._current.Save_ProfileData();
			}
		}

		public bool exitVore()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				PlayerAppearanceStruct playerAppearanceStruct = localPlayer._pVisual._playerAppearanceStruct;
				playerAppearanceStruct._heightWeight = playSize.x;
				playerAppearanceStruct._widthWeight = playSize.y;
				playerAppearanceStruct._bellyWeight = baselineBellySize;
				localPlayer._pVisual.Cmd_SendNew_PlayerAppearanceStruct(playerAppearanceStruct);
				currentRequest = null;
				voredBy = null;
				_waitingInstanceMove = false;
				Vored = false;
				return true;
			}
			catch (Exception ex)
			{
				Logger?.Invoke(ex.ToString());
				return false;
			}
		}

		private static void SendLobbyChat(string txt)
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				byte[] bytes = Encoding.ASCII.GetBytes(txt);
				CSteamID val = default(CSteamID);
				((CSteamID)(ref val))..ctor(SteamLobby._current._currentLobbyID);
				SteamMatchmaking.SendLobbyChatMsg(val, bytes, bytes.Length);
			}
			catch
			{
			}
		}

		private void SendHealthDebug(string steamId, int newHp)
		{
		}

		private void onMessage(LobbyChatMsg_t cb)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: 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_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_019d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0391: Unknown result type (might be due to invalid IL or missing references)
			//IL_0431: Unknown result type (might be due to invalid IL or missing references)
			//IL_057e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0583: Unknown result type (might be due to invalid IL or missing references)
			//IL_0588: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0753: Unknown result type (might be due to invalid IL or missing references)
			//IL_0758: Unknown result type (might be due to invalid IL or missing references)
			//IL_067c: Unknown result type (might be due to invalid IL or missing references)
			//IL_068b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0929: Unknown result type (might be due to invalid IL or missing references)
			//IL_092e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0820: Unknown result type (might be due to invalid IL or missing references)
			//IL_082d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c05: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b1c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b26: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a04: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a13: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c5a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7a: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				if ((CSteamID)cb.m_ulSteamIDUser == SteamUser.GetSteamID())
				{
					return;
				}
				byte[] array = new byte[5000];
				CSteamID sid = default(CSteamID);
				EChatEntryType val = default(EChatEntryType);
				int lobbyChatEntry = SteamMatchmaking.GetLobbyChatEntry((CSteamID)cb.m_ulSteamIDLobby, (int)cb.m_iChatID, ref sid, array, 5000, ref val);
				string @string = Encoding.ASCII.GetString(array, 0, Math.Min(20, lobbyChatEntry));
				string text = Encoding.ASCII.GetString(array).TrimEnd(new char[1]);
				CSteamID val2;
				if (text.StartsWith("VoreMe:"))
				{
					string[] array2 = text.Split(':', ',');
					if (array2.Length == 3)
					{
						bool value = array2[2] == "1";
						voreMeStatus[array2[1]] = value;
						val2 = SteamMatchmaking.GetLobbyOwner(new CSteamID(SteamLobby._current._currentLobbyID));
						string text2 = ((object)(CSteamID)(ref val2)).ToString();
						if (array2[1] == text2)
						{
							voreMeStatus["localhost"] = value;
						}
					}
				}
				else if (text.StartsWith("VFollowAck:") && !NetworkServer.active)
				{
					string text3 = text;
					int length = "VFollowAck:".Length;
					string[] array3 = text3.Substring(length, text3.Length - length).Split(new char[1] { ',' });
					if (array3.Length == 2)
					{
						string text4 = array3[0];
						string text5 = array3[1];
						val2 = SteamUser.GetSteamID();
						if (text4 == ((object)(CSteamID)(ref val2)).ToString() || ((Object)(object)localPlayer != (Object)null && text4 == localPlayer.Network_steamID))
						{
							Debug.Log((object)("[VFollow] Ack from host; transferring to '" + text5 + "'..."));
						}
					}
				}
				else if (text.StartsWith("Perma:"))
				{
					string[] array4 = text.Split(':', ',');
					if (array4.Length == 3)
					{
						permaStatus[array4[1]] = array4[2] == "1";
					}
				}
				else if (text.StartsWith("PermaGain:") && !NetworkServer.active)
				{
					string text3 = text;
					int length = "PermaGain:".Length;
					string[] array5 = text3.Substring(length, text3.Length - length).Split(new char[1] { ',' });
					if (array5.Length == 2)
					{
						string obj = array5[0];
						val2 = SteamUser.GetSteamID();
						if (obj == ((object)(CSteamID)(ref val2)).ToString() && int.TryParse(array5[1], out var result) && result > 0)
						{
							permaLvlGain += result;
						}
					}
				}
				else if (text.StartsWith("SetLevel:") && NetworkServer.active)
				{
					string text3 = text;
					int length = "SetLevel:".Length;
					string[] array6 = text3.Substring(length, text3.Length - length).Split(new char[1] { ',' });
					if (array6.Length == 2 && ulong.TryParse(array6[0], out var result2) && int.TryParse(array6[1], out var result3))
					{
						Player val3 = findPlayer(new CSteamID(result2));
						PlayerStats ps = (Object.op_Implicit((Object)(object)val3) ? ((Component)val3).GetComponentInChildren<PlayerStats>() : null);
						ApplyLevel(ps, result3);
						Debug.Log((object)$"[RPC-SetLevel] host set {val3._nickname} to {result3}");
					}
				}
				else if (text.StartsWith("EscapeKill:") && NetworkServer.active)
				{
					string text3 = text;
					int length = "EscapeKill:".Length;
					if (ulong.TryParse(text3.Substring(length, text3.Length - length), out var result4))
					{
						Player val4 = findPlayer(new CSteamID(result4));
						StatusEntity val5 = ((val4 != null) ? ((Component)val4).GetComponent<StatusEntity>() : null);
						if ((Object)(object)val5 != (Object)null)
						{
							val5.Subtract_Health(val5.Network_currentHealth);
						}
					}
				}
				else if (text.StartsWith("AbsorbExp:") && NetworkServer.active)
				{
					string text3 = text;
					int length = "AbsorbExp:".Length;
					string[] array7 = text3.Substring(length, text3.Length - length).Split(new char[1] { ',' });
					if (array7.Length == 2 && ulong.TryParse(array7[0], out var result5) && int.TryParse(array7[1], out var result6) && result6 > 0)
					{
						Player val6 = findPlayer(new CSteamID(result5));
						PlayerStats val7 = ((val6 != null) ? ((Component)val6).GetComponentInChildren<PlayerStats>() : null);
						if ((Object)(object)val7 != (Object)null)
						{
							val7.GainExp(result6, val7.Network_currentLevel);
						}
					}
				}
				else if (text.StartsWith("RestoreBelly:"))
				{
					string text3 = text;
					int length = "RestoreBelly:".Length;
					string text6 = text3.Substring(length, text3.Length - length);
					val2 = SteamMatchmaking.GetLobbyOwner(new CSteamID(SteamLobby._current._currentLobbyID));
					string text7 = ((object)(CSteamID)(ref val2)).ToString();
					Player obj2 = localPlayer;
					if (!(text6 == ((obj2 != null) ? obj2.Network_steamID : null)))
					{
						if (!(text6 == text7))
						{
							return;
						}
						Player obj3 = localPlayer;
						if (!(((obj3 != null) ? obj3.Network_steamID : null) == "localhost"))
						{
							return;
						}
					}
					Beyondinstance.RestorePredatorBelly();
				}
				else if (text.StartsWith("VFollowReq:") && NetworkServer.active)
				{
					string text3 = text;
					int length = "VFollowReq:".Length;
					string[] array8 = text3.Substring(length, text3.Length - length).Split(new char[1] { ',' });
					if (array8.Length == 2 && ulong.TryParse(array8[0], out var result7) && ulong.TryParse(array8[1], out var result8))
					{
						Player val8 = findPlayer(new CSteamID(result7));
						Player val9 = findPlayer(new CSteamID(result8));
						if (Object.op_Implicit((Object)(object)val8) && Object.op_Implicit((Object)(object)val9))
						{
							Server_MovePreyToPredInstance(val8, val9);
						}
					}
				}
				else if (text.Contains("Lillys Vorable"))
				{
					Player val10 = findPlayer((CSteamID)cb.m_ulSteamIDUser);
					if ((Object)(object)val10 != (Object)null && !voreAble.Contains(val10))
					{
						voreAble.Add(val10);
					}
				}
				else if (text.StartsWith("HealthDbg:"))
				{
					string[] array9 = text.Split(':', ',');
					if (array9.Length == 3)
					{
						string obj4 = array9[1];
						val2 = SteamUser.GetSteamID();
						if (obj4 == ((object)(CSteamID)(ref val2)).ToString())
						{
							ChatBehaviour._current.New_ChatMessage("[DEBUG] Your HP is now " + array9[2]);
						}
					}
				}
				else if (text.StartsWith("DigestTick:") && NetworkServer.active)
				{
					string text3 = text;
					int length = "DigestTick:".Length;
					string[] array10 = text3.Substring(length, text3.Length - length).Split(new char[1] { ',' });
					if (array10.Length != 2 || !ulong.TryParse(array10[0], out var result9) || !int.TryParse(array10[1], out var result10) || result10 <= 0)
					{
						return;
					}
					Player val11 = findPlayer(new CSteamID(result9));
					Player val12 = findPlayer(sid);
					if (Object.op_Implicit((Object)(object)val11) && Object.op_Implicit((Object)(object)val12))
					{
						StatusEntity component = ((Component)val11).GetComponent<StatusEntity>();
						StatusEntity component2 = ((Component)val12).GetComponent<StatusEntity>();
						int network_currentHealth = component.Network_currentHealth;
						if (network_currentHealth > 0 && network_currentHealth - result10 <= 0)
						{
							HandlePermaKill(val11, val12);
						}
						component.Subtract_Health(result10);
						if ((Object)(object)component != (Object)null)
						{
							SendHealthDebug(val11.Network_steamID, component.Network_currentHealth);
						}
						if (component2 != null)
						{
							component2.Add_Mana(result10 * 10);
						}
					}
				}
				else if (text.StartsWith("VoreMe?:") && (Object)(object)localPlayer != (Object)null)
				{
					string text3 = text;
					int length = "VoreMe?:".Length;
					string text8 = text3.Substring(length, text3.Length - length);
					val2 = SteamUser.GetSteamID();
					if (text8 == ((object)(CSteamID)(ref val2)).ToString())
					{
						SendLobbyChat($"VoreMe:{text8},{(voreMe ? 1 : 0)}");
					}
				}
				else if (text.StartsWith("DigestInit:") && NetworkServer.active)
				{
					string text3 = text;
					int length = "DigestInit:".Length;
					string[] array11 = text3.Substring(length, text3.Length - length).Split(new char[1] { ',' });
					if (array11.Length != 2 || !ulong.TryParse(array11[0], out var result11) || !ulong.TryParse(array11[1], out var result12))
					{
						return;
					}
					Player val13 = findPlayer(new CSteamID(result11));
					Player val14 = findPlayer(new CSteamID(result12));
					if (Object.op_Implicit((Object)(object)val13) && Object.op_Implicit((Object)(object)val14))
					{
						PreyDigestInfo obj5 = new PreyDigestInfo
						{
							Prey = val13,
							Status = ((Component)val13).GetComponent<StatusEntity>()
						};
						StatusEntity component3 = ((Component)val13).GetComponent<StatusEntity>();
						obj5.MaxHealth = ((component3 != null) ? component3.Network_currentHealth : 0);
						PreyDigestInfo preyDigestInfo = obj5;
						_digesting.Add(preyDigestInfo);
						preyDigestInfo.VisualHealth = preyDigestInfo.MaxHealth;
						if (_predStatus == null)
						{
							_predStatus = ((Component)val14).GetComponent<StatusEntity>();
						}
					}
				}
				else if (text.StartsWith("DigestKill:") && NetworkServer.active)
				{
					string text3 = text;
					int length = "DigestKill:".Length;
					if (ulong.TryParse(text3.Substring(length, text3.Length - length), out var result13))
					{
						string idStr = result13.ToString();
						val2 = SteamMatchmaking.GetLobbyOwner(new CSteamID(SteamLobby._current._currentLobbyID));
						string host64 = ((object)(CSteamID)(ref val2)).ToString();
						PreyDigestInfo di = _digesting.Find((PreyDigestInfo d) => d.Prey.Network_steamID == idStr || (d.Prey.Network_steamID == "localhost" && idStr == host64));
						if ((Object)(object)di?.Status != (Object)null)
						{
							Player predator = findPlayer(sid);
							HandlePermaKill(di.Prey, predator);
							di.Status.Subtract_Health(di.Status.Network_currentHealth);
						}
						_digesting.RemoveAll((PreyDigestInfo d) => (Object)(object)d.Prey == (Object)(object)di?.Prey);
					}
				}
				else if (text.StartsWith("VoreReq:"))
				{
					string text9 = text.Substring("VoreReq:".Length);
					val2 = SteamUser.GetSteamID();
					if (!(text9 == ((object)(CSteamID)(ref val2)).ToString()) && (!((Object)(object)localPlayer != (Object)null) || !(text9 == localPlayer.Network_steamID)))
					{
						return;
					}
					Player val15 = findPlayer(sid);
					if ((Object)(object)val15 == (Object)null)
					{
						_pendingVore = new PendingVore
						{
							SenderSteamID = sid.m_SteamID.ToString()
						};
						return;
					}
					currentRequest = new VoreRequest
					{
						Sender = val15
					};
					if (!voreMe)
					{
						ChatBehaviour._current.New_ChatMessage("Vore request denied (VoreMe is false)");
						return;
					}
					if (!autoAccept || Vored)
					{
						ChatBehaviour._current.New_ChatMessage("Vore request from " + val15._nickname);
						return;
					}
					acceptVore();
					ChatBehaviour._current.New_ChatMessage("You've been vored by " + val15._nickname);
				}
				else if (text.Contains("Unvore"))
				{
					string text10 = Regex.Replace(text.Split(new char[1] { ',' })[0], "<.*?>", "");
					string text11 = Regex.Replace(localPlayer._nickname, "<.*?>", "");
					if (text11 == text10 && Vored)
					{
						exitVore();
						ChatBehaviour._current.New_ChatMessage("You've Been Unvored");
					}
				}
			}
			catch (Exception ex)
			{
				Logger?.Invoke(ex.ToString());
			}
		}

		private Player findPlayer(CSteamID sid)
		{
			//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)
			string text = ((object)(CSteamID)(ref sid)).ToString();
			CSteamID lobbyOwner = SteamMatchmaking.GetLobbyOwner(new CSteamID(SteamLobby._current._currentLobbyID));
			string text2 = ((object)(CSteamID)(ref lobbyOwner)).ToString();
			Player[] array = Object.FindObjectsOfType<Player>();
			foreach (Player val in array)
			{
				if (val.Network_steamID == text || (text == text2 && val.Network_steamID == "localhost"))
				{
					return val;
				}
			}
			return null;
		}

		private void Start()
		{
			Beyondinstance = this;
			messageRecived = Callback<LobbyChatMsg_t>.Create((DispatchDelegate<LobbyChatMsg_t>)onMessage);
			if (NetworkServer.active)
			{
				ForceWideRanges();
			}
			((MonoBehaviour)this).Invoke("AutoBaseline", 0.1f);
		}

		private void AutoBaseline()
		{
			if ((Object)(object)playerVis != (Object)null)
			{
				baselineBellySize = playerVis._playerAppearanceStruct._bellyWeight;
				_baselineValid = true;
				ChatBehaviour._current.New_ChatMessage($"Baseline belly auto-set to {baselineBellySize:F1}");
				saveConfig?.Invoke("");
			}
			else
			{
				((MonoBehaviour)this).Invoke("AutoBaseline", 0.1f);
			}
		}

		private static void ForceWideRanges()
		{
			//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_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: 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)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: 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)
			ScriptablePlayerRace[] array = Resources.FindObjectsOfTypeAll<ScriptablePlayerRace>();
			foreach (ScriptablePlayerRace val in array)
			{
				CharacterParamsGroup raceDisplayParams = val._raceDisplayParams;
				raceDisplayParams._boobRange = new Vector2(0f, 999f);
				raceDisplayParams._bellyRange = new Vector2(0f, 999f);
				raceDisplayParams._bottomRange = new Vector2(0f, 999f);
				raceDisplayParams._heightRange = new Vector2(0f, 999f);
				raceDisplayParams._widthRange = new Vector2(0f, 999f);
			}
		}

		private void setSlider(int part, float value, ref PlayerAppearanceStruct pas)
		{
			switch (part)
			{
			case 1:
				pas._boobWeight = value;
				break;
			case 6:
				pas._bottomWeight = value;
				break;
			case 7:
				pas._bellyWeight = value;
				break;
			}
		}

		public void RestorePredatorBelly()
		{
			if (!((Object)(object)playerVis == (Object)null))
			{
				if (!_baselineValid)
				{
					ChatBehaviour._current.New_ChatMessage("No baseline belly set yet (/VoreSetup).");
					return;
				}
				scalePlayer(7, baselineBellySize, add: false);
				ChatBehaviour._current.New_ChatMessage($"Your belly returned to {baselineBellySize:F1}");
			}
		}

		private void RefreshVoreAble()
		{
			voreAble.RemoveAll((Player p) => (Object)(object)p == (Object)null);
			Player[] array = Object.FindObjectsOfType<Player>();
			foreach (Player val in array)
			{
				if (!((Object)(object)val == (Object)(object)localPlayer) && !voreAble.Contains(val) && (!voreMeStatus.TryGetValue(val.Network_steamID, out var value) || value))
				{
					voreAble.Add(val);
				}
			}
		}

		public static string RealSteamID(Player p)
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: 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)
			string? result;
			if (!(p.Network_steamID == "localhost"))
			{
				result = p.Network_steamID;
			}
			else
			{
				CSteamID lobbyOwner = SteamMatchmaking.GetLobbyOwner(new CSteamID(SteamLobby._current._currentLobbyID));
				result = ((object)(CSteamID)(ref lobbyOwner)).ToString();
			}
			return result;
		}

		private static float StepToward(float current, float target, float step)
		{
			if (Mathf.Approximately(current, target))
			{
				return target;
			}
			return (current > target) ? Mathf.Max(target, current - step) : Mathf.Min(target, current + step);
		}

		private void SendDigestTick(Player prey, int dmg)
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: 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)
			string? text;
			if (!(prey.Network_steamID == "localhost"))
			{
				text = prey.Network_steamID;
			}
			else
			{
				CSteamID lobbyOwner = SteamMatchmaking.GetLobbyOwner(new CSteamID(SteamLobby._current._currentLobbyID));
				text = ((object)(CSteamID)(ref lobbyOwner)).ToString();
			}
			string arg = text;
			SendLobbyChat($"DigestTick:{arg},{dmg}");
		}

		private void InitAbsorbXp()
		{
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			absorbPayoutsLeft = 5;
			absorbPayoutInterval = Mathf.Max(0.01f, absorbTotalTime / 5f);
			absorbPayoutTimer = 0f;
			float num = totalDigestDamage / 5f;
			absorbChunk = Mathf.RoundToInt(num * 100f);
			totalDigestDamage = 0f;
			permaLevelsPerStep = Mathf.CeilToInt((float)permaLvlGain / 5f);
			if ((Object)(object)playerVis != (Object)null && _normalSnapshot.HasValue)
			{
				float num2 = Mathf.Max(1f, absorbTotalTime / 0.1f);
				stepBoob = Mathf.Abs(playerVis._playerAppearanceStruct._boobWeight - _normalSnapshot.Value._boobWeight) / num2;
				stepButt = Mathf.Abs(playerVis._playerAppearanceStruct._bottomWeight - _normalSnapshot.Value._bottomWeight) / num2;
				stepBelly = Mathf.Abs(playerVis._playerAppearanceStruct._bellyWeight - _normalSnapshot.Value._bellyWeight) / num2;
				stepHeight = Mathf.Abs(playerVis._playerAppearanceStruct._heightWeight - _normalSnapshot.Value._heightWeight) / num2;
				stepWidth = Mathf.Abs(playerVis._playerAppearanceStruct._widthWeight - _normalSnapshot.Value._widthWeight) / num2;
			}
			Debug.Log((object)$"[InitAbsorb] absorbChunk={absorbChunk}  permaLevelsPerStep={permaLevelsPerStep}");
		}

		private void Client_ForceLoadMap(string mapName)
		{
			//IL_010a: 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_011d: Unknown result type (might be due to invalid IL or missing references)
			MapInstance val = null;
			MapInstance[] array = Object.FindObjectsOfType<MapInstance>();
			foreach (MapInstance val2 in array)
			{
				if (string.Equals(val2._mapName, mapName, StringComparison.OrdinalIgnoreCase))
				{
					val = val2;
					break;
				}
				string text = ((Object)val2).name;
				if (text.StartsWith("_MapInstance (") && text.EndsWith(")"))
				{
					text = text.Substring("_MapInstance (".Length, text.Length - "_MapInstance (".Length - 1);
				}
				if (string.Equals(text, mapName, StringComparison.OrdinalIgnoreCase))
				{
					val = val2;
					break;
				}
			}
			if ((Object)(object)val == (Object)null)
			{
				Debug.LogWarning((object)("[VFollow] Could not locate MapInstance '" + mapName + "' on client; UI may break."));
				return;
			}
			Player val3 = localPlayer ?? Player._mainPlayer;
			if ((Object)(object)val3 != (Object)null)
			{
				val3.Network_playerMapInstance = val;
				val3.Network_mapName = mapName;
			}
			Scene scene = ((Component)val).gameObject.scene;
			if (((Scene)(ref scene)).IsValid())
			{
				SceneManager.SetActiveScene(scene);
			}
			try
			{
				InGameUI current = InGameUI._current;
				if ((Object)(object)current != (Object)null)
				{
					((Component)current).gameObject.SetActive(false);
					((Component)current).gameObject.SetActive(true);
				}
			}
			catch (Exception arg)
			{
				Debug.Log((object)$"[VFollow] UI rebind threw: {arg}");
			}
		}

		private static string ScenePathOf(Player p)
		{
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			MapInstance network_playerMapInstance = p.Network_playerMapInstance;
			if (Object.op_Implicit((Object)(object)network_playerMapInstance))
			{
				return ((Scene)(ref network_playerMapInstance._loadedScene)).path;
			}
			Scene scene = ((Component)p).gameObject.scene;
			return ((Scene)(ref scene)).path;
		}

		private void AwardExp(int amt)
		{
			Debug.Log((object)$"[AwardExp] grant={amt}  host={NetworkServer.active}");
			if (amt <= 0)
			{
				return;
			}
			if (NetworkServer.active)
			{
				Player obj = localPlayer;
				PlayerStats val = ((obj != null) ? ((Component)obj).GetComponentInChildren<PlayerStats>() : null);
				if (val != null)
				{
					val.GainExp(amt, val.Network_currentLevel);
				}
			}
			else
			{
				SendLobbyChat(string.Format("{0}{1},{2}", "AbsorbExp:", localPlayer.Network_steamID, amt));
			}
		}

		private static void ApplyLevel(PlayerStats ps, int lvl)
		{
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			Debug.Log((object)$"[ApplyLevel] ENTER  requested={lvl}  current={((ps != null) ? new int?(ps.Network_currentLevel) : null)}");
			if (!Object.op_Implicit((Object)(object)ps))
			{
				return;
			}
			StatLogics statLogics = GameManager._current._statLogics;
			int maxMainLevel = statLogics._maxMainLevel;
			int attributePointsEachLevel = statLogics._attributePointsEachLevel;
			lvl = Mathf.Clamp(lvl, 1, maxMainLevel);
			ps.Network_currentLevel = lvl;
			int num = (int)statLogics._experienceCurve.Evaluate((float)lvl) - 5;
			ps.Network_currentExp = Mathf.Clamp(ps.Network_currentExp, 0, num);
			int network_currentAttributePoints = 6 + (lvl - 1) * attributePointsEachLevel;
			ps.Network_currentAttributePoints = network_currentAttributePoints;
			if (ps._syncAttributes != null)
			{
				for (int i = 0; i < ps._syncAttributes.Count; i++)
				{
					AttributeStruct val = ps._syncAttributes[i];
					val._attributeValue = 1;
					ps._syncAttributes[i] = val;
				}
			}
			Debug.Log((object)$"[ApplyLevel] EXIT   newLvl={ps.Network_currentLevel}  exp={ps.Network_currentExp}  attrPool={ps.Network_currentAttributePoints}");
		}

		private void HandlePermaKill(Player prey, Player predator)
		{
			if (!Object.op_Implicit((Object)(object)prey) || !Object.op_Implicit((Object)(object)predator))
			{
				return;
			}
			string key = RealSteamID(prey);
			if (!permaStatus.TryGetValue(key, out var value) || !value)
			{
				return;
			}
			PlayerStats componentInChildren = ((Component)prey).GetComponentInChildren<PlayerStats>();
			int num = (Object.op_Implicit((Object)(object)componentInChildren) ? componentInChildren.Network_currentLevel : 0);
			Debug.Log((object)$"[HPK] prey={prey._nickname}  lostLvls={num}  pred={predator._nickname}");
			if (num > 0)
			{
				if (((NetworkBehaviour)predator).isLocalPlayer)
				{
					permaLvlGain += num;
				}
				if (NetworkServer.active)
				{
					ApplyLevel(componentInChildren, 1);
				}
				else
				{
					SendLobbyChat("SetLevel:" + RealSteamID(prey) + ",1");
				}
				if (!((NetworkBehaviour)predator).isLocalPlayer)
				{
					SendLobbyChat($"PermaGain:{RealSteamID(predator)},{num}");
				}
				Debug.Log((object)$"[HPK] predGain now {permaLvlGain}");
			}
		}

		private void ForceBellyToBaseline()
		{
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: 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)
			if (Object.op_Implicit((Object)(object)playerVis) && _baselineValid)
			{
				PlayerAppearanceStruct playerAppearanceStruct = playerVis._playerAppearanceStruct;
				if (!Mathf.Approximately(playerAppearanceStruct._bellyWeight, baselineBellySize))
				{
					playerAppearanceStruct._bellyWeight = baselineBellySize;
					playerVis.Cmd_SendNew_PlayerAppearanceStruct(playerAppearanceStruct);
					PlayerAppearance_Profile appearanceProfile = ProfileDataManager._current._characterFile._appearanceProfile;
					appearanceProfile._bellyWeight = baselineBellySize;
					ProfileDataManager._current.Save_ProfileData();
				}
			}
		}

		private void Update()
		{
			//IL_0020: 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_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_071d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0722: Unknown result type (might be due to invalid IL or missing references)
			//IL_072a: Unknown result type (might be due to invalid IL or missing references)
			//IL_072f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0733: Unknown result type (might be due to invalid IL or missing references)
			//IL_073a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0753: Unknown result type (might be due to invalid IL or missing references)
			//IL_075a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0773: Unknown result type (might be due to invalid IL or missing references)
			//IL_077a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0793: Unknown result type (might be due to invalid IL or missing references)
			//IL_079a: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0913: Unknown result type (might be due to invalid IL or missing references)
			//IL_091a: Unknown result type (might be due to invalid IL or missing references)
			//IL_092e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0935: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b3f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0acb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_040a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0425: Unknown result type (might be due to invalid IL or missing references)
			//IL_0433: Unknown result type (might be due to invalid IL or missing references)
			//IL_0441: Unknown result type (might be due to invalid IL or missing references)
			//IL_044f: Unknown result type (might be due to invalid IL or missing references)
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_046b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0479: Unknown result type (might be due to invalid IL or missing references)
			//IL_0487: Unknown result type (might be due to invalid IL or missing references)
			//IL_0495: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a07: Unknown result type (might be due to invalid IL or missing references)
			if (_pendingVore != null)
			{
				Player val = findPlayer(new CSteamID(ulong.Parse(_pendingVore.SenderSteamID)));
				if ((Object)(object)val != (Object)null)
				{
					currentRequest = new VoreRequest
					{
						Sender = val
					};
					if (autoAccept && !Vored && voreMe)
					{
						acceptVore();
					}
					_pendingVore = null;
				}
			}
			if (digestEnabled && (Object)(object)playerVis != (Object)null && _baselineValid)
			{
				digestTimer += Time.deltaTime;
				if (!(digestTimer < 0.1f))
				{
					digestTimer = 0f;
					PlayerAppearanceStruct playerAppearanceStruct = playerVis._playerAppearanceStruct;
					float bellyWeight = playerAppearanceStruct._bellyWeight;
					_digesting.RemoveAll(delegate(PreyDigestInfo di)
					{
						if (di == null || (Object)(object)di.Prey == (Object)null)
						{
							return true;
						}
						PlayerVisual pVisual2 = di.Prey._pVisual;
						return (Object)(object)pVisual2 == (Object)null || pVisual2._playerAppearanceStruct._heightWeight > 0.05f;
					});
					float num = 0.1f / Mathf.Max(0.01f, digestTotalTime);
					int num2 = 0;
					PreyDigestInfo[] array = _digesting.ToArray();
					foreach (PreyDigestInfo preyDigestInfo in array)
					{
						PreyDigestInfo preyDigestInfo2 = preyDigestInfo;
						if (preyDigestInfo2.Status == null)
						{
							Player prey = preyDigestInfo.Prey;
							preyDigestInfo2.Status = ((prey != null) ? ((Component)prey).GetComponent<StatusEntity>() : null);
						}
						if ((Object)(object)preyDigestInfo.Status == (Object)null)
						{
							continue;
						}
						float num3 = (float)preyDigestInfo.MaxHealth * num;
						int network_currentHealth = preyDigestInfo.Status.Network_currentHealth;
						if ((float)network_currentHealth > preyDigestInfo.VisualHealth)
						{
							preyDigestInfo.VisualHealth = network_currentHealth;
						}
						else
						{
							float num4 = preyDigestInfo.VisualHealth - num3;
							preyDigestInfo.VisualHealth = Mathf.Max((float)network_currentHealth, num4);
						}
						preyDigestInfo.DamageRemainder += num3;
						int num5 = Mathf.FloorToInt(preyDigestInfo.DamageRemainder);
						if (num5 <= 0)
						{
							continue;
						}
						preyDigestInfo.DamageRemainder -= num5;
						totalDigestDamage += num5;
						num2 += num5;
						if (NetworkServer.active)
						{
							int network_currentHealth2 = preyDigestInfo.Status.Network_currentHealth;
							if (network_currentHealth2 > 0 && network_currentHealth2 - num5 <= 0)
							{
								HandlePermaKill(preyDigestInfo.Prey, localPlayer);
							}
							preyDigestInfo.Status.S