Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Omnium v0.9.0
Omnium.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Empress.OmniumLib; 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("Omniscye")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+24369bca1bd6a33721f9c687193b6778581edd6f")] [assembly: AssemblyProduct("Omnium")] [assembly: AssemblyTitle("Omnium")] [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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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 Omnium { [BepInPlugin("Omniscye.Omnium", "Omnium", "1.0")] public class Omnium : BaseUnityPlugin { internal static Omnium Instance { get; private set; } internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } private void Awake() { Instance = this; ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Patch(); Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!"); } internal void Patch() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_0026: Expected O, but got Unknown if (Harmony == null) { Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony val2 = val; Harmony = val; } Harmony.PatchAll(); } internal void Unpatch() { Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } } private void Update() { } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("dev.empress.omnium", "Omnium", "2.2.0")] public class OmniumPlugin : BaseUnityPlugin { [CompilerGenerated] private sealed class <Bootstrap>d__17 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public OmniumPlugin <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <Bootstrap>d__17(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; if (<>4__this._waitForRepoLibBundles.Value) { <>2__current = BundleGate.WaitForRepoLibBundles(<>4__this._repoLibWaitTimeout.Value, <>4__this._repoLibPollInterval.Value, <>4__this._logVerbose.Value); <>1__state = 1; return true; } break; case 1: <>1__state = -1; break; } <>4__this.DoDeferredInit(); 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(); } } public const string PluginGuid = "dev.empress.omnium"; public const string PluginName = "Omnium"; public const string PluginVersion = "2.2.0"; private Harmony _harmony; private OmniumUI _ui; private ConfigEntry<KeyCode> _toggleKey; private ConfigEntry<KeyCode> _freeCamKey; private ConfigEntry<KeyCode> _noclipKey; private ConfigEntry<bool> _openOnSceneLoad; private ConfigEntry<bool> _logVerbose; private ConfigEntry<bool> _respectRepoLib; private ConfigEntry<bool> _disableInputHijack; private ConfigEntry<bool> _waitForRepoLibBundles; private ConfigEntry<float> _repoLibWaitTimeout; private ConfigEntry<float> _repoLibPollInterval; private bool _initialized; private void Awake() { _toggleKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("UI", "ToggleKey", (KeyCode)288, "Key to toggle Omnium UI."); _freeCamKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("UI", "FreeCamKey", (KeyCode)289, "Toggle FreeCam."); _noclipKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("UI", "NoclipKey", (KeyCode)290, "Toggle noclip. (hidden in UI, not handled by key)"); _openOnSceneLoad = ((BaseUnityPlugin)this).Config.Bind<bool>("UI", "OpenOnSceneLoad", false, "Open Omnium when a new scene/level loads."); _logVerbose = ((BaseUnityPlugin)this).Config.Bind<bool>("Debug", "Verbose", false, "Enable verbose log output."); _respectRepoLib = ((BaseUnityPlugin)this).Config.Bind<bool>("Compatibility", "RespectRepoLib", true, "Avoid disabling RepoLib/Bundle/Mod loader components while Omnium UI is open."); _disableInputHijack = ((BaseUnityPlugin)this).Config.Bind<bool>("Compatibility", "DisableInputHijack", false, "If true, Omnium will never disable behaviours while UI is open."); _waitForRepoLibBundles = ((BaseUnityPlugin)this).Config.Bind<bool>("Compatibility", "WaitForRepoLibBundles", true, "Delay Omnium init until REPOLib reports bundles are done (event or ops drain), or timeout."); _repoLibWaitTimeout = ((BaseUnityPlugin)this).Config.Bind<float>("Compatibility", "RepoLibWaitTimeoutSec", 25f, "Max seconds to wait for REPOLib bundles before giving up."); _repoLibPollInterval = ((BaseUnityPlugin)this).Config.Bind<float>("Compatibility", "RepoLibPollIntervalSec", 0.25f, "How often to poll REPOLib readiness (seconds)."); ((MonoBehaviour)this).StartCoroutine(Bootstrap()); } [IteratorStateMachine(typeof(<Bootstrap>d__17))] private IEnumerator Bootstrap() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <Bootstrap>d__17(0) { <>4__this = this }; } private void DoDeferredInit() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown _harmony = new Harmony("dev.empress.omnium"); SceneManager.sceneLoaded += OnSceneLoaded; TryRegisterWithRepoLib(); if (DetectAnotherOmniumAssembly()) { _disableInputHijack.Value = true; ((BaseUnityPlugin)this).Logger.LogWarning((object)"[Omnium] Detected another Omnium-like plugin. Input hijack kill-switch ENABLED automatically to prevent conflicts."); } _ui = new OmniumUI(this, _toggleKey, _freeCamKey, _noclipKey, _respectRepoLib, _disableInputHijack); _initialized = true; ((BaseUnityPlugin)this).Logger.LogInfo((object)"Omnium 2.2.0 initialized (GUID: dev.empress.omnium)."); } private bool IsRepoLibStillLoading(out string reason) { reason = "REPOLib not detected"; Type type = FindTypeByFullName("REPOLib.BundleLoader"); if (type == null) { return false; } try { if (type.GetField("_operations", BindingFlags.Static | BindingFlags.NonPublic)?.GetValue(null) is ICollection collection) { reason = $"operations={collection.Count}"; return collection.Count > 0; } } catch { } reason = "REPOLib present, state unknown"; return false; } private static Type FindTypeByFullName(string fullName) { Type type = TypeCache.FindType(fullName); if (type != null) { return type; } try { Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly assembly in assemblies) { try { Type type2 = assembly.GetType(fullName, throwOnError: false); if (type2 != null) { return type2; } } catch { } } } catch { } return null; } private void OnDestroy() { try { Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } catch { } try { SceneManager.sceneLoaded -= OnSceneLoaded; } catch { } } private void Update() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) if (_ui != null) { if (Input.GetKeyDown(_toggleKey.Value)) { _ui.ToggleUiOrCloseAll(); } if (Input.GetKeyDown(_freeCamKey.Value)) { _ui.ToggleFreeCam(); } if (Input.GetKey((KeyCode)306) && Input.GetKeyDown((KeyCode)286)) { _ui.QuickSavePos(); } if (Input.GetKey((KeyCode)306) && Input.GetKeyDown((KeyCode)290)) { _ui.QuickLoadPos(); } _ui.OnUpdate(); } } private void OnGUI() { _ui?.OnGUI(); } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { //IL_0013: 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) ((BaseUnityPlugin)this).Logger.LogInfo((object)$"Scene loaded: {((Scene)(ref scene)).name} ({mode})."); _ui?.OnSceneLoaded(scene); if (_openOnSceneLoad.Value) { _ui.ShowMainWindow(); } } private void TryRegisterWithRepoLib() { try { Type type = Type.GetType("RepoLib.Core, RepoLib", throwOnError: false); if (!(type == null)) { type.GetMethod("RegisterService", BindingFlags.Static | BindingFlags.Public)?.Invoke(null, new object[3] { "Omnium", "2.2.0", "dev.empress.omnium" }); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Registered Omnium with RepoLib.Core (optional)."); } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogInfo((object)("[dbg] RepoLib register failed: " + ex.Message)); } } private bool DetectAnotherOmniumAssembly() { try { Assembly assembly = typeof(OmniumPlugin).Assembly; Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly assembly2 in assemblies) { if (!(assembly2 == null) && !(assembly2 == assembly)) { string text = ""; try { text = assembly2.GetName().Name ?? ""; } catch { } if (!string.IsNullOrEmpty(text) && text.IndexOf("OmniumLib", StringComparison.OrdinalIgnoreCase) < 0 && !text.Equals("OmniumLibrary", StringComparison.OrdinalIgnoreCase) && (text.IndexOf("Omnium", StringComparison.OrdinalIgnoreCase) >= 0 || text.IndexOf("Omniscye", StringComparison.OrdinalIgnoreCase) >= 0)) { return true; } } } } catch { } return false; } public void LogInfo(string msg) { ((BaseUnityPlugin)this).Logger.LogInfo((object)msg); } public void LogWarn(string msg) { ((BaseUnityPlugin)this).Logger.LogWarning((object)msg); } public void LogErr(string msg) { ((BaseUnityPlugin)this).Logger.LogError((object)msg); } } internal sealed class OmniumUI { [Serializable] private class ProfileDto { public float freeCamSpeed; public float freeCamSensitivity; public float freeCamFov; public bool lockCursor; public Dictionary<string, float[]> windowRects; } private readonly OmniumPlugin _plugin; private readonly ConfigEntry<KeyCode> _toggleKey; private readonly ConfigEntry<KeyCode> _freeCamKey; private readonly ConfigEntry<KeyCode> _noclipKey; private readonly ConfigEntry<bool> _respectRepoLib; private readonly ConfigEntry<bool> _disableInputHijack; private bool _mainWindowVisible; private readonly Dictionary<string, bool> _tabWindows = new Dictionary<string, bool>(); private readonly Dictionary<string, Rect> _windowRects = new Dictionary<string, Rect>(); private int _nextWindowId = 100; private GUIStyle _windowStyle; private GUIStyle _buttonStyle; private GUIStyle _toggleStyle; private GUIStyle _labelStyle; private GUIStyle _h1Style; private GUIStyle _textFieldStyle; private GUIStyle _sliderStyle; private GUIStyle _boxStyle; private GUIStyle _sliderThumbStyle; private GUIStyle _hScrollbarStyle; private GUIStyle _hScrollbarThumbStyle; private GUIStyle _vScrollbarStyle; private GUIStyle _vScrollbarThumbStyle; private bool _stylesInitialized; private Texture2D _blackTex; private Texture2D _black90Tex; private Texture2D _redTex; private Texture2D _redHoverTex; private Texture2D _dragStripTex; private Texture2D _trackOutlinedTex; private Texture2D _thumbTex; private Rect _mainWindowRect = new Rect(100f, 100f, 400f, 500f); private Vector2 _mainScroll; private readonly string[] _tabs = new string[10] { "Control", "Player", "Camera", "Teleport", "Spawn", "Objects", "Inspect", "Console", "Log", "Settings" }; private float _timeScale = 1f; private bool _godMode; private bool _levelVis; private Vector3? _savedPos; private Quaternion? _savedRot; private string _objectSearch = string.Empty; private List<GameObject> _cachedObjects = new List<GameObject>(); private DateTime _lastCache = DateTime.MinValue; private readonly List<string> _eventLog = new List<string>(); private Vector2 _logScroll; private float _curWinW; private float _curWinH; private Vector2 _objectsScroll; private GameObject _selected; private bool _freeCam; private GameObject _freeCamGO; private Camera _freeCamCam; private Camera _mainCamCached; private float _freeCamSpeed = 8f; private float _freeCamBoost = 4f; private float _freeCamSensitivity = 2f; private float _freeCamFov = 60f; private bool _freeCamLockCursor = true; private Vector2 _freeCamRot; private bool _noclip; private CharacterController _cc; private Rigidbody _rb; private Collider[] _col; private bool _ccPrevCollide; private bool _rbPrevDetect; private bool _rbPrevKinematic; private readonly Dictionary<Collider, bool> _colPrevEnabled = new Dictionary<Collider, bool>(); private string _consoleInput = string.Empty; private readonly Dictionary<string, Action<string[]>> _commands = new Dictionary<string, Action<string[]>>(StringComparer.OrdinalIgnoreCase); private Vector2 _consoleScroll; private bool _hijackActive; private CursorLockMode _prevCursorLock; private bool _prevCursorVisible; private CharacterController _hijackCC; private bool _hijackCCPrev; private Rigidbody _hijackRB; private bool _hijackRBPrevKinematic; private bool _hijackRBPrevDetect; private readonly List<Behaviour> _disabledBehaviours = new List<Behaviour>(); private string ProfilePath => Path.Combine(Paths.ConfigPath, "Omnium.profile.json"); public OmniumUI(OmniumPlugin plugin, ConfigEntry<KeyCode> toggleKey, ConfigEntry<KeyCode> freeCamKey, ConfigEntry<KeyCode> noclipKey, ConfigEntry<bool> respectRepoLib, ConfigEntry<bool> disableInputHijack) { //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_01c1: Unknown result type (might be due to invalid IL or missing references) _plugin = plugin; _toggleKey = toggleKey; _freeCamKey = freeCamKey; _noclipKey = noclipKey; _respectRepoLib = respectRepoLib; _disableInputHijack = disableInputHijack; float num = 120f; float num2 = 120f; for (int i = 0; i < _tabs.Length; i++) { _tabWindows[_tabs[i]] = false; _windowRects[_tabs[i]] = new Rect(num + (float)(i % 3 * 450), num2 + (float)(i / 3 * 350), 420f, 320f); } RegisterCommands(); LoadProfile(log: false); } public void ToggleUiOrCloseAll() { if (IsAnyWindowOpen()) { CloseAllWindows(); } else { ShowMainWindow(); } } public void ShowMainWindow() { _mainWindowVisible = true; } private void HideMainWindow() { _mainWindowVisible = false; } private void CloseAllWindows() { _mainWindowVisible = false; List<string> list = _tabWindows.Keys.ToList(); foreach (string item in list) { _tabWindows[item] = false; } } public bool IsAnyWindowOpen() { if (_mainWindowVisible) { return true; } foreach (bool value in _tabWindows.Values) { if (value) { return true; } } return false; } public void OnSceneLoaded(Scene scene) { LogEvent("Scene loaded: " + ((Scene)(ref scene)).name); _savedPos = null; _savedRot = null; _cachedObjects.Clear(); _lastCache = DateTime.MinValue; CloseAllWindows(); if (_levelVis) { try { LevelDebugVis.Enable(true); LevelDebugVis.Rebuild(); } catch { } } } public void OnUpdate() { bool flag = !_disableInputHijack.Value && IsAnyWindowOpen(); if (flag && !_hijackActive) { BeginInputHijack(); } else if ((!flag && _hijackActive) || (_disableInputHijack.Value && _hijackActive)) { EndInputHijack(); } Time.timeScale = Mathf.Clamp(_timeScale, 0f, 8f); if (_freeCam) { UpdateFreeCam(); } } public void OnGUI() { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Expected O, but got Unknown //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_011c: Expected O, but got Unknown //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_013c: 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_0192: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) if (!_stylesInitialized) { InitializeStyles(); } ApplyGlobalSkin(); bool flag = IsAnyWindowOpen(); if (_mainWindowVisible) { _mainWindowRect = GUI.Window(_nextWindowId, _mainWindowRect, new WindowFunction(DrawMainWindow), "OMNIUM v2.2.0 - Debug Toolkit", _windowStyle); _mainWindowRect = ClampToScreen(_mainWindowRect); } string[] tabs = _tabs; foreach (string tab in tabs) { if (_tabWindows[tab]) { int num = _nextWindowId + Array.IndexOf(_tabs, tab) + 1; _windowRects[tab] = GUI.Window(num, _windowRects[tab], (WindowFunction)delegate(int id) { DrawTabWindow(tab, id); }, "OMNIUM - " + tab, _windowStyle); _windowRects[tab] = ClampToScreen(_windowRects[tab]); } } if (_freeCam && !flag) { Rect val = default(Rect); ((Rect)(ref val))..ctor(20f, 20f, 560f, 90f); GUI.Box(val, "", _boxStyle); GUILayout.BeginArea(new Rect(((Rect)(ref val)).x + 10f, ((Rect)(ref val)).y + 10f, ((Rect)(ref val)).width - 20f, ((Rect)(ref val)).height - 20f)); GUILayout.Label("<color=#ff0000>FreeCam Active</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.Label($"Controls: WASD+QE | Mouse look | Shift Boost | Toggle: {_freeCamKey.Value}", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label($"Speed: {_freeCamSpeed:F1} | FOV: {_freeCamFov:F0}", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.EndArea(); } } private void InitializeStyles() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: 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_00b7: 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_00c6: 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_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: 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_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0118: 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_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Expected O, but got Unknown //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Expected O, but got Unknown //IL_0143: 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) //IL_0159: Expected O, but got Unknown //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0169: 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) //IL_0181: 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_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: 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_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01df: 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_01ee: Expected O, but got Unknown //IL_01ef: 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_01fe: Expected O, but got Unknown //IL_0204: Expected O, but got Unknown //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Expected O, but got Unknown //IL_0247: 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_0254: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Expected O, but got Unknown //IL_027a: 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_0288: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Expected O, but got Unknown //IL_02a0: 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_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Expected O, but got Unknown //IL_02e9: Unknown result type (might be due to invalid IL or missing references) //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_0300: 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_0311: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Expected O, but got Unknown //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Expected O, but got Unknown //IL_0331: Expected O, but got Unknown //IL_033c: Unknown result type (might be due to invalid IL or missing references) //IL_0341: Unknown result type (might be due to invalid IL or missing references) //IL_0353: Unknown result type (might be due to invalid IL or missing references) //IL_0365: Unknown result type (might be due to invalid IL or missing references) //IL_0377: Unknown result type (might be due to invalid IL or missing references) //IL_0383: Unknown result type (might be due to invalid IL or missing references) //IL_038f: Unknown result type (might be due to invalid IL or missing references) //IL_0394: Unknown result type (might be due to invalid IL or missing references) //IL_039e: Expected O, but got Unknown //IL_03a4: Expected O, but got Unknown //IL_03af: Unknown result type (might be due to invalid IL or missing references) //IL_03b4: Unknown result type (might be due to invalid IL or missing references) //IL_03c6: Unknown result type (might be due to invalid IL or missing references) //IL_03cb: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: Expected O, but got Unknown //IL_03db: Expected O, but got Unknown //IL_03e6: Unknown result type (might be due to invalid IL or missing references) //IL_03eb: Unknown result type (might be due to invalid IL or missing references) //IL_03fd: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_040e: Unknown result type (might be due to invalid IL or missing references) //IL_0418: Expected O, but got Unknown //IL_0419: Unknown result type (might be due to invalid IL or missing references) //IL_041e: Unknown result type (might be due to invalid IL or missing references) //IL_0428: Expected O, but got Unknown //IL_042e: Expected O, but got Unknown //IL_0439: Unknown result type (might be due to invalid IL or missing references) //IL_043e: Unknown result type (might be due to invalid IL or missing references) //IL_0450: Unknown result type (might be due to invalid IL or missing references) //IL_0462: Unknown result type (might be due to invalid IL or missing references) //IL_0474: Unknown result type (might be due to invalid IL or missing references) //IL_0480: Unknown result type (might be due to invalid IL or missing references) //IL_0485: Unknown result type (might be due to invalid IL or missing references) //IL_048f: Expected O, but got Unknown //IL_0490: 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_049f: Expected O, but got Unknown //IL_04a5: Expected O, but got Unknown //IL_04b0: Unknown result type (might be due to invalid IL or missing references) //IL_04b5: Unknown result type (might be due to invalid IL or missing references) //IL_04c7: Unknown result type (might be due to invalid IL or missing references) //IL_04d3: Unknown result type (might be due to invalid IL or missing references) //IL_04d8: Unknown result type (might be due to invalid IL or missing references) //IL_04e2: Expected O, but got Unknown //IL_04e3: Unknown result type (might be due to invalid IL or missing references) //IL_04e8: Unknown result type (might be due to invalid IL or missing references) //IL_04f2: Expected O, but got Unknown //IL_04f8: Expected O, but got Unknown //IL_0503: Unknown result type (might be due to invalid IL or missing references) //IL_0508: Unknown result type (might be due to invalid IL or missing references) //IL_051a: Unknown result type (might be due to invalid IL or missing references) //IL_052c: Unknown result type (might be due to invalid IL or missing references) //IL_053e: Unknown result type (might be due to invalid IL or missing references) //IL_054a: Unknown result type (might be due to invalid IL or missing references) //IL_054f: Unknown result type (might be due to invalid IL or missing references) //IL_0559: Expected O, but got Unknown //IL_055a: Unknown result type (might be due to invalid IL or missing references) //IL_055f: Unknown result type (might be due to invalid IL or missing references) //IL_0569: Expected O, but got Unknown //IL_056f: Expected O, but got Unknown Color val = default(Color); ((Color)(ref val))..ctor(0f, 0f, 0f, 0.85f); Color val2 = default(Color); ((Color)(ref val2))..ctor(0f, 0f, 0f, 0.9f); Color val3 = default(Color); ((Color)(ref val3))..ctor(1f, 0f, 0f, 1f); Color c = default(Color); ((Color)(ref c))..ctor(1f, 0.1f, 0.1f, 1f); _blackTex = MakeTex(8, 8, val); _black90Tex = MakeTex(8, 8, val2); _redTex = MakeTex(8, 8, val3); _redHoverTex = MakeTex(8, 8, c); _dragStripTex = MakeTex(8, 2, val3); _trackOutlinedTex = MakeOutlinedTex(8, 8, val, val3); _thumbTex = MakeOutlinedTex(8, 8, val3, val2); GUIStyle val4 = new GUIStyle(GUI.skin.window); val4.normal.background = _black90Tex; val4.normal.textColor = val3; val4.onNormal.background = _black90Tex; val4.onNormal.textColor = val3; val4.padding = new RectOffset(15, 15, 25, 15); val4.border = new RectOffset(8, 8, 8, 8); val4.fontSize = 14; val4.fontStyle = (FontStyle)1; _windowStyle = val4; GUIStyle val5 = new GUIStyle(GUI.skin.button); val5.normal.background = _blackTex; val5.normal.textColor = val3; val5.hover.background = _redHoverTex; val5.hover.textColor = Color.white; val5.active.background = _redTex; val5.active.textColor = Color.white; val5.alignment = (TextAnchor)4; val5.fontSize = 14; val5.border = new RectOffset(2, 2, 2, 2); val5.padding = new RectOffset(8, 8, 6, 6); _buttonStyle = val5; GUIStyle val6 = new GUIStyle(GUI.skin.toggle); val6.normal.textColor = val3; val6.onNormal.textColor = val3; val6.fontSize = 14; _toggleStyle = val6; GUIStyle val7 = new GUIStyle(GUI.skin.label) { richText = true, fontSize = 14 }; val7.normal.textColor = Color.white; _labelStyle = val7; _h1Style = new GUIStyle(_labelStyle) { fontSize = 18, fontStyle = (FontStyle)1 }; GUIStyle val8 = new GUIStyle(GUI.skin.textField); val8.normal.background = _blackTex; val8.normal.textColor = Color.white; val8.alignment = (TextAnchor)3; val8.fontSize = 14; _textFieldStyle = val8; GUIStyle val9 = new GUIStyle(GUI.skin.horizontalSlider); val9.normal.background = _trackOutlinedTex; val9.fixedHeight = 14f; val9.border = new RectOffset(2, 2, 2, 2); val9.padding = new RectOffset(2, 2, 2, 2); _sliderStyle = val9; GUIStyle val10 = new GUIStyle(GUI.skin.horizontalSliderThumb); val10.normal.background = _thumbTex; val10.hover.background = _redHoverTex; val10.active.background = _redTex; val10.fixedWidth = 22f; val10.fixedHeight = 22f; val10.border = new RectOffset(2, 2, 2, 2); _sliderThumbStyle = val10; GUIStyle val11 = new GUIStyle(GUI.skin.box); val11.normal.background = _black90Tex; val11.border = new RectOffset(4, 4, 4, 4); _boxStyle = val11; GUIStyle val12 = new GUIStyle(GUI.skin.horizontalScrollbar); val12.normal.background = _trackOutlinedTex; val12.fixedHeight = 14f; val12.border = new RectOffset(2, 2, 2, 2); val12.padding = new RectOffset(2, 2, 2, 2); _hScrollbarStyle = val12; GUIStyle val13 = new GUIStyle(GUI.skin.horizontalScrollbarThumb); val13.normal.background = _thumbTex; val13.hover.background = _redHoverTex; val13.active.background = _redTex; val13.fixedHeight = 14f; val13.border = new RectOffset(2, 2, 2, 2); val13.padding = new RectOffset(2, 2, 2, 2); _hScrollbarThumbStyle = val13; GUIStyle val14 = new GUIStyle(GUI.skin.verticalScrollbar); val14.normal.background = _trackOutlinedTex; val14.fixedWidth = 14f; val14.border = new RectOffset(2, 2, 2, 2); val14.padding = new RectOffset(2, 2, 2, 2); _vScrollbarStyle = val14; GUIStyle val15 = new GUIStyle(GUI.skin.verticalScrollbarThumb); val15.normal.background = _thumbTex; val15.hover.background = _redHoverTex; val15.active.background = _redTex; val15.fixedWidth = 14f; val15.border = new RectOffset(2, 2, 2, 2); val15.padding = new RectOffset(2, 2, 2, 2); _vScrollbarThumbStyle = val15; _stylesInitialized = true; } private void ApplyGlobalSkin() { GUI.skin.horizontalScrollbar = _hScrollbarStyle; GUI.skin.horizontalScrollbarThumb = _hScrollbarThumbStyle; GUI.skin.verticalScrollbar = _vScrollbarStyle; GUI.skin.verticalScrollbarThumb = _vScrollbarThumbStyle; } private void DrawTopDragStrip(float width) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_dragStripTex != (Object)null) { GUI.DrawTexture(new Rect(0f, 0f, Mathf.Max(0f, width), 3f), (Texture)(object)_dragStripTex); } } private static Rect ClampToScreen(Rect r) { //IL_009e: 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_00a3: Unknown result type (might be due to invalid IL or missing references) try { float num = Mathf.Max(50f, (float)Screen.width); float num2 = Mathf.Max(50f, (float)Screen.height); if (((Rect)(ref r)).width > num) { ((Rect)(ref r)).width = num; } if (((Rect)(ref r)).height > num2) { ((Rect)(ref r)).height = num2; } ((Rect)(ref r)).x = Mathf.Clamp(((Rect)(ref r)).x, 0f, num - ((Rect)(ref r)).width); ((Rect)(ref r)).y = Mathf.Clamp(((Rect)(ref r)).y, 0f, num2 - ((Rect)(ref r)).height); } catch { } return r; } private void DrawMainWindow(int id) { //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_0311: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) DrawTopDragStrip(((Rect)(ref _mainWindowRect)).width); GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.Label("<color=#ff0000>OMNIUM</color> v2.2.0", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.FlexibleSpace(); if (GUILayout.Button("×", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[2] { GUILayout.Width(30f), GUILayout.Height(25f) })) { HideMainWindow(); } GUILayout.EndHorizontal(); GUILayout.Label("Is this tool <i>advanced</i>? Let’s just say it has more toggles than a space raccoon’s backpack.", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Space(10f); GUILayout.Label("<color=#ff0000>Quick Controls</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); if (GUILayout.Button("FreeCam " + (_freeCam ? "ON" : "OFF"), _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { ToggleFreeCam(); } if (GUILayout.Button("God Mode " + (_godMode ? "ON" : "OFF"), _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { _godMode = !_godMode; TrySetGodMode(_godMode); } GUILayout.EndHorizontal(); GUILayout.Space(15f); GUILayout.Label("<color=#ff0000>Tool Windows</color>", _h1Style, Array.Empty<GUILayoutOption>()); _mainScroll = GUILayout.BeginScrollView(_mainScroll, Array.Empty<GUILayoutOption>()); for (int i = 0; i < _tabs.Length; i += 2) { GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); string text = _tabs[i]; bool flag = _tabWindows[text]; string text2 = text + " " + (flag ? "●" : "○"); if (GUILayout.Button(text2, _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(35f) })) { _tabWindows[text] = !_tabWindows[text]; } if (i + 1 < _tabs.Length) { string text3 = _tabs[i + 1]; bool flag2 = _tabWindows[text3]; string text4 = text3 + " " + (flag2 ? "●" : "○"); if (GUILayout.Button(text4, _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(35f) })) { _tabWindows[text3] = !_tabWindows[text3]; } } GUILayout.EndHorizontal(); GUILayout.Space(5f); } GUILayout.EndScrollView(); GUILayout.Space(10f); GUILayout.Label($"<color=#888888>Toggle UI: {_toggleKey.Value} | FreeCam: {_freeCamKey.Value}</color>", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.EndVertical(); GUI.DragWindow(new Rect(0f, 0f, 9999f, 25f)); } private void DrawTabWindow(string tabName, int id) { //IL_03b8: Unknown result type (might be due to invalid IL or missing references) if (_windowRects.TryGetValue(tabName, out var value)) { DrawTopDragStrip(((Rect)(ref value)).width); float width = ((Rect)(ref value)).width; GUIStyle windowStyle = _windowStyle; int? obj; if (windowStyle == null) { obj = null; } else { RectOffset padding = windowStyle.padding; obj = ((padding != null) ? new int?(padding.left) : null); } int? num = obj; float num2 = width - (float)num.GetValueOrDefault(15); GUIStyle windowStyle2 = _windowStyle; int? obj2; if (windowStyle2 == null) { obj2 = null; } else { RectOffset padding2 = windowStyle2.padding; obj2 = ((padding2 != null) ? new int?(padding2.right) : null); } num = obj2; _curWinW = num2 - (float)num.GetValueOrDefault(15); float height = ((Rect)(ref value)).height; GUIStyle windowStyle3 = _windowStyle; int? obj3; if (windowStyle3 == null) { obj3 = null; } else { RectOffset padding3 = windowStyle3.padding; obj3 = ((padding3 != null) ? new int?(padding3.top) : null); } num = obj3; float num3 = height - (float)num.GetValueOrDefault(25); GUIStyle windowStyle4 = _windowStyle; int? obj4; if (windowStyle4 == null) { obj4 = null; } else { RectOffset padding4 = windowStyle4.padding; obj4 = ((padding4 != null) ? new int?(padding4.bottom) : null); } num = obj4; _curWinH = num3 - (float)num.GetValueOrDefault(15); } GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.Label("<color=#ff0000>" + tabName + "</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.FlexibleSpace(); if (GUILayout.Button("×", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[2] { GUILayout.Width(25f), GUILayout.Height(25f) })) { _tabWindows[tabName] = false; } GUILayout.EndHorizontal(); GUILayout.Space(10f); switch (tabName) { case "Control": DrawControlContent(); break; case "Player": DrawPlayerContent(); break; case "Camera": DrawCameraContent(); break; case "Teleport": DrawTeleportContent(); break; case "Spawn": DrawSpawnContent(); break; case "Objects": DrawObjectsContent(); break; case "Inspect": DrawInspectContent(); break; case "Console": DrawConsoleContent(); break; case "Log": DrawLogContent(); break; case "Settings": DrawSettingsContent(); break; } GUILayout.EndVertical(); GUI.DragWindow(new Rect(0f, 0f, 9999f, 25f)); } private void DrawControlContent() { GUILayout.Label("<color=#ff0000>Runtime Controls</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.Label("Time Scale", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(80f) }); _timeScale = GUILayout.HorizontalSlider(_timeScale, 0f, 8f, _sliderStyle, _sliderThumbStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(200f) }); GUILayout.Label(_timeScale.ToString("0.00"), _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(50f) }); if (GUILayout.Button("Reset", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(70f) })) { _timeScale = 1f; } GUILayout.EndHorizontal(); GUILayout.Space(10f); bool flag = GUILayout.Toggle(_godMode, "God Mode (Damage Immunity)", _toggleStyle, Array.Empty<GUILayoutOption>()); if (flag != _godMode) { _godMode = flag; TrySetGodMode(_godMode); } if (GUILayout.Button("Refresh Damage Systems", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { TrySetGodMode(_godMode, forceRefresh: true); } GUILayout.Space(15f); GUILayout.Label("<color=#ff0000>Visualizers</color>", _h1Style, Array.Empty<GUILayoutOption>()); bool flag2 = GUILayout.Toggle(_levelVis, "Level Markers + Paths (path points glow red)", _toggleStyle, Array.Empty<GUILayoutOption>()); if (flag2 != _levelVis) { _levelVis = flag2; try { if (_levelVis) { LevelDebugVis.Enable(true); LevelDebugVis.Rebuild(); } else { LevelDebugVis.Enable(false); } } catch (Exception ex) { _plugin.LogErr("Visualizer toggle failed: " + ex); } } GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); if (GUILayout.Button("Refresh Markers", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) })) { try { if (_levelVis) { LevelDebugVis.Rebuild(); } } catch (Exception ex2) { _plugin.LogErr("Vis rebuild failed: " + ex2); } } if (GUILayout.Button("Hide Markers", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) })) { try { LevelDebugVis.Enable(false); _levelVis = false; } catch (Exception ex3) { _plugin.LogErr("Vis hide failed: " + ex3); } } GUILayout.EndHorizontal(); } private void DrawPlayerContent() { //IL_0051: Unknown result type (might be due to invalid IL or missing references) GUILayout.Label("<color=#ff0000>Player Controls</color>", _h1Style, Array.Empty<GUILayoutOption>()); Transform val = TryGetPlayerTransform(log: true); if (Object.op_Implicit((Object)(object)val)) { GUILayout.Label("<color=#88ff88>Player Found:</color> " + ((Object)val).name, _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label($"<color=#88ff88>Position:</color> {val.position}", _labelStyle, Array.Empty<GUILayoutOption>()); } else { GUILayout.Label("<color=#ffff88>Player transform not found</color>", _labelStyle, Array.Empty<GUILayoutOption>()); } GUILayout.Space(10f); bool flag = GUILayout.Toggle(_godMode, "God Mode", _toggleStyle, Array.Empty<GUILayoutOption>()); if (flag != _godMode) { _godMode = flag; TrySetGodMode(_godMode); } GUILayout.Space(15f); GUILayout.Label("<color=#ff0000>Movement Speed Modifiers</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.Label("Attempts to modify common speed fields", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); if (GUILayout.Button("Half Speed", _buttonStyle, Array.Empty<GUILayoutOption>())) { TrySetMoveSpeed(0.5f); } if (GUILayout.Button("Normal", _buttonStyle, Array.Empty<GUILayoutOption>())) { TrySetMoveSpeed(1f); } if (GUILayout.Button("Double", _buttonStyle, Array.Empty<GUILayoutOption>())) { TrySetMoveSpeed(2f); } if (GUILayout.Button("Quad", _buttonStyle, Array.Empty<GUILayoutOption>())) { TrySetMoveSpeed(4f); } GUILayout.EndHorizontal(); } private void DrawCameraContent() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) GUILayout.Label("<color=#ff0000>Camera Controls</color>", _h1Style, Array.Empty<GUILayoutOption>()); bool flag = GUILayout.Toggle(_freeCam, $"FreeCam (Key: {_freeCamKey.Value})", _toggleStyle, Array.Empty<GUILayoutOption>()); if (flag != _freeCam) { ToggleFreeCam(); } GUILayout.Space(10f); GUILayout.Label("<color=#ff0000>FreeCam Settings</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.Label("Speed", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(60f) }); _freeCamSpeed = GUILayout.HorizontalSlider(_freeCamSpeed, 1f, 40f, _sliderStyle, _sliderThumbStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(200f) }); GUILayout.Label(_freeCamSpeed.ToString("0.0"), _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(40f) }); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.Label("FOV", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(60f) }); _freeCamFov = GUILayout.HorizontalSlider(_freeCamFov, 20f, 110f, _sliderStyle, _sliderThumbStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(200f) }); GUILayout.Label(_freeCamFov.ToString("0"), _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(40f) }); if (GUILayout.Button("Apply FOV to Active Camera", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[2] { GUILayout.Width(220f), GUILayout.Height(26f) })) { ApplyFov(); } GUILayout.EndHorizontal(); _freeCamLockCursor = GUILayout.Toggle(_freeCamLockCursor, "Lock cursor during FreeCam", _toggleStyle, Array.Empty<GUILayoutOption>()); } private void DrawTeleportContent() { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: 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_00cc: 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_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) GUILayout.Label("<color=#ff0000>Teleportation</color>", _h1Style, Array.Empty<GUILayoutOption>()); Transform val = TryGetPlayerTransform(log: true); if ((Object)(object)val == (Object)null) { GUILayout.Label("<color=#ffff88>Player not found. Enter gameplay first.</color>", _labelStyle, Array.Empty<GUILayoutOption>()); return; } GUILayout.Label($"<color=#88ff88>Position:</color> {val.position:F2}", _labelStyle, Array.Empty<GUILayoutOption>()); Quaternion rotation = val.rotation; GUILayout.Label($"<color=#88ff88>Rotation:</color> {((Quaternion)(ref rotation)).eulerAngles:F1}", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Space(10f); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); if (GUILayout.Button("Save Position", _buttonStyle, Array.Empty<GUILayoutOption>())) { _savedPos = val.position; _savedRot = val.rotation; LogEvent("Position saved"); } if (GUILayout.Button("Load Position", _buttonStyle, Array.Empty<GUILayoutOption>())) { if (_savedPos.HasValue && _savedRot.HasValue) { val.position = _savedPos.Value; val.rotation = _savedRot.Value; LogEvent("Position loaded"); } else { LogEvent("No saved position"); } } GUILayout.EndHorizontal(); GUILayout.Space(10f); GUILayout.Label("<color=#ff0000>Quick Teleports</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); if (GUILayout.Button("Respawn (Truck Safe Zone)", _buttonStyle, Array.Empty<GUILayoutOption>()) && !TryTeleportTruckSafe(val)) { LogEvent("TruckSafetySpawnPoint not found — trying tag 'Respawn'"); TeleportToTag(val, "Respawn"); } if (GUILayout.Button("Checkpoint", _buttonStyle, Array.Empty<GUILayoutOption>())) { TeleportToTag(val, "Checkpoint"); } if (GUILayout.Button("Finish Line", _buttonStyle, Array.Empty<GUILayoutOption>())) { TeleportToTag(val, "Finish"); } GUILayout.EndHorizontal(); } private void DrawSpawnContent() { GUILayout.Label("<color=#ff0000>Object Spawning</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.Label("Spawn Unity primitives at camera position", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Space(10f); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); if (GUILayout.Button("Cube", _buttonStyle, Array.Empty<GUILayoutOption>())) { SpawnPrimitive((PrimitiveType)3); } if (GUILayout.Button("Sphere", _buttonStyle, Array.Empty<GUILayoutOption>())) { SpawnPrimitive((PrimitiveType)0); } if (GUILayout.Button("Capsule", _buttonStyle, Array.Empty<GUILayoutOption>())) { SpawnPrimitive((PrimitiveType)1); } if (GUILayout.Button("Cylinder", _buttonStyle, Array.Empty<GUILayoutOption>())) { SpawnPrimitive((PrimitiveType)2); } if (GUILayout.Button("Plane", _buttonStyle, Array.Empty<GUILayoutOption>())) { SpawnPrimitive((PrimitiveType)4); } GUILayout.EndHorizontal(); if ((Object)(object)_selected != (Object)null) { GUILayout.Space(15f); GUILayout.Label("<color=#88ff88>Selected:</color> " + ((Object)_selected).name, _labelStyle, Array.Empty<GUILayoutOption>()); if (GUILayout.Button("Destroy Selected Object", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { Object.Destroy((Object)(object)_selected); _selected = null; LogEvent("Selected object destroyed"); } } } private void DrawObjectsContent() { //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: 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_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_012b: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_0282: 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) GUILayout.Label("<color=#ff0000>Scene Objects</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.Label("Search:", _labelStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(60f) }); _objectSearch = GUILayout.TextField(_objectSearch ?? string.Empty, _textFieldStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.MinWidth(200f) }); if (GUILayout.Button("Refresh Object Cache", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) })) { RebuildObjectCache(force: true); } GUILayout.EndHorizontal(); GUILayout.Space(10f); RebuildObjectCache(); float num = Mathf.Max(120f, _curWinW - 10f); float num2 = Mathf.Max(140f, _curWinH - 180f); Rect rect = GUILayoutUtility.GetRect(num, num2); _objectsScroll = GUI.BeginScrollView(rect, _objectsScroll, new Rect(0f, 0f, num - 20f, (float)(_cachedObjects.Count * 25))); IEnumerable<GameObject> source = _cachedObjects; if (!string.IsNullOrEmpty(_objectSearch)) { string searchLower = _objectSearch.ToLowerInvariant(); source = source.Where((GameObject go) => Object.op_Implicit((Object)(object)go) && ((Object)go).name != null && ((Object)go).name.ToLowerInvariant().Contains(searchLower)); } int num3 = 0; Rect val = default(Rect); Rect val2 = default(Rect); Rect val3 = default(Rect); Rect val4 = default(Rect); Rect val5 = default(Rect); foreach (GameObject item in source.Take(200)) { if (Object.op_Implicit((Object)(object)item)) { float num4 = num - 20f; ((Rect)(ref val))..ctor(0f, (float)num3, num4, 23f); GUI.Box(val, "", _boxStyle); ((Rect)(ref val2))..ctor(5f, (float)(num3 + 2), Mathf.Max(100f, num4 - 170f), 20f); GUI.Label(val2, ((Object)item).name, _labelStyle); ((Rect)(ref val3))..ctor(num4 - 155f, (float)(num3 + 2), 80f, 20f); GUI.Label(val3, item.activeInHierarchy ? "<color=#88ff88>Active</color>" : "<color=#ff8888>Inactive</color>", _labelStyle); ((Rect)(ref val4))..ctor(num4 - 95f, (float)(num3 + 1), 50f, 22f); if (GUI.Button(val4, "Select", _buttonStyle)) { _selected = item; LogEvent("Selected: " + ((Object)item).name); } ((Rect)(ref val5))..ctor(num4 - 45f, (float)(num3 + 1), 45f, 22f); if (GUI.Button(val5, item.activeSelf ? "Hide" : "Show", _buttonStyle)) { item.SetActive(!item.activeSelf); } num3 += 25; } } GUI.EndScrollView(); GUILayout.Space(10f); int val6 = source.Count(); GUILayout.Label($"<color=#888888>Showing {Math.Min(val6, 200)} of {_cachedObjects.Count} objects</color>", _labelStyle, Array.Empty<GUILayoutOption>()); } private void DrawInspectContent() { //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: 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_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_02b1: Unknown result type (might be due to invalid IL or missing references) GUILayout.Label("<color=#ff0000>Object Inspector</color>", _h1Style, Array.Empty<GUILayoutOption>()); if (!Object.op_Implicit((Object)(object)_selected)) { GUILayout.Label("<color=#ffff88>No object selected</color>", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label("Use the Objects window to select an object", _labelStyle, Array.Empty<GUILayoutOption>()); return; } GUILayout.Label("<color=#88ff88>Object:</color> " + ((Object)_selected).name, _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label("<color=#88ff88>Path:</color> " + GetPath(_selected.transform), _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Space(10f); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); if (GUILayout.Button(_selected.activeSelf ? "Disable Object" : "Enable Object", _buttonStyle, Array.Empty<GUILayoutOption>())) { _selected.SetActive(!_selected.activeSelf); } if (GUILayout.Button("Destroy Object", _buttonStyle, Array.Empty<GUILayoutOption>())) { Object.Destroy((Object)(object)_selected); _selected = null; LogEvent("Object destroyed"); return; } GUILayout.EndHorizontal(); GUILayout.Space(15f); GUILayout.Label("<color=#ff0000>Components</color>", _h1Style, Array.Empty<GUILayoutOption>()); float num = Mathf.Max(120f, _curWinW - 10f); float num2 = Mathf.Max(140f, _curWinH - 260f); Rect rect = GUILayoutUtility.GetRect(num, num2); Vector2 zero = Vector2.zero; zero = GUI.BeginScrollView(rect, zero, new Rect(0f, 0f, num - 20f, 500f)); Component[] components = _selected.GetComponents<Component>(); int num3 = 0; Component[] array = components; Rect val2 = default(Rect); foreach (Component val in array) { if (!Object.op_Implicit((Object)(object)val)) { continue; } float num4 = num - 20f; ((Rect)(ref val2))..ctor(0f, (float)num3, num4, 30f); GUI.Box(val2, "", _boxStyle); GUI.Label(new Rect(5f, (float)(num3 + 5), num4 - 90f, 20f), "<color=#ff0000>" + ((object)val).GetType().Name + "</color>", _labelStyle); Behaviour val3 = (Behaviour)(object)((val is Behaviour) ? val : null); if ((Object)(object)val3 != (Object)null) { bool flag = GUI.Toggle(new Rect(num4 - 85f, (float)(num3 + 5), 80f, 20f), val3.enabled, "Enabled", _toggleStyle); if (flag != val3.enabled) { val3.enabled = flag; } } num3 += 35; } GUI.EndScrollView(); } private void DrawConsoleContent() { //IL_0047: 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_004e: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) GUILayout.Label("<color=#ff0000>Command Console</color>", _h1Style, Array.Empty<GUILayoutOption>()); float num = Mathf.Max(100f, _curWinW - 10f); float num2 = Mathf.Max(120f, _curWinH - 160f); Rect rect = GUILayoutUtility.GetRect(num, num2); _consoleScroll = GUI.BeginScrollView(rect, _consoleScroll, new Rect(0f, 0f, num - 20f, (float)(_eventLog.Count * 16))); int num3 = 0; int num4 = Mathf.Max(0, _eventLog.Count - 200); for (int i = num4; i < _eventLog.Count; i++) { GUI.Label(new Rect(5f, (float)num3, num - 30f, 16f), _eventLog[i], _labelStyle); num3 += 16; } GUI.EndScrollView(); GUILayout.Space(10f); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); _consoleInput = GUILayout.TextField(_consoleInput ?? string.Empty, _textFieldStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.MinWidth(280f) }); if (GUILayout.Button("Execute", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[2] { GUILayout.Width(80f), GUILayout.Height(25f) })) { RunConsole(_consoleInput); } GUILayout.EndHorizontal(); GUILayout.Space(5f); GUILayout.Label("<color=#888888>Commands: help | tp x y z | ts value | god on/off | freecam on/off | noclip on/off</color>", _labelStyle, Array.Empty<GUILayoutOption>()); } private void DrawLogContent() { //IL_0047: 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_004e: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) GUILayout.Label("<color=#ff0000>Event Log</color>", _h1Style, Array.Empty<GUILayoutOption>()); float num = Mathf.Max(100f, _curWinW - 10f); float num2 = Mathf.Max(120f, _curWinH - 140f); Rect rect = GUILayoutUtility.GetRect(num, num2); _logScroll = GUI.BeginScrollView(rect, _logScroll, new Rect(0f, 0f, num - 20f, (float)(_eventLog.Count * 16))); int num3 = 0; int num4 = Mathf.Max(0, _eventLog.Count - 300); for (int i = num4; i < _eventLog.Count; i++) { GUI.Label(new Rect(5f, (float)num3, num - 30f, 16f), _eventLog[i], _labelStyle); num3 += 16; } GUI.EndScrollView(); GUILayout.Space(10f); if (GUILayout.Button("Clear Event Log", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { _eventLog.Clear(); } } private void DrawSettingsContent() { //IL_0059: 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) GUILayout.Label("<color=#ff0000>Configuration</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.Label("Settings persist via BepInEx configuration", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Space(10f); GUILayout.Label("<color=#ff0000>Hotkeys</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.Label($"Toggle UI: <color=#88ff88>{_toggleKey.Value}</color>", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label($"FreeCam: <color=#88ff88>{_freeCamKey.Value}</color>", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label("Quick Save: <color=#88ff88>Ctrl + F5</color>", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label("Quick Load: <color=#88ff88>Ctrl + F9</color>", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Space(10f); bool flag = GUILayout.Toggle(_respectRepoLib.Value, "Respect RepoLib/Bundle/Mod loaders while UI is open", _toggleStyle, Array.Empty<GUILayoutOption>()); if (flag != _respectRepoLib.Value) { _respectRepoLib.Value = flag; LogEvent($"RespectRepoLib set to {flag}"); } bool flag2 = GUILayout.Toggle(_disableInputHijack.Value, "Disable Input Hijack entirely (recommended if using loaders like REPOLib)", _toggleStyle, Array.Empty<GUILayoutOption>()); if (flag2 != _disableInputHijack.Value) { _disableInputHijack.Value = flag2; if (flag2 && _hijackActive) { EndInputHijack(); } LogEvent($"DisableInputHijack set to {flag2}"); } GUILayout.Space(15f); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); if (GUILayout.Button("Save Profile", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { SaveProfile(); } if (GUILayout.Button("Load Profile", _buttonStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) })) { LoadProfile(); } GUILayout.EndHorizontal(); GUILayout.Space(15f); GUILayout.Label("<color=#ff0000>Technical Notes</color>", _h1Style, Array.Empty<GUILayoutOption>()); GUILayout.Label("• God Mode modifies HurtCollider components", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label("• Player detection uses multiple fallback methods (now asks OmniumLib first)", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label("• FreeCam uses unscaled time for consistency", _labelStyle, Array.Empty<GUILayoutOption>()); GUILayout.Label("• Recommended for single-player use", _labelStyle, Array.Empty<GUILayoutOption>()); } private void TrySetGodMode(bool enabled, bool forceRefresh = false) { try { Type type = FindTypeByName("HurtCollider"); if (type == null) { LogEvent("HurtCollider type not found – God Mode unavailable"); return; } Object[] array = Object.FindObjectsOfType(type); int num = 0; Object[] array2 = array; foreach (Object val in array2) { Behaviour val2 = (Behaviour)(object)((val is Behaviour) ? val : null); if (!Object.op_Implicit((Object)(object)val2)) { continue; } FieldInfo field = type.GetField("invincible", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null) { field.SetValue(val, enabled); num++; continue; } PropertyInfo property = type.GetProperty("Invincible", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (property != null && property.CanWrite) { property.SetValue(val, enabled); num++; } else if (forceRefresh || enabled) { val2.enabled = !enabled; } } LogEvent(string.Format("God Mode {0} for {1} damage components", enabled ? "enabled" : "disabled", num)); } catch (Exception ex) { _plugin.LogErr("TrySetGodMode failed: " + ex); } } private Transform TryGetPlayerTransform(bool log = false) { Transform player = PlayerLocator.GetPlayer(false, log); if (Object.op_Implicit((Object)(object)player)) { return player; } try { Type type = FindTypeByName("PlayerController"); if (type != null) { object? obj = type.GetField("instance", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)?.GetValue(null); Component val = (Component)((obj is Component) ? obj : null); if (Object.op_Implicit((Object)(object)val)) { return val.transform; } } Type type2 = FindTypeByName("PlayerAvatar"); if (type2 != null) { Object[] array = Object.FindObjectsOfType(type2); Object[] array2 = array; foreach (Object obj2 in array2) { bool flag = false; try { FieldInfo field = type2.GetField("isLocal", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null) { flag = (bool)(field.GetValue(obj2) ?? ((object)false)); } } catch { } if (flag) { object? obj4 = type2.GetField("playerTransform", BindingFlags.Instance | BindingFlags.Public)?.GetValue(obj2); Transform val2 = (Transform)((obj4 is Transform) ? obj4 : null); if (Object.op_Implicit((Object)(object)val2)) { return val2; } } } if (array.Length != 0) { Object obj5 = array[0]; Object obj6 = ((obj5 is Component) ? obj5 : null); return (obj6 != null) ? ((Component)obj6).transform : null; } } GameObject val3 = GameObject.FindGameObjectWithTag("Player"); if (Object.op_Implicit((Object)(object)val3)) { return val3.transform; } if (Object.op_Implicit((Object)(object)Camera.main)) { return ((Component)Camera.main).transform.root; } } catch { } return null; } public void ToggleFreeCam() { _freeCam = !_freeCam; if (_freeCam) { EnableFreeCam(); } else { DisableFreeCam(); } } private void EnableFreeCam() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0095: 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_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: 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) try { _mainCamCached = Camera.main; if (!Object.op_Implicit((Object)(object)_freeCamGO)) { _freeCamGO = new GameObject("OmniumFreeCam"); Object.DontDestroyOnLoad((Object)(object)_freeCamGO); _freeCamCam = _freeCamGO.AddComponent<Camera>(); _freeCamGO.AddComponent<AudioListener>(); } if (Object.op_Implicit((Object)(object)_mainCamCached)) { _freeCamCam.CopyFrom(_mainCamCached); _freeCamGO.transform.SetPositionAndRotation(((Component)_mainCamCached).transform.position, ((Component)_mainCamCached).transform.rotation); _freeCamFov = _mainCamCached.fieldOfView; _freeCamRot = new Vector2(_freeCamGO.transform.eulerAngles.x, _freeCamGO.transform.eulerAngles.y); ((Behaviour)_mainCamCached).enabled = false; AudioListener component = ((Component)_mainCamCached).GetComponent<AudioListener>(); if (Object.op_Implicit((Object)(object)component)) { ((Behaviour)component).enabled = false; } } AudioListener component2 = _freeCamGO.GetComponent<AudioListener>(); if (Object.op_Implicit((Object)(object)component2)) { ((Behaviour)component2).enabled = true; } ((Behaviour)_freeCamCam).enabled = true; LogEvent("FreeCam ENABLED"); } catch (Exception ex) { _plugin.LogErr("EnableFreeCam failed: " + ex); LogEvent("FreeCam enable failed - see console"); } } private void DisableFreeCam() { //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Invalid comparison between Unknown and I4 try { if (Object.op_Implicit((Object)(object)_freeCamCam)) { ((Behaviour)_freeCamCam).enabled = false; } AudioListener val = (Object.op_Implicit((Object)(object)_freeCamGO) ? _freeCamGO.GetComponent<AudioListener>() : null); if (Object.op_Implicit((Object)(object)val)) { ((Behaviour)val).enabled = false; } if (Object.op_Implicit((Object)(object)_mainCamCached)) { ((Behaviour)_mainCamCached).enabled = true; AudioListener component = ((Component)_mainCamCached).GetComponent<AudioListener>(); if (Object.op_Implicit((Object)(object)component)) { ((Behaviour)component).enabled = true; } } if (_freeCamLockCursor && (int)Cursor.lockState == 1) { Cursor.lockState = (CursorLockMode)0; } if (_freeCamLockCursor) { Cursor.visible = true; } LogEvent("FreeCam DISABLED"); } catch (Exception ex) { _plugin.LogErr("DisableFreeCam failed: " + ex); LogEvent("FreeCam disable failed - see console"); } } private void UpdateFreeCam() { //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Invalid comparison between Unknown and I4 //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Invalid comparison between Unknown and I4 //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: 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_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016d: 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) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_019f: 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_01b0: 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_01c3: 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_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: 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_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023b: 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_024a: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)_freeCamGO) || !Object.op_Implicit((Object)(object)_freeCamCam)) { return; } if (IsAnyWindowOpen()) { if (_freeCamLockCursor && (int)Cursor.lockState == 1) { Cursor.lockState = (CursorLockMode)0; Cursor.visible = true; } return; } if (_freeCamLockCursor && (int)Cursor.lockState != 1) { Cursor.lockState = (CursorLockMode)1; Cursor.visible = false; } _freeCamRot.y += Input.GetAxis("Mouse X") * _freeCamSensitivity; _freeCamRot.x -= Input.GetAxis("Mouse Y") * _freeCamSensitivity; _freeCamRot.x = Mathf.Clamp(_freeCamRot.x, -89f, 89f); _freeCamGO.transform.rotation = Quaternion.Euler(_freeCamRot.x, _freeCamRot.y, 0f); float num = _freeCamSpeed * (Input.GetKey((KeyCode)304) ? _freeCamBoost : 1f); Vector3 val = Vector3.zero; if (Input.GetKey((KeyCode)119)) { val += _freeCamGO.transform.forward; } if (Input.GetKey((KeyCode)115)) { val -= _freeCamGO.transform.forward; } if (Input.GetKey((KeyCode)97)) { val -= _freeCamGO.transform.right; } if (Input.GetKey((KeyCode)100)) { val += _freeCamGO.transform.right; } if (Input.GetKey((KeyCode)101)) { val += _freeCamGO.transform.up; } if (Input.GetKey((KeyCode)113)) { val -= _freeCamGO.transform.up; } Transform transform = _freeCamGO.transform; transform.position += ((Vector3)(ref val)).normalized * num * Time.unscaledDeltaTime; _freeCamCam.fieldOfView = _freeCamFov; } private void ApplyFov() { try { if (_freeCam && Object.op_Implicit((Object)(object)_freeCamCam)) { _freeCamCam.fieldOfView = _freeCamFov; LogEvent($"Applied FOV {_freeCamFov:F0} to FreeCam"); } else if (Object.op_Implicit((Object)(object)Camera.main)) { Camera.main.fieldOfView = _freeCamFov; LogEvent($"Applied FOV {_freeCamFov:F0} to main camera"); } } catch (Exception ex) { _plugin.LogErr("ApplyFov failed: " + ex); LogEvent("FOV application failed - see console"); } } public void QuickSavePos() { //IL_0027: 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) Transform val = TryGetPlayerTransform(log: true); if (!Object.op_Implicit((Object)(object)val)) { LogEvent("QuickSavePos: player not found"); return; } _savedPos = val.position; _savedRot = val.rotation; LogEvent("Saved player position"); } public void QuickLoadPos() { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) Transform val = TryGetPlayerTransform(log: true); if (!Object.op_Implicit((Object)(object)val)) { LogEvent("QuickLoadPos: player not found"); } else if (_savedPos.HasValue && _savedRot.HasValue) { Teleport(val, _savedPos.Value, _savedRot.Value); LogEvent("Loaded player position"); } else { LogEvent("No saved position"); } } private static void Teleport(Transform tr, Vector3 pos, Quaternion rot) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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) if (!Object.op_Implicit((Object)(object)tr)) { return; } CharacterController component = ((Component)tr).GetComponent<CharacterController>(); if (Object.op_Implicit((Object)(object)component)) { ((Collider)component).enabled = false; tr.position = pos; tr.rotation = rot; ((Collider)component).enabled = true; return; } Rigidbody component2 = ((Component)tr).GetComponent<Rigidbody>(); if (Object.op_Implicit((Object)(object)component2)) { component2.isKinematic = true; component2.detectCollisions = false; tr.position = pos; tr.rotation = rot; component2.velocity = Vector3.zero; component2.isKinematic = false; component2.detectCollisions = true; } else { tr.position = pos; tr.rotation = rot; } } private void TrySetMoveSpeed(float scale) { try { Transform val = TryGetPlayerTransform(); if (!Object.op_Implicit((Object)(object)val)) { LogEvent("Player not found for speed tweak"); return; } Behaviour[] componentsInChildren = ((Component)val).GetComponentsInChildren<Behaviour>(true); int num = 0; Behaviour[] array = componentsInChildren; foreach (Behaviour val2 in array) { if (!Object.op_Implicit((Object)(object)val2)) { continue; } Type type = ((object)val2).GetType(); string text = type.Name.ToLowerInvariant(); if (!text.Contains("move") && !text.Contains("motor") && !text.Contains("locomotion") && !text.Contains("controller")) { continue; } FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); foreach (FieldInfo fieldInfo in fields) { if (fieldInfo.FieldType == typeof(float)) { string text2 = fieldInfo.Name.ToLowerInvariant(); if (text2.Contains("speed") || text2.Contains("walk") || text2.Contains("run") || text2.Contains("sprint")) { float num2 = (float)(fieldInfo.GetValue(val2) ?? ((object)0f)); float num3 = Mathf.Max(0f, num2 * scale); fieldInfo.SetValue(val2, num3); num++; } } } PropertyInfo[] properties = type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); foreach (PropertyInfo propertyInfo in properties) { if (!propertyInfo.CanRead || !propertyInfo.CanWrite || !(propertyInfo.PropertyType == typeof(float))) { continue; } string text3 = propertyInfo.Name.ToLowerInvariant(); if (text3.Contains("speed") || text3.Contains("walk") || text3.Contains("run") || text3.Contains("sprint")) { try { float num4 = (float)(propertyInfo.GetValue(val2, null) ?? ((object)0f)); float num5 = Mathf.Max(0f, num4 * scale); propertyInfo.SetValue(val2, num5, null); num++; } catch { } } } } LogEvent($"Applied speed scale {scale} to {num} fields/properties"); } catch (Exception ex) { _plugin.LogErr("TrySetMoveSpeed failed: " + ex); LogEvent("Speed modification failed - see console"); } } private bool TryTeleportTruckSafe(Transform player) { //IL_005e: 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) try { Type type = FindTypeByName("TruckSafetySpawnPoint"); if (type != null) { object? obj = type.GetField("instance", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)?.GetValue(null); Component val = (Component)((obj is Component) ? obj : null); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.transform)) { Teleport(player, val.transform.position, val.transform.rotation); LogEvent("Teleported to TruckSafetySpawnPoint"); return true; } } } catch { } return false; } private void TeleportToTag(Transform player, string tag) { //IL_0035: 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) try { GameObject val = GameObject.FindGameObjectWithTag(tag); if ((Object)(object)val == (Object)null) { LogEvent("No object with tag '" + tag + "' found in scene"); return; } Teleport(player, val.transform.position, val.transform.rotation); LogEvent("Teleported to tag '" + tag + "'"); } catch (Exception ex) { _plugin.LogErr("Teleport failed: " + ex); LogEvent("Teleportation failed - see console"); } } private void RebuildObjectCache(bool force = false) { //IL_003f: 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) if (!force && (DateTime.Now - _lastCache).TotalSeconds < 2.0) { return; } _lastCache = DateTime.Now; try { Scene activeScene = SceneManager.GetActiveScene(); List<GameObject> list = new List<GameObject>(); GameObject[] rootGameObjects = ((Scene)(ref activeScene)).GetRootGameObjects(); foreach (GameObject root in rootGameObjects) { Collect(root, list); } _cachedObjects = list.Where((GameObject go) => (Object)(object)go != (Object)null).ToList(); } catch (Exception ex) { _plugin.LogErr("RebuildObjectCache failed: " + ex); } } private static void Collect(GameObject root, List<GameObject> list) { if (Object.op_Implicit((Object)(object)root)) { list.Add(root); Transform transform = root.transform; for (int i = 0; i < transform.childCount; i++) { Collect(((Component)transform.GetChild(i)).gameObject, list); } } } private static string GetPath(Transform tr) { StringBuilder stringBuilder = new StringBuilder(((Object)tr).name); while ((Object)(object)tr.parent != (Object)null) { tr = tr.parent; stringBuilder.Insert(0, ((Object)tr).name + "/"); } return stringBuilder.ToString(); } private void SpawnPrimitive(PrimitiveType type) { //IL_0032: 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_0047: 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_0025: 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_0067: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_006d: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) try { Camera val = (Camera)(Object.op_Implicit((Object)(object)_freeCamCam) ? ((object)_freeCamCam) : ((object)Camera.main)); Vector3 position = (Object.op_Implicit((Object)(object)val) ? (((Component)val).transform.position + ((Component)val).transform.forward * 3f) : Vector3.zero); Quaternion rotation = (Object.op_Implicit((Object)(object)val) ? ((Component)val).transform.rotation : Quaternion.identity); GameObject val2 = GameObject.CreatePrimitive(type); val2.transform.position = position; val2.transform.rotation = rotation; ((Object)val2).name = "OmniumSpawned_" + ((object)(PrimitiveType)(ref type)).ToString(); _selected = val2; LogEvent($"Spawned {type}"); } catch (Exception ex) { _plugin.LogErr("SpawnPrimitive failed: " + ex); } } private void RegisterCommands() { _commands.Clear(); _commands["help"] = delegate { LogEvent("Commands: help | tp x y z | ts value | god on/off | freecam on/off | noclip on/off"); }; _commands["tp"] = delegate(string[] args) { //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) float result2; float result3; float result4; if (args.Length < 3) { LogEvent("Usage: tp x y z"); } else if (!float.TryParse(args[0], out result2) || !float.TryParse(args[1], out result3) || !float.TryParse(args[2], out result4)) { LogEvent("tp: invalid numbers"); } else { Transform val = TryGetPlayerTransform(log: true); if (!Object.op_Implicit((Object)(object)val)) { LogEvent("tp: player not found"); } else { Teleport(val, new Vector3(result2, result3, result4), val.rotation); } } }; _commands["ts"] = delegate(string[] args) { if (args.Length < 1 || !float.TryParse(args[0], out var result)) { LogEvent("Usage: ts value"); } else { _timeScale = result; LogEvent($"Time scale set to {result}"); } }; _commands["god"] = delegate(string[] args) { if (args.Length < 1) { LogEvent("Usage: god on/off"); } else { TrySetGodMode(_godMode = args[0].Equals("on", StringComparison.OrdinalIgnoreCase)); } }; _commands["freecam"] = delegate(string[] args) { bool flag = args.Length == 0 || args[0].Equals("on", StringComparison.OrdinalIgnoreCase); if (_freeCam != flag) { ToggleFreeCam(); } }; _commands["noclip"] = delegate { ToggleNoclip(); }; } private void RunConsole(string input) { if (string.IsNullOrWhiteSpace(input)) { return; } LogEvent("> " + input); try { string[] array = input.Trim().Split(new char[1] { ' ' }, StringSplitOptions.RemoveEmptyEntries); string text = array[0]; string[] obj = array.Skip(1).ToArray(); if (_commands.TryGetValue(text, out Action<string[]> value)) { value(obj); } else { LogEvent("Unknown command '" + text + "'"); } } catch (Exception ex) { _plugin.LogErr("RunConsole failed: " + ex); } finally { _consoleInput = string.Empty; } } private void SaveProfile() { try { var anon = new { freeCamSpeed = _freeCamSpeed, freeCamSensitivity = _freeCamSensitivity, freeCamFov = _freeCamFov, lockCursor = _freeCamLockCursor, windowRects = _windowRects.ToDictionary<KeyValuePair<string, Rect>, string, float[]>((KeyValuePair<string, Rect> kv) => kv.Key, delegate(KeyValuePair<string, Rect> kv) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //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_002e: 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_0040: 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) float[] array = new float[4]; Rect value = kv.Value; array[0] = ((Rect)(ref value)).x; value = kv.Value; array[1] = ((Rect)(ref value)).y; value = kv.Value; array[2] = ((Rect)(ref value)).width; value = kv.Value; array[3] = ((Rect)(ref value)).height; return array; }) }; File.WriteAllText(ProfilePath, JsonUtility.ToJson((object)anon)); LogEvent("Profile saved"); } catch (Exception ex) { _plugin.LogErr("SaveProfile failed: " + ex); } } private void LoadProfile(bool log = true) { //IL_00e2: Unknown result type (might be due to invalid IL or missing references) try { if (!File.Exists(ProfilePath)) { if (log) { LogEvent("No profile found"); } return; } string text = File.ReadAllText(ProfilePath); ProfileDto profileDto = JsonUtility.FromJson<ProfileDto>(text); if (profileDto != null) { _freeCamSpeed = profileDto.freeCamSpeed; _freeCamSensitivity = profileDto.freeCamSensitivity; _freeCamFov = profileDto.freeCamFov; _freeCamLockCursor = profileDto.lockCursor; if (profileDto.windowRects != null) { foreach (KeyValuePair<string, float[]> windowRect in profileDto.windowRects) { float[] value = windowRect.Value; if (value != null && value.Length >= 4) { _windowRects[windowRect.Key] = new Rect(value[0], value[1], value[2], value[3]); } } } } if (log) { LogEvent("Profile loaded"); } } catch (Exception ex) { _plugin.LogErr("LoadProfile failed: " + ex); } } private void ToggleNoclip() { try { _noclip = !_noclip; Transform val = TryGetPlayerTransform(); if (!Object.op_Implicit((Object)(object)val)) { LogEvent("Noclip: player not found"); return; } _cc = ((Component)val).GetComponent<CharacterController>(); _rb = ((Component)val).GetComponent<Rigidbody>(); _col = ((Component)val).GetComponentsInChildren<Collider>(true); if (_noclip) { if (Object.op_Implicit((Object)(object)_cc)) { _ccPrevCollide = _cc.detectCollisions; _cc.detectCollisions = false; ((Collider)_cc).enabled = false; } if (Object.op_Implicit((Object)(object)_rb)) { _rbPrevKinematic = _rb.isKinematic; _rbPrevDetect = _rb.detectCollisions; _rb.isKinematic = true; _rb.detectCollisions = false; } _colPrevEnabled.Clear(); Collider[] col = _col; foreach (Collider val2 in col) { if (Object.op_Implicit((Object)(object)val2)) { _colPrevEnabled[val2] = val2.enabled; val2.enabled = false; } } LogEvent("Noclip enabled"); return; } if (Object.op_Implicit((Object)(object)_cc)) { _cc.detectCollisions = _ccPrevCollide; ((Collider)_cc).enabled = true; } if (Object.op_Implicit((Object)(object)_rb)) { _rb.isKinematic = _rbPrevKinematic; _rb.detectCollisions = _rbPrevDetect; } foreach (KeyValuePair<Collider, bool> item in _colPrevEnabled) { if (Object.op_Implicit((Object)(object)item.Key)) { item.Key.enabled = item.Value; } } _colPrevEnabled.Clear(); LogEvent("Noclip disabled"); } catch (Exception ex) { _plugin.LogErr("ToggleNoclip failed: " + ex); LogEvent("Noclip toggle failed - see console"); } } private void BeginInputHijack() { //IL_0003: 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_04fc: Unknown result type (might be due to invalid IL or missing references) try { _prevCursorLock = Cursor.lockState; _prevCursorVisible = Cursor.visible; Cursor.lockState = (CursorLockMode)0; Cursor.visible = true; _disabledBehaviours.Clear(); _hijackCC = null; _hijackRB = null; Transform player = PlayerLocator.GetPlayer(false, false); if (Object.op_Implicit((Object)(object)player)) { List<Behaviour> list = new List<Behaviour>(); list.AddRange(((Component)player).GetComponentsInChildren<Behaviour>(true)); if (Object.op_Implicit((Object)(object)Camera.main)) { list.AddRange(((Component)Camera.main).GetComponentsInChildren<Behaviour>(true)); } foreach (Behaviour item in list) { if (!Object.op_Implicit((Object)(object)item) || !item.enabled) { continue; } Type type = ((object)item).GetType(); if (type == typeof(Camera) || type == typeof(AudioListener)) { continue; } string text = ""; try { text = type.Assembly.GetName().Name ?? ""; } catch { } bool flag = text.Equals("Assembly-CSharp", StringComparison.OrdinalIgnoreCase) || text.Equals("Assembly-CSharp-firstpass", StringComparison.OrdinalIgnoreCase) || text.StartsWith("UnityEngine", StringComparison.OrdinalIgnoreCase) || text.StartsWith("Unity.", StringComparison.OrdinalIgnoreCase); bool flag2 = text.IndexOf("RepoLib", StringComparison.OrdinalIgnoreCase) >= 0 || text.IndexOf("REPOLib", StringComparison.OrdinalIgnoreCase) >= 0 || text.IndexOf("OmniumLib", StringComparison.OrdinalIgnoreCase) >= 0 || text.IndexOf("OmniumLibrary", StringComparison.OrdinalIgnoreCase) >= 0 || text.IndexOf("BepInEx", StringComparison.OrdinalIgnoreCase) >= 0 || text.IndexOf("Harmony", StringComparison.OrdinalIgnoreCase) >= 0 || text.IndexOf("Thunderstore", StringComparison.OrdinalIgnoreCase) >= 0 || text.IndexOf("Plugin", StringComparison.OrdinalIgnoreCase) >= 0 || text.IndexOf("Mod", StringComparison.OrdinalIgnoreCase) >= 0; if (_respectRepoLib.Value && (!flag || flag2)) { continue; } string name = type.Name; bool flag3 = name.Contains("Mouse") || name.Contains("Look") || name.Contains("Locomotion") || name.Contains("Motor") || name.Contains("Movement") || (name.Contains("Input") && (name.Contains("Player") || name.Contains("Character") || name.Contains("Camera"))) || (name.Contains("Controller") && (name.Contains("Player") || name.Contains("Character") || name.Contains("FirstPerson") || name.Contains("ThirdPerson") || name.Contains("Camera"))); string text2 = ((Object.op_Implicit((Object)(object)item) && Object.op_Implicit((Object)(object)((Component)item).gameObject)) ? ((Object)((Component)item).gameObject).name : string.Empty); if (_respectRepoLib.Value) { if (text2.IndexOf("HUD", StringComparison.OrdinalIgnoreCase) >= 0) { flag3 = false; } if (text2.IndexOf("REPOLib", StringComparison.OrdinalIgnoreCase) >= 0) { flag3 = false; } } string text3 = name.ToLowerInvariant(); if (text3.Contains("ui") || text3.Contains("canvas") || text3.Contains("graphic")) { flag3 = false; } if (_respectRepoLib.Value && (text3.Contains("bundle") || text3.Contains("loader") || text3.Contains("manager") || text3.Contains("addressable"))) { flag3 = false; } if (flag3) { item.enabled = false; _disabledBehaviours.Add(item); } } _hijackCC = ((Component)player).GetComponent<CharacterController>(); if (Object.op_Implicit((Object)(object)_hijackCC)) { _hijackCCPrev = ((Collider)_hijackCC).enabled; ((Collider)_hijackCC).enabled = false; } _hijackRB = ((Component)player).GetComponent<Rigidbody>(); if (Object.op_Implicit((Object)(object)_hijackRB)) { _hijackRBPrevKinematic = _hijackRB.isKinematic; _hijackRBPrevDetect = _hijackRB.detectCollisions; _hijackRB.isKinematic = true; _hijackRB.detectCollisions = false; _hijackRB.velocity = Vector3.zero; } } _hijackActive = true; LogEvent("Input hijack ENABLED (UI open)"); } catch (Exception ex) { _plugin.LogErr("BeginInputHijack failed: " + ex); } } private void EndInputHijack() { //IL_00ac: Unknown result type (might be due to invalid IL or missing references) try { foreach (Behaviour disabledBehaviour in _disabledBehaviours) { if (Object.op_Implicit((Object)(object)disabledBehaviour)) { disabledBehaviour.enabled = true; }