using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Configuration; using BepInEx.Core.Logging.Interpolation; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using HarmonyLib; using Il2CppInterop.Runtime; using Il2CppSystem.Collections.Generic; using Microsoft.CodeAnalysis; using ProjectM; using ProjectM.CastleBuilding; using ProjectM.Scripting; using ProjectM.UI; using Stunlock.Core; using Unity.Collections; using Unity.Entities; using Unity.Mathematics; using Unity.Transforms; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; using VampireCommandFramework; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("SmartQuickStash")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.1.2.0")] [assembly: AssemblyInformationalVersion("0.1.2")] [assembly: AssemblyProduct("SmartQuickStash")] [assembly: AssemblyTitle("SmartQuickStash")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.1.2.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [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] [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; } } } namespace SmartQuickStash { internal static class Commands { [Command("smartstash", "sstash", null, "Smart-stash nearby inventory items.", null, false)] public static void SmartStash(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) SmartStashService.Result result = SmartStashService.Stash(ctx.Event.SenderCharacterEntity); ctx.Reply($"Smart stash: moved {result.Moved} item(s), {result.Remaining} left; {result.Containers} container(s) scanned."); } } internal static class Core { internal static World Server => FindWorld("Server") ?? throw new InvalidOperationException("Server world is not ready."); internal static EntityManager EntityManager => Server.EntityManager; internal static PrefabCollectionSystem Prefabs => Server.GetExistingSystemManaged(); internal static ServerScriptMapper ScriptMapper => Server.GetExistingSystemManaged(); internal static ServerGameManager GameManager => ScriptMapper.GetServerGameManager(); private static World? FindWorld(string name) { Enumerator enumerator = World.s_AllWorlds.GetEnumerator(); while (enumerator.MoveNext()) { if (enumerator.Current.Name == name) { return enumerator.Current; } } return null; } } internal static class EcsExtensions { public static bool Has(this Entity entity) where T : struct { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) ComponentType val = ComponentType.ReadOnly(Il2CppType.Of()); EntityManager entityManager = Core.EntityManager; return ((EntityManager)(ref entityManager)).HasComponent(entity, val); } public unsafe static T Read(this Entity entity) where T : struct { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: 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) ComponentType val = ComponentType.ReadOnly(Il2CppType.Of()); EntityManager entityManager = Core.EntityManager; return Marshal.PtrToStructure(new IntPtr(((EntityManager)(ref entityManager)).GetComponentDataRawRO(entity, val.TypeIndex))); } public static DynamicBuffer ReadBuffer(this Entity entity) where T : struct { //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) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = Core.EntityManager; return ((EntityManager)(ref entityManager)).GetBuffer(entity, false); } } [HarmonyPatch(typeof(ClientChatSystem), "OnUpdate")] internal static class HotkeyPatch { private static readonly MethodInfo? Submit = AccessTools.Method(typeof(ClientChatSystem), "_OnInputEndEdit", (Type[])null, (Type[])null); private static DateTime _lastUse; [HarmonyPostfix] private static void Postfix(ClientChatSystem __instance) { //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Expected O, but got Unknown //IL_004a: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown //IL_008a: Unknown result type (might be due to invalid IL or missing references) bool flag = default(bool); try { Keyboard current = Keyboard.current; if (current == null || DateTime.UtcNow - _lastUse < TimeSpan.FromMilliseconds(400.0)) { return; } if (!Enum.TryParse(Plugin.Hotkey.Value, ignoreCase: true, out Key result)) { result = (Key)21; } if (((ButtonControl)current[result]).wasPressedThisFrame) { _lastUse = DateTime.UtcNow; ManualLogSource log = ((BasePlugin)Plugin.Instance).Log; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(40, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Hotkey "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(result); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" pressed; requesting smart stash."); } log.LogInfo(val); Submit?.Invoke(__instance, new object[1] { ".smartstash" }); } } catch (Exception ex) { ManualLogSource log2 = ((BasePlugin)Plugin.Instance).Log; BepInExErrorLogInterpolatedStringHandler val2 = new BepInExErrorLogInterpolatedStringHandler(15, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("Hotkey failed: "); ((BepInExLogInterpolatedStringHandler)val2).AppendFormatted(ex); } log2.LogError(val2); } } } [BepInPlugin("kaern.vrising.smartquickstash", "Smart Quick Stash", "0.1.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] public sealed class Plugin : BasePlugin { public const string Guid = "kaern.vrising.smartquickstash"; public const string Name = "Smart Quick Stash"; public const string Version = "0.1.2"; internal static Plugin Instance { get; private set; } internal static ConfigEntry Range { get; private set; } internal static ConfigEntry Hotkey { get; private set; } internal static ConfigEntry SkipUniqueItems { get; private set; } internal static Harmony Harmony { get; private set; } public override void Load() { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Expected O, but got Unknown Instance = this; Range = ((BasePlugin)this).Config.Bind("Storage", "Range", 50f, "Maximum stash range in world units. About 5 units is one floor tile."); Hotkey = ((BasePlugin)this).Config.Bind("Input", "Hotkey", "G", "Client hotkey from Unity InputSystem.Key, for example G, H, F6."); SkipUniqueItems = ((BasePlugin)this).Config.Bind("Safety", "SkipUniqueItems", true, "Skip item-entity stacks such as modified equipment to preserve instance data."); ((BasePlugin)this).Config.Save(); Harmony = new Harmony("kaern.vrising.smartquickstash"); Harmony.PatchAll(Assembly.GetExecutingAssembly()); CommandRegistry.RegisterAll(); ManualLogSource log = ((BasePlugin)this).Log; bool flag = default(bool); BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(26, 4, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted("Smart Quick Stash"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted("0.1.2"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" loaded; hotkey="); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(Hotkey.Value); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(", range="); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(Range.Value); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("."); } log.LogInfo(val); } public override bool Unload() { CommandRegistry.UnregisterAssembly(); Harmony.UnpatchSelf(); return true; } } internal static class SmartStashService { internal readonly record struct Result(int Moved, int Remaining, int Containers); private readonly record struct Target(Entity Owner, Entity Inventory, float Distance, PrefabGUID RestrictedType, long RestrictedCategory) { internal bool IsSpecialized { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) PrefabGUID restrictedType = RestrictedType; if (((PrefabGUID)(ref restrictedType)).GuidHash == 0) { return RestrictedCategory != 0; } return true; } } [CompilerGenerated] private bool PrintMembers(StringBuilder builder) { //IL_000e: 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_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_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) builder.Append("Owner = "); builder.Append(((object)Owner/*cast due to .constrained prefix*/).ToString()); builder.Append(", Inventory = "); builder.Append(((object)Inventory/*cast due to .constrained prefix*/).ToString()); builder.Append(", Distance = "); builder.Append(Distance.ToString()); builder.Append(", RestrictedType = "); builder.Append(((object)RestrictedType/*cast due to .constrained prefix*/).ToString()); builder.Append(", RestrictedCategory = "); builder.Append(RestrictedCategory.ToString()); return true; } } private static readonly PrefabGUID ExternalInventoryPrefab = new PrefabGUID(1183666186); internal static Result Stash(Entity character) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //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_0016: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014d: 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_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = Core.EntityManager; ServerGameManager manager = Core.GameManager; Entity playerInventory = default(Entity); if (!InventoryUtilities.TryGetInventoryEntity(entityManager, character, ref playerInventory, 0)) { return new Result(0, 0, 0); } float3 value = character.Read().Value; List list = (from x in FindTargets(character, value, Plugin.Range.Value) where x.Inventory != Entity.Null && x.Inventory != playerInventory group x by x.Inventory into g select g.OrderByDescending((Target x) => x.IsSpecialized).First() into x orderby x.Distance select x).ToList(); Dictionary dictionary = new Dictionary(); DynamicBuffer val = playerInventory.ReadBuffer(); for (int num = 8; num < val.Length; num++) { InventoryBuffer val2 = val[num]; if (((PrefabGUID)(ref val2.ItemType)).GuidHash == 0 || val2.Amount <= 0) { continue; } if (Plugin.SkipUniqueItems.Value) { ref NetworkedEntity itemEntity = ref val2.ItemEntity; object obj = NetworkedEntity.Empty; if (!((object)Unsafe.As(ref itemEntity)/*cast due to .constrained prefix*/).Equals(obj)) { continue; } } dictionary.TryGetValue(val2.ItemType, out var value2); dictionary[val2.ItemType] = value2 + val2.Amount; } int num2 = 0; int num3 = 0; foreach (KeyValuePair pair in dictionary) { int value3 = pair.Value; value3 = TransferTo(manager, playerInventory, pair.Key, value3, list.Where((Target t) => ((ServerGameManager)(ref manager)).GetInventoryItemCount(t.Inventory, pair.Key) > 0)); if (value3 > 0 && TryGetItemCategory(pair.Key, out var category)) { value3 = TransferTo(manager, playerInventory, pair.Key, value3, list.Where((Target t) => t.IsSpecialized && Accepts(t, pair.Key, category))); } if (value3 > 0) { value3 = TransferTo(manager, playerInventory, pair.Key, value3, list.Where((Target t) => !t.IsSpecialized)); } num2 += pair.Value - value3; num3 += value3; } return new Result(num2, num3, list.Count); } private static bool Accepts(Target target, PrefabGUID item, long category) { //IL_0002: 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_0013: 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) PrefabGUID restrictedType = target.RestrictedType; if (((PrefabGUID)(ref restrictedType)).GuidHash == 0 || target.RestrictedType == item) { if (target.RestrictedCategory != 0L) { return (target.RestrictedCategory & category) != 0; } return true; } return false; } private static int TransferTo(ServerGameManager manager, Entity source, PrefabGUID item, int amount, IEnumerable targets) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) foreach (Target target in targets) { if (amount <= 0) { break; } amount -= Transfer(manager, source, target.Inventory, item, amount); } return amount; } private static int Transfer(ServerGameManager manager, Entity source, Entity destination, PrefabGUID item, int amount) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: 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_0012: 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_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0026: 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_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) if (!((ServerGameManager)(ref manager)).TryRemoveInventoryItem(source, item, amount)) { return 0; } AddItemResponse val = ((ServerGameManager)(ref manager)).TryAddInventoryItem(destination, item, amount); if ((int)val.Result == 0) { return amount; } if (val.RemainingAmount > 0) { ((ServerGameManager)(ref manager)).TryAddInventoryItem(source, item, val.RemainingAmount); } return amount - val.RemainingAmount; } private static bool TryGetItemCategory(PrefabGUID item, out long category) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: 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_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected I8, but got Unknown category = 0L; Entity val = Entity.Null; PrefabLookupMap prefabLookupMap = Core.Prefabs._PrefabLookupMap; if (!((PrefabLookupMap)(ref prefabLookupMap)).TryGetValue(item, ref val) || val == Entity.Null || !val.Has()) { return false; } category = (long)val.Read().ItemCategory; return true; } private static List FindTargets(Entity character, float3 origin, float range) { //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) //IL_0006: 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_001e: 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_0024: 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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0078: 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_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: 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_00f4: Unknown result type (might be due to invalid IL or missing references) //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) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: 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_0108: Unknown result type (might be due to invalid IL or missing references) //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_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = Core.EntityManager; if (!TryGetAlliedCastleHeart(character, out var castleHeart) || !castleHeart.Has()) { return new List(); } SharedCastleInventoryConnection val = castleHeart.Read(); Entity entityOnServer = ((NetworkedEntity)(ref val.SharedInventoryManager)).GetEntityOnServer(); if (entityOnServer == Entity.Null || !entityOnServer.Has()) { return new List(); } List list = new List(); Enumerator enumerator = entityOnServer.ReadBuffer().GetEnumerator(); while (enumerator.MoveNext()) { Entity inventorySource = enumerator.Current.InventorySource; if (inventorySource == Entity.Null || !((EntityManager)(ref entityManager)).Exists(inventorySource) || !inventorySource.Has()) { continue; } float2 xz = ((float3)(ref origin)).xz; Translation val2 = inventorySource.Read(); float num = math.distance(xz, ((float3)(ref val2.Value)).xz); if (num > range) { continue; } if (inventorySource.Has()) { Enumerator enumerator2 = inventorySource.ReadBuffer().GetEnumerator(); while (enumerator2.MoveNext()) { InventoryInstanceElement current = enumerator2.Current; NetworkedEntity externalInventoryEntity = current.ExternalInventoryEntity; Entity entityOnServer2 = ((NetworkedEntity)(ref externalInventoryEntity)).GetEntityOnServer(); if (entityOnServer2 != Entity.Null) { list.Add(new Target(inventorySource, entityOnServer2, num, current.RestrictedType, current.RestrictedCategory)); } } } if (!inventorySource.Has()) { continue; } Enumerator enumerator3 = inventorySource.ReadBuffer().GetEnumerator(); while (enumerator3.MoveNext()) { AttachedBuffer current2 = enumerator3.Current; Entity entity = current2.Entity; if (entity.Has() && !(entity.Read() != ExternalInventoryPrefab) && list.All((Target t) => t.Inventory != entity)) { list.Add(new Target(inventorySource, entity, num, PrefabGUID.Empty, 0L)); } } } return list; } private static bool TryGetAlliedCastleHeart(Entity character, out Entity castleHeart) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0031: 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_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: 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_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: 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_010d: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) castleHeart = Entity.Null; if (!character.Has()) { return false; } EntityManager entityManager = Core.EntityManager; TilePosition val = character.Read(); EntityQuery val2 = ((EntityManager)(ref entityManager)).CreateEntityQuery((ComponentType[])(object)new ComponentType[1] { ComponentType.ReadOnly(Il2CppType.Of()) }); NativeArray val3 = ((EntityQuery)(ref val2)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)); Entity val4 = Entity.Null; try { Enumerator enumerator = val3.GetEnumerator(); while (enumerator.MoveNext()) { Entity current = enumerator.Current; CastleTerritory val5 = default(CastleTerritory); if (CastleTerritoryExtensions.IsTileInTerritory(entityManager, val.Tile, ref current, ref val5)) { val4 = current; break; } } } finally { val3.Dispose(); ((EntityQuery)(ref val2)).Dispose(); } if (val4 == Entity.Null) { return false; } EntityQuery val6 = ((EntityManager)(ref entityManager)).CreateEntityQuery((ComponentType[])(object)new ComponentType[1] { ComponentType.ReadOnly(Il2CppType.Of()) }); NativeArray val7 = ((EntityQuery)(ref val6)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)); try { Enumerator enumerator = val7.GetEnumerator(); while (enumerator.MoveNext()) { Entity current2 = enumerator.Current; if (!(current2.Read().CastleTerritoryEntity != val4)) { if (!Team.IsAllies(entityManager, character, current2)) { return false; } castleHeart = current2; return true; } } } finally { val7.Dispose(); ((EntityQuery)(ref val6)).Dispose(); } return false; } } }