Decompiled source of ToggleFace v1.0.2

ToggleFace.dll

Decompiled 2 weeks ago
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("ToggleFace")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ToggleFace")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("f7c43861-2ec1-408f-94da-b4eadde3bd45")]
[assembly: AssemblyFileVersion("1.0.2.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.2.0")]
namespace ToggleFace
{
	internal static class PluginInfo
	{
		public const string PLUGIN_GUILD = "it.pippopad.toggleface";

		public const string PLUGIN_NAME = "ToggleFace";

		public const string PLUGIN_VERSION = "1.0.2";
	}
	[BepInPlugin("it.pippopad.toggleface", "ToggleFace", "1.0.2")]
	internal class ToggleFaceMod : BaseUnityPlugin
	{
		public static ToggleFaceMod instance;

		public bool[] activeExpression = new bool[6];

		public bool[] isStillDown = new bool[6];

		private Canvas hudCanvas;

		private GameObject facesText;

		private TMP_Text facesTextTMP;

		public ConfigEntry<bool> showActiveExpr;

		public ConfigEntry<float> fontSize;

		private void Awake()
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)instance))
			{
				instance = this;
				BindConfigs();
				new Harmony("it.pippopad.toggleface").PatchAll();
				((BaseUnityPlugin)this).Logger.LogInfo((object)"ToggleFace has started!");
			}
		}

		public void Update()
		{
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Expected O, but got Unknown
			//IL_00af: 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_00e4: 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_010d: Unknown result type (might be due to invalid IL or missing references)
			if (!showActiveExpr.Value)
			{
				return;
			}
			if (!SemiFunc.MenuLevel() && !SemiFunc.RunIsLobbyMenu())
			{
				if ((Object)(object)facesText == (Object)null || (Object)(object)hudCanvas == (Object)null)
				{
					hudCanvas = GameObject.Find("HUD Canvas").GetComponent<Canvas>();
					facesText = new GameObject("FacesText");
					facesText.transform.SetParent(((Component)hudCanvas).transform, false);
					facesTextTMP = (TMP_Text)(object)facesText.AddComponent<TextMeshProUGUI>();
					facesTextTMP.fontSize = fontSize.Value;
					((Graphic)facesTextTMP).color = Color.white;
					RectTransform component = facesText.GetComponent<RectTransform>();
					component.anchorMin = new Vector2(1f, 0.5f);
					component.anchorMax = new Vector2(1f, 0.5f);
					component.anchoredPosition = new Vector2(-40f, -50f);
					component.sizeDelta = new Vector2(100f, 50f);
				}
				facesTextTMP.text = "";
				for (int i = 0; i < activeExpression.Count(); i++)
				{
					if (activeExpression[i])
					{
						TMP_Text obj = facesTextTMP;
						obj.text += $"Face {i + 1}\n";
					}
				}
			}
			else
			{
				Object.Destroy((Object)(object)facesText);
				facesText = null;
			}
		}

		private void BindConfigs()
		{
			showActiveExpr = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "ShowActiveExpressions", true, "Show a list of active expressions");
			fontSize = ((BaseUnityPlugin)this).Config.Bind<float>("General", "ListTextFontSize", 20f, "Set the font size of list (if active)");
		}

		public static ManualLogSource GetLogger()
		{
			return ((BaseUnityPlugin)instance).Logger;
		}
	}
	internal static class Utils
	{
		public static void CallMethod<T>(T __instance, string methodName, object[] args)
		{
			MethodInfo method = typeof(T).GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic);
			if (method != null)
			{
				method.Invoke(__instance, args);
			}
		}

		public static U CallMethod<T, U>(T __instance, string methodName, object[] args)
		{
			MethodInfo method = typeof(T).GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic);
			if (method != null)
			{
				return (U)method.Invoke(__instance, args);
			}
			return default(U);
		}

		public static U GetField<T, U>(T __instance, string fieldName)
		{
			FieldInfo field = typeof(T).GetField(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			if (field != null)
			{
				return (U)field.GetValue(__instance);
			}
			return default(U);
		}

		public static void SetField<T, U>(T __instance, string fieldName, U value)
		{
			FieldInfo field = typeof(T).GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic);
			if (field != null)
			{
				field.SetValue(__instance, value);
			}
		}
	}
}
namespace ToggleFace.Patches
{
	[HarmonyPatch(typeof(PlayerExpression), "Update")]
	internal class PlayerExpressionPatch
	{
		public static bool Prefix(PlayerExpression __instance)
		{
			//IL_0d14: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d62: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dfe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e4c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e9a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ee8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f36: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fd4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0fe9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c89: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cc6: Unknown result type (might be due to invalid IL or missing references)
			//IL_079d: Unknown result type (might be due to invalid IL or missing references)
			//IL_07da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0828: Unknown result type (might be due to invalid IL or missing references)
			//IL_0876: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0912: Unknown result type (might be due to invalid IL or missing references)
			//IL_0960: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_09fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a4a: Unknown result type (might be due to invalid IL or missing references)
			ToggleFaceMod.instance.Update();
			PlayerAvatarVisuals component = ((Component)__instance).GetComponent<PlayerAvatarVisuals>();
			if (!LevelGenerator.Instance.Generated && !SemiFunc.MenuLevel())
			{
				Utils.CallMethod<PlayerExpression>(__instance, "DoExpression", new object[2] { 1, 100f });
			}
			if (!Object.op_Implicit((Object)(object)__instance.playerAvatar))
			{
				if (Utils.GetField<PlayerAvatarVisuals, bool>(component, "expressionAvatar"))
				{
					Utils.GetField<PlayerAvatarVisuals, Animator>(component, "animator").Play("Crouch", 0, 0f);
				}
				Utils.SetField<PlayerExpression, PlayerAvatar>(__instance, "playerAvatar", PlayerAvatar.instance);
				Utils.SetField<PlayerExpression, bool>(__instance, "isLocal", value: true);
			}
			List<int> list = new List<int>();
			foreach (int item in Utils.GetField<PlayerExpression, List<int>>(__instance, "activeExpressions"))
			{
				list.Add(item);
			}
			Utils.GetField<PlayerExpression, List<int>>(__instance, "activeExpressions").Clear();
			if (Utils.GetField<PlayerExpression, bool>(__instance, "isLocal"))
			{
				if (!Object.op_Implicit((Object)(object)Utils.GetField<MenuManager, MenuPage>(MenuManager.instance, "currentMenuPage")))
				{
					if (SemiFunc.InputDown((InputKey)26) && !ToggleFaceMod.instance.isStillDown[0])
					{
						ToggleFaceMod.instance.activeExpression[0] = !ToggleFaceMod.instance.activeExpression[0];
						ToggleFaceMod.instance.isStillDown[0] = true;
					}
					else if (SemiFunc.InputUp((InputKey)26))
					{
						ToggleFaceMod.instance.isStillDown[0] = false;
					}
					if (SemiFunc.InputDown((InputKey)27) && !ToggleFaceMod.instance.isStillDown[1])
					{
						ToggleFaceMod.instance.activeExpression[1] = !ToggleFaceMod.instance.activeExpression[1];
						ToggleFaceMod.instance.isStillDown[1] = true;
					}
					else if (SemiFunc.InputUp((InputKey)27))
					{
						ToggleFaceMod.instance.isStillDown[1] = false;
					}
					if (SemiFunc.InputDown((InputKey)28) && !ToggleFaceMod.instance.isStillDown[2])
					{
						ToggleFaceMod.instance.activeExpression[2] = !ToggleFaceMod.instance.activeExpression[2];
						ToggleFaceMod.instance.isStillDown[2] = true;
					}
					else if (SemiFunc.InputUp((InputKey)28))
					{
						ToggleFaceMod.instance.isStillDown[2] = false;
					}
					if (SemiFunc.InputDown((InputKey)29) && !ToggleFaceMod.instance.isStillDown[3])
					{
						ToggleFaceMod.instance.activeExpression[3] = !ToggleFaceMod.instance.activeExpression[3];
						ToggleFaceMod.instance.isStillDown[3] = true;
					}
					else if (SemiFunc.InputUp((InputKey)29))
					{
						ToggleFaceMod.instance.isStillDown[3] = false;
					}
					if (SemiFunc.InputDown((InputKey)30) && !ToggleFaceMod.instance.isStillDown[4])
					{
						ToggleFaceMod.instance.activeExpression[4] = !ToggleFaceMod.instance.activeExpression[4];
						ToggleFaceMod.instance.isStillDown[4] = true;
					}
					else if (SemiFunc.InputUp((InputKey)30))
					{
						ToggleFaceMod.instance.isStillDown[4] = false;
					}
					if (SemiFunc.InputDown((InputKey)31) && !ToggleFaceMod.instance.isStillDown[5])
					{
						ToggleFaceMod.instance.activeExpression[5] = !ToggleFaceMod.instance.activeExpression[5];
						ToggleFaceMod.instance.isStillDown[5] = true;
					}
					else if (SemiFunc.InputUp((InputKey)31))
					{
						ToggleFaceMod.instance.isStillDown[5] = false;
					}
					if (ToggleFaceMod.instance.activeExpression[0])
					{
						Utils.CallMethod<PlayerExpression>(__instance, "DoExpression", new object[2] { 1, 100f });
					}
					if (ToggleFaceMod.instance.activeExpression[1])
					{
						Utils.CallMethod<PlayerExpression>(__instance, "DoExpression", new object[2] { 2, 100f });
					}
					if (ToggleFaceMod.instance.activeExpression[2])
					{
						Utils.CallMethod<PlayerExpression>(__instance, "DoExpression", new object[2] { 3, 100f });
					}
					if (ToggleFaceMod.instance.activeExpression[3])
					{
						Utils.CallMethod<PlayerExpression>(__instance, "DoExpression", new object[2] { 4, 100f });
					}
					if (ToggleFaceMod.instance.activeExpression[4])
					{
						Utils.CallMethod<PlayerExpression>(__instance, "DoExpression", new object[2] { 5, 100f });
					}
					if (ToggleFaceMod.instance.activeExpression[5])
					{
						Utils.CallMethod<PlayerExpression>(__instance, "DoExpression", new object[2] { 6, 100f });
					}
				}
			}
			else
			{
				foreach (KeyValuePair<int, float> item2 in Utils.GetField<PlayerAvatar, Dictionary<int, float>>(__instance.playerAvatar, "playerExpressions"))
				{
					ExpressionSettings val = Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[item2.Key];
					val.weight = Mathf.Lerp(val.weight, item2.Value, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime") * 5f);
					if (!Utils.GetField<ExpressionSettings, bool>(val, "stopExpressing"))
					{
						Utils.SetField<ExpressionSettings, bool>(val, "isExpressing", value: true);
						Utils.SetField<ExpressionSettings, float>(val, "timer", 0.2f);
						Utils.GetField<PlayerExpression, List<int>>(__instance, "activeExpressions").Add(item2.Key);
					}
				}
			}
			bool flag = false;
			foreach (int item3 in Utils.GetField<PlayerExpression, List<int>>(__instance, "activeExpressions"))
			{
				if (!list.Contains(item3))
				{
					flag = true;
					break;
				}
			}
			if (!flag)
			{
				foreach (int item4 in list)
				{
					if (!Utils.GetField<PlayerExpression, List<int>>(__instance, "activeExpressions").Contains(item4))
					{
						flag = true;
						break;
					}
				}
			}
			if (flag)
			{
				component.HeadTiltImpulse(50f);
			}
			if (Utils.GetField<PlayerExpression, bool>(__instance, "isExpressing"))
			{
				if (Utils.GetField<PlayerAvatarVisuals, bool>(component, "expressionAvatar"))
				{
					Utils.GetField<PlayerAvatarVisuals, Animator>(component, "animator").SetBool("Crouching", false);
				}
				Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[0].weight = Mathf.Lerp(Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[0].weight, 0f, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime") * 5f);
				Utils.SetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye", Utils.CallMethod<PlayerExpression, EyeSettings>(__instance, "BlendEyeSettings", new object[1] { true }));
				Utils.SetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye", Utils.CallMethod<PlayerExpression, EyeSettings>(__instance, "BlendEyeSettings", new object[1] { false }));
				Utils.GetField<PlayerExpression, GameObject>(__instance, "eyelidLeft").SetActive(true);
				Utils.GetField<PlayerExpression, GameObject>(__instance, "eyelidRight").SetActive(true);
				Utils.SetField<PlayerExpression, float>(__instance, "blendedHeadTilt", 0f);
				float num = 0f;
				foreach (ExpressionSettings item5 in Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions"))
				{
					if (Utils.GetField<ExpressionSettings, bool>(item5, "isExpressing"))
					{
						Utils.SetField<PlayerExpression, float>(__instance, "blendedHeadTilt", Utils.GetField<PlayerExpression, float>(__instance, "blendedHeadTilt") + Utils.GetField<ExpressionSettings, float>(item5, "headTiltAmount"));
						num += 1f;
					}
				}
				if (num > 0f)
				{
					Utils.SetField<PlayerExpression, float>(__instance, "blendedHeadTilt", Utils.GetField<PlayerExpression, float>(__instance, "blendedHeadTilt") / num);
				}
				component.HeadTiltOverride(Utils.GetField<PlayerExpression, float>(__instance, "blendedHeadTilt"));
				float num2 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftLidsScale"), 1f, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "eyelidLeftScale").localScale = new Vector3(num2, num2, num2);
				num2 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightLidsScale"), 1f, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "eyelidRightScale").localScale = new Vector3(num2, num2, num2);
				float num3 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftUpperLidClosedAngle"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye").upperLidClosedPercent, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "leftUpperEyelidRotationX").localRotation = Quaternion.Euler(num3, 0f, 0f);
				float num4 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftLowerLidClosedAngle"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye").lowerLidClosedPercent, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "leftLowerEyelidRotationX").localRotation = Quaternion.Euler(num4, 0f, 0f);
				num3 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightUpperLidClosedAngle"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye").upperLidClosedPercent, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "rightUpperEyelidRotationX").localRotation = Quaternion.Euler(num3, 0f, 0f);
				num4 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightLowerLidClosedAngle"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye").lowerLidClosedPercent, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "rightLowerEyelidRotationX").localRotation = Quaternion.Euler(num4, 0f, 0f);
				float num5 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftUpperLidRotationZSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye").upperLidAngle, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "leftUpperEyeLidRotationZ").localRotation = Quaternion.Euler(0f, 0f, num5);
				num5 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightUpperLidRotationZSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye").upperLidAngle, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "rightUpperEyelidRotationZ").localRotation = Quaternion.Euler(0f, 0f, num5);
				float num6 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftLowerLidRotationZSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye").lowerLidAngle, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "leftLowerEyelidRotationZ").localRotation = Quaternion.Euler(0f, 0f, num6);
				num6 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightLowerLidRotationZSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye").lowerLidAngle, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "rightLowerEyelidRotationZ").localRotation = Quaternion.Euler(0f, 0f, num6);
				Utils.SetField<PlayerExpression, float>(__instance, "pupilLeftScaleAmount", SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftPupilSizeSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye").pupilSize, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime")));
				Utils.SetField<PlayerExpression, float>(__instance, "pupilRightScaleAmount", SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightPupilSizeSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye").pupilSize, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime")));
				if (Utils.GetField<PlayerExpression, bool>(__instance, "isLocal"))
				{
					((SemiUI)PlayerExpressionsUI.instance).Show();
				}
			}
			else if (Utils.GetField<PlayerExpression, GameObject>(__instance, "eyelidLeft").activeSelf)
			{
				Utils.SetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye", Utils.CallMethod<PlayerExpression, EyeSettings>(__instance, "BlendEyeSettings", new object[1] { true }));
				Utils.SetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye", Utils.CallMethod<PlayerExpression, EyeSettings>(__instance, "BlendEyeSettings", new object[1] { false }));
				Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[0].weight = Mathf.Lerp(Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[0].weight, 100f, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime") * 20f);
				Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[1].weight = Mathf.Lerp(Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[1].weight, 0f, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime") * 20f);
				Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[2].weight = Mathf.Lerp(Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[2].weight, 0f, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime") * 20f);
				if (Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[0].weight > 50f)
				{
					if (Utils.GetField<PlayerAvatarVisuals, bool>(component, "expressionAvatar"))
					{
						Utils.GetField<PlayerAvatarVisuals, Animator>(component, "animator").SetBool("Crouching", true);
					}
					float num7 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftLidsScale"), 0.8f, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
					Utils.GetField<PlayerExpression, Transform>(__instance, "eyelidLeftScale").localScale = new Vector3(num7, num7, num7);
					num7 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightLidsScale"), 0.8f, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
					Utils.GetField<PlayerExpression, Transform>(__instance, "eyelidRightScale").localScale = new Vector3(num7, num7, num7);
				}
				float num8 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftUpperLidClosedAngle"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye").upperLidClosedPercent, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "leftUpperEyelidRotationX").localRotation = Quaternion.Euler(num8, 0f, 0f);
				float num9 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftLowerLidClosedAngle"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye").lowerLidClosedPercent, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "leftLowerEyelidRotationX").localRotation = Quaternion.Euler(num9, 0f, 0f);
				num8 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightUpperLidClosedAngle"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye").upperLidClosedPercent, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "rightUpperEyelidRotationX").localRotation = Quaternion.Euler(num8, 0f, 0f);
				num9 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightLowerLidClosedAngle"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye").lowerLidClosedPercent, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "rightLowerEyelidRotationX").localRotation = Quaternion.Euler(num9, 0f, 0f);
				float num10 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftUpperLidRotationZSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye").upperLidAngle, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "leftUpperEyeLidRotationZ").localRotation = Quaternion.Euler(0f, 0f, num10);
				num10 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightUpperLidRotationZSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye").upperLidAngle, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "rightUpperEyelidRotationZ").localRotation = Quaternion.Euler(0f, 0f, num10);
				float num11 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftLowerLidRotationZSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye").lowerLidAngle, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "leftLowerEyelidRotationZ").localRotation = Quaternion.Euler(0f, 0f, num11);
				num11 = SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightLowerLidRotationZSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye").lowerLidAngle, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime"));
				Utils.GetField<PlayerExpression, Transform>(__instance, "rightLowerEyelidRotationZ").localRotation = Quaternion.Euler(0f, 0f, num11);
				Utils.SetField<PlayerExpression, float>(__instance, "pupilLeftScaleAmount", SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "leftPupilSizeSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedLeftEye").pupilSize, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime")));
				Utils.SetField<PlayerExpression, float>(__instance, "pupilRightScaleAmount", SemiFunc.SpringFloatGet(Utils.GetField<PlayerExpression, SpringFloat>(__instance, "rightPupilSizeSpring"), Utils.GetField<PlayerExpression, EyeSettings>(__instance, "blendedRightEye").pupilSize, Utils.GetField<PlayerAvatarVisuals, float>(component, "deltaTime")));
				if (Utils.GetField<PlayerExpression, List<ExpressionSettings>>(__instance, "expressions")[0].weight > 82f)
				{
					Utils.GetField<PlayerExpression, Transform>(__instance, "pupilRightScale").localScale = Vector3.one;
					Utils.GetField<PlayerExpression, Transform>(__instance, "pupilLeftScale").localScale = Vector3.one;
					Utils.GetField<PlayerExpression, GameObject>(__instance, "eyelidLeft").SetActive(false);
					Utils.GetField<PlayerExpression, GameObject>(__instance, "eyelidRight").SetActive(false);
				}
			}
			Utils.CallMethod<PlayerExpression>(__instance, "ExpressionTimerTick", null);
			return false;
		}
	}
}