Decompiled source of KindredLogistics v1.6.0
KindredLogistics.dll
Decompiled a week ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.Json; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Core.Logging.Interpolation; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using BepInEx.Unity.IL2CPP.Utils.Collections; using HarmonyLib; using HookDOTS.API; using HookDOTS.API.Attributes; using Il2CppInterop.Runtime; using Il2CppSystem; using Il2CppSystem.Collections.Generic; using KindredLogistics; using KindredLogistics.Commands.Converters; using KindredLogistics.Services; using Microsoft.CodeAnalysis; using ProjectM; using ProjectM.CastleBuilding; using ProjectM.CastleBuilding.Rebuilding; using ProjectM.Gameplay.Systems; using ProjectM.Network; using ProjectM.Physics; using ProjectM.Scripting; using ProjectM.Shared; using ProjectM.Shared.Systems; using ProjectM.Terrain; using Stunlock.Core; using Stunlock.Localization; using Unity.Collections; using Unity.Entities; using Unity.Mathematics; using Unity.Physics; using Unity.Scenes; using Unity.Transforms; using UnityEngine; using VampireCommandFramework; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("KindredLogistics")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Inventory management mod. Stashing, craftpulling, finding chests, etc")] [assembly: AssemblyFileVersion("1.6.0.0")] [assembly: AssemblyInformationalVersion("1.6.0+0.Branch.main.Sha.62bb8fcf39ee2ebe62410e48ec8f8fdc72e85b10.b21c796f62dd8bdf4e968fe252f9b325bee6098a")] [assembly: AssemblyProduct("KindredLogistics")] [assembly: AssemblyTitle("KindredLogistics")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.6.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } internal class TrashService { private bool CanEmptyTrash(Entity charEntity, out int territoryIndex) { //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_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_0010: 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_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) //IL_0047: 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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_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_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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_0095: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: 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_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: 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_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Invalid comparison between Unknown and I4 //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_0117: 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_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) User user = charEntity.Read<PlayerCharacter>().UserEntity.Read<User>(); territoryIndex = Core.TerritoryService.GetTerritoryId(charEntity); if (territoryIndex == -1) { Utilities.SendSystemMessageToClient(Core.EntityManager, user, "Unable to empty trash outside territories!"); return false; } PrefabGUID val = default(PrefabGUID); ((PrefabGUID)(ref val))..ctor(-1992158531); Entity val2 = default(Entity); if (BuffUtility.TryGetBuff<EntityManager>(Core.EntityManager, charEntity, PrefabIdentifier.op_Implicit(val), ref val2)) { Utilities.SendSystemMessageToClient(Core.EntityManager, user, "Unable to empty trash while downed!"); return false; } if (charEntity.Read<Health>().IsDead) { Utilities.SendSystemMessageToClient(Core.EntityManager, user, "Unable to empty trash when dead!"); return false; } Entity castleHeart = Core.TerritoryService.GetCastleHeart(territoryIndex); if (castleHeart == Entity.Null) { Utilities.SendSystemMessageToClient(Core.EntityManager, user, "There is no heart on this territory!"); return false; } ServerGameManager serverGameManager = Core.ServerGameManager; if (!((ServerGameManager)(ref serverGameManager)).IsAllies(castleHeart, charEntity)) { Utilities.SendSystemMessageToClient(Core.EntityManager, user, "You aren't allies with the heart on this territory!"); return false; } CastleHeart val3 = castleHeart.Read<CastleHeart>(); if ((int)val3.ActiveEvent >= 2) { Utilities.SendSystemMessageToClient(Core.EntityManager, user, "Unable to empty trash while castle is " + ((object)(CastleHeartEvent)(ref val3.ActiveEvent)).ToString()); return false; } Entity val4 = default(Entity); if (BuffUtility.TryGetBuff<EntityManager>(Core.Server.EntityManager, charEntity, PrefabIdentifier.op_Implicit(Const.Buff_InCombat_PvPVampire), ref val4)) { Utilities.SendSystemMessageToClient(Core.EntityManager, user, "Unable to empty trash while in PvP combat."); return false; } return true; } public void EmptyTrash(Entity charEntity) { //IL_0001: 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_0027: 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_002e: 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_0043: 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_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: 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_00a9: 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_00af: 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_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) if (!CanEmptyTrash(charEntity, out var territoryIndex)) { return; } int num = 0; Entity val = default(Entity); foreach (Entity allTrashStash in Core.Stash.GetAllTrashStashes(territoryIndex)) { if (!InventoryUtilities.TryGetInventoryEntity<EntityManager>(Core.EntityManager, allTrashStash, ref val, 0)) { continue; } EntityManager entityManager = Core.EntityManager; DynamicBuffer<InventoryBuffer> buffer = ((EntityManager)(ref entityManager)).GetBuffer<InventoryBuffer>(val, false); for (int i = 0; i < buffer.Length; i++) { if (buffer[i].Amount != 0) { InventoryUtilitiesServer.ClearSlot(Core.EntityManager, val, i); } } num++; } User user = charEntity.Read<PlayerCharacter>().UserEntity.Read<User>(); Utilities.SendSystemMessageToClient(Core.EntityManager, user, "Trash emptied from " + Format.Color(num.ToString(), Color.White) + "x trash containers."); } public void EmptyTrash(Entity charEntity, Entity trashContainer) { //IL_0001: 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_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_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) //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_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0043: 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) Entity val = default(Entity); if (!CanEmptyTrash(charEntity, out var _) || !InventoryUtilities.TryGetInventoryEntity<EntityManager>(Core.EntityManager, trashContainer, ref val, 0)) { return; } EntityManager entityManager = Core.EntityManager; DynamicBuffer<InventoryBuffer> buffer = ((EntityManager)(ref entityManager)).GetBuffer<InventoryBuffer>(val, false); for (int i = 0; i < buffer.Length; i++) { if (buffer[i].Amount != 0) { InventoryUtilitiesServer.ClearSlot(Core.EntityManager, val, i); } } User user = charEntity.Read<PlayerCharacter>().UserEntity.Read<User>(); Utilities.SendSystemMessageToClient(Core.EntityManager, user, "Sunlight, at this hour, in this castle, localized entirely within this trash bin? This trash is ashed."); } } namespace Logistics.Commands { [CommandGroup("logistics", "l")] public static class LogisticsCommands { [Command("sortstash", "ss", ".l ss", "Toggles autostashing on double clicking sort button for player.", null, false)] public static void TogglePlayerAutoStash(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; bool flag = Core.PlayerSettings.ToggleSortStash(platformId); ctx.Reply("SortStash is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("craftpull", "cr", ".l cr", "Toggles right-clicking on recipes for missing ingredients.", null, false)] public static void TogglePlayerAutoPull(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; bool flag = Core.PlayerSettings.ToggleCraftPull(platformId); ctx.Reply("CraftPull is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("dontpulllast", "dpl", ".l dpl", "Toggles the ability to not pull the last item from a container for Logistics commands.", null, false)] public static void ToggleDontPullLast(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; bool flag = Core.PlayerSettings.ToggleDontPullLast(platformId); ctx.Reply("DontPullLast is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("autostashmissions", "asm", ".l asm", "Toggles autostashing for servant missions.", null, false)] public static void ToggleServantAutoStash(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; bool flag = Core.PlayerSettings.ToggleAutoStashMissions(platformId); ctx.Reply("AutoStash for missions is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("conveyor", "co", ".l co", "Toggles the ability of sender/receiver's to move items around.", null, false)] public static void ToggleConveyor(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; bool flag = Core.PlayerSettings.ToggleConveyor(platformId); ctx.Reply("Conveyor is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("salvage", "sal", ".l sal", "Toggles the ability to salvage items from a chest named 'salvage'.", null, false)] public static void ToggleSalvage(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; bool flag = Core.PlayerSettings.ToggleSalvage(platformId); ctx.Reply("Salvage is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("unitspawner", "us", ".l sp", "Toggles the ability to fill unit stations from a chest named 'spawner'.", null, false)] public static void ToggleUnitSpawner(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; bool flag = Core.PlayerSettings.ToggleUnitSpawner(platformId); ctx.Reply("Spawner is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("brazier", "bz", ".l bz", "Toggles the ability to fill braziers from a chest named 'brazier'.", null, false)] public static void ToggleBrazier(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; bool flag = Core.PlayerSettings.ToggleBrazier(platformId); ctx.Reply("Brazier is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("silentpull", "sp", null, "Toggles the ability to not send messages when pulling about where they came from.", null, false)] public static void ToggleSilentCraftPull(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; bool flag = Core.PlayerSettings.ToggleSilentPull(platformId); ctx.Reply("SilentPull is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("silentstash", "ssh", null, "Toggles the ability to not send messages when stashing items about where they go.", null, false)] public static void ToggleSilentStash(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; bool flag = Core.PlayerSettings.ToggleSilentStash(platformId); ctx.Reply("SilentStash is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("settings", "s", ".l s", "Displays current settings.", null, false)] public static void DisplaySettings(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ulong platformId = ctx.Event.User.PlatformId; PlayerSettingsService.PlayerSettings settings = Core.PlayerSettings.GetSettings(platformId); PlayerSettingsService.PlayerSettings globalSettings = Core.PlayerSettings.GetGlobalSettings(); ctx.Reply("KindredLogistics Settings:\nSortStash: " + ((!globalSettings.SortStash) ? "<color=red>Server Off</color>" : (settings.SortStash ? "<color=green>On</color>" : "<color=red>Off</color>")) + "\nPull (Global) : " + (globalSettings.Pull ? "<color=green>Server On</color>" : "<color=red>Server Off</color>") + "\nCraftPull: " + ((!globalSettings.CraftPull) ? "<color=red>Server Off</color>" : (settings.CraftPull ? "<color=green>On</color>" : "<color=red>Off</color>")) + "\nDontPullLast: " + (settings.DontPullLast ? "<color=green>On</color>" : "<color=red>Off</color>") + "\nAutoStashMissions: " + ((!globalSettings.AutoStashMissions) ? "<color=red>Server Off</color>" : (settings.AutoStashMissions ? "<color=green>On</color>" : "<color=red>Off</color>")) + "\nConveyor: " + ((!globalSettings.Conveyor) ? "<color=red>Server Off</color>" : (settings.Conveyor ? "<color=green>On</color>" : "<color=red>Off</color>")) + "\nSalvage: " + ((!globalSettings.Salvage) ? "<color=red>Server Off</color>" : (settings.Salvage ? "<color=green>On</color>" : "<color=red>Off</color>")) + "\nUnitSpawner: " + ((!globalSettings.UnitSpawner) ? "<color=red>Server Off</color>" : (settings.UnitSpawner ? "<color=green>On</color>" : "<color=red>Off</color>")) + "\nBrazier: " + ((!globalSettings.Brazier) ? "<color=red>Server Off</color>" : (settings.Brazier ? "<color=green>On</color>" : "<color=red>Off</color>")) + " | Named: " + (globalSettings.Named ? "<color=green>Server On</color>" : "<color=red>Server Off</color>") + "\nSilent (Pull: " + (settings.SilentPull ? "<color=green>On</color>" : "<color=red>Off</color>") + " | Stash: " + (settings.SilentStash ? "<color=green>On</color>" : "<color=red>Off</color>") + ")"); } } [CommandGroup("logisticsglobal", "lg")] public static class LogisticsGlobal { [Command("sortstash", "ss", ".lg ss", "Toggles autostashing on double clicking sort button for player.", null, true)] public static void TogglePlayerAutoStash(ChatCommandContext ctx) { bool flag = Core.PlayerSettings.ToggleSortStash(0uL); ctx.Reply("Global SortStash is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("pull", "p", ".lg p", "Toggles the ability to pull items from containers.", null, true)] public static void TogglePlayerPull(ChatCommandContext ctx) { bool flag = Core.PlayerSettings.TogglePull(); ctx.Reply("Global Pull is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("craftpull", "cr", ".lg cr", "Toggles right-clicking on recipes for missing ingredients.", null, true)] public static void TogglePlayerAutoPull(ChatCommandContext ctx) { bool flag = Core.PlayerSettings.ToggleCraftPull(0uL); ctx.Reply("CraftPull is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("autostashmissions", "asm", ".lg asm", "Toggles autostashing for servant missions.", null, true)] public static void ToggleServantAutoStash(ChatCommandContext ctx) { bool flag = Core.PlayerSettings.ToggleAutoStashMissions(0uL); ctx.Reply("Global AutoStash for missions is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("conveyor", "co", ".lg co", "Toggles the ability of sender/receiver's to move items around.", null, true)] public static void ToggleConveyor(ChatCommandContext ctx) { bool flag = Core.PlayerSettings.ToggleConveyor(0uL); ctx.Reply("Global Conveyor is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("salvage", "sal", ".lg sal", "Toggles the ability to salvage items from a chest named 'salvage'.", null, true)] public static void ToggleSalvage(ChatCommandContext ctx) { bool flag = Core.PlayerSettings.ToggleSalvage(0uL); ctx.Reply("Global Salvage is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("unitspawner", "us", ".lg sp", "Toggles the ability to fill unit stations from a chest named 'spawner'.", null, true)] public static void ToggleUnitSpawner(ChatCommandContext ctx) { bool flag = Core.PlayerSettings.ToggleUnitSpawner(0uL); ctx.Reply("Global Spawner is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("brazier", "bz", ".lg bz", "Toggles the ability to fill braziers from a chest named 'brazier'.", null, true)] public static void ToggleBrazier(ChatCommandContext ctx) { bool flag = Core.PlayerSettings.ToggleBrazier(0uL); ctx.Reply("Global Brazier is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("named", "nam", ".lg nam", "Toggles the ability allow night/proximity controlled braziers.", null, true)] public static void ToggleSolar(ChatCommandContext ctx) { bool flag = Core.PlayerSettings.ToggleSolar(0uL); ctx.Reply("Global Named is " + (flag ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "."); } [Command("settings", "s", ".lg s", "Displays current settings.", null, true)] public static void DisplaySettings(ChatCommandContext ctx) { PlayerSettingsService.PlayerSettings globalSettings = Core.PlayerSettings.GetGlobalSettings(); ctx.Reply("KindredLogistics Global settings:\nSortStash: " + (globalSettings.SortStash ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "\nPull: " + (globalSettings.Pull ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "\nCraftPull: " + (globalSettings.CraftPull ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "\nAutoStashMissions: " + (globalSettings.AutoStashMissions ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "\nConveyor: " + (globalSettings.Conveyor ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "\nSalvage: " + (globalSettings.Salvage ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "\nUnitSpawner: " + (globalSettings.UnitSpawner ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "\nBrazier: " + (globalSettings.Brazier ? "<color=green>enabled</color>" : "<color=red>disabled</color>") + "\nNamed: " + (globalSettings.Named ? "<color=green>enabled</color>" : "<color=red>disabled</color>")); } } public static class AdditionalCommands { [Command("stash", null, null, "Stashes all items in your inventory.", null, false)] public static void StashInventory(ChatCommandContext ctx) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) Core.Stash.StashCharacterInventory(ctx.Event.SenderCharacterEntity); } [Command("pull", null, null, "Pulls specified item from containers.", null, false)] public static void PullItem(ChatCommandContext ctx, FoundItem item, int quantity = 1) { //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) PullService.PullItem(ctx.Event.SenderCharacterEntity, item.prefab, quantity); } [Command("finditem", "fi", null, "Finds the specified item in containers", null, false)] public static void FindItem(ChatCommandContext ctx, FoundItem item) { //IL_000b: 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) Core.Stash.ReportWhereItemIsLocated(ctx.Event.SenderCharacterEntity, item.prefab); } [Command("findchest", "fc", null, "Finds the specified chest by name", null, false)] public static void FindChest(ChatCommandContext ctx, string name) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) Core.Stash.ReportWhereChestIsLocated(ctx.Event.SenderCharacterEntity, name); } [Command("emptytrash", null, null, "Empties all items in your trash containers.", null, true)] public static void EmptyTrash(ChatCommandContext ctx) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) Core.Trash.EmptyTrash(ctx.Event.SenderCharacterEntity); } [Command("adminstash", null, null, "Spawns in items to stash to the current territory.", null, true)] public static void AdminStash(ChatCommandContext ctx, FoundItem item, int quantity = 1) { //IL_000b: 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) Core.Stash.AdminStash(ctx.Event.SenderCharacterEntity, item.prefab, quantity); } } } namespace KindredLogistics { internal class Buffs { public delegate void BuffCreated(Entity buffEntity); [CompilerGenerated] private sealed class <RemoveAndAddBuffCoroutine>d__4 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public Entity targetEntity; public PrefabGUID buffPrefab; public Entity userEntity; public float duration; public BuffCreated callback; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <RemoveAndAddBuffCoroutine>d__4(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0018: 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_0041: 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_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_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; RemoveBuff(targetEntity, buffPrefab); break; case 1: <>1__state = -1; break; } if (BuffUtility.HasBuff<EntityManager>(Core.EntityManager, targetEntity, PrefabIdentifier.op_Implicit(buffPrefab))) { <>2__current = null; <>1__state = 1; return true; } AddBuff(userEntity, targetEntity, buffPrefab, duration); Entity buffEntity = default(Entity); if (callback != null && BuffUtility.TryGetBuff<EntityManager>(Core.Server.EntityManager, targetEntity, PrefabIdentifier.op_Implicit(buffPrefab), ref buffEntity)) { callback(buffEntity); } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static bool AddBuff(Entity User, Entity Character, PrefabGUID buffPrefab, float duration = 0f, bool immortal = true) { //IL_000d: 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_0016: 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_001d: 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_0028: 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_0030: 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_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: 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_0045: 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_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_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0083: 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_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00af: 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_0115: 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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_011d: 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_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: 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_0103: 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_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00de: 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_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) DebugEventsSystem existingSystemManaged = Core.Server.GetExistingSystemManaged<DebugEventsSystem>(); ApplyBuffDebugEvent val = default(ApplyBuffDebugEvent); val.BuffPrefabGUID = buffPrefab; ApplyBuffDebugEvent val2 = val; FromCharacter val3 = default(FromCharacter); val3.User = User; val3.Character = Character; FromCharacter val4 = val3; Entity entity = default(Entity); if (!BuffUtility.TryGetBuff<EntityManager>(Core.Server.EntityManager, Character, PrefabIdentifier.op_Implicit(buffPrefab), ref entity)) { existingSystemManaged.ApplyBuff(val4, val2); if (BuffUtility.TryGetBuff<EntityManager>(Core.Server.EntityManager, Character, PrefabIdentifier.op_Implicit(buffPrefab), ref entity)) { if (entity.Has<CreateGameplayEventsOnSpawn>()) { entity.Remove<CreateGameplayEventsOnSpawn>(); } if (entity.Has<GameplayEventListeners>()) { entity.Remove<GameplayEventListeners>(); } if (immortal) { entity.Add<Buff_Persists_Through_Death>(); if (entity.Has<RemoveBuffOnGameplayEvent>()) { entity.Remove<RemoveBuffOnGameplayEvent>(); } if (entity.Has<RemoveBuffOnGameplayEventEntry>()) { entity.Remove<RemoveBuffOnGameplayEventEntry>(); } } if (duration > -1f && duration != 0f) { if (!entity.Has<LifeTime>()) { entity.Add<LifeTime>(); entity.Write<LifeTime>(new LifeTime { EndAction = (LifeTimeEndAction)2 }); } LifeTime componentData = entity.Read<LifeTime>(); componentData.Duration = duration; entity.Write<LifeTime>(componentData); } else if (duration == -1f) { if (entity.Has<LifeTime>()) { LifeTime componentData2 = entity.Read<LifeTime>(); componentData2.Duration = -1f; componentData2.EndAction = (LifeTimeEndAction)0; entity.Write<LifeTime>(componentData2); } if (entity.Has<RemoveBuffOnGameplayEvent>()) { entity.Remove<RemoveBuffOnGameplayEvent>(); } if (entity.Has<RemoveBuffOnGameplayEventEntry>()) { entity.Remove<RemoveBuffOnGameplayEventEntry>(); } } return true; } return false; } return false; } public static void RemoveBuff(Entity Character, PrefabGUID buffPrefab) { //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_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_001a: Unknown result type (might be due to invalid IL or missing references) Entity val = default(Entity); if (BuffUtility.TryGetBuff<EntityManager>(Core.EntityManager, Character, PrefabIdentifier.op_Implicit(buffPrefab), ref val)) { DestroyUtility.Destroy(Core.EntityManager, val, (DestroyDebugReason)13, (string)null, 0); } } public static void RemoveAndAddBuff(Entity userEntity, Entity targetEntity, PrefabGUID buffPrefab, float duration = -1f, BuffCreated callback = null) { //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_0007: 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_0046: 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_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) //IL_0027: 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) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if (!BuffUtility.HasBuff<EntityManager>(Core.EntityManager, targetEntity, PrefabIdentifier.op_Implicit(buffPrefab))) { AddBuff(userEntity, targetEntity, buffPrefab, duration); Entity buffEntity = default(Entity); if (callback != null && BuffUtility.TryGetBuff<EntityManager>(Core.Server.EntityManager, targetEntity, PrefabIdentifier.op_Implicit(buffPrefab), ref buffEntity)) { callback(buffEntity); } } else { Core.StartCoroutine(RemoveAndAddBuffCoroutine(userEntity, targetEntity, buffPrefab, duration, callback)); } } [IteratorStateMachine(typeof(<RemoveAndAddBuffCoroutine>d__4))] private static IEnumerator RemoveAndAddBuffCoroutine(Entity userEntity, Entity targetEntity, PrefabGUID buffPrefab, float duration, BuffCreated callback) { //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) //IL_000e: 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_0015: 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) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <RemoveAndAddBuffCoroutine>d__4(0) { userEntity = userEntity, targetEntity = targetEntity, buffPrefab = buffPrefab, duration = duration, callback = callback }; } } internal static class Const { public const string RECEIVER_REGEX = "r(\\d+)"; public const string SENDER_REGEX = "s(\\d+)"; public static readonly PrefabGUID Buff_InCombat_PvPVampire = new PrefabGUID(697095869); } internal static class Core { public const int MAX_REPLY_LENGTH = 509; private static bool hasInitialized; private static MonoBehaviour monoBehaviour; public static World Server { get; } = GetWorld("Server") ?? throw new Exception("There is no Server world (yet). Did you install a server mod on the client?"); public static EntityManager EntityManager { get; } = Server.EntityManager; public static GameDataSystem GameDataSystem { get; } = Server.GetExistingSystemManaged<GameDataSystem>(); public static PrefabCollectionSystem PrefabCollectionSystem { get; internal set; } public static ServerGameSettingsSystem ServerGameSettingsSystem { get; internal set; } public static ServerScriptMapper ServerScriptMapper { get; internal set; } public static DebugEventsSystem DebugEventsSystem { get; internal set; } public static double ServerTime => ServerGameManager.ServerTime; public static ServerGameManager ServerGameManager => ServerScriptMapper.GetServerGameManager(); public static ManualLogSource Log => Plugin.LogInstance; public static ConveyorService ConveyorService { get; internal set; } public static LocalizationService Localization { get; } = new LocalizationService(); public static PlayerSettingsService PlayerSettings { get; } = new PlayerSettingsService(); public static RefinementStationsService RefinementStations { get; internal set; } public static RegionService RegionService { get; internal set; } public static SalvageService SalvageService { get; internal set; } public static StashService Stash { get; } = new StashService(); public static TrashService Trash { get; } = new TrashService(); public static TerritoryService TerritoryService { get; internal set; } public static UnitSpawnerstationService UnitSpawnerstationService { get; internal set; } public static BrazierService BrazierService { get; internal set; } internal static bool HasInitialized => hasInitialized; public static void LogException(Exception e, [CallerMemberName] string caller = null) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown ManualLogSource log = Log; bool flag = default(bool); BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(51, 5, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Failure in "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(caller); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("\nMessage: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.Message); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" Inner:"); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.InnerException?.Message); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("\n\nStack: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.StackTrace); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("\nInner Stack: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.InnerException?.StackTrace); } log.LogError(val); } public static void Initialize() { if (!hasInitialized) { PrefabCollectionSystem = Server.GetExistingSystemManaged<PrefabCollectionSystem>(); ServerGameSettingsSystem = Server.GetExistingSystemManaged<ServerGameSettingsSystem>(); DebugEventsSystem = Server.GetExistingSystemManaged<DebugEventsSystem>(); ServerScriptMapper = Server.GetExistingSystemManaged<ServerScriptMapper>(); RefinementStations = new RefinementStationsService(); RegionService = new RegionService(); SalvageService = new SalvageService(); TerritoryService = new TerritoryService(); UnitSpawnerstationService = new UnitSpawnerstationService(); BrazierService = new BrazierService(); ConveyorService = new ConveyorService(); FoundItemConverter.LoadItemNames(); FixAdvanceFurnaces(); Log.LogInfo((object)"KindredLogistics initialized"); hasInitialized = true; } } private static World GetWorld(string name) { Enumerator<World> enumerator = World.s_AllWorlds.GetEnumerator(); while (enumerator.MoveNext()) { World current = enumerator.Current; if (current.Name == name) { return current; } } return null; } public static void StartCoroutine(IEnumerator routine) { //IL_0012: 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_0027: Expected O, but got Unknown if ((Object)(object)monoBehaviour == (Object)null) { GameObject val = new GameObject("KindredLogistics"); monoBehaviour = (MonoBehaviour)(object)val.AddComponent<IgnorePhysicsDebugSystem>(); Object.DontDestroyOnLoad((Object)val); } monoBehaviour.StartCoroutine(CollectionExtensions.WrapToIl2Cpp(routine)); } private static void FixAdvanceFurnaces() { //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_001f: 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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: 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_0057: 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_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0086: 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_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009b: 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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: 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_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: 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_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Expected O, but got Unknown //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0119: 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_0150: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) EntityQueryBuilder val = new EntityQueryBuilder(AllocatorHandle.op_Implicit((Allocator)2)); val = ((EntityQueryBuilder)(ref val)).AddAll(new ComponentType(Il2CppType.Of<Refinementstation>(), (AccessMode)1)); val = ((EntityQueryBuilder)(ref val)).AddAll(new ComponentType(Il2CppType.Of<PrefabGUID>(), (AccessMode)1)); val = ((EntityQueryBuilder)(ref val)).AddAll(new ComponentType(Il2CppType.Of<RefinementstationRecipesBuffer>(), (AccessMode)0)); EntityQueryBuilder val2 = ((EntityQueryBuilder)(ref val)).WithOptions((EntityQueryOptions)3); EntityManager entityManager = EntityManager; EntityQuery val3 = ((EntityManager)(ref entityManager)).CreateEntityQuery(ref val2); ((EntityQueryBuilder)(ref val2)).Dispose(); NativeArray<Entity> val4 = ((EntityQuery)(ref val3)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)); PrefabGUID val5 = default(PrefabGUID); ((PrefabGUID)(ref val5))..ctor(461575192); Enumerator<Entity> enumerator = val4.GetEnumerator(); bool flag = default(bool); while (enumerator.MoveNext()) { Entity current = enumerator.Current; PrefabGUID val6 = current.Read<PrefabGUID>(); if (((PrefabGUID)(ref val6)).GuidHash != -222851985) { continue; } entityManager = EntityManager; DynamicBuffer<RefinementstationRecipesBuffer> buffer = ((EntityManager)(ref entityManager)).GetBuffer<RefinementstationRecipesBuffer>(current, false); for (int i = 0; i < buffer.Length; i++) { RefinementstationRecipesBuffer val7 = buffer[i]; if (((PrefabGUID)(ref val7.RecipeGuid)).GuidHash == 394757670) { ManualLogSource log = Log; BepInExInfoLogInterpolatedStringHandler val8 = new BepInExInfoLogInterpolatedStringHandler(29, 5, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val8).AppendLiteral("Replacing recipe "); ((BepInExLogInterpolatedStringHandler)val8).AppendFormatted<string>(val7.RecipeGuid.LookupName()); ((BepInExLogInterpolatedStringHandler)val8).AppendLiteral(" on "); ((BepInExLogInterpolatedStringHandler)val8).AppendFormatted<string>(current.EntityName()); ((BepInExLogInterpolatedStringHandler)val8).AppendLiteral(" "); ((BepInExLogInterpolatedStringHandler)val8).AppendFormatted<int>(current.Index); ((BepInExLogInterpolatedStringHandler)val8).AppendLiteral(":"); ((BepInExLogInterpolatedStringHandler)val8).AppendFormatted<int>(current.Version); ((BepInExLogInterpolatedStringHandler)val8).AppendLiteral(" with "); ((BepInExLogInterpolatedStringHandler)val8).AppendFormatted<string>(val5.LookupName()); } log.LogInfo(val8); val7.RecipeGuid = val5; buffer[i] = val7; } } } val4.Dispose(); ((EntityQuery)(ref val3)).Dispose(); } } public static class ECSExtensions { private static EntityManager EntityManager { get; } = Core.Server.EntityManager; public unsafe static void Write<T>(this Entity entity, T componentData) where T : struct { //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_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) ComponentType val = default(ComponentType); ((ComponentType)(ref val))..ctor(Il2CppType.Of<T>(), (AccessMode)0); byte[] array = StructureToByteArray(componentData); int num = Marshal.SizeOf<T>(); fixed (byte* ptr = array) { EntityManager entityManager = EntityManager; ((EntityManager)(ref entityManager)).SetComponentDataRaw(entity, val.TypeIndex, (void*)ptr, num); } } private static byte[] StructureToByteArray<T>(T structure) where T : struct { int num = Marshal.SizeOf(structure); byte[] array = new byte[num]; IntPtr intPtr = Marshal.AllocHGlobal(num); Marshal.StructureToPtr(structure, intPtr, fDeleteOld: true); Marshal.Copy(intPtr, array, 0, num); Marshal.FreeHGlobal(intPtr); return array; } public unsafe static T Read<T>(this Entity entity) where T : struct { //IL_000d: 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_0016: 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) ComponentType val = default(ComponentType); ((ComponentType)(ref val))..ctor(Il2CppType.Of<T>(), (AccessMode)0); EntityManager entityManager = EntityManager; return Marshal.PtrToStructure<T>(new IntPtr(((EntityManager)(ref entityManager)).GetComponentDataRawRO(entity, val.TypeIndex))); } public static DynamicBuffer<T> ReadBuffer<T>(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_000d: 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) EntityManager entityManager = Core.Server.EntityManager; return ((EntityManager)(ref entityManager)).GetBuffer<T>(entity, false); } public static bool Has<T>(this Entity entity) { //IL_000d: 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_0016: Unknown result type (might be due to invalid IL or missing references) ComponentType val = default(ComponentType); ((ComponentType)(ref val))..ctor(Il2CppType.Of<T>(), (AccessMode)0); EntityManager entityManager = EntityManager; return ((EntityManager)(ref entityManager)).HasComponent(entity, val); } public static string LookupName(this PrefabGUID prefabGuid) { //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_0012: 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_002a: Unknown result type (might be due to invalid IL or missing references) PrefabLookupMap prefabLookupMap = Core.Server.GetExistingSystemManaged<PrefabCollectionSystem>()._PrefabLookupMap; string text = default(string); object obj; if (!((PrefabLookupMap)(ref prefabLookupMap)).TryGetName(prefabGuid, ref text)) { obj = "GUID Not Found"; } else { string text2 = text; PrefabGUID val = prefabGuid; obj = text2 + " " + ((object)(PrefabGUID)(ref val)).ToString(); } return obj.ToString(); } public static string PrefabName(this PrefabGUID prefabGuid) { //IL_0005: 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) string prefabName = Core.Localization.GetPrefabName(prefabGuid); if (!string.IsNullOrEmpty(prefabName)) { return prefabName; } return prefabGuid.LookupName(); } public static string EntityName(this Entity entity) { //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_0006: 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_002a: 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) NameableInteractable val = entity.Read<NameableInteractable>(); string text = ((object)(FixedString64Bytes)(ref val.Name)).ToString(); if (string.IsNullOrEmpty(text) && entity.Has<PrefabGUID>()) { text = entity.Read<PrefabGUID>().PrefabName(); } if (string.IsNullOrEmpty(text)) { text = ((object)(Entity)(ref entity)).ToString(); } return text; } public static void Add<T>(this Entity entity) { //IL_000d: 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_0016: Unknown result type (might be due to invalid IL or missing references) ComponentType val = default(ComponentType); ((ComponentType)(ref val))..ctor(Il2CppType.Of<T>(), (AccessMode)0); EntityManager entityManager = EntityManager; ((EntityManager)(ref entityManager)).AddComponent(entity, val); } public static void Remove<T>(this Entity entity) { //IL_000d: 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_0016: Unknown result type (might be due to invalid IL or missing references) ComponentType val = default(ComponentType); ((ComponentType)(ref val))..ctor(Il2CppType.Of<T>(), (AccessMode)0); EntityManager entityManager = EntityManager; ((EntityManager)(ref entityManager)).RemoveComponent(entity, val); } } [BepInPlugin("KindredLogistics", "KindredLogistics", "1.6.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BasePlugin { private static Plugin plugin; private Harmony _harmony; public HookDOTS hookDOTS; public static Harmony Harmony => plugin._harmony; public static ManualLogSource LogInstance => ((BasePlugin)plugin).Log; public override void Load() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Expected O, but got Unknown //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown plugin = this; ManualLogSource log = ((BasePlugin)this).Log; bool flag = default(bool); BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(27, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Plugin "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("KindredLogistics"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" version "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("1.6.0"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is loaded!"); } log.LogInfo(val); _harmony = new Harmony("KindredLogistics"); _harmony.PatchAll(Assembly.GetExecutingAssembly()); CommandRegistry.RegisterAll(); hookDOTS = new HookDOTS("KindredLogistics", ((BasePlugin)this).Log); hookDOTS.RegisterAnnotatedHooks(); } public override bool Unload() { CommandRegistry.UnregisterAssembly(); Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } return true; } } public class Utilities { public static readonly ComponentType[] StashQuery = (ComponentType[])(object)new ComponentType[4] { ComponentType.ReadOnly(Il2CppType.Of<InventoryOwner>()), ComponentType.ReadOnly(Il2CppType.Of<CastleHeartConnection>()), ComponentType.ReadOnly(Il2CppType.Of<AttachedBuffer>()), ComponentType.ReadOnly(Il2CppType.Of<NameableInteractable>()) }; public static readonly ComponentType[] RefinementStationQuery = (ComponentType[])(object)new ComponentType[4] { ComponentType.ReadOnly(Il2CppType.Of<Team>()), ComponentType.ReadOnly(Il2CppType.Of<CastleHeartConnection>()), ComponentType.ReadOnly(Il2CppType.Of<Refinementstation>()), ComponentType.ReadOnly(Il2CppType.Of<NameableInteractable>()) }; public static readonly ComponentType[] UserEntityQuery = (ComponentType[])(object)new ComponentType[1] { ComponentType.ReadOnly(Il2CppType.Of<User>()) }; public static void StashServantInventory(Entity servant) { //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_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) Entity inventory = default(Entity); if (InventoryUtilities.TryGetInventoryEntity<EntityManager>(Core.EntityManager, servant, ref inventory, 0)) { StashInventoryEntity(servant, inventory, "spoils"); } } public static Dictionary<PrefabGUID, List<Entity>> GetItemStashesOnTerritory(int territoryId) { //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_002d: 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_0036: 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_004b: 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_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0066: 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_0074: 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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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) ServerGameManager serverGameManager = Core.ServerGameManager; Dictionary<PrefabGUID, List<Entity>> dictionary = new Dictionary<PrefabGUID, List<Entity>>(100); HashSet<PrefabGUID> hashSet = new HashSet<PrefabGUID>(32); DynamicBuffer<AttachedBuffer> val = default(DynamicBuffer<AttachedBuffer>); foreach (Entity item in Core.Stash.GetStashesOnTerritory(territoryId)) { if (!((ServerGameManager)(ref serverGameManager)).TryGetBuffer<AttachedBuffer>(item, ref val)) { continue; } Enumerator<AttachedBuffer> enumerator2 = val.GetEnumerator(); while (enumerator2.MoveNext()) { AttachedBuffer current2 = enumerator2.Current; hashSet.Clear(); Entity entity = current2.Entity; if (!entity.Has<PrefabGUID>()) { continue; } PrefabGUID val2 = entity.Read<PrefabGUID>(); if (!((PrefabGUID)(ref val2)).Equals(StashService.ExternalInventoryPrefab)) { continue; } Enumerator<InventoryBuffer> enumerator3 = entity.ReadBuffer<InventoryBuffer>().GetEnumerator(); while (enumerator3.MoveNext()) { PrefabGUID itemType = enumerator3.Current.ItemType; if (((PrefabGUID)(ref itemType)).GuidHash != 0 && !hashSet.Contains(itemType)) { if (!dictionary.TryGetValue(itemType, out var value)) { value = (dictionary[itemType] = new List<Entity>()); } value.Add(entity); hashSet.Add(itemType); } } } } return dictionary; } public static void StashInventoryEntity(Entity inventory, Dictionary<PrefabGUID, List<Entity>> itemInventories, List<Entity> overflows) { //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_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0037: 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_005b: 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_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) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_00ca: 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_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) ServerGameManager serverGameManager = Core.ServerGameManager; DynamicBuffer<InventoryBuffer> val = default(DynamicBuffer<InventoryBuffer>); if (!((ServerGameManager)(ref serverGameManager)).TryGetBuffer<InventoryBuffer>(inventory, ref val)) { return; } for (int i = 0; i < val.Length; i++) { PrefabGUID itemType = val[i].ItemType; if (((PrefabGUID)(ref itemType)).IsEmpty()) { continue; } int num = ((ServerGameManager)(ref serverGameManager)).GetInventoryItemCount(inventory, itemType); EntityManager entityManager; if (itemInventories.TryGetValue(itemType, out var value)) { for (int num2 = value.Count - 1; num2 >= 0; num2--) { Entity val2 = value[num2]; entityManager = Core.EntityManager; if (!((EntityManager)(ref entityManager)).Exists(val2)) { value.RemoveAt(num2); } else { int num3 = TransferItems(serverGameManager, inventory, val2, itemType, num); num -= num3; if (num <= 0) { break; } value.RemoveAt(num2); } } } if (num <= 0) { continue; } foreach (Entity overflow in overflows) { entityManager = Core.EntityManager; if (((EntityManager)(ref entityManager)).Exists(overflow)) { int num4 = TransferItems(serverGameManager, inventory, overflow, itemType, num); num -= num4; if (num <= 0) { break; } } } } } public static void StashInventoryEntity(Entity entityWithTerritory, Entity inventory, string overflowStashName) { //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_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_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02b4: Expected O, but got Unknown //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //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_0056: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_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_008a: 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_00a5: 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_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_020d: 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_0101: 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_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0119: 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) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_012f: 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_0139: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) ServerGameManager serverGameManager = Core.ServerGameManager; Dictionary<PrefabGUID, List<(Entity, Entity)>> dictionary = new Dictionary<PrefabGUID, List<(Entity, Entity)>>(100); (Entity, Entity) tuple = (Entity.Null, Entity.Null); try { Entity val2 = default(Entity); DynamicBuffer<AttachedBuffer> val3 = default(DynamicBuffer<AttachedBuffer>); foreach (Entity stash in Core.Stash.GetAllAlliedStashesOnTerritory(entityWithTerritory)) { NameableInteractable val = stash.Read<NameableInteractable>(); if (((object)(FixedString64Bytes)(ref val.Name)).ToString().ToLower().Contains(overflowStashName) && ((Entity)(ref tuple.Item1)).Equals(Entity.Null)) { if (!InventoryUtilities.TryGetInventoryEntity<EntityManager>(Core.EntityManager, stash, ref val2, 0)) { continue; } if (!((ServerGameManager)(ref serverGameManager)).HasFullInventory(val2)) { tuple = (stash, val2); continue; } } if (!((ServerGameManager)(ref serverGameManager)).TryGetBuffer<AttachedBuffer>(stash, ref val3)) { continue; } Enumerator<AttachedBuffer> enumerator2 = val3.GetEnumerator(); while (enumerator2.MoveNext()) { Entity entity = enumerator2.Current.Entity; if (!entity.Has<PrefabGUID>()) { continue; } PrefabGUID val4 = entity.Read<PrefabGUID>(); if (!((PrefabGUID)(ref val4)).Equals(StashService.ExternalInventoryPrefab)) { continue; } Enumerator<InventoryBuffer> enumerator3 = entity.ReadBuffer<InventoryBuffer>().GetEnumerator(); while (enumerator3.MoveNext()) { PrefabGUID itemType = enumerator3.Current.ItemType; if (((PrefabGUID)(ref itemType)).GuidHash != 0) { if (!dictionary.TryGetValue(itemType, out var value)) { value = (dictionary[itemType] = new List<(Entity, Entity)>()); } else if (value.Any<(Entity, Entity)>(((Entity stash, Entity inventory) x) => x.stash == stash)) { continue; } value.Add((stash, entity)); } } } } DynamicBuffer<InventoryBuffer> val5 = default(DynamicBuffer<InventoryBuffer>); if (!((ServerGameManager)(ref serverGameManager)).TryGetBuffer<InventoryBuffer>(inventory, ref val5)) { return; } for (int i = 0; i < val5.Length; i++) { PrefabGUID itemType2 = val5[i].ItemType; int num = ((ServerGameManager)(ref serverGameManager)).GetInventoryItemCount(inventory, itemType2); if (dictionary.TryGetValue(itemType2, out var value2)) { foreach (var item in value2) { num -= TransferItems(serverGameManager, inventory, item.Item2, itemType2, num); if (num <= 0) { break; } } } if (num > 0 && !((Entity)(ref tuple.Item1)).Equals(Entity.Null)) { TransferItems(serverGameManager, inventory, tuple.Item2, itemType2, num); } } } catch (Exception ex) { ManualLogSource log = Core.Log; bool flag = default(bool); BepInExErrorLogInterpolatedStringHandler val6 = new BepInExErrorLogInterpolatedStringHandler(36, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val6).AppendLiteral("Exited StashServantInventory early: "); ((BepInExLogInterpolatedStringHandler)val6).AppendFormatted<Exception>(ex); } log.LogError(val6); } } public static bool TerritoryCheck(Entity character, Entity target) { //IL_0000: 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_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_0017: 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_0029: 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_0035: Unknown result type (might be due to invalid IL or missing references) if (!target.Has<CastleHeartConnection>()) { return false; } TilePosition val = character.Read<TilePosition>(); CastleHeartConnection val2 = target.Read<CastleHeartConnection>(); Entity castleTerritoryEntity = ((NetworkedEntity)(ref val2.CastleHeartEntity)).GetEntityOnServer().Read<CastleHeart>().CastleTerritoryEntity; CastleTerritory val3 = default(CastleTerritory); return CastleTerritoryExtensions.IsTileInTerritory(Core.EntityManager, val.Tile, ref castleTerritoryEntity, ref val3); } public static bool SharedHeartConnection(Entity input, Entity ouput) { //IL_0000: 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_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) //IL_0016: 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_0020: 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_0027: 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_0034: Unknown result type (might be due to invalid IL or missing references) if (input.Has<CastleHeartConnection>() && ouput.Has<CastleHeartConnection>()) { Entity entity = input.Read<CastleHeartConnection>().CastleHeartEntity._Entity; Entity entity2 = ouput.Read<CastleHeartConnection>().CastleHeartEntity._Entity; return ((Entity)(ref entity)).Equals(entity2); } return false; } private static void CheckIfInventoryEmpty(Entity inventory) { //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_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //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_0038: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) DynamicBuffer<InventoryBuffer> val = inventory.ReadBuffer<InventoryBuffer>(); for (int i = 0; i < val.Length; i++) { if (val[i].Amount != 0) { return; } } InventoryOwner componentData = inventory.Read<InventoryOwner>(); componentData.HasItems = false; inventory.Write<InventoryOwner>(componentData); Entity inventoryOwner = inventory.Read<InventoryConnection>().InventoryOwner; InventoryOwner componentData2 = inventoryOwner.Read<InventoryOwner>(); componentData2.HasItems = false; inventoryOwner.Write<InventoryOwner>(componentData2); } public static bool TransferItemEntities(Entity outputInventory, Entity inputInventory, PrefabGUID itemPrefab, int transferAmount, ref int startInputSlot, out int amountTransferred) { //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_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: 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_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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: 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_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_007e: 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_0085: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) DynamicBuffer<InventoryBuffer> val = outputInventory.ReadBuffer<InventoryBuffer>(); DynamicBuffer<InventoryBuffer> val2 = inputInventory.ReadBuffer<InventoryBuffer>(); amountTransferred = 0; for (int i = 0; i < val.Length; i++) { InventoryBuffer val3 = val[i]; if (!((PrefabGUID)(ref val3.ItemType)).Equals(itemPrefab)) { continue; } while (startInputSlot < val2.Length) { InventoryBuffer val4 = val2[startInputSlot]; if (!((PrefabGUID)(ref val4.ItemType)).Equals(PrefabGUID.Empty)) { startInputSlot++; continue; } val2[startInputSlot] = val3; val[i] = val4; Entity entityOnServer = ((NetworkedEntity)(ref val3.ItemEntity)).GetEntityOnServer(); if (entityOnServer.Has<InventoryItem>()) { InventoryItem componentData = entityOnServer.Read<InventoryItem>(); componentData.ContainerEntity = inputInventory; entityOnServer.Write<InventoryItem>(componentData); } startInputSlot++; amountTransferred++; break; } if (amountTransferred >= transferAmount) { CheckIfInventoryEmpty(outputInventory); return false; } if (val2.Length <= startInputSlot) { CheckIfInventoryEmpty(outputInventory); return true; } } CheckIfInventoryEmpty(outputInventory); return false; } public static int TransferItems(ServerGameManager serverGameManager, Entity outputInventory, Entity inputInventory, PrefabGUID itemGuid, int transferAmount) { //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_000f: 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_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_001a: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) if (((ServerGameManager)(ref serverGameManager)).TryRemoveInventoryItem(outputInventory, itemGuid, transferAmount)) { AddItemResponse val = ((ServerGameManager)(ref serverGameManager)).TryAddInventoryItem(inputInventory, itemGuid, transferAmount); if ((int)val.Result == 0) { return transferAmount; } _ = ((ServerGameManager)(ref serverGameManager)).TryAddInventoryItem(outputInventory, itemGuid, val.RemainingAmount).Result; return transferAmount - val.RemainingAmount; } return 0; } public static AddItemSettings GetAddItemSettings() { //IL_0002: 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_000f: 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_001b: 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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) AddItemSettings result = default(AddItemSettings); result.EntityManager = Core.EntityManager; ServerGameManager serverGameManager = Core.ServerGameManager; result.ItemDataMap = ((ServerGameManager)(ref serverGameManager)).ItemLookupMap; return result; } public static void SendSystemMessageToClient(EntityManager entityManager, User user, string message) { //IL_0008: 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) FixedString512Bytes val = default(FixedString512Bytes); ((FixedString512Bytes)(ref val))..ctor(message); ServerChatUtils.SendSystemMessageToClient(entityManager, user, ref val); } public static bool IsRoomOfType(Entity roomEntity, CastleFloorTypes floorType) { //IL_0000: 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_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_002b: 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_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_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: 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_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: 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_0069: 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_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Invalid comparison between Unknown and I4 if (!roomEntity.Has<CastleRoom>()) { return false; } CastleRoom val = roomEntity.Read<CastleRoom>(); if (!((CastleRoom)(ref val)).IsEnclosedRoom) { return false; } if (!roomEntity.Has<CastleRoomFloorsBuffer>()) { return false; } EntityManager entityManager = Core.EntityManager; Enumerator<CastleRoomFloorsBuffer> enumerator = ((EntityManager)(ref entityManager)).GetBuffer<CastleRoomFloorsBuffer>(roomEntity, false).GetEnumerator(); while (enumerator.MoveNext()) { CastleRoomFloorsBuffer current = enumerator.Current; NetworkedEntity floorEntity = current.FloorEntity; Entity entityOnServer = ((NetworkedEntity)(ref floorEntity)).GetEntityOnServer(); if (!((Entity)(ref entityOnServer)).Equals(Entity.Null)) { if (!entityOnServer.Has<CastleFloor>()) { return false; } CastleFloor val2 = entityOnServer.Read<CastleFloor>(); if (val2.FloorType != floorType || (int)val2.FloorType == 13) { return false; } } } return true; } } public static class MyPluginInfo { public const string PLUGIN_GUID = "KindredLogistics"; public const string PLUGIN_NAME = "KindredLogistics"; public const string PLUGIN_VERSION = "1.6.0"; } } namespace KindredLogistics.Services { internal class BrazierService { [CompilerGenerated] private sealed class <GetAllBraziers>d__5 : IEnumerable<Entity>, IEnumerable, IEnumerator<Entity>, IEnumerator, IDisposable { private int <>1__state; private Entity <>2__current; private int <>l__initialThreadId; private int territoryId; public int <>3__territoryId; public BrazierService <>4__this; private List<Entity> <list>5__2; private int <i>5__3; Entity IEnumerator<Entity>.Current { [DebuggerHidden] get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return <>2__current; } } [DebuggerHidden] public <GetAllBraziers>d__5(int <>1__state) { this.<>1__state = <>1__state; <>l__initialThreadId = Environment.CurrentManagedThreadId; } [DebuggerHidden] void IDisposable.Dispose() { <list>5__2 = null; <>1__state = -2; } private bool MoveNext() { //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_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009c: 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) int num = <>1__state; BrazierService brazierService = <>4__this; if (num != 0) { if (num != 1) { return false; } <>1__state = -1; goto IL_00b2; } <>1__state = -1; Entity castleHeart = Core.TerritoryService.GetCastleHeart(territoryId); if (!brazierService.braziersByHeart.TryGetValue(castleHeart, out <list>5__2)) { return false; } <i>5__3 = <list>5__2.Count - 1; goto IL_00c4; IL_00b2: <i>5__3--; goto IL_00c4; IL_00c4: if (<i>5__3 >= 0) { Entity val = <list>5__2[<i>5__3]; EntityManager entityManager = Core.EntityManager; if (!((EntityManager)(ref entityManager)).Exists(val)) { <list>5__2.RemoveAt(<i>5__3); } else if (!val.Has<Disabled>()) { <>2__current = val; <>1__state = 1; return true; } goto IL_00b2; } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } [DebuggerHidden] IEnumerator<Entity> IEnumerable<Entity>.GetEnumerator() { <GetAllBraziers>d__5 <GetAllBraziers>d__; if (<>1__state == -2 && <>l__initialThreadId == Environment.CurrentManagedThreadId) { <>1__state = 0; <GetAllBraziers>d__ = this; } else { <GetAllBraziers>d__ = new <GetAllBraziers>d__5(0) { <>4__this = <>4__this }; } <GetAllBraziers>d__.territoryId = <>3__territoryId; return <GetAllBraziers>d__; } [DebuggerHidden] IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable<Entity>)this).GetEnumerator(); } } [CompilerGenerated] private sealed class <UpdateIfBraziersActiveOnTerritory>d__6 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public Entity castleHeartEntity; public int territoryId; public BrazierService <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <UpdateIfBraziersActiveOnTerritory>d__6(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003