using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Core.Logging.Interpolation; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using Il2CppSystem.Collections.Generic; using LobbyNetworking; using Mirror; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("BigWalk.NoClip")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.4.0")] [assembly: AssemblyInformationalVersion("1.0.4")] [assembly: AssemblyProduct("Big Walk NoClip")] [assembly: AssemblyTitle("BigWalk.NoClip")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.4.0")] [module: UnverifiableCode] namespace BigWalk.NoClip; public class NoClipController : MonoBehaviour { private bool _active; private PlayerCharacter _target; private bool _savedUseGravity = true; private bool _savedDetectCollisions = true; private bool _savedMoverBypassFixed; private bool _savedIgnoreAirbourne; private GUIStyle _hudStyle; private void Update() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown try { if (Input.GetKeyDown(Plugin.ToggleKey.Value)) { Toggle(); } if (_active && !IsLobbyHost()) { Plugin.Log.LogWarning((object)"NoClip: disabled because you are not the lobby host."); SetNoClip(enabled: false); } } catch (Exception ex) { ManualLogSource log = Plugin.Log; bool flag = default(bool); BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(22, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("NoClip Update failed: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(ex); } log.LogError(val); } } private void LateUpdate() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown if (!_active) { return; } try { if (!IsLobbyHost()) { SetNoClip(enabled: false); } else { Fly(); } } catch (Exception ex) { ManualLogSource log = Plugin.Log; bool flag = default(bool); BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(26, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("NoClip LateUpdate failed: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(ex); } log.LogError(val); } } private void OnGUI() { //IL_0078: 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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) if (_active && Plugin.ShowHud.Value) { if (_hudStyle == null) { _hudStyle = new GUIStyle(GUI.skin.box) { fontSize = 14, fontStyle = (FontStyle)1, alignment = (TextAnchor)4 }; _hudStyle.normal.textColor = Color.cyan; } GUI.Box(new Rect(16f, (float)Screen.height - 48f, 280f, 32f), $"NOCLIP [{Plugin.ToggleKey.Value}] Shift=fast", _hudStyle); } } private void OnDisable() { if (_active) { SetNoClip(enabled: false); } } private void Toggle() { if (!IsLobbyHost()) { Plugin.Log.LogWarning((object)"NoClip: only the lobby host can use this."); return; } PlayerCharacter val = FindLocalPlayer(); if ((Object)(object)val == (Object)null) { Plugin.Log.LogWarning((object)"NoClip: local PlayerCharacter not found yet."); } else { SetNoClip(!_active, val); } } private void SetNoClip(bool enabled, PlayerCharacter pc = null) { if (enabled) { if (IsLobbyHost()) { _target = pc ?? FindLocalPlayer(); if (!((Object)(object)_target == (Object)null)) { CaptureAndSoftDisable(_target); _active = true; Plugin.Log.LogInfo((object)"NoClip ON"); } } } else { Restore(); _active = false; _target = null; Plugin.Log.LogInfo((object)"NoClip OFF"); } } private void CaptureAndSoftDisable(PlayerCharacter pc) { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) bool flag = default(bool); try { Rigidbody rb = pc.rb; if ((Object)(object)rb != (Object)null) { _savedUseGravity = rb.useGravity; _savedDetectCollisions = rb.detectCollisions; rb.velocity = Vector3.zero; rb.useGravity = false; rb.detectCollisions = false; } } catch (Exception ex) { ManualLogSource log = Plugin.Log; BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(24, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("NoClip rigidbody setup: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(ex.Message); } log.LogWarning(val); } try { if (pc.mover != null) { _savedMoverBypassFixed = pc.mover.bypassFixedUpdate; _savedIgnoreAirbourne = pc.mover.ignoreAirbourneVelocity; pc.mover.bypassFixedUpdate = true; pc.mover.bypassUpdate = false; pc.mover.ignoreAirbourneVelocity = true; } } catch (Exception ex2) { ManualLogSource log2 = Plugin.Log; BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(20, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("NoClip mover setup: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(ex2.Message); } log2.LogWarning(val); } try { if (pc.head != null) { pc.head.bypassUpdate = false; } pc.bypassUpdate = false; pc.bypassLateUpdate = false; } catch { } } private void Restore() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) PlayerCharacter target = _target; if ((Object)(object)target == (Object)null) { return; } try { Rigidbody rb = target.rb; if ((Object)(object)rb != (Object)null) { rb.useGravity = _savedUseGravity; rb.detectCollisions = _savedDetectCollisions; rb.velocity = Vector3.zero; } } catch { } try { if (target.mover != null) { target.mover.bypassFixedUpdate = _savedMoverBypassFixed; target.mover.ignoreAirbourneVelocity = _savedIgnoreAirbourne; } } catch { } } private void Fly() { //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_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_018d: 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_0195: 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_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_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: 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_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: 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_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) PlayerCharacter val = _target ?? FindLocalPlayer(); if ((Object)(object)val == (Object)null) { SetNoClip(enabled: false); return; } _target = val; try { if (val.head != null) { val.head.bypassUpdate = false; } if (val.mover != null) { val.mover.bypassUpdate = false; val.mover.bypassFixedUpdate = true; } } catch { } Camera main = Camera.main; if ((Object)(object)main == (Object)null) { return; } Vector3 val2 = Vector3.zero; Transform transform = ((Component)main).transform; if (Input.GetKey((KeyCode)119)) { val2 += transform.forward; } if (Input.GetKey((KeyCode)115)) { val2 -= transform.forward; } if (Input.GetKey((KeyCode)97)) { val2 -= transform.right; } if (Input.GetKey((KeyCode)100)) { val2 += transform.right; } if (Input.GetKey((KeyCode)32) || Input.GetKey((KeyCode)101)) { val2 += Vector3.up; } if (Input.GetKey((KeyCode)306) || Input.GetKey((KeyCode)113)) { val2 -= Vector3.up; } try { Rigidbody rb = val.rb; if ((Object)(object)rb != (Object)null) { rb.useGravity = false; rb.detectCollisions = false; rb.velocity = Vector3.zero; } } catch { } if (((Vector3)(ref val2)).sqrMagnitude < 0.0001f) { return; } ((Vector3)(ref val2)).Normalize(); float num = Plugin.Speed.Value; if (Input.GetKey((KeyCode)304)) { num *= Plugin.FastMultiplier.Value; } Vector3 val3 = ((Component)val).transform.position + val2 * num * Time.deltaTime; ((Component)val).transform.position = val3; try { Rigidbody rb2 = val.rb; if ((Object)(object)rb2 != (Object)null) { rb2.position = val3; } } catch { } try { HouseNetworkTransform houseNetworkTransform = val.houseNetworkTransform; if ((Object)(object)houseNetworkTransform != (Object)null) { houseNetworkTransform.targetPosition = val3; } } catch { } } private static PlayerCharacter FindLocalPlayer() { try { List allPlayerCharacters = PlayerCharacter.allPlayerCharacters; if (allPlayerCharacters == null) { return null; } for (int i = 0; i < allPlayerCharacters.Count; i++) { PlayerCharacter val = allPlayerCharacters[i]; if ((Object)(object)val != (Object)null && ((NetworkBehaviour)val).isLocalPlayer) { return val; } } } catch { } return null; } private static bool IsLobbyHost() { try { if (NetworkServer.active || NetworkClient.activeHost || NetworkClient.isHostClient) { return true; } } catch { } try { PlayerCharacter val = FindLocalPlayer(); if ((Object)(object)val != (Object)null && ((NetworkBehaviour)val).isLocalPlayer && (Object)(object)val.playerNetworking != (Object)null && val.playerNetworking.isHost) { return true; } } catch { } return false; } } [BepInPlugin("BigWalk.NoClip", "Big Walk NoClip", "1.0.4")] [BepInProcess("Big Walk.exe")] public class Plugin : BasePlugin { internal static Plugin Instance; internal static ManualLogSource Log; public static ConfigEntry ToggleKey; public static ConfigEntry Speed; public static ConfigEntry FastMultiplier; public static ConfigEntry ShowHud; public override void Load() { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Expected O, but got Unknown //IL_0118: Unknown result type (might be due to invalid IL or missing references) Instance = this; Log = ((BasePlugin)this).Log; ToggleKey = ((BasePlugin)this).Config.Bind("NoClip", "ToggleKey", (KeyCode)110, "Key that toggles noclip on/off. Host only."); Speed = ((BasePlugin)this).Config.Bind("NoClip", "Speed", 8f, new ConfigDescription("Base fly speed (units/sec).", (AcceptableValueBase)(object)new AcceptableValueRange(1f, 50f), Array.Empty())); FastMultiplier = ((BasePlugin)this).Config.Bind("NoClip", "FastMultiplier", 3f, new ConfigDescription("Speed multiplier while holding Left Shift.", (AcceptableValueBase)(object)new AcceptableValueRange(1f, 10f), Array.Empty())); ShowHud = ((BasePlugin)this).Config.Bind("NoClip", "ShowHud", true, "Show a small on-screen indicator while noclip is active."); ((BasePlugin)this).AddComponent(); ManualLogSource log = Log; bool flag = default(bool); BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(46, 3, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted("Big Walk NoClip"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" v"); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted("1.0.4"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" loaded. Host-only. Press "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(ToggleKey.Value); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" to toggle noclip."); } log.LogInfo(val); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "BigWalk.NoClip"; public const string PLUGIN_NAME = "Big Walk NoClip"; public const string PLUGIN_VERSION = "1.0.4"; }