using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Microsoft.CodeAnalysis; 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: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("")] [assembly: AssemblyCompany("REPOJP")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("zabuMod")] [assembly: AssemblyTitle("zabuMod")] [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 REPOJP.EyesColorCustom { [BepInPlugin("REPOJP.EyesColorCustom", "EyesColorCustom", "1.3.0")] public sealed class EyesColorCustomPlugin : BaseUnityPlugin { private enum EyeColorPreset { Random, Off, Red, Green, Love, CeilingEye, Inverted } private enum HudAnimState { Hidden, In, Hold, Out } [HarmonyPatch] private static class ExpressionInputSuppressPatches { [HarmonyPrefix] [HarmonyPatch(typeof(SemiFunc), "InputDown")] private static bool SemiFunc_InputDown_Prefix(InputKey key, ref bool __result) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (!IsExpressionKey(key)) { return true; } if (ShouldSuppressExpressionInputs()) { __result = false; return false; } return true; } [HarmonyPrefix] [HarmonyPatch(typeof(SemiFunc), "InputHold")] private static bool SemiFunc_InputHold_Prefix(InputKey key, ref bool __result) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (!IsExpressionKey(key)) { return true; } if (ShouldSuppressExpressionInputs()) { __result = false; return false; } return true; } } [HarmonyPatch] private static class PlayerCosmeticsReapplyPatches { [CompilerGenerated] private sealed class d__0 : IEnumerable, IEnumerable, IEnumerator, IEnumerator, IDisposable { private int <>1__state; private MethodBase <>2__current; private int <>l__initialThreadId; private Type 5__1; private string[] 5__2; private string[] <>s__3; private int <>s__4; private string 5__5; private MethodInfo 5__6; MethodBase IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__0(int <>1__state) { this.<>1__state = <>1__state; <>l__initialThreadId = Environment.CurrentManagedThreadId; } [DebuggerHidden] void IDisposable.Dispose() { 5__1 = null; 5__2 = null; <>s__3 = null; 5__5 = null; 5__6 = null; <>1__state = -2; } private bool MoveNext() { int num = <>1__state; if (num != 0) { if (num != 1) { return false; } <>1__state = -1; goto IL_00db; } <>1__state = -1; 5__1 = AccessTools.TypeByName("PlayerCosmetics"); if (5__1 == null) { return false; } 5__2 = new string[3] { "PlayerMaterialSetup", "SetupColorsLogic", "SetupColorsAllLogic" }; <>s__3 = 5__2; <>s__4 = 0; goto IL_00f8; IL_00db: 5__6 = null; 5__5 = null; <>s__4++; goto IL_00f8; IL_00f8: if (<>s__4 < <>s__3.Length) { 5__5 = <>s__3[<>s__4]; 5__6 = AccessTools.Method(5__1, 5__5, (Type[])null, (Type[])null); if (5__6 != null) { <>2__current = 5__6; <>1__state = 1; return true; } goto IL_00db; } <>s__3 = null; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } [DebuggerHidden] IEnumerator IEnumerable.GetEnumerator() { if (<>1__state == -2 && <>l__initialThreadId == Environment.CurrentManagedThreadId) { <>1__state = 0; return this; } return new d__0(0); } [DebuggerHidden] IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable)this).GetEnumerator(); } } [IteratorStateMachine(typeof(d__0))] private static IEnumerable TargetMethods() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__0(-2); } private static void Postfix(object __instance) { if (!((Object)(object)Instance == (Object)null) && __instance != null && IsLocalPlayerCosmeticsInstance(__instance)) { Instance.MarkCosmeticReapply(); } } private static bool IsLocalPlayerCosmeticsInstance(object instance) { try { FieldInfo fieldInfo = AccessTools.Field(instance.GetType(), "playerAvatarVisuals"); if (fieldInfo == null) { return false; } object value = fieldInfo.GetValue(instance); if (value == null) { return false; } FieldInfo fieldInfo2 = AccessTools.Field(value.GetType(), "playerAvatar"); if (fieldInfo2 == null) { return false; } object value2 = fieldInfo2.GetValue(value); PlayerAvatar val = (PlayerAvatar)((value2 is PlayerAvatar) ? value2 : null); return (Object)(object)val != (Object)null && val.isLocal; } catch { return false; } } } [CompilerGenerated] private sealed class d__58 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public EyesColorCustomPlugin <>4__this; private float 5__1; private float 5__2; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__58(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; break; case 1: <>1__state = -1; break; } if (<>4__this._enabled.Value) { <>4__this.EnsureLocalCache(); if ((Object)(object)<>4__this._cachedAvatar != (Object)null && (Object)(object)<>4__this._cachedHealth != (Object)null) { <>4__this.ApplyEye(); <>4__this.ApplyPupil(); } } 5__1 = Mathf.Clamp(<>4__this._applyIntervalSeconds.Value, 0.05f, 2f); if (<>4__this._enabled.Value && <>4__this._eyeBlinkList.Count >= 2) { 5__2 = Mathf.Clamp(<>4__this._blinkIntervalSeconds.Value, 0.05f, 5f); 5__1 = Mathf.Clamp(Mathf.Min(5__1, 5__2 * 0.5f), 0.05f, 2f); } <>2__current = (object)new WaitForSeconds(5__1); <>1__state = 1; return true; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public const string PluginGuid = "REPOJP.EyesColorCustom"; public const string PluginName = "EyesColorCustom"; public const string PluginVersion = "1.3.0"; private static EyesColorCustomPlugin Instance; private ConfigEntry _enabled; private ConfigEntry _defaultEyeColor; private ConfigEntry _defaultPupilMultiplier; private ConfigEntry _applyIntervalSeconds; private ConfigEntry _blinkIntervalSeconds; private ConfigEntry _hudHoldSeconds; private ConfigEntry _hudFadeInSeconds; private ConfigEntry _hudFadeOutSeconds; private bool _eyeUseDefault = true; private EyeColorPreset _eyeSingle = EyeColorPreset.Off; private readonly List _eyeBlinkList = new List(); private EyeColorPreset _randomEyeForLevel = EyeColorPreset.Red; private bool _pupilUseDefault = true; private float _pupilMultiplier = 1f; private PlayerAvatar _cachedAvatar; private PlayerHealth _cachedHealth; private bool _lastAppliedEyeOverride; private EyeColorPreset _lastAppliedEyePreset; private bool _lastAppliedPupilOverride; private float _lastCosmeticReapplyRequestTime; private HudAnimState _hudState = HudAnimState.Hidden; private float _hudStateStartUnscaled; private float _hudX; private float _hudY; private float _hudAlpha; private Texture2D _whiteTex; private bool _guiInited; private GUIStyle _hudTitleStyle; private GUIStyle _hudTextStyle; private GUIStyle _hudSmallStyle; private GUIStyle _hudMonoStyle; private Harmony _harmony; private bool _pendingReapplyAfterScene; private readonly HashSet _ctrlHeldDigitsPrev = new HashSet(); private int _hiddenIndex; private float _hiddenDeadline; private bool _hiddenActive; private float _hiddenEndTime; private readonly EyeColorPreset[] _hiddenEyes = new EyeColorPreset[5] { EyeColorPreset.Red, EyeColorPreset.Green, EyeColorPreset.Love, EyeColorPreset.CeilingEye, EyeColorPreset.Inverted }; private readonly EyeColorPreset[] _randomPool = new EyeColorPreset[5] { EyeColorPreset.Red, EyeColorPreset.Green, EyeColorPreset.Love, EyeColorPreset.CeilingEye, EyeColorPreset.Inverted }; private void Awake() { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown Instance = this; try { ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); BindConfig(); RollRandomEyeForLevel("awake"); ApplyConfigToRuntime(bumpHud: false); _harmony = new Harmony("REPOJP.EyesColorCustom"); _harmony.PatchAll(typeof(EyesColorCustomPlugin).Assembly); ((MonoBehaviour)this).StartCoroutine(ApplyLoop()); _defaultEyeColor.SettingChanged += delegate { ApplyConfigToRuntime(bumpHud: false); }; _defaultPupilMultiplier.SettingChanged += delegate { ApplyConfigToRuntime(bumpHud: false); }; SceneManager.sceneLoaded += OnSceneLoaded; SceneManager.activeSceneChanged += OnActiveSceneChanged; ((BaseUnityPlugin)this).Logger.LogInfo((object)"EyesColorCustom loaded for REPO 0.4.0. Version=1.3.0"); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failure: Awake\n" + ex)); } } private void OnDestroy() { try { SceneManager.sceneLoaded -= OnSceneLoaded; } catch { } try { SceneManager.activeSceneChanged -= OnActiveSceneChanged; } catch { } try { if (_harmony != null) { _harmony.UnpatchSelf(); } } catch { } if ((Object)(object)_whiteTex != (Object)null) { Object.Destroy((Object)(object)_whiteTex); _whiteTex = null; } } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { RollRandomEyeForLevel("sceneLoaded:" + ((Scene)(ref scene)).name); MarkReapply(); } private void OnActiveSceneChanged(Scene from, Scene to) { RollRandomEyeForLevel("activeSceneChanged:" + ((Scene)(ref to)).name); MarkReapply(); } private void BindConfig() { //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Expected O, but got Unknown //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Expected O, but got Unknown //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Expected O, but got Unknown //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Expected O, but got Unknown //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Expected O, but got Unknown //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Expected O, but got Unknown _enabled = ((BaseUnityPlugin)this).Config.Bind("0_General", "Enabled", true, "Enable plugin. プラグイン有効化"); _defaultEyeColor = ((BaseUnityPlugin)this).Config.Bind("1_Defaults", "DefaultEyeColor", EyeColorPreset.Random, "Default eye color preset. Random selects Red, Green, Love, CeilingEye, or Inverted on each level change. デフォルト目色プリセット Randomはレベル変更ごとにOff以外から選択"); _defaultPupilMultiplier = ((BaseUnityPlugin)this).Config.Bind("1_Defaults", "DefaultPupilMultiplier", 1f, new ConfigDescription("Default pupil size multiplier. デフォルト瞳孔倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0.25f, 3f), Array.Empty())); _applyIntervalSeconds = ((BaseUnityPlugin)this).Config.Bind("2_Runtime", "ApplyIntervalSeconds", 0.2f, new ConfigDescription("Apply loop interval seconds. 適用ループ間隔秒数", (AcceptableValueBase)(object)new AcceptableValueRange(0.05f, 2f), Array.Empty())); _blinkIntervalSeconds = ((BaseUnityPlugin)this).Config.Bind("2_Runtime", "BlinkIntervalSeconds", 0.2f, new ConfigDescription("Blink interval seconds for multi-color selection. 複数色選択の点滅間隔秒数", (AcceptableValueBase)(object)new AcceptableValueRange(0.05f, 5f), Array.Empty())); _hudHoldSeconds = ((BaseUnityPlugin)this).Config.Bind("3_HUD", "HudHoldSeconds", 5f, new ConfigDescription("HUD hold seconds before fade out. フェードアウトまでのHUD保持秒数", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); _hudFadeInSeconds = ((BaseUnityPlugin)this).Config.Bind("3_HUD", "HudFadeInSeconds", 0.18f, new ConfigDescription("HUD fade in seconds. HUDフェードイン秒数", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 2f), Array.Empty())); _hudFadeOutSeconds = ((BaseUnityPlugin)this).Config.Bind("3_HUD", "HudFadeOutSeconds", 0.22f, new ConfigDescription("HUD fade out seconds. HUDフェードアウト秒数", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 2f), Array.Empty())); } private void ApplyConfigToRuntime(bool bumpHud) { _eyeUseDefault = true; _eyeBlinkList.Clear(); _eyeSingle = GetConfiguredDefaultEyeColor(); _pupilUseDefault = true; _pupilMultiplier = ClampPupil(_defaultPupilMultiplier.Value); MarkReapply(); if (bumpHud) { BumpHud(); } } private void RollRandomEyeForLevel(string reason) { try { int num = Random.Range(0, _randomPool.Length); if (num < 0 || num >= _randomPool.Length) { num = 0; } _randomEyeForLevel = _randomPool[num]; } catch { _randomEyeForLevel = EyeColorPreset.Red; } } private EyeColorPreset GetConfiguredDefaultEyeColor() { if (_defaultEyeColor.Value == EyeColorPreset.Random) { return _randomEyeForLevel; } return _defaultEyeColor.Value; } private void Update() { if (!_enabled.Value) { _ctrlHeldDigitsPrev.Clear(); ResetHiddenCommand(); return; } if (!SemiFunc.NoTextInputsActive()) { _ctrlHeldDigitsPrev.Clear(); ResetHiddenCommand(); return; } bool flag = IsCtrlPressed(); bool flag2 = IsShiftPressed(); UpdateHiddenCommand(flag2); if (flag && flag2) { _ctrlHeldDigitsPrev.Clear(); return; } if (flag) { HandleEyeInput(); return; } _ctrlHeldDigitsPrev.Clear(); if (flag2) { HandlePupilInput(); } } private void LateUpdate() { if (_enabled.Value && Time.unscaledTime - _lastCosmeticReapplyRequestTime < 1f) { _pendingReapplyAfterScene = true; } } private void HandleEyeInput() { HashSet digitsHeldNow = GetDigitsHeldNow(); List digitsDownThisFrame = GetDigitsDownThisFrame(); if (digitsDownThisFrame.Contains(0)) { SetEyeDefault(); _ctrlHeldDigitsPrev.Clear(); _ctrlHeldDigitsPrev.UnionWith(digitsHeldNow); return; } if (digitsDownThisFrame.Count > 0) { bool flag = _ctrlHeldDigitsPrev.Count > 0 && digitsDownThisFrame.Any((int d) => d != 0); if (digitsDownThisFrame.Count >= 2) { flag = true; } HashSet hashSet = new HashSet(); foreach (int item in _ctrlHeldDigitsPrev) { if (item != 0) { hashSet.Add(item); } } foreach (int item2 in digitsDownThisFrame) { if (item2 != 0) { hashSet.Add(item2); } } List list = MapEyePresetsFromDigits(hashSet.ToList()); if (list.Count > 0) { _eyeUseDefault = false; if (flag && list.Count >= 2) { _eyeBlinkList.Clear(); _eyeBlinkList.AddRange(list); _eyeSingle = EyeColorPreset.Off; SaveEyeColorToConfig(list[0]); } else { _eyeBlinkList.Clear(); _eyeSingle = list[0]; SaveEyeColorToConfig(list[0]); } MarkReapply(); BumpHud(); _ctrlHeldDigitsPrev.Clear(); _ctrlHeldDigitsPrev.UnionWith(digitsHeldNow); return; } } if (Input.GetKeyDown((KeyCode)280)) { CycleEyeColor(1); _ctrlHeldDigitsPrev.Clear(); _ctrlHeldDigitsPrev.UnionWith(digitsHeldNow); } else if (Input.GetKeyDown((KeyCode)281)) { CycleEyeColor(-1); _ctrlHeldDigitsPrev.Clear(); _ctrlHeldDigitsPrev.UnionWith(digitsHeldNow); } else if (Input.GetKeyDown((KeyCode)8)) { SetEyeDefault(); _ctrlHeldDigitsPrev.Clear(); _ctrlHeldDigitsPrev.UnionWith(digitsHeldNow); } else { _ctrlHeldDigitsPrev.Clear(); _ctrlHeldDigitsPrev.UnionWith(digitsHeldNow); } } private void HandlePupilInput() { List digitsDownThisFrame = GetDigitsDownThisFrame(); if (digitsDownThisFrame.Count > 0) { if (digitsDownThisFrame.Contains(0)) { SetPupilDefault(); SavePupilToConfig(1f); return; } int num = digitsDownThisFrame.Where((int d) => d >= 4 && d <= 9).DefaultIfEmpty(-1).Max(); if (num >= 4) { SetPupilFromDigit(num); SavePupilToConfig(_pupilMultiplier); MarkReapply(); BumpHud(); return; } } if (Input.GetKeyDown((KeyCode)280)) { CyclePupil(1); } else if (Input.GetKeyDown((KeyCode)281)) { CyclePupil(-1); } else if (Input.GetKeyDown((KeyCode)8)) { SetPupilDefault(); SavePupilToConfig(1f); } } [IteratorStateMachine(typeof(d__58))] private IEnumerator ApplyLoop() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__58(0) { <>4__this = this }; } private void EnsureLocalCache() { PlayerAvatar instance = PlayerAvatar.instance; if ((Object)(object)instance == (Object)null || !Object.op_Implicit((Object)(object)instance)) { _cachedAvatar = null; _cachedHealth = null; return; } PlayerHealth playerHealth = instance.playerHealth; if ((Object)(object)playerHealth == (Object)null || !Object.op_Implicit((Object)(object)playerHealth)) { _cachedAvatar = null; _cachedHealth = null; return; } if ((Object)(object)_cachedAvatar != (Object)(object)instance || (Object)(object)_cachedHealth != (Object)(object)playerHealth) { _cachedAvatar = instance; _cachedHealth = playerHealth; _lastAppliedEyeOverride = false; _lastAppliedPupilOverride = false; _pendingReapplyAfterScene = true; } if (_pendingReapplyAfterScene) { ApplyEye(); ApplyPupil(); _pendingReapplyAfterScene = false; BumpHud(); } } private void ApplyEye() { //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: 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_011c: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_cachedHealth == (Object)null || !Object.op_Implicit((Object)(object)_cachedHealth)) { return; } EyeColorPreset desiredEyePreset = GetDesiredEyePreset(Mathf.Clamp(_blinkIntervalSeconds.Value, 0.05f, 5f)); bool flag = desiredEyePreset != EyeColorPreset.Off && desiredEyePreset != EyeColorPreset.Random; float num = Mathf.Clamp(_applyIntervalSeconds.Value, 0.05f, 2f); float num2 = Mathf.Max(0.25f, num * 4f); if (_eyeBlinkList.Count >= 2 || _hiddenActive) { num2 = Mathf.Max(num2, Mathf.Clamp(_blinkIntervalSeconds.Value, 0.05f, 5f) * 2.5f); } try { if (flag) { EyeOverrideState val = MapPresetToState(desiredEyePreset); _cachedHealth.EyeMaterialOverride(val, num2, 9999); _lastAppliedEyeOverride = true; _lastAppliedEyePreset = desiredEyePreset; } else if (_lastAppliedEyeOverride) { _cachedHealth.EyeMaterialOverride(MapPresetToState(_lastAppliedEyePreset), 0.06f, 9999); _lastAppliedEyeOverride = false; } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failure: ApplyEye\n" + ex)); _cachedHealth = null; } } private void ApplyPupil() { if ((Object)(object)_cachedAvatar == (Object)null || !Object.op_Implicit((Object)(object)_cachedAvatar)) { return; } float num = (_hiddenActive ? 3f : (_pupilUseDefault ? ClampPupil(_defaultPupilMultiplier.Value) : ClampPupil(_pupilMultiplier))); bool flag = Math.Abs(num - 1f) > 0.0001f; float num2 = Mathf.Clamp(_applyIntervalSeconds.Value, 0.05f, 2f); float num3 = Mathf.Max(0.25f, num2 * 4f); try { if (flag) { _cachedAvatar.OverridePupilSize(num, 9999, 5f, 0.5f, 5f, 0.5f, num3); _lastAppliedPupilOverride = true; } else if (_lastAppliedPupilOverride) { _cachedAvatar.OverridePupilSize(1f, 9999, 5f, 0.5f, 5f, 0.5f, 0.06f); _lastAppliedPupilOverride = false; } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failure: ApplyPupil\n" + ex)); _cachedAvatar = null; } } private EyeColorPreset GetDesiredEyePreset(float blinkInterval) { if (_hiddenActive) { if (!(Time.unscaledTime >= _hiddenEndTime)) { int num = (int)(Time.unscaledTime / 0.035f) % _hiddenEyes.Length; if (num < 0) { num = 0; } return _hiddenEyes[num]; } _hiddenActive = false; MarkReapply(); } if (_eyeBlinkList.Count >= 2) { float num2 = Mathf.Clamp(blinkInterval, 0.05f, 5f); int num3 = (int)(Time.unscaledTime / num2) % _eyeBlinkList.Count; if (num3 < 0) { num3 = 0; } return _eyeBlinkList[num3]; } if (_eyeBlinkList.Count == 1) { return _eyeBlinkList[0]; } if (_eyeUseDefault) { return GetConfiguredDefaultEyeColor(); } return _eyeSingle; } private void SetEyeDefault() { _eyeUseDefault = true; _eyeBlinkList.Clear(); _eyeSingle = GetConfiguredDefaultEyeColor(); MarkReapply(); BumpHud(); } private void CycleEyeColor(int dir) { EyeColorPreset[] array = new EyeColorPreset[6] { EyeColorPreset.Off, EyeColorPreset.Red, EyeColorPreset.Green, EyeColorPreset.Love, EyeColorPreset.CeilingEye, EyeColorPreset.Inverted }; EyeColorPreset desiredEyePreset = GetDesiredEyePreset(_blinkIntervalSeconds.Value); int num = Array.IndexOf(array, desiredEyePreset); if (num < 0) { num = 0; } num = (num + dir) % array.Length; if (num < 0) { num += array.Length; } _eyeUseDefault = false; _eyeBlinkList.Clear(); _eyeSingle = array[num]; SaveEyeColorToConfig(_eyeSingle); MarkReapply(); BumpHud(); } private void SetPupilDefault() { _pupilUseDefault = true; _pupilMultiplier = ClampPupil(_defaultPupilMultiplier.Value); MarkReapply(); BumpHud(); } private void SetPupilFromDigit(int digit) { float v = Mathf.Lerp(0.25f, 3f, Mathf.InverseLerp(4f, 9f, (float)digit)); _pupilUseDefault = false; _pupilMultiplier = ClampPupil(v); } private void CyclePupil(int dir) { int num = DigitFromPupil(_pupilUseDefault ? ClampPupil(_defaultPupilMultiplier.Value) : ClampPupil(_pupilMultiplier)); int num2 = num + dir; if (num2 < 4) { num2 = 9; } if (num2 > 9) { num2 = 4; } SetPupilFromDigit(num2); SavePupilToConfig(_pupilMultiplier); MarkReapply(); BumpHud(); } private void SaveEyeColorToConfig(EyeColorPreset preset) { if (preset == EyeColorPreset.Random) { return; } try { _defaultEyeColor.Value = preset; ((BaseUnityPlugin)this).Config.Save(); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Failure: SaveEyeColorToConfig\n" + ex)); } } private void SavePupilToConfig(float value) { try { _defaultPupilMultiplier.Value = ClampPupil(value); ((BaseUnityPlugin)this).Config.Save(); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Failure: SavePupilToConfig\n" + ex)); } } private void MarkReapply() { _pendingReapplyAfterScene = true; _cachedAvatar = null; _cachedHealth = null; } private void MarkCosmeticReapply() { _lastCosmeticReapplyRequestTime = Time.unscaledTime; _pendingReapplyAfterScene = true; _lastAppliedEyeOverride = false; _lastAppliedPupilOverride = false; } private void ResetHiddenCommand() { _hiddenIndex = 0; _hiddenDeadline = 0f; } private void UpdateHiddenCommand(bool shift) { if (!shift) { ResetHiddenCommand(); } else if (_hiddenIndex > 0 && Time.unscaledTime > _hiddenDeadline) { ResetHiddenCommand(); } else if (Input.GetKeyDown((KeyCode)122)) { _hiddenIndex = 1; _hiddenDeadline = Time.unscaledTime + 2f; } else if (_hiddenIndex == 1 && Input.GetKeyDown((KeyCode)97)) { _hiddenIndex = 2; } else if (_hiddenIndex == 2 && Input.GetKeyDown((KeyCode)98)) { _hiddenIndex = 3; } else if (_hiddenIndex == 3 && Input.GetKeyDown((KeyCode)117)) { ResetHiddenCommand(); ActivateHiddenEffect(); } else if (_hiddenIndex > 0 && IsAnyNonModifierKeyDown()) { ResetHiddenCommand(); } } private void ActivateHiddenEffect() { _hiddenActive = true; _hiddenEndTime = Time.unscaledTime + 10f; SendHiddenChatMessage(); MarkReapply(); BumpHud(); } private void SendHiddenChatMessage() { try { if ((Object)(object)ChatManager.instance != (Object)null) { ChatManager.instance.ForceSendMessage("I Love REPO JP"); } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Failure: Hidden chat message\n" + ex)); } } private static bool IsAnyNonModifierKeyDown() { //IL_0055: 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 (!Input.anyKeyDown) { return false; } if (Input.GetKeyDown((KeyCode)304) || Input.GetKeyDown((KeyCode)303)) { return false; } KeyCode[] array = new KeyCode[57]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); KeyCode[] array2 = (KeyCode[])(object)array; KeyCode[] array3 = array2; foreach (KeyCode val in array3) { if (Input.GetKeyDown(val)) { return true; } } return false; } private void EnsureGui() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_0029: 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_007a: 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_008f: Expected O, but got Unknown //IL_009a: 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_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Expected O, but got Unknown //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: 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_00db: Expected O, but got Unknown //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: 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) //IL_0101: Expected O, but got Unknown if ((Object)(object)_whiteTex == (Object)null) { _whiteTex = new Texture2D(1, 1, (TextureFormat)4, false); _whiteTex.SetPixel(0, 0, Color.white); _whiteTex.Apply(false, true); ((Object)_whiteTex).hideFlags = (HideFlags)61; } if (!_guiInited) { _hudTitleStyle = new GUIStyle(GUI.skin.label) { fontSize = 16, fontStyle = (FontStyle)1, alignment = (TextAnchor)0 }; _hudTextStyle = new GUIStyle(GUI.skin.label) { fontSize = 13, alignment = (TextAnchor)0 }; _hudSmallStyle = new GUIStyle(GUI.skin.label) { fontSize = 12, alignment = (TextAnchor)0 }; _hudMonoStyle = new GUIStyle(GUI.skin.label) { fontSize = 12, alignment = (TextAnchor)0 }; _guiInited = true; } } private void OnGUI() { if (_enabled.Value) { EnsureGui(); DrawHudAnimated(); } } private void DrawHudAnimated() { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: 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_00d5: 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_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) //IL_027f: 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_0344: Unknown result type (might be due to invalid IL or missing references) //IL_037e: Unknown result type (might be due to invalid IL or missing references) //IL_03e6: Unknown result type (might be due to invalid IL or missing references) //IL_0413: Unknown result type (might be due to invalid IL or missing references) //IL_0429: Unknown result type (might be due to invalid IL or missing references) float num = 620f; float num2 = 132f; float margin = 18f; UpdateHudAnim(num, num2, margin); if (_hudState != 0 && !(_hudAlpha <= 0.001f)) { Rect r = default(Rect); ((Rect)(ref r))..ctor(_hudX, _hudY, num, num2); Color color = GUI.color; GUI.color = new Color(1f, 1f, 1f, _hudAlpha); DrawRect(new Rect(((Rect)(ref r)).x + 4f, ((Rect)(ref r)).y + 6f, ((Rect)(ref r)).width, ((Rect)(ref r)).height), new Color(0f, 0f, 0f, 0.35f * _hudAlpha)); DrawRect(r, new Color(0.05f, 0.05f, 0.06f, 0.78f * _hudAlpha)); DrawBorder(r, 1.5f, new Color(1f, 1f, 1f, 0.2f * _hudAlpha)); Rect val = default(Rect); ((Rect)(ref val))..ctor(((Rect)(ref r)).x + 14f, ((Rect)(ref r)).y + 12f, ((Rect)(ref r)).width - 28f, ((Rect)(ref r)).height - 24f); EyeColorPreset desiredEyePreset = GetDesiredEyePreset(_blinkIntervalSeconds.Value); List list = BuildEyeShowList(); float mult = (_hiddenActive ? 3f : (_pupilUseDefault ? ClampPupil(_defaultPupilMultiplier.Value) : ClampPupil(_pupilMultiplier))); GUI.Label(new Rect(((Rect)(ref val)).x, ((Rect)(ref val)).y, ((Rect)(ref val)).width, 20f), "Eye / Pupil", _hudTitleStyle); GUI.Label(new Rect(((Rect)(ref val)).x, ((Rect)(ref val)).y + 26f, 70f, 20f), "Eye", _hudTextStyle); DrawColorSwatch(new Rect(((Rect)(ref val)).x + 44f, ((Rect)(ref val)).y + 26f, 22f, 22f), GetPresetUiColor(desiredEyePreset), active: true, 0, showIndex: true); GUI.Label(new Rect(((Rect)(ref val)).x + 76f, ((Rect)(ref val)).y + 26f, ((Rect)(ref val)).width - 76f, 20f), BuildEyeStatusText(), _hudTextStyle); DrawEyeChipRow(((Rect)(ref val)).x, ((Rect)(ref val)).y + 52f, list, desiredEyePreset); GUI.Label(new Rect(((Rect)(ref val)).x + 430f, ((Rect)(ref val)).y + 26f, 200f, 20f), "Blink " + Mathf.Clamp(_blinkIntervalSeconds.Value, 0.05f, 5f).ToString("0.00", CultureInfo.InvariantCulture) + "s", _hudSmallStyle); GUI.Label(new Rect(((Rect)(ref val)).x, ((Rect)(ref val)).y + 90f, 70f, 20f), "Pupil", _hudTextStyle); GUI.Label(new Rect(((Rect)(ref val)).x + 76f, ((Rect)(ref val)).y + 90f, 180f, 20f), ((_pupilUseDefault && !_hiddenActive) ? "Default " : string.Empty) + mult.ToString("0.00", CultureInfo.InvariantCulture), _hudTextStyle); DrawPupilBar(new Rect(((Rect)(ref val)).x + 250f, ((Rect)(ref val)).y + 94f, 350f, 14f), mult); GUI.Label(new Rect(((Rect)(ref val)).x, ((Rect)(ref val)).y + 112f, ((Rect)(ref val)).width, 18f), "Ctrl+4-9 Eye Ctrl+0 Default Shift+4-9 Pupil Shift+0 Default", _hudSmallStyle); GUI.color = color; } } private void UpdateHudAnim(float w, float h, float margin) { float unscaledTime = Time.unscaledTime; float num = Mathf.Clamp(_hudFadeInSeconds.Value, 0f, 2f); float num2 = Mathf.Clamp(_hudFadeOutSeconds.Value, 0f, 2f); float num3 = Mathf.Clamp(_hudHoldSeconds.Value, 0f, 10f); float num4 = ((float)Screen.width - w) * 0.5f; float num5 = (float)Screen.height - margin - h; float num6 = (float)Screen.height + h + 30f; float num7 = (float)Screen.width - margin - w; float num8 = (float)Screen.height - margin - h + 55f; if (_hudState == HudAnimState.Hidden) { _hudAlpha = 0f; } else if (_hudState == HudAnimState.In) { float num9 = ((num <= 0.0001f) ? 1f : Mathf.Clamp01((unscaledTime - _hudStateStartUnscaled) / num)); float num10 = EaseOutCubic(num9); _hudAlpha = Mathf.Lerp(0f, 1f, num10); _hudX = num4; _hudY = Mathf.Lerp(num6, num5, num10); if (num9 >= 1f) { _hudState = HudAnimState.Hold; _hudStateStartUnscaled = unscaledTime; } } else if (_hudState == HudAnimState.Hold) { _hudAlpha = 1f; _hudX = num4; _hudY = num5; if (unscaledTime - _hudStateStartUnscaled >= num3) { _hudState = HudAnimState.Out; _hudStateStartUnscaled = unscaledTime; } } else if (_hudState == HudAnimState.Out) { float num11 = ((num2 <= 0.0001f) ? 1f : Mathf.Clamp01((unscaledTime - _hudStateStartUnscaled) / num2)); float num12 = EaseInCubic(num11); _hudAlpha = Mathf.Lerp(1f, 0f, num12); _hudX = Mathf.Lerp(num4, num7, num12); _hudY = Mathf.Lerp(num5, num8, num12); if (num11 >= 1f) { _hudState = HudAnimState.Hidden; _hudAlpha = 0f; } } } private void BumpHud() { float unscaledTime = Time.unscaledTime; if (_hudState == HudAnimState.In || _hudState == HudAnimState.Hold) { _hudState = HudAnimState.Hold; _hudStateStartUnscaled = unscaledTime; } else { _hudState = HudAnimState.In; _hudStateStartUnscaled = unscaledTime; } } private List BuildEyeShowList() { if (_hiddenActive) { return new List(_hiddenEyes); } if (_eyeBlinkList.Count >= 1) { return new List(_eyeBlinkList); } if (_eyeUseDefault) { EyeColorPreset configuredDefaultEyeColor = GetConfiguredDefaultEyeColor(); return (configuredDefaultEyeColor == EyeColorPreset.Off) ? new List() : new List { configuredDefaultEyeColor }; } return (_eyeSingle == EyeColorPreset.Off) ? new List() : new List { _eyeSingle }; } private void DrawEyeChipRow(float x, float y, List list, EyeColorPreset active) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0045: 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_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) if (list == null || list.Count == 0) { DrawRect(new Rect(x, y, 240f, 28f), new Color(1f, 1f, 1f, 0.06f * _hudAlpha)); DrawBorder(new Rect(x, y, 240f, 28f), 1f, new Color(1f, 1f, 1f, 0.12f * _hudAlpha)); GUI.Label(new Rect(x + 8f, y + 5f, 240f, 20f), "OFF", _hudMonoStyle); return; } float num = 44f; float num2 = 28f; float num3 = 8f; if (list.Count >= 2) { GUI.Label(new Rect(x, y - 18f, 220f, 18f), "Selected Colors", _hudSmallStyle); } for (int i = 0; i < list.Count; i++) { EyeColorPreset eyeColorPreset = list[i]; DrawColorSwatch(new Rect(x + (num + num3) * (float)i, y, num, num2), GetPresetUiColor(eyeColorPreset), eyeColorPreset == active, i + 1, list.Count >= 2); } } private void DrawPupilBar(Rect r, float mult) { //IL_0018: 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_0040: 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_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) float num = Mathf.Clamp01(Mathf.InverseLerp(0.25f, 3f, mult)); DrawRect(r, new Color(1f, 1f, 1f, 0.06f * _hudAlpha)); DrawBorder(r, 1f, new Color(1f, 1f, 1f, 0.14f * _hudAlpha)); DrawRect(new Rect(((Rect)(ref r)).x + 2f, ((Rect)(ref r)).y + 2f, (((Rect)(ref r)).width - 4f) * num, ((Rect)(ref r)).height - 4f), new Color(0.3f, 0.85f, 0.6f, 0.7f * _hudAlpha)); GUI.Label(new Rect(((Rect)(ref r)).x, ((Rect)(ref r)).y - 2f, 60f, 20f), "0.25", _hudSmallStyle); GUI.Label(new Rect(((Rect)(ref r)).x + ((Rect)(ref r)).width - 60f, ((Rect)(ref r)).y - 2f, 60f, 20f), "3.00", _hudSmallStyle); } private void DrawColorSwatch(Rect r, Color c, bool active, int index, bool showIndex) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006a: 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_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) DrawRect(new Rect(((Rect)(ref r)).x + 2f, ((Rect)(ref r)).y + 2f, ((Rect)(ref r)).width, ((Rect)(ref r)).height), new Color(0f, 0f, 0f, 0.3f * _hudAlpha)); Color c2 = c; c2.a *= _hudAlpha; DrawRect(r, c2); if (active) { float num = 0.5f + 0.5f * Mathf.Sin(Time.unscaledTime * 10f); DrawBorder(r, 2f, new Color(1f, 1f, 1f, (0.65f + 0.25f * num) * _hudAlpha)); } else { DrawBorder(r, 1.5f, new Color(1f, 1f, 1f, 0.18f * _hudAlpha)); } if (showIndex) { GUI.Label(new Rect(((Rect)(ref r)).x + 6f, ((Rect)(ref r)).y + 5f, ((Rect)(ref r)).width - 12f, ((Rect)(ref r)).height - 10f), index.ToString(CultureInfo.InvariantCulture), _hudMonoStyle); } GUI.Label(new Rect(((Rect)(ref r)).x + ((Rect)(ref r)).width - 16f, ((Rect)(ref r)).y + 5f, 16f, ((Rect)(ref r)).height - 10f), GetPresetShortNameFromColor(c), _hudMonoStyle); } private void DrawRect(Rect r, Color c) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) Color color = GUI.color; GUI.color = c; GUI.DrawTexture(r, (Texture)(object)(((Object)(object)_whiteTex != (Object)null) ? _whiteTex : Texture2D.whiteTexture)); GUI.color = color; } private void DrawBorder(Rect r, float thickness, Color c) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) DrawRect(new Rect(((Rect)(ref r)).x, ((Rect)(ref r)).y, ((Rect)(ref r)).width, thickness), c); DrawRect(new Rect(((Rect)(ref r)).x, ((Rect)(ref r)).yMax - thickness, ((Rect)(ref r)).width, thickness), c); DrawRect(new Rect(((Rect)(ref r)).x, ((Rect)(ref r)).y, thickness, ((Rect)(ref r)).height), c); DrawRect(new Rect(((Rect)(ref r)).xMax - thickness, ((Rect)(ref r)).y, thickness, ((Rect)(ref r)).height), c); } private string BuildEyeStatusText() { if (_hiddenActive) { return "Blink Red,Green,Love,CeilingEye,Inverted"; } if (_eyeUseDefault) { if (_defaultEyeColor.Value == EyeColorPreset.Random) { return "Default Random -> " + _randomEyeForLevel; } return "Default " + _defaultEyeColor.Value; } if (_eyeBlinkList.Count >= 2) { return "Blink " + string.Join(",", _eyeBlinkList.Select((EyeColorPreset x) => x.ToString()).ToArray()); } return (_eyeSingle == EyeColorPreset.Off) ? "OFF" : _eyeSingle.ToString(); } internal static bool ShouldSuppressExpressionInputs() { if ((Object)(object)Instance == (Object)null || !Instance._enabled.Value) { return false; } if (!SemiFunc.NoTextInputsActive()) { return true; } return IsCtrlPressed() || IsShiftPressed(); } private static bool IsExpressionKey(InputKey key) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Invalid comparison between Unknown and I4 //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Invalid comparison between Unknown and I4 //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Invalid comparison between Unknown and I4 //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Invalid comparison between Unknown and I4 //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Invalid comparison between Unknown and I4 //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Invalid comparison between Unknown and I4 return (int)key == 26 || (int)key == 27 || (int)key == 28 || (int)key == 29 || (int)key == 30 || (int)key == 31; } private static bool IsCtrlPressed() { return Input.GetKey((KeyCode)306) || Input.GetKey((KeyCode)305); } private static bool IsShiftPressed() { return Input.GetKey((KeyCode)304) || Input.GetKey((KeyCode)303); } private static List GetDigitsDownThisFrame() { List list = new List(); if (Input.GetKeyDown((KeyCode)52) || Input.GetKeyDown((KeyCode)260)) { list.Add(4); } if (Input.GetKeyDown((KeyCode)53) || Input.GetKeyDown((KeyCode)261)) { list.Add(5); } if (Input.GetKeyDown((KeyCode)54) || Input.GetKeyDown((KeyCode)262)) { list.Add(6); } if (Input.GetKeyDown((KeyCode)55) || Input.GetKeyDown((KeyCode)263)) { list.Add(7); } if (Input.GetKeyDown((KeyCode)56) || Input.GetKeyDown((KeyCode)264)) { list.Add(8); } if (Input.GetKeyDown((KeyCode)57) || Input.GetKeyDown((KeyCode)265)) { list.Add(9); } if (Input.GetKeyDown((KeyCode)48) || Input.GetKeyDown((KeyCode)256)) { list.Add(0); } return list.Distinct().ToList(); } private static HashSet GetDigitsHeldNow() { HashSet hashSet = new HashSet(); if (Input.GetKey((KeyCode)52) || Input.GetKey((KeyCode)260)) { hashSet.Add(4); } if (Input.GetKey((KeyCode)53) || Input.GetKey((KeyCode)261)) { hashSet.Add(5); } if (Input.GetKey((KeyCode)54) || Input.GetKey((KeyCode)262)) { hashSet.Add(6); } if (Input.GetKey((KeyCode)55) || Input.GetKey((KeyCode)263)) { hashSet.Add(7); } if (Input.GetKey((KeyCode)56) || Input.GetKey((KeyCode)264)) { hashSet.Add(8); } if (Input.GetKey((KeyCode)57) || Input.GetKey((KeyCode)265)) { hashSet.Add(9); } if (Input.GetKey((KeyCode)48) || Input.GetKey((KeyCode)256)) { hashSet.Add(0); } return hashSet; } private static List MapEyePresetsFromDigits(List digits) { List> list = new List>(); foreach (int digit in digits) { if (TryMapEyeColorDigit(digit, out var preset)) { list.Add(new Tuple(digit, preset)); } } list = list.OrderBy((Tuple x) => x.Item1).ToList(); List list2 = new List(); foreach (Tuple item in list) { if (!list2.Contains(item.Item2)) { list2.Add(item.Item2); } } return list2; } private static bool TryMapEyeColorDigit(int digit, out EyeColorPreset preset) { switch (digit) { case 4: preset = EyeColorPreset.Off; return true; case 5: preset = EyeColorPreset.Red; return true; case 6: preset = EyeColorPreset.Green; return true; case 7: preset = EyeColorPreset.Love; return true; case 8: preset = EyeColorPreset.CeilingEye; return true; case 9: preset = EyeColorPreset.Inverted; return true; default: preset = EyeColorPreset.Off; return false; } } private static EyeOverrideState MapPresetToState(EyeColorPreset preset) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) return (EyeOverrideState)(preset switch { EyeColorPreset.Red => 1, EyeColorPreset.Green => 2, EyeColorPreset.Love => 3, EyeColorPreset.CeilingEye => 4, EyeColorPreset.Inverted => 5, _ => 1, }); } private static int DigitFromPupil(float mult) { int num = Mathf.RoundToInt(Mathf.Lerp(4f, 9f, Mathf.InverseLerp(0.25f, 3f, mult))); if (num < 4) { num = 4; } if (num > 9) { num = 9; } return num; } private static float ClampPupil(float v) { if (v < 0.25f) { return 0.25f; } if (v > 3f) { return 3f; } return v; } private static Color GetPresetUiColor(EyeColorPreset p) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_006b: 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_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) return (Color)(p switch { EyeColorPreset.Red => new Color(1f, 0.22f, 0.22f, 1f), EyeColorPreset.Green => new Color(0.22f, 1f, 0.35f, 1f), EyeColorPreset.Love => new Color(1f, 0.25f, 0.95f, 1f), EyeColorPreset.CeilingEye => new Color(1f, 0.9f, 0.2f, 1f), EyeColorPreset.Inverted => new Color(0.05f, 0.05f, 0.05f, 1f), _ => new Color(0.55f, 0.55f, 0.55f, 1f), }); } private static string GetPresetShortNameFromColor(Color c) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: 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_00ee: 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) if (c.r > 0.85f && c.g > 0.8f && c.b < 0.35f) { return "C"; } if (c.r < 0.2f && c.g < 0.2f && c.b < 0.2f) { return "I"; } if (c.r > 0.8f && c.g < 0.4f && c.b < 0.4f) { return "R"; } if (c.g > 0.8f && c.r < 0.4f && c.b < 0.4f) { return "G"; } if (c.r > 0.8f && c.b > 0.8f && c.g < 0.6f) { return "L"; } return "-"; } private static float EaseOutCubic(float t) { float num = 1f - t; return 1f - num * num * num; } private static float EaseInCubic(float t) { return t * t * t; } } }