Decompiled source of Server devcommands v1.86.0
ServerDevcommands.dll
Decompiled 2 weeks 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.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Threading; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using GUIFramework; using HarmonyLib; using Microsoft.CodeAnalysis; using ServerDevcommands; using Service; using TMPro; using UnityEngine; using YamlDotNet.Core; using YamlDotNet.Core.Events; using YamlDotNet.Core.ObjectPool; using YamlDotNet.Core.Tokens; using YamlDotNet.Helpers; using YamlDotNet.Serialization; using YamlDotNet.Serialization.BufferedDeserialization; using YamlDotNet.Serialization.BufferedDeserialization.TypeDiscriminators; using YamlDotNet.Serialization.Callbacks; using YamlDotNet.Serialization.Converters; using YamlDotNet.Serialization.EventEmitters; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.NodeDeserializers; using YamlDotNet.Serialization.NodeTypeResolvers; using YamlDotNet.Serialization.ObjectFactories; using YamlDotNet.Serialization.ObjectGraphTraversalStrategies; using YamlDotNet.Serialization.ObjectGraphVisitors; using YamlDotNet.Serialization.Schemas; using YamlDotNet.Serialization.TypeInspectors; using YamlDotNet.Serialization.TypeResolvers; using YamlDotNet.Serialization.Utilities; using YamlDotNet.Serialization.ValueDeserializers; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("ServerDevcommands")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+6d79b9d23096217f3a3a504f533386976728ef9b")] [assembly: AssemblyProduct("ServerDevcommands")] [assembly: AssemblyTitle("ServerDevcommands")] [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 Service { public class PlayerInfo { public string Name; public Vector3 Pos; public Quaternion Rot; public string HostId; public ZDOID ZDOID; public PlayerInfo(ZNetPeer peer) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) HostId = peer.m_rpc.GetSocket().GetHostName(); Name = peer.m_playerName; Pos = peer.m_refPos; ZDOID = peer.m_characterID; ZDO zDO = ZDOMan.instance.GetZDO(peer.m_characterID); if (zDO != null) { Pos = zDO.m_position; Rot = zDO.GetRotation(); } } public PlayerInfo(PlayerInfo info) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0013: 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_0020: 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_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) HostId = info.m_host; Name = info.m_name; Pos = info.m_position; ZDOID = info.m_characterID; ZDO zDO = ZDOMan.instance.GetZDO(info.m_characterID); if (zDO != null) { Pos = zDO.m_position; Rot = zDO.GetRotation(); } } public PlayerInfo(Player player) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0030: 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_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) HostId = "self"; Name = player.GetPlayerName(); ZDOID = ((Character)player).GetZDOID(); Pos = ((Component)player).transform.position; Rot = ((Component)player).transform.rotation; } public static List<PlayerInfo> FindPlayers(string[] args) { //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) List<PlayerInfo> list = (ZNet.instance.IsServer() ? (from peer in ZNet.instance.GetPeers() select new PlayerInfo(peer)).ToList() : ZNet.instance.m_players.Select((PlayerInfo player) => new PlayerInfo(player)).ToList()); if (Object.op_Implicit((Object)(object)Player.m_localPlayer) && list.All((PlayerInfo p) => p.ZDOID != ((Character)Player.m_localPlayer).GetZDOID())) { list.Add(new PlayerInfo(Player.m_localPlayer)); } Dictionary<ZDOID, PlayerInfo> dictionary = new Dictionary<ZDOID, PlayerInfo>(); foreach (string text in args) { switch (text) { case "*": case "all": return list; case "others": return list.Where((PlayerInfo p) => p.ZDOID != ((Character)Player.m_localPlayer).GetZDOID()).ToList(); } string text2 = text.ToLowerInvariant(); foreach (PlayerInfo item in list) { string text3 = item.Name.ToLowerInvariant(); if (item.HostId == text) { dictionary[item.ZDOID] = item; } else if (text3 == text2) { dictionary[item.ZDOID] = item; } else if (text2[0] == '*' && text2[text2.Length - 1] == '*' && text3.Contains(text2.Substring(1, text2.Length - 2))) { dictionary[item.ZDOID] = item; } else if (text2[0] == '*' && item.Name.EndsWith(text2.Substring(1), StringComparison.OrdinalIgnoreCase)) { dictionary[item.ZDOID] = item; } else if (text2[text2.Length - 1] == '*' && item.Name.StartsWith(text2.Substring(0, text2.Length - 1), StringComparison.OrdinalIgnoreCase)) { dictionary[item.ZDOID] = item; } } } Dictionary<ZDOID, PlayerInfo>.ValueCollection values = dictionary.Values; List<PlayerInfo> list2 = new List<PlayerInfo>(values.Count); list2.AddRange(values); if (list2.Count == 0) { throw new InvalidOperationException("No target player found with id/name '" + string.Join(",", args) + "'."); } return list2; } } public class Hovered { public ZNetView Obj; public int Index; public Hovered(ZNetView obj, int index) { Obj = obj; Index = index; base..ctor(); } } public static class Selector { private static KeyValuePair<int, int> RaftParent = ZDO.GetHashZDOID("MBParent"); public static bool IsValid(ZNetView view) { if (Object.op_Implicit((Object)(object)view)) { return IsValid(view.GetZDO()); } return false; } public static bool IsValid(ZDO zdo) { if (zdo != null) { return zdo.IsValid(); } return false; } public static ZNetView? GetHovered(float range, string[] included, string[] excluded) { return GetHovered(range, included, new HashSet<string>(), excluded); } public static ZNetView? GetHovered(float range, string[] included, HashSet<string> types, string[] excluded) { return GetHovered(Player.m_localPlayer, range, included, types, excluded)?.Obj; } public static int GetPrefabFromHit(RaycastHit hit) { return ((Component)((RaycastHit)(ref hit)).collider).GetComponentInParent<ZNetView>().GetZDO().GetPrefab(); } public static Hovered? GetHovered(Player obj, float maxDistance, string[] included, string[] excluded, bool allowOtherPlayers = false) { return GetHovered(obj, maxDistance, included, new HashSet<string>(), excluded, allowOtherPlayers); } public static Hovered? GetHovered(Player obj, float maxDistance, string[] included, HashSet<string> types, string[] excluded, bool allowOtherPlayers = false) { //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010c: 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_011b: Unknown result type (might be due to invalid IL or missing references) allowOtherPlayers |= included.Contains("Player"); HashSet<int> allPrefabs = GetAllPrefabs(included); if (included.Length != 0 && allPrefabs.Count == 0) { throw new InvalidOperationException("No valid prefabs found."); } HashSet<int> excludedPrefabs = GetExcludedPrefabs(excluded); float num = Math.Max(maxDistance + 5f, 50f); int mask = LayerMask.GetMask(new string[11] { "item", "piece", "piece_nonsolid", "Default", "static_solid", "Default_small", "character", "character_net", "terrain", "vehicle", "character_trigger" }); RaycastHit[] array = Physics.RaycastAll(((Component)GameCamera.instance).transform.position, ((Component)GameCamera.instance).transform.forward, num, mask); Array.Sort(array, (RaycastHit x, RaycastHit y) => ((RaycastHit)(ref x)).distance.CompareTo(((RaycastHit)(ref y)).distance)); RaycastHit[] array2 = array; for (int i = 0; i < array2.Length; i++) { RaycastHit val = array2[i]; if (Vector3.Distance(((RaycastHit)(ref val)).point, ((Character)obj).m_eye.position) >= maxDistance) { continue; } ZNetView componentInParent = ((Component)((RaycastHit)(ref val)).collider).GetComponentInParent<ZNetView>(); if (!IsValid(componentInParent) || (allPrefabs.Count > 0 && !allPrefabs.Contains(componentInParent.GetZDO().GetPrefab())) || excludedPrefabs.Contains(componentInParent.GetZDO().GetPrefab()) || Object.op_Implicit((Object)(object)((Component)((RaycastHit)(ref val)).collider).GetComponent<EffectArea>())) { continue; } Player componentInChildren = ((Component)componentInParent).GetComponentInChildren<Player>(); if ((Object)(object)componentInChildren == (Object)(object)obj || (!allowOtherPlayers && Object.op_Implicit((Object)(object)componentInChildren)) || (types.Count > 0 && !ComponentInfo.HasComponent(componentInParent, types))) { continue; } int index = -1; MineRock5 component = ((Component)componentInParent).GetComponent<MineRock5>(); if (Object.op_Implicit((Object)(object)component)) { index = component.GetAreaIndex(((RaycastHit)(ref val)).collider); } Room componentInParent2 = ((Component)((RaycastHit)(ref val)).collider).GetComponentInParent<Room>(); if (Object.op_Implicit((Object)(object)componentInParent2)) { Transform transform = ((Component)componentInParent).transform; for (int j = 0; j < transform.childCount; j++) { if ((Object)(object)((Component)transform.GetChild(j)).gameObject == (Object)(object)((Component)componentInParent2).gameObject) { index = j; break; } } } return new Hovered(componentInParent, index); } return null; } private static float GetX(float x, float y, float angle) { return Mathf.Cos(angle) * x - Mathf.Sin(angle) * y; } private static float GetY(float x, float y, float angle) { return Mathf.Sin(angle) * x + Mathf.Cos(angle) * y; } public static bool Within(Vector3 position, Vector3 center, float angle, Range<float> width, Range<float> depth, float height) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) float x = position.x - center.x; float y = position.z - center.z; float x2 = GetX(x, y, angle); float y2 = GetY(x, y, angle); if (!WithinHeight(position, center, height)) { return false; } return Helper.Within(width, depth, Mathf.Abs(x2), Mathf.Abs(y2)); } public static bool Within(Vector3 position, Vector3 center, Range<float> radius, float height) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) if (!WithinHeight(position, center, height)) { return false; } return Helper.Within(radius, Utils.DistanceXZ(position, center)); } private static bool WithinHeight(Vector3 position, Vector3 center, float height) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) float y = center.y; float y2 = position.y; if (Helper.IsZero(height)) { return Mathf.Abs(y2 - y) <= 1000f; } float num = Mathf.Min(y, y + height); float num2 = Mathf.Max(y, y + height); if (y2 >= num) { return y2 <= num2; } return false; } private static bool IsIncluded(string id, string name) { if (id.StartsWith("*", StringComparison.Ordinal) && id.EndsWith("*", StringComparison.Ordinal)) { return name.Contains(id.Substring(1, id.Length - 3)); } if (id.StartsWith("*", StringComparison.Ordinal)) { return name.EndsWith(id.Substring(1), StringComparison.Ordinal); } if (id.EndsWith("*", StringComparison.Ordinal)) { return name.StartsWith(id.Substring(0, id.Length - 2), StringComparison.Ordinal); } return id == name; } public static HashSet<int> GetExcludedPrefabs(string[] ids) { HashSet<int> hashSet = new HashSet<int>(); foreach (string id in ids) { hashSet.UnionWith(GetExcludedPrefabs(id)); } return hashSet; } private static HashSet<int> GetExcludedPrefabs(string id) { string id2 = id; if (id2 == "") { return new HashSet<int>(); } id2 = id2.ToLower(); return (from prefab in ZNetScene.instance.m_namedPrefabs.Values where IsIncluded(id2, ((Object)prefab).name.ToLower()) select StringExtensionMethods.GetStableHashCode(((Object)prefab).name)).ToHashSet(); } public static HashSet<int> GetPrefabs(string[] ids) { if (ids.Length == 0) { return GetSafePrefabs(""); } HashSet<int> hashSet = new HashSet<int>(); foreach (string id in ids) { hashSet.UnionWith(GetSafePrefabs(id)); } return hashSet; } public static HashSet<int> GetAllPrefabs(string[] ids) { if (ids.Length == 0) { return new HashSet<int>(); } HashSet<int> hashSet = new HashSet<int>(); foreach (string id in ids) { hashSet.UnionWith(GetAllPrefabs(id)); } return hashSet; } private static HashSet<int> GetSafePrefabs(string id) { string id2 = id; id2 = id2.ToLower(); IEnumerable<GameObject> source = ZNetScene.instance.m_namedPrefabs.Values; if (id2 != "Player") { source = source.Where((GameObject prefab) => ((Object)prefab).name != "Player"); } source = ((id2 == "*" || id2 == "") ? source.Where((GameObject prefab) => !((Object)prefab).name.StartsWith("_", StringComparison.Ordinal)) : ((!id2.Contains("*")) ? source.Where((GameObject prefab) => ((Object)prefab).name.ToLower() == id2) : source.Where((GameObject prefab) => IsIncluded(id2, ((Object)prefab).name.ToLower())))); return source.Select((GameObject prefab) => StringExtensionMethods.GetStableHashCode(((Object)prefab).name)).ToHashSet(); } private static HashSet<int> GetAllPrefabs(string id) { string id2 = id; id2 = id2.ToLower(); IEnumerable<GameObject> source = ZNetScene.instance.m_namedPrefabs.Values; if (!(id2 == "*") && !(id2 == "")) { source = ((!id2.Contains("*")) ? source.Where((GameObject prefab) => ((Object)prefab).name.ToLower() == id2) : source.Where((GameObject prefab) => IsIncluded(id2, ((Object)prefab).name.ToLower()))); } return source.Select((GameObject prefab) => StringExtensionMethods.GetStableHashCode(((Object)prefab).name)).ToHashSet(); } public static ZNetView[] GetNearby(string[] included, HashSet<string> types, string[] excluded, Vector3 center, Range<float> radius, float height) { //IL_0007: 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) Range<float> radius2 = radius; HashSet<int> prefabs = GetPrefabs(included); if (included.Length != 0 && prefabs.Count == 0) { throw new InvalidOperationException("No valid prefabs found."); } HashSet<int> excludedPrefabs = GetExcludedPrefabs(excluded); return GetNearby(prefabs, types, excludedPrefabs, checker); bool checker(Vector3 pos) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) return Within(pos, center, radius2, height); } } public static ZNetView[] GetNearby(string[] included, HashSet<string> types, string[] excluded, Vector3 center, float angle, Range<float> width, Range<float> depth, float height) { //IL_0007: 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) Range<float> width2 = width; Range<float> depth2 = depth; HashSet<int> prefabs = GetPrefabs(included); if (included.Length != 0 && prefabs.Count == 0) { throw new InvalidOperationException("No valid prefabs found."); } HashSet<int> excludedPrefabs = GetExcludedPrefabs(excluded); return GetNearby(prefabs, types, excludedPrefabs, checker); bool checker(Vector3 pos) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) return Within(pos, center, angle, width2, depth2, height); } } public static ZNetView[] GetNearby(HashSet<int> included, HashSet<string> types, HashSet<int> excluded, Func<Vector3, bool> checker) { HashSet<int> included2 = included; HashSet<int> excluded2 = excluded; Func<Vector3, bool> checker2 = checker; _ = ZNetScene.instance; IEnumerable<ZNetView> source = ZNetScene.instance.m_instances.Values.Where(IsValid); if (included2.Count > 0) { source = source.Where((ZNetView view) => included2.Contains(view.GetZDO().GetPrefab())); } if (excluded2.Count > 0) { source = source.Where((ZNetView view) => !excluded2.Contains(view.GetZDO().GetPrefab())); } source = source.Where((ZNetView view) => checker2(view.GetZDO().GetPosition())); if (types.Count > 0) { source = ComponentInfo.HaveComponent(source, types); } ZNetView[] array = source.ToArray(); if (array.Length == 0) { throw new InvalidOperationException("Nothing is nearby."); } return array; } public static ZNetView[] GetConnectedRaft(ZNetView baseView, HashSet<int> included, HashSet<int> excluded) { //IL_0020: 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) HashSet<int> included2 = included; HashSet<int> excluded2 = excluded; ZDOID id = baseView.GetZDO().GetZDOID(RaftParent); IEnumerable<ZNetView> source = ZNetScene.instance.m_instances.Values.Where(IsValid); if (included2.Count > 0) { source = source.Where((ZNetView view) => included2.Contains(view.GetZDO().GetPrefab())); } if (excluded2.Count > 0) { source = source.Where((ZNetView view) => !excluded2.Contains(view.GetZDO().GetPrefab())); } source = source.Where((ZNetView view) => view.GetZDO().m_uid == id || view.GetZDO().GetZDOID(RaftParent) == id); return source.ToArray(); } public static ZNetView[] GetConnected(ZNetView baseView, string[] included, string[] excluded) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: 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_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) HashSet<int> includedPrefabs = GetPrefabs(included); HashSet<int> excludedPrefabs = GetExcludedPrefabs(excluded); if (baseView.GetZDO().GetZDOID(RaftParent) != ZDOID.None) { return GetConnectedRaft(baseView, includedPrefabs, excludedPrefabs); } WearNTear item = ((Component)baseView).GetComponent<WearNTear>() ?? throw new InvalidOperationException("Connected doesn't work for this object."); HashSet<ZNetView> hashSet = new HashSet<ZNetView> { baseView }; Queue<WearNTear> queue = new Queue<WearNTear>(); queue.Enqueue(item); while (queue.Count > 0) { WearNTear val = queue.Dequeue(); if (val.m_colliders == null) { val.SetupColliders(); } foreach (BoundData bound in val.m_bounds) { int num = Physics.OverlapBoxNonAlloc(bound.m_pos, bound.m_size, WearNTear.s_tempColliders, bound.m_rot, WearNTear.s_rayMask); for (int i = 0; i < num; i++) { Collider val2 = WearNTear.s_tempColliders[i]; if (!val2.isTrigger && !((Object)(object)val2.attachedRigidbody != (Object)null) && !val.m_colliders.Contains(val2)) { WearNTear componentInParent = ((Component)val2).GetComponentInParent<WearNTear>(); if (Object.op_Implicit((Object)(object)componentInParent) && IsValid(componentInParent.m_nview) && !hashSet.Contains(componentInParent.m_nview) && !excludedPrefabs.Contains(componentInParent.m_nview.GetZDO().GetPrefab())) { hashSet.Add(componentInParent.m_nview); queue.Enqueue(componentInParent); } } } } } IEnumerable<ZNetView> source = hashSet; if (includedPrefabs.Count > 0) { source = source.Where((ZNetView view) => includedPrefabs.Contains(view.GetZDO().GetPrefab())); } return source.ToArray(); } } } namespace ServerDevcommands { public class AddStatusCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<int, List<string>> <>9__0_0; public static ConsoleEvent <>9__0_1; internal List<string> <.ctor>b__0_0(int index) { return index switch { 0 => ParameterInfo.StatusEffects, 1 => ParameterInfo.Create("Effect duration in seconds."), 2 => ParameterInfo.Create("Effect intensity."), _ => ParameterInfo.None, }; } internal void <.ctor>b__0_1(ConsoleEventArgs args) { Helper.ArgsCheck(args, 2, "Missing status name"); Player player = Helper.GetPlayer(); int stableHashCode = StringExtensionMethods.GetStableHashCode(args[1]); ((Character)player).GetSEMan().AddStatusEffect(stableHashCode, true, 0, 0f); StatusEffect statusEffect = ((Character)player).GetSEMan().GetStatusEffect(stableHashCode); if ((Object)(object)statusEffect == (Object)null) { return; } float ttl = default(float); if (args.TryParameterFloat(2, ref ttl)) { statusEffect.m_ttl = ttl; } float num = default(float); if (!args.TryParameterFloat(3, ref num)) { return; } SE_Shield val = (SE_Shield)(object)((statusEffect is SE_Shield) ? statusEffect : null); if (val != null) { val.m_absorbDamage = num; } SE_Burning val2 = (SE_Burning)(object)((statusEffect is SE_Burning) ? statusEffect : null); if (val2 != null) { if (args[1] == "Burning") { val2.m_fireDamageLeft = 0f; val2.AddFireDamage(num); } else { val2.m_spiritDamageLeft = 0f; val2.AddSpiritDamage(num); } } SE_Poison val3 = (SE_Poison)(object)((statusEffect is SE_Poison) ? statusEffect : null); if (val3 != null) { val3.m_damageLeft = num; val3.m_damagePerHit = num / statusEffect.m_ttl * val3.m_damageInterval; } } } public AddStatusCommand() { //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown AutoComplete.Register("addstatus", (int index) => index switch { 0 => ParameterInfo.StatusEffects, 1 => ParameterInfo.Create("Effect duration in seconds."), 2 => ParameterInfo.Create("Effect intensity."), _ => ParameterInfo.None, }); object obj = <>c.<>9__0_1; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { Helper.ArgsCheck(args, 2, "Missing status name"); Player player = Helper.GetPlayer(); int stableHashCode = StringExtensionMethods.GetStableHashCode(args[1]); ((Character)player).GetSEMan().AddStatusEffect(stableHashCode, true, 0, 0f); StatusEffect statusEffect = ((Character)player).GetSEMan().GetStatusEffect(stableHashCode); if (!((Object)(object)statusEffect == (Object)null)) { float ttl = default(float); if (args.TryParameterFloat(2, ref ttl)) { statusEffect.m_ttl = ttl; } float num = default(float); if (args.TryParameterFloat(3, ref num)) { SE_Shield val2 = (SE_Shield)(object)((statusEffect is SE_Shield) ? statusEffect : null); if (val2 != null) { val2.m_absorbDamage = num; } SE_Burning val3 = (SE_Burning)(object)((statusEffect is SE_Burning) ? statusEffect : null); if (val3 != null) { if (args[1] == "Burning") { val3.m_fireDamageLeft = 0f; val3.AddFireDamage(num); } else { val3.m_spiritDamageLeft = 0f; val3.AddSpiritDamage(num); } } SE_Poison val4 = (SE_Poison)(object)((statusEffect is SE_Poison) ? statusEffect : null); if (val4 != null) { val4.m_damageLeft = num; val4.m_damagePerHit = num / statusEffect.m_ttl * val4.m_damageInterval; } } } }; <>c.<>9__0_1 = val; obj = (object)val; } Helper.Command("addstatus", "[name] [duration] [intensity] - Adds a status effect.", (ConsoleEvent)obj); } } public class AliasCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ConsoleEvent <>9__0_0; public static Func<string, string> <>9__1_2; public static ConsoleEvent <>9__1_0; public static Func<int, int, List<string>> <>9__1_1; internal void <AddCommand>b__0_0(ConsoleEventArgs args) { } internal void <.ctor>b__1_0(ConsoleEventArgs args) { if (args.Length < 2) { args.Context.AddString(string.Join("\n", Settings.AliasKeys.Select((string key) => key + " -> " + Settings.GetAliasValue(key)))); } else if (args.Length < 3) { Settings.RemoveAlias(args[1]); if (Terminal.commands.ContainsKey(args[1])) { Terminal.commands.Remove(args[1]); } args.Context.updateCommandList(); AliasManager.ToBeSaved = true; } else { string value = string.Join(" ", args.Args.Skip(2)); Settings.AddAlias(args[1], value); AddCommand(args[1], value); args.Context.updateCommandList(); AliasManager.ToBeSaved = true; } } internal string <.ctor>b__1_2(string key) { return key + " -> " + Settings.GetAliasValue(key); } internal List<string> <.ctor>b__1_1(int index, int subIndex) { if (index == 0) { return ParameterInfo.Create("Name of the alias."); } return ParameterInfo.None; } } public static void AddCommand(string key, string value) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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_0084: Expected O, but got Unknown string text = Aliasing.Plain(value); string key2 = text.Split(new char[1] { ' ' }).First(); if (Terminal.commands.TryGetValue(key2, out var value2)) { new ConsoleCommand(key, text, value2.action, value2.IsCheat, value2.IsNetwork, value2.OnlyServer, value2.IsSecret, value2.AllowInDevBuild, value2.m_tabOptionsFetcher, false, false, false); return; } object obj = <>c.<>9__0_0; if (obj == null) { ConsoleEvent val = delegate { }; <>c.<>9__0_0 = val; obj = (object)val; } new ConsoleCommand(key, text, (ConsoleEvent)obj, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); } public AliasCommand() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown object obj = <>c.<>9__1_0; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { if (args.Length < 2) { args.Context.AddString(string.Join("\n", Settings.AliasKeys.Select((string key) => key + " -> " + Settings.GetAliasValue(key)))); } else if (args.Length < 3) { Settings.RemoveAlias(args[1]); if (Terminal.commands.ContainsKey(args[1])) { Terminal.commands.Remove(args[1]); } args.Context.updateCommandList(); AliasManager.ToBeSaved = true; } else { string value = string.Join(" ", args.Args.Skip(2)); Settings.AddAlias(args[1], value); AddCommand(args[1], value); args.Context.updateCommandList(); AliasManager.ToBeSaved = true; } }; <>c.<>9__1_0 = val; obj = (object)val; } new ConsoleCommand("alias", "[name] [command] - Sets a command alias.", (ConsoleEvent)obj, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); AutoComplete.Register("alias", (int index, int subIndex) => (index == 0) ? ParameterInfo.Create("Name of the alias.") : ParameterInfo.None); AutoComplete.Offsets["alias"] = 1; } } [HarmonyPatch] public class BindCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<string, string> <>9__1_9; public static ConsoleEvent <>9__1_0; public static ConsoleOptionsFetcher <>9__1_1; public static Func<int, int, List<string>> <>9__1_2; public static Func<int, List<string>> <>9__1_10; public static ConsoleEvent <>9__1_3; public static ConsoleOptionsFetcher <>9__1_4; public static Func<int, int, List<string>> <>9__1_5; public static Func<int, List<string>> <>9__1_12; public static Func<int, List<string>> <>9__1_7; public static Func<KeyValuePair<KeyCode, List<string>>, bool> <>9__3_0; public static Func<KeyValuePair<KeyCode, List<string>>, IEnumerable<string>> <>9__3_1; public static Func<string, bool> <>9__4_0; public static Func<string, bool> <>9__5_0; public static Func<string, bool> <>9__6_0; public static Func<string, bool> <>9__10_0; public static Func<string, bool> <>9__10_1; internal void <.ctor>b__1_0(ConsoleEventArgs args) { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (args.Length < 2) { return; } string[] array = (from key in Parse.Split(args[1]) select key.ToLower()).ToArray(); if (array[0] == "wheel") { KeyCode mouseWheelBindKey = Settings.MouseWheelBindKey; array[0] = ((object)(KeyCode)(ref mouseWheelBindKey)).ToString().ToLower(); } if (!Enum.TryParse<KeyCode>(array[0], ignoreCase: true, out KeyCode _)) { args.Context.AddString("'" + array[0] + "' is not a valid UnityEngine.KeyCode."); return; } string text = array[0]; if (array.Length > 1) { text = text + " keys=" + string.Join(",", array.Skip(1)); } string item = text + " " + string.Join(" ", args.Args.Skip(2)); Terminal.m_bindList.Add(item); Terminal.updateBinds(); BindManager.ToBeSaved = true; } internal string <.ctor>b__1_9(string key) { return key.ToLower(); } internal List<string> <.ctor>b__1_1() { return ParameterInfo.KeyCodes; } internal List<string> <.ctor>b__1_2(int index, int subIndex) { if (index == 0 && subIndex == 0) { return ParameterInfo.KeyCodes; } if (index == 0 && subIndex == 1) { return ParameterInfo.KeyCodesWithNegative; } return ParameterInfo.None; } internal List<string> <.ctor>b__1_10(int index) { return ParameterInfo.KeyCodesWithNegative; } internal void <.ctor>b__1_3(ConsoleEventArgs args) { <>c__DisplayClass1_0 CS$<>8__locals0 = new <>c__DisplayClass1_0 { args = args }; if (CS$<>8__locals0.args.Length >= 2) { Terminal.m_bindList = Terminal.m_bindList.Where(delegate(string cmd) { string[] array = CleanUp(cmd).Split(new char[1] { ' ' }); return array.Length < 2 || array[1] != CS$<>8__locals0.args[2]; }).ToList(); CS$<>8__locals0.args.Context.TryRunCommand("bind " + string.Join(" ", CS$<>8__locals0.args.Args.Skip(1)), false, false); } } internal List<string> <.ctor>b__1_4() { return ParameterInfo.KeyCodes; } internal List<string> <.ctor>b__1_5(int index, int subIndex) { if (index == 0 && subIndex == 0) { return ParameterInfo.KeyCodes; } if (index == 0 && subIndex == 1) { return ParameterInfo.KeyCodesWithNegative; } return ParameterInfo.Create("The command to bind."); } internal List<string> <.ctor>b__1_12(int index) { return ParameterInfo.KeyCodesWithNegative; } internal List<string> <.ctor>b__1_7(int index) { return index switch { 0 => ParameterInfo.KeyCodes, 1 => ParameterInfo.Create("Amount of binds to remove from the key."), _ => ParameterInfo.None, }; } internal bool <ExecuteBestBinds>b__3_0(KeyValuePair<KeyCode, List<string>> kvp) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return Input.GetKeyDown(kvp.Key); } internal IEnumerable<string> <ExecuteBestBinds>b__3_1(KeyValuePair<KeyCode, List<string>> kvp) { return kvp.Value; } internal bool <CountKeys>b__4_0(string arg) { return arg.StartsWith("keys="); } internal bool <CountKeys>b__5_0(string key) { KeyCode result; if (!key.StartsWith("-", StringComparison.Ordinal)) { return Enum.TryParse<KeyCode>(key, ignoreCase: true, out result); } return false; } internal bool <Valid>b__6_0(string arg) { return arg.StartsWith("keys="); } internal bool <CleanUp>b__10_0(string arg) { return arg.StartsWith("keys=", StringComparison.OrdinalIgnoreCase); } internal bool <CleanUp>b__10_1(string arg) { return !arg.StartsWith("keys=", StringComparison.OrdinalIgnoreCase); } } [CompilerGenerated] private sealed class <>c__DisplayClass1_0 { public ConsoleEventArgs args; internal bool <.ctor>b__11(string cmd) { string[] array = CleanUp(cmd).Split(new char[1] { ' ' }); if (array.Length < 2) { return true; } return array[1] != args[2]; } } private static string Mode = ""; private void Print(Terminal terminal, string command) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) KeyCode mouseWheelBindKey = Settings.MouseWheelBindKey; string text = ((object)(KeyCode)(ref mouseWheelBindKey)).ToString(); if (command.StartsWith(text, StringComparison.OrdinalIgnoreCase)) { command = "wheel" + command.Substring(text.Length); } terminal.AddString(command); } public BindCommand() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Expected O, but got Unknown //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0106: 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_0111: Expected O, but got Unknown //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Expected O, but got Unknown //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Expected O, but got Unknown //IL_01df: Unknown result type (might be due to invalid IL or missing references) object obj = <>c.<>9__1_0; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (args.Length >= 2) { string[] array2 = (from key in Parse.Split(args[1]) select key.ToLower()).ToArray(); if (array2[0] == "wheel") { KeyCode mouseWheelBindKey = Settings.MouseWheelBindKey; array2[0] = ((object)(KeyCode)(ref mouseWheelBindKey)).ToString().ToLower(); } if (!Enum.TryParse<KeyCode>(array2[0], ignoreCase: true, out KeyCode _)) { args.Context.AddString("'" + array2[0] + "' is not a valid UnityEngine.KeyCode."); } else { string text2 = array2[0]; if (array2.Length > 1) { text2 = text2 + " keys=" + string.Join(",", array2.Skip(1)); } string item = text2 + " " + string.Join(" ", args.Args.Skip(2)); Terminal.m_bindList.Add(item); Terminal.updateBinds(); BindManager.ToBeSaved = true; } } }; <>c.<>9__1_0 = val; obj = (object)val; } object obj2 = <>c.<>9__1_1; if (obj2 == null) { ConsoleOptionsFetcher val2 = () => ParameterInfo.KeyCodes; <>c.<>9__1_1 = val2; obj2 = (object)val2; } new ConsoleCommand("bind", "[keycode,modifier1,modifier2,...] [command] [parameters] - Binds a key (with modifier keys) to a command.", (ConsoleEvent)obj, false, false, false, false, false, (ConsoleOptionsFetcher)obj2, false, false, false); AutoComplete.Register("bind", delegate(int index, int subIndex) { if (index == 0 && subIndex == 0) { return ParameterInfo.KeyCodes; } return (index == 0 && subIndex == 1) ? ParameterInfo.KeyCodesWithNegative : ParameterInfo.None; }, new Dictionary<string, Func<int, List<string>>> { { "keys", (int index) => ParameterInfo.KeyCodesWithNegative } }); AutoComplete.Offsets["bind"] = 1; object obj3 = <>c.<>9__1_3; if (obj3 == null) { ConsoleEvent val3 = delegate(ConsoleEventArgs args) { if (args.Length >= 2) { Terminal.m_bindList = Terminal.m_bindList.Where(delegate(string cmd) { string[] array = CleanUp(cmd).Split(new char[1] { ' ' }); return array.Length < 2 || array[1] != args[2]; }).ToList(); args.Context.TryRunCommand("bind " + string.Join(" ", args.Args.Skip(1)), false, false); } }; <>c.<>9__1_3 = val3; obj3 = (object)val3; } object obj4 = <>c.<>9__1_4; if (obj4 == null) { ConsoleOptionsFetcher val4 = () => ParameterInfo.KeyCodes; <>c.<>9__1_4 = val4; obj4 = (object)val4; } new ConsoleCommand("rebind", "[keycode,modifier1,modifier2,...] [command] [parameters] - Binds a key (with modifier keys) to a command.", (ConsoleEvent)obj3, false, false, false, false, false, (ConsoleOptionsFetcher)obj4, false, false, false); AutoComplete.Register("rebind", delegate(int index, int subIndex) { if (index == 0 && subIndex == 0) { return ParameterInfo.KeyCodes; } return (index == 0 && subIndex == 1) ? ParameterInfo.KeyCodesWithNegative : ParameterInfo.Create("The command to bind."); }, new Dictionary<string, Func<int, List<string>>> { { "keys", (int index) => ParameterInfo.KeyCodesWithNegative } }); new ConsoleCommand("unbind", "[keycode] [amount = 0] [silent] - Clears binds from a key. Optional parameter can be used to specify amount of removed binds.", (ConsoleEvent)delegate(ConsoleEventArgs args) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) if (args.Length >= 2) { KeyCode result; if (args[1] == "wheel") { string[] args2 = args.Args; result = Settings.MouseWheelBindKey; args2[1] = ((object)(KeyCode)(ref result)).ToString().ToLower(); } string text = args.Args[1].ToLower(); if (Enum.TryParse<KeyCode>(args.Args[1], ignoreCase: true, out result)) { bool flag = args.Length > 3; int num = Parse.Int(args.Args, 2); if (num == 0) { num = int.MaxValue; } int num2 = Terminal.m_bindList.Count - 1; while (num2 >= 0 && num > 0) { if (!(Terminal.m_bindList[num2].Split(new char[1] { ' ' })[0].ToLower() != text)) { if (!flag) { Print(args.Context, Terminal.m_bindList[num2]); } Terminal.m_bindList.RemoveAt(num2); num--; } num2--; } } Terminal.updateBinds(); BindManager.ToBeSaved = true; } }, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); AutoComplete.Register("unbind", (int index) => index switch { 0 => ParameterInfo.KeyCodes, 1 => ParameterInfo.Create("Amount of binds to remove from the key."), _ => ParameterInfo.None, }); new ConsoleCommand("printbinds", "Prints all key binds.", (ConsoleEvent)delegate(ConsoleEventArgs args) { foreach (string bind in Terminal.m_bindList) { Print(args.Context, bind); } }, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); AutoComplete.RegisterEmpty("printbinds"); } [HarmonyPatch(typeof(Chat), "Update")] [HarmonyTranspiler] private static IEnumerable<CodeInstruction> DisableDefaultBindExecution(IEnumerable<CodeInstruction> instructions) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[1] { new CodeMatch((OpCode?)OpCodes.Stfld, (object)AccessTools.Field(typeof(Chat), "m_wasFocused"), (string)null) }).Advance(4).Insert((CodeInstruction[])(object)new CodeInstruction[2] { new CodeInstruction(OpCodes.Pop, (object)null), new CodeInstruction(OpCodes.Ldc_I4_1, (object)null) }) .InstructionEnumeration(); } [HarmonyPatch(typeof(Chat), "Update")] [HarmonyPostfix] private static void ExecuteBestBinds(Chat __instance) { if (((TMP_InputField)((Terminal)__instance).m_input).isFocused || (Object.op_Implicit((Object)(object)Console.instance) && ((Component)((Terminal)Console.instance).m_chatWindow).gameObject.activeInHierarchy)) { return; } string[] array = Terminal.m_binds.Where((KeyValuePair<KeyCode, List<string>> kvp) => Input.GetKeyDown(kvp.Key)).SelectMany((KeyValuePair<KeyCode, List<string>> kvp) => kvp.Value).Where(Valid) .ToArray(); if (array.Length != 0) { int max = ((IEnumerable<string>)array).Max((Func<string, int>)CountKeys); array = array.Where((string cmd) => CountKeys(cmd) == max).ToArray(); array = array.Select(CleanUp).ToArray(); string[] array2 = array; foreach (string text in array2) { ((Terminal)__instance).TryRunCommand(text, true, true); } } } public static int CountKeys(string command) { if (!command.Contains("keys=")) { return 0; } string[] array = command.Split(new char[1] { ' ' }).First((string arg) => arg.StartsWith("keys=")).Split(new char[1] { '=' }); if (array.Length < 2) { return 0; } string[] array2 = Parse.Split(array[1]); return ((!array2.Contains(Mode)) ? 1 : 100) * CountKeys(array2); } public static int CountKeys(string[] keys) { KeyCode result; return keys.Count((string key) => !key.StartsWith("-", StringComparison.Ordinal) && Enum.TryParse<KeyCode>(key, ignoreCase: true, out result)); } public static bool Valid(string command) { if (!command.Contains("keys=")) { return true; } string[] array = command.Split(new char[1] { ' ' }).First((string arg) => arg.StartsWith("keys=")).Split(new char[1] { '=' }); if (array.Length < 2) { return true; } return Valid(Parse.Split(array[1])); } public static void SetMode(string mode) { Mode = mode; } public static bool Valid(string[] keys) { //IL_0084: 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) bool flag = false; bool flag2 = false; Player localPlayer = Player.m_localPlayer; bool flag3 = localPlayer != null && ((Character)localPlayer).InPlaceMode(); foreach (string text in keys) { KeyCode result2; if (text.StartsWith("-")) { string text2 = text.Substring(1); if (Enum.TryParse<KeyCode>(text2, ignoreCase: true, out KeyCode result)) { if (Input.GetKey(result)) { return false; } } else if (text2 == "build") { if (flag3) { return false; } } else if (text2 == Mode) { return false; } } else if (Enum.TryParse<KeyCode>(text, ignoreCase: true, out result2)) { if (!Input.GetKey(result2)) { return false; } } else if (text == "build") { if (!flag3) { return false; } } else { flag = true; if (text == Mode) { flag2 = true; } } } if (flag && !flag2) { return false; } return true; } public static string CleanUp(string command) { if (command.Split(new char[1] { ' ' }).Count((string arg) => arg.StartsWith("keys=", StringComparison.OrdinalIgnoreCase)) < 2) { command = string.Join(" ", from arg in command.Split(new char[1] { ' ' }) where !arg.StartsWith("keys=", StringComparison.OrdinalIgnoreCase) select arg); } return command; } } public class BroadcastCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ConsoleEvent <>9__2_0; public static Func<int, List<string>> <>9__2_1; public static Func<int, List<string>> <>9__2_2; public static Func<int, List<string>> <>9__2_3; public static Func<int, List<string>> <>9__2_4; public static Func<int, List<string>> <>9__2_5; internal void <.ctor>b__2_0(ConsoleEventArgs args) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_004b: 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) Helper.ArgsCheck(args, 2, "Missing the center/side parameter."); Helper.ArgsCheck(args, 3, "Missing the message"); MessageType val = (MessageType)2; if (args[1] == "side") { val = (MessageType)1; } string text = string.Join(" ", args.Args.Skip(2)); MessageHud.instance.MessageAll(val, text); } internal List<string> <.ctor>b__2_1(int index) { if (index == 0) { return Types; } return Modifiers; } internal List<string> <.ctor>b__2_2(int index) { return ParameterInfo.Create("Bolds the text."); } internal List<string> <.ctor>b__2_3(int index) { return ParameterInfo.Create("Italics the text."); } internal List<string> <.ctor>b__2_4(int index) { return ParameterInfo.Colors; } internal List<string> <.ctor>b__2_5(int index) { return ParameterInfo.Create("Size in pixels."); } } private static readonly List<string> Types = new List<string>(2) { "center", "side" }; private static readonly List<string> Modifiers = new List<string>(4) { "<b", "<color", "<i", "<size" }; public BroadcastCommand() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown object obj = <>c.<>9__2_0; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_004b: 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) Helper.ArgsCheck(args, 2, "Missing the center/side parameter."); Helper.ArgsCheck(args, 3, "Missing the message"); MessageType val2 = (MessageType)2; if (args[1] == "side") { val2 = (MessageType)1; } string text = string.Join(" ", args.Args.Skip(2)); MessageHud.instance.MessageAll(val2, text); }; <>c.<>9__2_0 = val; obj = (object)val; } Helper.Command("broadcast", "[center/side] [message] - Broadcasts a message.", (ConsoleEvent)obj); AutoComplete.Register("broadcast", (int index) => (index == 0) ? Types : Modifiers, new Dictionary<string, Func<int, List<string>>> { { "<b", (int index) => ParameterInfo.Create("Bolds the text.") }, { "<i", (int index) => ParameterInfo.Create("Italics the text.") }, { "<color", (int index) => ParameterInfo.Colors }, { "<size", (int index) => ParameterInfo.Create("Size in pixels.") } }); } } public class CalmCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<int, List<string>> <>9__0_0; public static ConsoleEvent <>9__0_1; internal List<string> <.ctor>b__0_0(int index) { if (index == 0) { return ParameterInfo.Create("Radius", "a positive integer"); } return ParameterInfo.None; } internal void <.ctor>b__0_1(ConsoleEventArgs args) { //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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) Vector3 position = ((Component)Helper.GetPlayer()).transform.position; float num = args.TryParameterFloat(1, 20f); int num2 = 0; foreach (BaseAI instance in BaseAI.Instances) { BaseAI val = instance; if (Vector3.Distance(position, ((Component)val).transform.position) <= num && (val.IsAlerted() || val.IsAggravated() || val.HaveTarget())) { val.m_nview.ClaimOwnership(); val.SetAggravated(false, (AggravatedReason)1); val.SetAlerted(false); val.SetTargetInfo(ZDOID.None); MonsterAI val2 = (MonsterAI)(object)((val is MonsterAI) ? val : null); if (val2 != null) { val2.m_targetCreature = null; val2.m_targetStatic = null; } AnimalAI val3 = (AnimalAI)(object)((val is AnimalAI) ? val : null); if (val3 != null) { val3.m_target = null; } num2++; } } Helper.AddMessage(args.Context, $"Calmed {num2} creatures."); } } public CalmCommand() { //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown AutoComplete.Register("calm", (int index) => (index == 0) ? ParameterInfo.Create("Radius", "a positive integer") : ParameterInfo.None); object obj = <>c.<>9__0_1; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { //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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) Vector3 position = ((Component)Helper.GetPlayer()).transform.position; float num = args.TryParameterFloat(1, 20f); int num2 = 0; foreach (BaseAI instance in BaseAI.Instances) { BaseAI val2 = instance; if (Vector3.Distance(position, ((Component)val2).transform.position) <= num && (val2.IsAlerted() || val2.IsAggravated() || val2.HaveTarget())) { val2.m_nview.ClaimOwnership(); val2.SetAggravated(false, (AggravatedReason)1); val2.SetAlerted(false); val2.SetTargetInfo(ZDOID.None); MonsterAI val3 = (MonsterAI)(object)((val2 is MonsterAI) ? val2 : null); if (val3 != null) { val3.m_targetCreature = null; val3.m_targetStatic = null; } AnimalAI val4 = (AnimalAI)(object)((val2 is AnimalAI) ? val2 : null); if (val4 != null) { val4.m_target = null; } num2++; } } Helper.AddMessage(args.Context, $"Calmed {num2} creatures."); }; <>c.<>9__0_1 = val; obj = (object)val; } Helper.Command("calm", "[radius=20] - Calms creatures within given meters.", (ConsoleEvent)obj); } } public class ConfigCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<int, List<string>> <>9__0_0; public static ConsoleEvent <>9__1_0; public static ConsoleOptionsFetcher <>9__1_1; internal List<string> <RegisterAutoComplete>b__0_0(int index) { if (index == 0) { return Settings.Options; } return ParameterInfo.Create("Value"); } internal void <.ctor>b__1_0(ConsoleEventArgs args) { if (args.Length >= 2) { if (args.Length == 2) { Settings.UpdateValue(args.Context, args[1], ""); } else { Settings.UpdateValue(args.Context, args[1], string.Join(" ", args.Args.Skip(2))); } } } internal List<string> <.ctor>b__1_1() { return Settings.Options; } } private void RegisterAutoComplete(string command) { AutoComplete.Register(command, (int index) => (index == 0) ? Settings.Options : ParameterInfo.Create("Value")); } public ConfigCommand() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown object obj = <>c.<>9__1_0; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { if (args.Length >= 2) { if (args.Length == 2) { Settings.UpdateValue(args.Context, args[1], ""); } else { Settings.UpdateValue(args.Context, args[1], string.Join(" ", args.Args.Skip(2))); } } }; <>c.<>9__1_0 = val; obj = (object)val; } object obj2 = <>c.<>9__1_1; if (obj2 == null) { ConsoleOptionsFetcher val2 = () => Settings.Options; <>c.<>9__1_1 = val2; obj2 = (object)val2; } new ConsoleCommand("dev_config", "[key] [value] - Toggles or sets config value.", (ConsoleEvent)obj, false, false, false, false, false, (ConsoleOptionsFetcher)obj2, false, false, false); RegisterAutoComplete("dev_config"); } } public static class DefaultAutoComplete { public static void Register() { //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Expected O, but got Unknown AutoComplete.RegisterEmpty("aggravate"); AutoComplete.RegisterEmpty("challenge"); AutoComplete.RegisterEmpty("cheers"); AutoComplete.RegisterEmpty("clear"); AutoComplete.Register("fov ", (int index) => (index == 0) ? ParameterInfo.Create("Amount", "a positive number") : ParameterInfo.None); AutoComplete.RegisterEmpty("hidebetatext"); AutoComplete.Register("help ", (int index) => index switch { 0 => ParameterInfo.Create("Page", "number"), 1 => ParameterInfo.Create("Page size", "a positive integer (default is 5)"), _ => ParameterInfo.None, }); AutoComplete.RegisterEmpty("info"); AutoComplete.Register("lodbias", (int index) => (index == 0) ? ParameterInfo.Create("Amount", "a positive number") : ParameterInfo.None); AutoComplete.RegisterEmpty("nonono"); AutoComplete.RegisterEmpty("opterrain"); AutoComplete.RegisterEmpty("point"); AutoComplete.RegisterEmpty("ping"); ConsoleOptionsFetcher originalFetcher = Terminal.commands["raiseskill"].m_tabOptionsFetcher; Terminal.commands["raiseskill"].m_tabOptionsFetcher = new ConsoleOptionsFetcher(newFetcher); AutoComplete.Register("raiseskill", delegate(int index) { ConsoleOptionsFetcher tabOptionsFetcher = Terminal.commands["raiseskill"].m_tabOptionsFetcher; return index switch { 0 => tabOptionsFetcher.Invoke(), 1 => ParameterInfo.Create("Amount of skill levels gained or lost (if negative)."), _ => ParameterInfo.None, }; }); AutoComplete.RegisterEmpty("resetbinds"); AutoComplete.RegisterEmpty("resetsharedmap"); AutoComplete.RegisterEmpty("resetspawn"); AutoComplete.RegisterEmpty("respawn"); AutoComplete.Register("s", (int index) => ParameterInfo.Create("Message")); AutoComplete.Register("say", (int index) => ParameterInfo.Create("Message")); AutoComplete.RegisterEmpty("restartparty"); AutoComplete.RegisterEmpty("sit"); AutoComplete.RegisterEmpty("thumbsup"); AutoComplete.RegisterEmpty("tutorialreset"); AutoComplete.RegisterEmpty("tutorialtoggle"); AutoComplete.RegisterEmpty("wave"); AutoComplete.Register("W", (int index) => (index == 0) ? ParameterInfo.PlayerNames : ParameterInfo.Create("Message")); AutoComplete.RegisterAdmin("ban"); AutoComplete.RegisterEmpty("banned"); AutoComplete.RegisterAdmin("kick"); AutoComplete.RegisterEmpty("save"); AutoComplete.RegisterAdmin("unban"); AutoComplete.Register("beard", (int index) => (index == 0) ? ParameterInfo.Beards : ParameterInfo.None); AutoComplete.RegisterEmpty("clearstatus"); AutoComplete.RegisterEmpty("dpsdebug"); AutoComplete.RegisterEmpty("exploremap"); AutoComplete.Register("ffsmooth", (int index) => (index == 0) ? ParameterInfo.Create("0 = normal, 1 = add smooth movement") : ParameterInfo.None); AutoComplete.RegisterEmpty("fly"); AutoComplete.RegisterEmpty("freefly"); AutoComplete.Register("forcedelete", (int index) => index switch { 0 => ParameterInfo.Create("Radius", "in meters (from 0.0 to 50.0, default is 5.0)."), 1 => ParameterInfo.ObjectIds, _ => ParameterInfo.None, }); AutoComplete.RegisterEmpty("gc"); AutoComplete.RegisterEmpty("ghost"); AutoComplete.RegisterEmpty("god"); AutoComplete.Register("hair", (int index) => (index == 0) ? ParameterInfo.Hairs : ParameterInfo.None); AutoComplete.RegisterEmpty("heal"); AutoComplete.Register("itemset", (int index) => index switch { 0 => Terminal.commands["itemset"].m_tabOptionsFetcher.Invoke(), 1 => new List<string>(2) { "keep", "clear" }, _ => ParameterInfo.None, }); AutoComplete.RegisterEmpty("killenemycreatures"); AutoComplete.RegisterEmpty("killtame"); AutoComplete.RegisterEmpty("listkeys"); AutoComplete.Register("location", (int index) => index switch { 0 => ParameterInfo.LocationIds, 1 => new List<string>(1) { "SAVE" }, _ => ParameterInfo.None, }); AutoComplete.Register("maxfps", (int index) => (index == 0) ? ParameterInfo.Create("Amount", "a positive integer") : ParameterInfo.None); AutoComplete.Register("model", (int index) => (index == 0) ? ParameterInfo.Create("<color=yellow>0</color> = male, <color=yellow>1</color> = female") : ParameterInfo.None); AutoComplete.RegisterEmpty("nocost"); AutoComplete.RegisterEmpty("noportals"); AutoComplete.Register("players", (int index) => (index == 0) ? ParameterInfo.Create("Amount", "a positive integer (0 disables the override)") : ParameterInfo.None); AutoComplete.RegisterEmpty("printcreatures"); AutoComplete.RegisterEmpty("printseeds"); AutoComplete.RegisterEmpty("printlocations"); AutoComplete.RegisterEmpty("puke"); AutoComplete.RegisterEmpty("removebirds"); AutoComplete.RegisterEmpty("removedrops"); AutoComplete.RegisterEmpty("removefish"); AutoComplete.Register("recall ", (int index) => (index == 0) ? ParameterInfo.PlayerNames : ParameterInfo.None); AutoComplete.RegisterEmpty("resetcharacter"); AutoComplete.RegisterEmpty("resetenv"); AutoComplete.RegisterEmpty("resetwind"); AutoComplete.Register("removekey", (int index) => (index == 0) ? ParameterInfo.GlobalKeys : ParameterInfo.None); AutoComplete.Register("setkey", (int index) => (index == 0) ? ParameterInfo.GlobalKeys : ParameterInfo.None); AutoComplete.RegisterDefault("setpower"); AutoComplete.Register("spawn", delegate(int index) { switch (index) { case 0: return ParameterInfo.ObjectIds; case 1: return ParameterInfo.Create("Amount", "a positive integer (default 1)"); case 2: return ParameterInfo.Create("Level", "a positive integer (default 1)"); default: if (index == 2) { return ParameterInfo.Create("<color=yellow>p</color> to automatically pick up items. <color=yellow>e</color> to automatically equip items."); } return ParameterInfo.None; } }); AutoComplete.RegisterEmpty("tame"); AutoComplete.Register("test", (int index) => (index == 0) ? new List<string>(1) { "oldcomfort" } : ParameterInfo.None); AutoComplete.RegisterEmpty("time"); AutoComplete.Register("timescale", (int index) => index switch { 0 => ParameterInfo.Create("Multiplier", "sets how fast the time goes (from 0.0 to 3.0). Value 0 can be used to pause the game."), 1 => ParameterInfo.Create("Transition duration", "causes the change to be applied gradually over time (seconds). Default value 0 applies the change instantly."), _ => ParameterInfo.None, }); AutoComplete.Register("tod", (int index) => (index == 0) ? ParameterInfo.Create("Time", "overrides the time of the day (from 0.0 to 1.0, with 0.5 being the mid day). Value -1 removes the override.") : ParameterInfo.None); List<string> newFetcher() { //IL_0012: 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) List<string> list = originalFetcher.Invoke(); SkillType val = (SkillType)999; if (!list.Contains(((object)(SkillType)(ref val)).ToString())) { val = (SkillType)999; list.Add(((object)(SkillType)(ref val)).ToString()); } return list; } } } public class DevcommandsCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ConsoleEvent <>9__3_0; internal void <.ctor>b__3_0(ConsoleEventArgs args) { if (Terminal.m_cheat) { Set(args.Context, value: false); return; } if (Object.op_Implicit((Object)(object)ZNet.instance) && ZNet.instance.IsServer()) { Toggle(args.Context); return; } args.Context.AddString("Authenticating for devcommands..."); Admin.ManualCheck(); } } public static void Toggle(Terminal terminal) { bool value = !Terminal.m_cheat; if (terminal != null) { terminal.AddString("Devcommands: " + value); } Gogan.LogEvent("Cheat", "CheatsEnabled", value.ToString(), 0L); Set(value); } public static void Set(Terminal terminal, bool value) { if (terminal != null) { terminal.AddString("Devcommands: " + value); } Gogan.LogEvent("Cheat", "CheatsEnabled", value.ToString(), 0L); Set(value); } public static void Set(bool value) { if (Terminal.m_cheat == value) { return; } if (Settings.AutoTod != "" && !value) { ((Terminal)Console.instance).TryRunCommand("tod -1", false, false); } if (Settings.AutoEnv != "" && !value) { ((Terminal)Console.instance).TryRunCommand("resetenv", false, false); } Terminal.m_cheat = value; if (Settings.AutoTod != "" && value) { ((Terminal)Console.instance).TryRunCommand("tod " + Settings.AutoTod, false, false); } if (Settings.AutoEnv != "" && value) { ((Terminal)Console.instance).TryRunCommand("env " + Settings.AutoEnv, false, false); } ((Terminal)Console.instance).updateCommandList(); ((Terminal)Chat.instance).updateCommandList(); Player localPlayer = Player.m_localPlayer; if (Settings.AutoDebugMode) { Player.m_debugMode = value; } if (Object.op_Implicit((Object)(object)localPlayer)) { if (Settings.AutoGodMode) { localPlayer.SetGodMode(value); } if (Settings.AutoGhostMode) { localPlayer.SetGhostMode(value); } if (Settings.AutoFly) { localPlayer.m_debugFly = value; ((Character)localPlayer).m_nview.GetZDO().Set("DebugFly", value); } if (Settings.AutoNoCost) { localPlayer.m_noPlacementCost = value; } } if (value && Settings.AutoExecDevOn != "") { ((Terminal)Console.instance).TryRunCommand(Settings.AutoExecDevOn, false, false); } if (!value && Settings.AutoExecDevOff != "") { ((Terminal)Console.instance).TryRunCommand(Settings.AutoExecDevOff, false, false); } } public DevcommandsCommand() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown object obj = <>c.<>9__3_0; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { if (Terminal.m_cheat) { Set(args.Context, value: false); } else if (Object.op_Implicit((Object)(object)ZNet.instance) && ZNet.instance.IsServer()) { Toggle(args.Context); } else { args.Context.AddString("Authenticating for devcommands..."); Admin.ManualCheck(); } }; <>c.<>9__3_0 = val; obj = (object)val; } new ConsoleCommand("devcommands", "Toggles cheats", (ConsoleEvent)obj, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); AutoComplete.RegisterEmpty("devcommands"); } } public class DevCommandsAdmin : DefaultAdmin { protected override void OnSuccess() { base.OnSuccess(); DevcommandsCommand.Set(value: true); ((Terminal)Console.instance).AddString("Authorized to use devcommands."); } protected override void OnFail() { base.OnFail(); DevcommandsCommand.Set(value: false); ((Terminal)Console.instance).AddString("Unauthorized to use devcommands."); } public override void AutomaticCheck() { if (Settings.AutoDevcommands) { base.AutomaticCheck(); } } public override void Reset() { base.Reset(); DevcommandsCommand.Set(value: false); } } [HarmonyPatch(typeof(Terminal), "IsCheatsEnabled")] public class IsCheatsEnabledWithoutServerCheck { private static void Postfix(ref bool __result) { int num; if (!Terminal.m_cheat) { ZNet instance = ZNet.instance; num = ((instance != null && instance.IsDedicated()) ? 1 : 0); } else { num = 1; } __result = (byte)num != 0; } } [HarmonyPatch(typeof(ConsoleCommand), "IsValid")] public class IsValidWithoutServerCheck { private static void Postfix(ref bool __result) { int num; if (!__result && !Terminal.m_cheat) { ZNet instance = ZNet.instance; num = ((instance != null && instance.IsDedicated()) ? 1 : 0); } else { num = 1; } __result = (byte)num != 0; } } [HarmonyPatch(typeof(Terminal), "Awake")] public class AutoCompleteSecrets { private static void Postfix(ref bool ___m_autoCompleteSecrets) { ___m_autoCompleteSecrets = true; } } public class DmgCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<PlayerInfo, string> <>9__0_2; public static ConsoleEvent <>9__0_0; public static Func<int, List<string>> <>9__0_1; internal void <.ctor>b__0_0(ConsoleEventArgs args) { //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00a4: Unknown result type (might be due to invalid IL or missing references) Helper.ArgsCheck(args, 2, "Missing target."); Helper.ArgsCheck(args, 3, "Missing amount."); string text = args.Args[1]; float num = Parse.Float(args.Args[2]); float num2 = Math.Abs(num); string arg = ((num >= 0f) ? " damage" : " healing"); List<PlayerInfo> list = PlayerInfo.FindPlayers(new string[1] { text }); foreach (PlayerInfo item in list) { if (num >= 0f) { HitData val = new HitData { m_damage = { m_damage = num }, m_hitType = (HitType)14 }; ZRoutedRpc.instance.InvokeRoutedRPC(0L, item.ZDOID, "RPC_Damage", new object[1] { val }); } else { ZRoutedRpc.instance.InvokeRoutedRPC(0L, item.ZDOID, "RPC_Heal", new object[2] { num2, true }); } } string text2 = string.Format("{0}{1} applied to: {2}", num2, arg, string.Join(", ", list.Select((PlayerInfo p) => p.Name))); args.Context.AddString(text2); } internal string <.ctor>b__0_2(PlayerInfo p) { return p.Name; } internal List<string> <.ctor>b__0_1(int index) { switch (index) { case 0: { string item = "others"; string item2 = "all"; List<string> playerNames = ParameterInfo.PlayerNames; List<string> list = new List<string>(2 + playerNames.Count); list.Add(item); list.Add(item2); list.AddRange(playerNames); return list; } case 1: return ParameterInfo.Create("Value", "Positive = damage / Negative = healing"); default: return ParameterInfo.None; } } } public DmgCommand() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown object obj = <>c.<>9__0_0; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00a4: Unknown result type (might be due to invalid IL or missing references) Helper.ArgsCheck(args, 2, "Missing target."); Helper.ArgsCheck(args, 3, "Missing amount."); string text = args.Args[1]; float num = Parse.Float(args.Args[2]); float num2 = Math.Abs(num); string arg = ((num >= 0f) ? " damage" : " healing"); List<PlayerInfo> list2 = PlayerInfo.FindPlayers(new string[1] { text }); foreach (PlayerInfo item3 in list2) { if (num >= 0f) { HitData val2 = new HitData { m_damage = { m_damage = num }, m_hitType = (HitType)14 }; ZRoutedRpc.instance.InvokeRoutedRPC(0L, item3.ZDOID, "RPC_Damage", new object[1] { val2 }); } else { ZRoutedRpc.instance.InvokeRoutedRPC(0L, item3.ZDOID, "RPC_Heal", new object[2] { num2, true }); } } string text2 = string.Format("{0}{1} applied to: {2}", num2, arg, string.Join(", ", list2.Select((PlayerInfo p) => p.Name))); args.Context.AddString(text2); }; <>c.<>9__0_0 = val; obj = (object)val; } Helper.Command("dmg", "[target] [amount] - (Negative values heal the character).", (ConsoleEvent)obj); AutoComplete.Register("dmg", delegate(int index) { switch (index) { case 0: { string item = "others"; string item2 = "all"; List<string> playerNames = ParameterInfo.PlayerNames; List<string> list = new List<string>(2 + playerNames.Count); list.Add(item); list.Add(item2); list.AddRange(playerNames); return list; } case 1: return ParameterInfo.Create("Value", "Positive = damage / Negative = healing"); default: return ParameterInfo.None; } }); } } public class EnvCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ConsoleEvent <>9__0_0; public static Func<int, List<string>> <>9__0_1; internal void <.ctor>b__0_0(ConsoleEventArgs args) { <>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0(); EnvMan instance = EnvMan.instance; if (!Object.op_Implicit((Object)(object)instance)) { return; } if (args.Length < 2) { Helper.AddMessage(args.Context, $"Environment: {instance.GetCurrentEnvironment()}."); return; } CS$<>8__locals0.text = string.Join(" ", args.Args, 1, args.Args.Length - 1); if (!EnvMan.instance.m_environments.Any((EnvSetup env) => env.m_name == CS$<>8__locals0.text)) { CS$<>8__locals0.text = CS$<>8__locals0.text.Replace("_", " "); } Helper.AddMessage(args.Context, "Setting debug environment: " + CS$<>8__locals0.text); instance.m_debugEnv = CS$<>8__locals0.text; } internal List<string> <.ctor>b__0_1(int index) { if (index != 0) { return ParameterInfo.None; } return ParameterInfo.Environments; } } [CompilerGenerated] private sealed class <>c__DisplayClass0_0 { public string text; internal bool <.ctor>b__2(EnvSetup env) { return env.m_name == text; } } public EnvCommand() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown object obj = <>c.<>9__0_0; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { EnvMan instance = EnvMan.instance; if (Object.op_Implicit((Object)(object)instance)) { if (args.Length < 2) { Helper.AddMessage(args.Context, $"Environment: {instance.GetCurrentEnvironment()}."); } else { string text = string.Join(" ", args.Args, 1, args.Args.Length - 1); if (!EnvMan.instance.m_environments.Any((EnvSetup env) => env.m_name == text)) { text = text.Replace("_", " "); } Helper.AddMessage(args.Context, "Setting debug environment: " + text); instance.m_debugEnv = text; } } }; <>c.<>9__0_0 = val; obj = (object)val; } Helper.Command("env", "[value] - Prints or overrides the environment.", (ConsoleEvent)obj); AutoComplete.Register("env", (int index) => (index != 0) ? ParameterInfo.None : ParameterInfo.Environments); } } public class FindCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<LocationInstance, Tuple<string, Vector3>> <>9__0_3; public static Func<ZDO, Tuple<string, Vector3>> <>9__0_5; public static Func<Tuple<string, Vector3>, string> <>9__0_8; public static Func<Tuple<string, Vector3>, string> <>9__0_9; public static ConsoleEvent <>9__0_0; public static Func<int, List<string>> <>9__0_1; internal void <.ctor>b__0_0(ConsoleEventArgs args) { //IL_00f6: 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) <>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0 { args = args }; Helper.ArgsCheck(CS$<>8__locals0.args, 2, "Missing the search term."); if (CS$<>8__locals0.args.Length < 3) { ConsoleEventArgs args2 = CS$<>8__locals0.args; string[] args3 = CS$<>8__locals0.args.Args; int num = 0; string[] array = new string[1 + args3.Length]; string[] array2 = args3; foreach (string text in array2) { array[num] = text; num++; } array[num] = "10"; num++; args2.Args = array; } string[] args4 = Helper.AddPlayerPosXZY(CS$<>8__locals0.args.Args, 3); if (!ZNet.instance.IsServer()) { ServerExecution.Send((IEnumerable<string>)args4); return; } CS$<>8__locals0.prefabs = Selector.GetAllPrefabs(new string[1] { CS$<>8__locals0.args[1] }); CS$<>8__locals0.pos = Parse.VectorXZY(string.Join(",", CS$<>8__locals0.args.Args.Skip(3))); List<LocationInstance> list = (from l in ZoneSystem.instance.GetLocationList() where Helper.IsValid(l.m_location) && l.m_location.m_prefab.Name == CS$<>8__locals0.args[1] select l).ToList(); if (CS$<>8__locals0.prefabs.Count <= 0 && list.Count <= 0) { <>c__DisplayClass0_1 CS$<>8__locals1 = new <>c__DisplayClass0_1 { lower = CS$<>8__locals0.args[1].ToLower() }; list = (from l in ZoneSystem.instance.GetLocationList() where Helper.IsValid(l.m_location) && l.m_location.m_prefab.Name.ToLower().Contains(CS$<>8__locals1.lower) select l).ToList(); CS$<>8__locals0.prefabs = Selector.GetAllPrefabs(new string[1] { "*" + CS$<>8__locals0.args[1] + "*" }); } List<Tuple<string, Vector3>> list2 = list.Select((LocationInstance l) => Tuple.Create<string, Vector3>(l.m_location.m_prefab.Name, l.m_position)).ToList(); IEnumerable<ZDO> source = ZDOMan.instance.m_objectsByID.Values.Where((ZDO zdo) => zdo.IsValid() && CS$<>8__locals0.prefabs.Contains(zdo.GetPrefab())); list2.AddRange(source.Select((ZDO zdo) => Tuple.Create<string, Vector3>(((Object)ZNetScene.instance.GetPrefab(zdo.m_prefab)).name, zdo.GetPosition()))); list2.Sort((Tuple<string, Vector3> a, Tuple<string, Vector3> b) => Vector3.Distance(a.Item2, CS$<>8__locals0.pos).CompareTo(Vector3.Distance(b.Item2, CS$<>8__locals0.pos))); int count = list2.Count; list2 = list2.Take(Parse.Int(CS$<>8__locals0.args.Args, 2, 10)).ToList(); List<string> values = list2.Select((Tuple<string, Vector3> p) => Format(CS$<>8__locals0.pos, p.Item2, p.Item1)).ToList(); CS$<>8__locals0.args.Context.AddString($"Found {count} of {CS$<>8__locals0.args[1]}. Showing {list2.Count} closest:"); CS$<>8__locals0.args.Context.AddString(string.Join("\n", values)); if (RedirectOutput.Target == null) { ServerExecution.RPC_Do_Pins(null, string.Join("|", list2.Select((Tuple<string, Vector3> item) => Helper.PrintVectorXZY(item.Item2)))); return; } RedirectOutput.Target.Invoke(ServerExecution.RPC_Pins, new object[1] { string.Join("|", list2.Select((Tuple<string, Vector3> item) => Helper.PrintVectorXZY(item.Item2))) }); } internal Tuple<string, Vector3> <.ctor>b__0_3(LocationInstance l) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) return Tuple.Create<string, Vector3>(l.m_location.m_prefab.Name, l.m_position); } internal Tuple<string, Vector3> <.ctor>b__0_5(ZDO zdo) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) return Tuple.Create<string, Vector3>(((Object)ZNetScene.instance.GetPrefab(zdo.m_prefab)).name, zdo.GetPosition()); } internal string <.ctor>b__0_8(Tuple<string, Vector3> item) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Helper.PrintVectorXZY(item.Item2); } internal string <.ctor>b__0_9(Tuple<string, Vector3> item) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Helper.PrintVectorXZY(item.Item2); } internal List<string> <.ctor>b__0_1(int index) { return index switch { 0 => ParameterInfo.Ids, 1 => ParameterInfo.Create("Max amount", "a positive integer (default 10)"), 2 => ParameterInfo.Create("X coordinate", "if not specified, the current position is used"), 3 => ParameterInfo.Create("Z coordinate", "if not specified, the current position is used"), _ => ParameterInfo.None, }; } } [CompilerGenerated] private sealed class <>c__DisplayClass0_0 { public ConsoleEventArgs args; public HashSet<int> prefabs; public Vector3 pos; internal bool <.ctor>b__2(LocationInstance l) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) if (Helper.IsValid(l.m_location)) { return l.m_location.m_prefab.Name == args[1]; } return false; } internal bool <.ctor>b__4(ZDO zdo) { if (zdo.IsValid()) { return prefabs.Contains(zdo.GetPrefab()); } return false; } internal int <.ctor>b__6(Tuple<string, Vector3> a, Tuple<string, Vector3> b) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) return Vector3.Distance(a.Item2, pos).CompareTo(Vector3.Distance(b.Item2, pos)); } internal string <.ctor>b__7(Tuple<string, Vector3> p) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return Format(pos, p.Item2, p.Item1); } } [CompilerGenerated] private sealed class <>c__DisplayClass0_1 { public string lower; internal bool <.ctor>b__10(LocationInstance l) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) if (Helper.IsValid(l.m_location)) { return l.m_location.m_prefab.Name.ToLower().Contains(lower); } return false; } } public FindCommand() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown ConsoleCommand val = Terminal.commands["find"]; string description = val.Description; object obj = <>c.<>9__0_0; if (obj == null) { ConsoleEvent val2 = delegate(ConsoleEventArgs args) { //IL_00f6: 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) Helper.ArgsCheck(args, 2, "Missing the search term."); if (args.Length < 3) { ConsoleEventArgs val3 = args; string[] args2 = args.Args; int num = 0; string[] array = new string[1 + args2.Length]; string[] array2 = args2; foreach (string text in array2) { array[num] = text; num++; } array[num] = "10"; num++; val3.Args = array; } string[] args3 = Helper.AddPlayerPosXZY(args.Args, 3); if (!ZNet.instance.IsServer()) { ServerExecution.Send((IEnumerable<string>)args3); } else { HashSet<int> prefabs = Selector.GetAllPrefabs(new string[1] { args[1] }); Vector3 pos = Parse.VectorXZY(string.Join(",", args.Args.Skip(3))); List<LocationInstance> list = (from l in ZoneSystem.instance.GetLocationList() where Helper.IsValid(l.m_location) && l.m_location.m_prefab.Name == args[1] select l).ToList(); if (prefabs.Count <= 0 && list.Count <= 0) { string lower = args[1].ToLower(); list = (from l in ZoneSystem.instance.GetLocationList() where Helper.IsValid(l.m_location) && l.m_location.m_prefab.Name.ToLower().Contains(lower) select l).ToList(); prefabs = Selector.GetAllPrefabs(new string[1] { "*" + args[1] + "*" }); } List<Tuple<string, Vector3>> list2 = list.Select((LocationInstance l) => Tuple.Create<string, Vector3>(l.m_location.m_prefab.Name, l.m_position)).ToList(); IEnumerable<ZDO> source = ZDOMan.instance.m_objectsByID.Values.Where((ZDO zdo) => zdo.IsValid() && prefabs.Contains(zdo.GetPrefab())); list2.AddRange(source.Select((ZDO zdo) => Tuple.Create<string, Vector3>(((Object)ZNetScene.instance.GetPrefab(zdo.m_prefab)).name, zdo.GetPosition()))); list2.Sort((Tuple<string, Vector3> a, Tuple<string, Vector3> b) => Vector3.Distance(a.Item2, pos).CompareTo(Vector3.Distance(b.Item2, pos))); int count = list2.Count; list2 = list2.Take(Parse.Int(args.Args, 2, 10)).ToList(); List<string> values = list2.Select((Tuple<string, Vector3> p) => Format(pos, p.Item2, p.Item1)).ToList(); args.Context.AddString($"Found {count} of {args[1]}. Showing {list2.Count} closest:"); args.Context.AddString(string.Join("\n", values)); if (RedirectOutput.Target == null) { ServerExecution.RPC_Do_Pins(null, string.Join("|", list2.Select((Tuple<string, Vector3> item) => Helper.PrintVectorXZY(item.Item2)))); } else { RedirectOutput.Target.Invoke(ServerExecution.RPC_Pins, new object[1] { string.Join("|", list2.Select((Tuple<string, Vector3> item) => Helper.PrintVectorXZY(item.Item2))) }); } } }; <>c.<>9__0_0 = val2; obj = (object)val2; } Helper.Command("find", description, (ConsoleEvent)obj); AutoComplete.Register("find", (int index) => index switch { 0 => ParameterInfo.Ids, 1 => ParameterInfo.Create("Max amount", "a positive integer (default 10)"), 2 => ParameterInfo.Create("X coordinate", "if not specified, the current position is used"), 3 => ParameterInfo.Create("Z coordinate", "if not specified, the current position is used"), _ => ParameterInfo.None, }); } private static string Format(Vector3 pos, Vector3 p, string name) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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) float num = Vector3.Distance(pos, p); return string.Format(Settings.FindFormat.Replace("{pos_x", "{0").Replace("{pos_y", "{1").Replace("{pos_z", "{2") .Replace("{distance", "{3") .Replace("{name", "{4"), p.x, p.y, p.z, num, name); } } public class GotoCommand { private Vector3? LastPosition; private Quaternion? LastRotation; private void ParseArgs(ConsoleEventArgs args, Player player, ref Vector3 pos, ref Quaternion rot) { //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0108: 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_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_009d: 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_00a2: Unknown result type (might be due to invalid IL or missing references) if (args.Length < 2) { pos.y = WorldGenerator.instance.GetHeight(pos.x, pos.z); return; } if (args.Length == 2 && args[1] == "last") { if (!LastPosition.HasValue) { throw new InvalidOperationException("No last position"); } pos = (Vector3)(((??)LastPosition) ?? pos); rot = (Quaternion)(((??)LastRotation) ?? rot); return; } string[] array = Parse.Split(args[1]); if (args.Length > 2) { array = args.Args.Skip(1).ToArray(); } if (Parse.TryFloat(array[0], out var value)) { if (array.Length < 2) { pos.y = value; return; } Vector3 val = Parse.VectorXZY(array); float num = (((Character)player).IsDebugFlying() ? ((Component)player).transform.position.y : WorldGenerator.instance.GetHeight(val.x, val.z)); pos = Parse.VectorXZY(array, new Vector3(pos.x, num, pos.z)); } else { PlayerInfo val2 = Helper.FindPlayer(string.Join(" ", args.Args.Skip(1))); pos = val2.m_position; } } public GotoCommand() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown AutoComplete.Register("goto", delegate(int index, int subIndex) { if (index == 0 && subIndex == 0) { return ParameterInfo.PublicPlayerNames; } return (index == 0) ? ParameterInfo.XZY("Coordinates", subIndex) : ParameterInfo.XZY("Coordinates", index); }); Helper.Command("goto", "[x,z,y or altitude or last or player or no parameter] - Teleports to the coordinates. If y is not given, teleports to the ground level.", (ConsoleEvent)delegate(ConsoleEventArgs args) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0031: 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_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) Player player = Helper.GetPlayer(); Vector3 pos = ((Component)player).transform.position; Quaternion rot = ((Component)player).transform.rotation; ParseArgs(args, player, ref pos, ref rot); LastPosition = ((Component)player).transform.position; LastRotation = ((Component)player).transform.rotation; ((Character)player).TeleportTo(pos, rot, true); Helper.AddMessage(args.Context, $"Teleported to (X,Z,Y): {pos.x}, {pos.z}, {pos.y}."); }); } } [HarmonyPatch(typeof(Player), "TeleportTo")] public class FasterTeleport1 { private static void Postfix(Player __instance, bool __result) { if (Settings.DebugModeFastTeleport && __result && Player.m_debugMode) { __instance.m_teleportTimer = 15f; } } } [HarmonyPatch(typeof(Player), "UpdateTeleport")] public class FasterTeleport2 { private static void Postfix(Player __instance) { if (Settings.DebugModeFastTeleport && Player.m_debugMode) { __instance.m_teleportCooldown = Mathf.Max(__instance.m_teleportCooldown, 1.5f); } } } public class HUDCommand { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ConsoleEvent <>9__0_0; public static Func<int, List<string>> <>9__0_1; internal void <.ctor>b__0_0(ConsoleEventArgs args) { if (!Object.op_Implicit((Object)(object)Hud.m_instance)) { Helper.AddMessage(args.Context, "Error: No HUD instance."); return; } if (args.Length >= 2) { Hud.m_instance.m_userHidden = args[1] != "1"; } else { Hud.m_instance.m_userHidden = !Hud.m_instance.m_userHidden; } string text = (Hud.m_instance.m_userHidden ? "disabled" : "enabled"); Helper.AddMessage(args.Context, "Hud " + text + "."); } internal List<string> <.ctor>b__0_1(int index) { if (index == 0) { return ParameterInfo.Create("1 = enable, 0 = disable, no value = toggle"); } return ParameterInfo.None; } } public HUDCommand() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown object obj = <>c.<>9__0_0; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { if (!Object.op_Implicit((Object)(object)Hud.m_instance)) { Helper.AddMessage(args.Context, "Error: No HUD instance."); } else { if (args.Length >= 2) { Hud.m_instance.m_userHidden = args[1] != "1"; }