Decompiled source of RPGMods Experience v0.9.9
RPGMods_Experience.dll
Decompiled 6 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text.Json; using System.Text.RegularExpressions; using System.Threading; using BepInEx; using BepInEx.Core.Logging.Interpolation; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using Costura; using HarmonyLib; using Il2CppInterop.Runtime.InteropTypes.Arrays; using Il2CppSystem.Collections.Generic; using Microsoft.CodeAnalysis; using ProjectM; using ProjectM.Gameplay; using ProjectM.Gameplay.Systems; using ProjectM.Network; using ProjectM.Scripting; using RPGMods.Hooks; using RPGMods.Systems; using RPGMods.Utils; using Stunlock.Core; using Stunlock.Network; using Unity.Collections; using Unity.Entities; using Unity.Mathematics; 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("RPGMods_Experience")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("RPG Mods - Experience Module")] [assembly: AssemblyFileVersion("0.9.9.0")] [assembly: AssemblyInformationalVersion("0.9.9")] [assembly: AssemblyProduct("RPGMods_Experience")] [assembly: AssemblyTitle("RPGMods_Experience")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.9.9.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] internal class <Module> { static <Module>() { AssemblyLoader.Attach(); } } namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace RPGMods { [BepInPlugin("RPGMods_Experience", "RPGMods - Experience Module", "0.9.9")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BasePlugin { public const string moduleName = "Experience"; public static Harmony harmony; public static bool testing; public static bool isInitialized; public static ManualLogSource Logger; private static World _serverWorld; private static bool parseLogging; public static World Server { get { if (_serverWorld != null) { return _serverWorld; } _serverWorld = GetWorld("Server") ?? throw new Exception("There is no Server world (yet). Did you install a server mod on the client?"); return _serverWorld; } } public static bool IsServer => Application.productName == "VRisingServer"; 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 void InitConfig() { if (!Directory.Exists("BepInEx/config/RPGMods")) { Directory.CreateDirectory("BepInEx/config/RPGMods"); } if (!Directory.Exists("BepInEx/config/RPGMods/Experience")) { Directory.CreateDirectory("BepInEx/config/RPGMods/Experience"); } if (!Directory.Exists("BepInEx/config/RPGMods/Experience/Backup")) { Directory.CreateDirectory("BepInEx/config/RPGMods/Experience/Backup"); } } public override void Load() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown if (!IsServer) { ((BasePlugin)this).Log.LogWarning((object)"RPGMods is a server plugin. Not continuing to load on client."); return; } InitConfig(); Logger = ((BasePlugin)this).Log; harmony = new Harmony("RPGMods - Experience"); harmony.PatchAll(Assembly.GetExecutingAssembly()); TaskRunner.Initialize(); ((BasePlugin)this).Log.LogInfo((object)"Plugin RPGMods - Experience is loaded!"); } public override bool Unload() { AutoSaveSystem.SaveDatabase(); ((BasePlugin)this).Config.Clear(); harmony.UnpatchSelf(); TaskRunner.Destroy(); return true; } public void OnGameInitialized() { Initialize(); } public static void Initialize() { Logger.LogInfo((object)("Trying to Initalize RPGMods - Experience, isInitalized already: " + isInitialized)); if (!isInitialized) { Logger.LogInfo((object)"Initalizing RPGMods - Experience"); Helper.CreatePlayerCache(); Logger.LogInfo((object)"Registering commands"); CommandRegistry.RegisterAll(); AutoSaveSystem.LoadDatabase(); Logger.LogInfo((object)"Finished initialising"); isInitialized = true; } } public static int[] parseIntArrayConifg(string data) { if (parseLogging) { Logger.LogInfo((object)(">>>parsing int array: " + data)); } Match match = Regex.Match(data, "([0-9]+)"); List<int> list = new List<int>(); while (match.Success) { try { if (parseLogging) { Logger.LogInfo((object)(">>>got int: " + match.Value)); } int item = int.Parse(match.Value, CultureInfo.InvariantCulture); if (parseLogging) { Logger.LogInfo((object)(">>>int parsed into: " + item)); } list.Add(item); } catch { if (parseLogging) { Logger.LogWarning((object)("Error interperting integer value: " + match.ToString())); } } match = match.NextMatch(); } if (parseLogging) { Logger.LogInfo((object)">>>done parsing int array"); } return list.ToArray(); } public static float[] parseFloatArrayConifg(string data) { if (parseLogging) { Logger.LogInfo((object)(">>>parsing float array: " + data)); } Match match = Regex.Match(data, "[-+]?[0-9]*\\.?[0-9]+"); List<float> list = new List<float>(); while (match.Success) { try { if (parseLogging) { Logger.LogInfo((object)(">>>got float: " + match.Value)); } float item = float.Parse(match.Value, CultureInfo.InvariantCulture); if (parseLogging) { Logger.LogInfo((object)(">>>float parsed into: " + item)); } list.Add(item); } catch { Logger.LogWarning((object)("Error interperting float value: " + match.ToString())); } match = match.NextMatch(); } if (parseLogging) { Logger.LogInfo((object)">>>done parsing float array"); } return list.ToArray(); } public static double[] parseDoubleArrayConifg(string data) { if (parseLogging) { Logger.LogInfo((object)(">>>parsing double array: " + data)); } Match match = Regex.Match(data, "[-+]?[0-9]*\\.?[0-9]+"); List<double> list = new List<double>(); while (match.Success) { try { if (parseLogging) { Logger.LogInfo((object)(">>>got double: " + match.Value)); } double item = double.Parse(match.Value, CultureInfo.InvariantCulture); if (parseLogging) { Logger.LogInfo((object)(">>>double parsed into: " + item)); } list.Add(item); } catch { Logger.LogWarning((object)("Error interperting double value: " + match.ToString())); } match = match.NextMatch(); } if (parseLogging) { Logger.LogInfo((object)">>>done parsing double array"); } return list.ToArray(); } public static string[] parseStringArrayConifg(string data) { if (parseLogging) { Logger.LogInfo((object)(">>>parsing comma seperated String array: " + data)); } List<string> list = new List<string>(); while (data.IndexOf(",") > 0) { string text = data.Substring(0, data.IndexOf(",")); text.Trim(); list.Add(text); data = data.Substring(data.IndexOf(",") + 1); } data.Trim(); list.Add(data); if (parseLogging) { Logger.LogInfo((object)">>>done parsing string array"); } return list.ToArray(); } } } namespace RPGMods.Utils { public class Alliance { public struct CloseAlly { public Entity userEntity; public User userComponent; public int currentXp; public int playerLevel; public ulong steamID; public float3 position; public bool isTrigger; } private static readonly int CacheAgeLimit = 300; private static bool ConvertToAlly(Entity entity, float3 position, bool logging, out CloseAlly ally) { //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_000e: 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_0064: 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_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_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011a: 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_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_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_004a: 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_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: 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_00b4: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = Plugin.Server.EntityManager; PlayerCharacter val = default(PlayerCharacter); EntityManagerDebug debug; if (!((EntityManager)(ref entityManager)).TryGetComponentData<PlayerCharacter>(entity, ref val)) { if (logging) { ManualLogSource logger = Plugin.Logger; string text = DateTime.Now.ToString(); entityManager = Plugin.Server.EntityManager; debug = ((EntityManager)(ref entityManager)).Debug; logger.LogInfo((object)(text + ": Player Character Component unavailable, available components are: " + ((EntityManagerDebug)(ref debug)).GetEntityInfo(entity))); } ally = default(CloseAlly); return false; } Entity userEntity = val.UserEntity; entityManager = Plugin.Server.EntityManager; User val2 = default(User); if (!((EntityManager)(ref entityManager)).TryGetComponentData<User>(userEntity, ref val2)) { if (logging) { ManualLogSource logger2 = Plugin.Logger; string text2 = DateTime.Now.ToString(); entityManager = Plugin.Server.EntityManager; debug = ((EntityManager)(ref entityManager)).Debug; logger2.LogInfo((object)(text2 + ": User Component unavailable, available components from pc.UserEntity are: " + ((EntityManagerDebug)(ref debug)).GetEntityInfo(userEntity))); } ally = default(CloseAlly); return false; } ulong platformId = val2.PlatformId; int playerLevel = 0; Database.player_experience.TryGetValue(platformId, out var value); ally = new CloseAlly { currentXp = value, playerLevel = playerLevel, steamID = platformId, userEntity = userEntity, userComponent = val2, position = position }; return true; } public static List<CloseAlly> GetCloseAllies(Entity closeToEntity, Entity triggerEntity, float groupMaxDistance, bool useGroup, bool logging) { //IL_0075: 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_003c: 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_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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0050: 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_00bc: 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_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Expected O, but got Unknown //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) float num = groupMaxDistance * groupMaxDistance; if (logging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Fetching allies...")); } List<CloseAlly> list = new List<CloseAlly>(); EntityManager entityManager; LocalToWorld componentData; if (!useGroup) { entityManager = Plugin.Server.EntityManager; componentData = ((EntityManager)(ref entityManager)).GetComponentData<LocalToWorld>(triggerEntity); float3 position = ((LocalToWorld)(ref componentData)).Position; if (ConvertToAlly(triggerEntity, position, logging, out var ally)) { ally.isTrigger = true; list.Add(ally); } } else { GetAllies(triggerEntity, logging, out var playerGroup); if (logging) { ManualLogSource logger = Plugin.Logger; bool flag = default(bool); BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(22, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Getting close allies"); } logger.LogInfo(val); } entityManager = Plugin.Server.EntityManager; LocalToWorld componentData2 = ((EntityManager)(ref entityManager)).GetComponentData<LocalToWorld>(closeToEntity); foreach (KeyValuePair<Entity, Entity> ally3 in playerGroup.Allies) { if (logging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Iterating over allies, entity is " + ally3.GetHashCode())); } bool flag2 = ((Entity)(ref triggerEntity)).Equals(ally3.Key); if (logging && flag2) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Entity is trigger")); } entityManager = Plugin.Server.EntityManager; componentData = ((EntityManager)(ref entityManager)).GetComponentData<LocalToWorld>(ally3.Value); float3 position2 = ((LocalToWorld)(ref componentData)).Position; if (!flag2) { if (logging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Got entity Position")); } float3 position3 = ((LocalToWorld)(ref componentData2)).Position; float num2 = math.distancesq(((float3)(ref position3)).xz, ((float3)(ref position2)).xz); if (logging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": DistanceSq is " + num2 + ", Max DistanceSq is " + num)); } if (!(num2 <= num)) { continue; } } if (logging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Converting entity to ally...")); } if (ConvertToAlly(ally3.Key, position2, logging, out var ally2)) { ally2.isTrigger = flag2; list.Add(ally2); } } } if (logging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Allies Fetched, Total ally count of " + list.Count)); } return list; } public static void GetAllies(Entity playerCharacter, bool logging, out PlayerGroup playerGroup) { //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_000e: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Expected O, but got Unknown //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0098: 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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_064a: Unknown result type (might be due to invalid IL or missing references) //IL_0651: Expected O, but got Unknown //IL_0632: Unknown result type (might be due to invalid IL or missing references) //IL_0634: Unknown result type (might be due to invalid IL or missing references) //IL_05ea: Unknown result type (might be due to invalid IL or missing references) //IL_05f1: Expected O, but got Unknown //IL_02fa: Unknown result type (might be due to invalid IL or missing references) //IL_02ff: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Expected O, but got Unknown //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_032d: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Unknown result type (might be due to invalid IL or missing references) //IL_034c: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_035a: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Expected O, but got Unknown //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Expected O, but got Unknown //IL_03b0: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_06dc: Unknown result type (might be due to invalid IL or missing references) //IL_066f: Unknown result type (might be due to invalid IL or missing references) //IL_0683: Unknown result type (might be due to invalid IL or missing references) //IL_060f: Unknown result type (might be due to invalid IL or missing references) //IL_0623: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Expected O, but got Unknown //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Expected O, but got Unknown //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Expected O, but got Unknown //IL_03f2: Unknown result type (might be due to invalid IL or missing references) //IL_03f7: Unknown result type (might be due to invalid IL or missing references) //IL_03fb: Unknown result type (might be due to invalid IL or missing references) //IL_03d2: Unknown result type (might be due to invalid IL or missing references) //IL_03d4: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_043f: Unknown result type (might be due to invalid IL or missing references) //IL_0422: Unknown result type (might be due to invalid IL or missing references) //IL_0424: Unknown result type (might be due to invalid IL or missing references) //IL_046d: Unknown result type (might be due to invalid IL or missing references) //IL_046f: Unknown result type (might be due to invalid IL or missing references) //IL_04a8: Unknown result type (might be due to invalid IL or missing references) //IL_04ad: Unknown result type (might be due to invalid IL or missing references) //IL_04b1: Unknown result type (might be due to invalid IL or missing references) //IL_0593: Unknown result type (might be due to invalid IL or missing references) //IL_059a: Unknown result type (might be due to invalid IL or missing references) //IL_0534: Unknown result type (might be due to invalid IL or missing references) //IL_0536: Unknown result type (might be due to invalid IL or missing references) //IL_056c: Unknown result type (might be due to invalid IL or missing references) //IL_0571: Unknown result type (might be due to invalid IL or missing references) //IL_0575: Unknown result type (might be due to invalid IL or missing references) //IL_057a: Unknown result type (might be due to invalid IL or missing references) //IL_057e: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = Plugin.Server.EntityManager; bool flag = default(bool); EntityManagerDebug debug; if (!((EntityManager)(ref entityManager)).HasComponent<PlayerCharacter>(playerCharacter)) { if (logging) { ManualLogSource logger = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(22, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Entity is not user: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(playerCharacter); } logger.LogInfo(val); ManualLogSource logger2 = Plugin.Logger; val = new BepInExInfoLogInterpolatedStringHandler(39, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Components for Player Character are: "); BepInExInfoLogInterpolatedStringHandler obj = val; entityManager = Plugin.Server.EntityManager; debug = ((EntityManager)(ref entityManager)).Debug; ((BepInExLogInterpolatedStringHandler)obj).AppendFormatted<string>(((EntityManagerDebug)(ref debug)).GetEntityInfo(playerCharacter)); } logger2.LogInfo(val); } playerGroup = new PlayerGroup { Allies = new Dictionary<Entity, Entity>() }; return; } if (logging) { ManualLogSource logger3 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(33, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Beginning To Parse Player Group"); } logger3.LogInfo(val); } if (Cache.PlayerAllies.TryGetValue(playerCharacter, out playerGroup)) { if (logging) { ManualLogSource logger4 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(38, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Allies Found in Cache, timestamp is "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(playerGroup.TimeStamp); } logger4.LogInfo(val); } if ((DateTime.Now - playerGroup.TimeStamp).TotalSeconds < (double)CacheAgeLimit) { return; } if (logging) { ManualLogSource logger5 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(26, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Refreshing cached allies"); } logger5.LogInfo(val); } } entityManager = Plugin.Server.EntityManager; Team val2 = default(Team); if (!((EntityManager)(ref entityManager)).TryGetComponentData<Team>(playerCharacter, ref val2)) { if (logging) { ManualLogSource logger6 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(43, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Could not get team for Player Character: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(playerCharacter); } logger6.LogInfo(val); ManualLogSource logger7 = Plugin.Logger; val = new BepInExInfoLogInterpolatedStringHandler(39, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Components for Player Character are: "); BepInExInfoLogInterpolatedStringHandler obj2 = val; entityManager = Plugin.Server.EntityManager; debug = ((EntityManager)(ref entityManager)).Debug; ((BepInExLogInterpolatedStringHandler)obj2).AppendFormatted<string>(((EntityManagerDebug)(ref debug)).GetEntityInfo(playerCharacter)); } logger7.LogInfo(val); } playerGroup = new PlayerGroup { Allies = new Dictionary<Entity, Entity>() }; return; } if (logging) { ManualLogSource logger8 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(50, 3, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Player Character Found Value: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<int>(val2.Value); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" - Faction Index: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<int>(val2.FactionIndex); } logger8.LogInfo(val); } playerGroup.TimeStamp = DateTime.Now; Dictionary<Entity, Entity> dictionary = new Dictionary<Entity, Entity>(); entityManager = Plugin.Server.EntityManager; EntityQueryDesc[] array = new EntityQueryDesc[1]; EntityQueryDesc val3 = new EntityQueryDesc(); val3.All = Il2CppStructArray<ComponentType>.op_Implicit((ComponentType[])(object)new ComponentType[2] { ComponentType.ReadOnly<PlayerCharacter>(), ComponentType.ReadOnly<IsConnected>() }); val3.Options = (EntityQueryOptions)2; array[0] = val3; EntityQuery val4 = ((EntityManager)(ref entityManager)).CreateEntityQuery((EntityQueryDesc[])(object)array); NativeArray<Entity> val5 = ((EntityQuery)(ref val4)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)); if (logging) { ManualLogSource logger9 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(45, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": got connected PC entities buffer of length "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<int>(val5.Length); } logger9.LogInfo(val); } Enumerator<Entity> enumerator = val5.GetEnumerator(); Team val7 = default(Team); while (enumerator.MoveNext()) { Entity current = enumerator.Current; Entity val6; if (logging) { ManualLogSource logger10 = Plugin.Logger; string text = DateTime.Now.ToString(); val6 = current; logger10.LogInfo((object)(text + ": got Entity " + ((object)(Entity)(ref val6)).ToString())); } entityManager = Plugin.Server.EntityManager; if (((EntityManager)(ref entityManager)).HasComponent<PlayerCharacter>(current)) { if (logging) { ManualLogSource logger11 = Plugin.Logger; string text2 = DateTime.Now.ToString(); val6 = current; logger11.LogInfo((object)(text2 + ": Entity is User " + ((object)(Entity)(ref val6)).ToString())); } if (((Entity)(ref current)).Equals(playerCharacter)) { if (logging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Entity is self")); } dictionary[current] = current; continue; } bool flag2 = false; try { if (logging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Trying to get teams ")); } entityManager = Plugin.Server.EntityManager; bool flag3 = ((EntityManager)(ref entityManager)).TryGetComponentData<Team>(current, ref val7); if (logging) { if (flag3) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Team Value:" + val7.Value + " - Faction Index: " + val7.FactionIndex)); } else { ManualLogSource logger12 = Plugin.Logger; string text3 = DateTime.Now.ToString(); val6 = current; logger12.LogInfo((object)(text3 + ": Could not get team for entity: " + ((object)(Entity)(ref val6)).ToString())); ManualLogSource logger13 = Plugin.Logger; string text4 = DateTime.Now.ToString(); entityManager = Plugin.Server.EntityManager; debug = ((EntityManager)(ref entityManager)).Debug; logger13.LogInfo((object)(text4 + ": Components for entity are: " + ((EntityManagerDebug)(ref debug)).GetEntityInfo(current))); } } flag2 = flag3 && val7.Value == val2.Value; } catch (Exception ex) { if (logging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": IsAllies Failed " + ex.Message)); } } if (flag2) { if (logging) { ManualLogSource logger14 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(13, 3, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Allies: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(playerCharacter); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" - "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(current); } logger14.LogInfo(val); } dictionary[current] = current; } else if (logging) { ManualLogSource logger15 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(17, 3, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Not allies: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(playerCharacter); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" - "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(current); } logger15.LogInfo(val); } } else if (logging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": No Associated User!")); } } playerGroup.Allies = dictionary; playerGroup.AllyCount = dictionary.Count; Cache.PlayerAllies[playerCharacter] = playerGroup; } } public static class AutoSaveSystem { public const string mainSaveFolder = "BepInEx/config/RPGMods/Experience/"; public const string backupSaveFolder = "BepInEx/config/RPGMods/Experience/Backup/"; private static int saveCount = 0; public static int backupFrequency = 5; public static bool saveLogging = false; public static void SaveDatabase() { saveCount++; string saveFolder = "BepInEx/config/RPGMods/Experience/"; if (saveCount % backupFrequency == 0) { saveFolder = "BepInEx/config/RPGMods/Experience/Backup/"; } ExperienceSystem.SaveEXPData(saveFolder); Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Experience databases saved to JSON file.")); } public static void LoadDatabase() { ExperienceSystem.LoadEXPData(); Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Experience database is now loaded.")); } } public static class Color { private static string ColorText(string color, string text) { return "<color=" + color + ">" + text + "</color>"; } public static string White(string text) { return ColorText("#fffffffe", text); } public static string Black(string text) { return ColorText("#000000", text); } public static string Gray(string text) { return ColorText("#404040", text); } public static string Orange(string text) { return ColorText("#c98332", text); } public static string Yellow(string text) { return ColorText("#cfc14a", text); } public static string Green(string text) { return ColorText("#56ad3b", text); } public static string Teal(string text) { return ColorText("#3b8dad", text); } public static string Blue(string text) { return ColorText("#3444a8", text); } public static string Purple(string text) { return ColorText("#8b3691", text); } public static string Pink(string text) { return ColorText("#b53c8ffe", text); } public static string Red(string text) { return ColorText("#ff0000", text); } public static string SoftRed(string text) { return ColorText("#b53c40", text); } } public static class Cache { public static Dictionary<string, PlayerData> NamePlayerCache = new Dictionary<string, PlayerData>(); public static Dictionary<ulong, PlayerData> SteamPlayerCache = new Dictionary<ulong, PlayerData>(); public static Dictionary<Entity, PlayerGroup> PlayerAllies = new Dictionary<Entity, PlayerGroup>(); public static Dictionary<Entity, LocalToWorld> PlayerLocations = new Dictionary<Entity, LocalToWorld>(); public static Dictionary<ulong, List<BuffData>> buffData = new Dictionary<ulong, List<BuffData>>(); public static Dictionary<ulong, float> command_Cooldown = new Dictionary<ulong, float>(); public static Dictionary<ulong, DateTime> playerCombatStart = new Dictionary<ulong, DateTime>(); public static Dictionary<ulong, DateTime> playerCombatEnd = new Dictionary<ulong, DateTime>(); public static Dictionary<ulong, DateTime> player_last_combat = new Dictionary<ulong, DateTime>(); public static Dictionary<ulong, int> player_combat_ticks = new Dictionary<ulong, int>(); public static Dictionary<ulong, float> player_level = new Dictionary<ulong, float>(); public static Dictionary<ulong, Dictionary<UnitStatType, float>> player_geartypedonned = new Dictionary<ulong, Dictionary<UnitStatType, float>>(); public static Dictionary<Entity, LevelData> PlayerLevelCache = new Dictionary<Entity, LevelData>(); public static Dictionary<ulong, PvPOffenseLog> OffenseLog = new Dictionary<ulong, PvPOffenseLog>(); public static Dictionary<ulong, ReputationLog> ReputationLog = new Dictionary<ulong, ReputationLog>(); public static Dictionary<Entity, StateData> HostilityState = new Dictionary<Entity, StateData>(); public static SizedDictionaryAsync<float, SpawnNPCListen> spawnNPC_Listen = new SizedDictionaryAsync<float, SpawnNPCListen>(500); public static DateTime GetCombatStart(ulong steamID) { if (!playerCombatStart.TryGetValue(steamID, out var value)) { return DateTime.MinValue; } return value; } public static DateTime GetCombatEnd(ulong steamID) { if (!playerCombatEnd.TryGetValue(steamID, out var value)) { return DateTime.MinValue; } return value; } } public static class Database { public static class Buff { public static PrefabGUID EquipBuff = new PrefabGUID(343359674); public static PrefabGUID WolfStygian = new PrefabGUID(-1158884666); public static PrefabGUID WolfNormal = new PrefabGUID(-351718282); public static PrefabGUID BatForm = new PrefabGUID(1205505492); public static PrefabGUID NormalForm = new PrefabGUID(1352541204); public static PrefabGUID RatForm = new PrefabGUID(902394170); public static PrefabGUID DownedBuff = new PrefabGUID(-1992158531); public static PrefabGUID BloodSight = new PrefabGUID(1199823151); public static PrefabGUID InCombat = new PrefabGUID(581443919); public static PrefabGUID InCombat_PvP = new PrefabGUID(697095869); public static PrefabGUID OutofCombat = new PrefabGUID(897325455); public static PrefabGUID BloodMoon = new PrefabGUID(-560523291); public static PrefabGUID Severe_GarlicDebuff = new PrefabGUID(1582196539); public static PrefabGUID General_GarlicDebuff = new PrefabGUID(-1701323826); public static PrefabGUID Buff_4pT2 = new PrefabGUID(1444835872); public static PrefabGUID cloakBuff = new PrefabGUID(1409441911); public static PrefabGUID SiegeGolem_T01 = new PrefabGUID(-148535031); public static PrefabGUID SiegeGolem_T02 = new PrefabGUID(914043867); public static PrefabGUID AB_Interact_GetInside_Owner_Buff_Stone = new PrefabGUID(569692162); public static PrefabGUID AB_Interact_GetInside_Owner_Buff_Base = new PrefabGUID(381160212); public static PrefabGUID AB_ExitCoffin_Travel_Phase_Stone = new PrefabGUID(-162820429); public static PrefabGUID AB_ExitCoffin_Travel_Phase_Base = new PrefabGUID(-997204628); public static PrefabGUID AB_Interact_TombCoffinSpawn_Travel = new PrefabGUID(722466953); public static PrefabGUID AB_Interact_WaypointSpawn_Travel = new PrefabGUID(-66432447); public static PrefabGUID AB_Interact_WoodenCoffinSpawn_Travel = new PrefabGUID(-1705977973); public static PrefabGUID AB_Interact_StoneCoffinSpawn_Travel = new PrefabGUID(-1276482574); public static PrefabGUID LevelUp_Buff = new PrefabGUID(-1133938228); public static PrefabGUID AB_Undead_BishopOfShadows_ShadowSoldier_Minion_Buff = new PrefabGUID(450215391); public static PrefabGUID HolyNuke = new PrefabGUID(-1807398295); public static PrefabGUID AB_Manticore_Flame_Buff_UNUSED = new PrefabGUID(1502566434); public static PrefabGUID Pig_Transform_Debuff = new PrefabGUID(1356064917); public static PrefabGUID EquipBuff_Chest_Base = new PrefabGUID(1872694456); public static PrefabGUID Buff_VBlood_Perk_ProgTest = new PrefabGUID(1614409699); public static PrefabGUID AB_BloodBuff_VBlood_0 = new PrefabGUID(20081801); } public static JsonSerializerOptions JSON_options = new JsonSerializerOptions { WriteIndented = false, IncludeFields = false }; public static JsonSerializerOptions Pretty_JSON_options = new JsonSerializerOptions { WriteIndented = true, IncludeFields = true }; public static HashSet<ApplyBuffDebugEvent> playerBuffs = new HashSet<ApplyBuffDebugEvent>(); public static bool ErrorOnLoadingExperienceClasses = false; public static Dictionary<ulong, SiegeData> SiegeState = new Dictionary<ulong, SiegeData>(); public static Dictionary<ulong, bool> sunimmunity { get; set; } public static Dictionary<ulong, bool> nocooldownlist { get; set; } public static Dictionary<ulong, bool> godmode { get; set; } public static Dictionary<ulong, bool> speeding { get; set; } public static Dictionary<ulong, bool> autoRespawn { get; set; } public static Dictionary<string, Tuple<float, float, float, int, int, int, string>> waypointDBNew { get; set; } public static Dictionary<ulong, DateTime> lastUsedWaypoint { get; set; } public static Dictionary<string, WaypointData> globalWaypoint { get; set; } public static Dictionary<string, WaypointData> waypoints { get; set; } public static Dictionary<ulong, int> waypoints_owned { get; set; } public static Dictionary<ulong, int> user_permission { get; set; } public static Dictionary<string, int> command_permission { get; set; } public static Dictionary<ulong, PowerUpData> PowerUpList { get; set; } public static Dictionary<ulong, int> player_experience { get; set; } public static Dictionary<ulong, int> player_abilityIncrease { get; set; } public static LazyDictionary<ulong, LazyDictionary<UnitStatType, float>> player_level_stats { get; set; } public static Dictionary<string, Dictionary<UnitStatType, float>> experience_class_stats { get; set; } public static Dictionary<ulong, bool> player_log_exp { get; set; } public static Dictionary<int, int> XPChart { get; set; } public static ConcurrentDictionary<ulong, PvPData> PvPStats { get; set; } public static Dictionary<Entity, Entity> killMap { get; set; } public static Dictionary<ulong, int> pvpkills { get; set; } public static Dictionary<ulong, int> pvpdeath { get; set; } public static Dictionary<ulong, double> pvpkd { get; set; } public static Dictionary<ulong, DateTime> player_decaymastery_logout { get; set; } public static Dictionary<ulong, bool> player_log_mastery { get; set; } public static Dictionary<ulong, bool> player_log_buffs { get; set; } public static bool logAllBuffs { get; set; } public static Dictionary<int, int> forcedMasteryType { get; set; } public static Dictionary<int, string> forcedMasteryName { get; set; } public static Dictionary<ulong, HashSet<int>> playerActiveBuffs { get; set; } public static Dictionary<ulong, DateTime> playerActiveBuffsLastClear { get; set; } public static Dictionary<int, RateData> buffMasteryRates { get; set; } public static Dictionary<ulong, WeaponMasterData_Dictionary> player_weaponmastery_Dictionary { get; set; } public static Dictionary<int, RateData> mastery_Rates { get; set; } public static Dictionary<ulong, DateTime> playerDecayBloodlineLogout { get; set; } public static Dictionary<ulong, bool> playerLogBloodline { get; set; } public static ConcurrentDictionary<int, FactionData> FactionStats { get; set; } public static HashSet<string> IgnoredMonsters { get; set; } public static HashSet<PrefabGUID> IgnoredMonstersGUID { get; set; } public static Dictionary<int, Tuple<int, string>> ForcedFactionMonstersGUID { get; set; } } public static class FactionUnits { public struct Unit { public Prefabs.Units type { get; } public int level { get; } public int value { get; } public Unit(Prefabs.Units type, int level, int value) { this.type = type; this.level = level; this.value = value; } } private static Unit[] bandit_units = new Unit[9] { new Unit(Prefabs.Units.CHAR_Bandit_Wolf, 14, 1), new Unit(Prefabs.Units.CHAR_Bandit_Hunter, 16, 2), new Unit(Prefabs.Units.CHAR_Bandit_Thug, 16, 2), new Unit(Prefabs.Units.CHAR_Bandit_Thief, 18, 3), new Unit(Prefabs.Units.CHAR_Bandit_Mugger, 20, 3), new Unit(Prefabs.Units.CHAR_Bandit_Trapper, 20, 3), new Unit(Prefabs.Units.CHAR_Bandit_Deadeye, 26, 4), new Unit(Prefabs.Units.CHAR_Bandit_Stalker, 30, 4), new Unit(Prefabs.Units.CHAR_Bandit_Bomber, 32, 4) }; private static Unit[] church = new Unit[14] { new Unit(Prefabs.Units.CHAR_ChurchOfLight_Miner_Standard, 42, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Archer, 56, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_SlaveRuffian, 60, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Cleric, 62, 2), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Footman, 62, 2), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Rifleman, 62, 2), new Unit(Prefabs.Units.CHAR_ChurchOfLight_SlaveMaster_Enforcer, 64, 3), new Unit(Prefabs.Units.CHAR_ChurchOfLight_SlaveMaster_Sentry, 64, 3), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Knight_2H, 68, 3), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Knight_Shield, 68, 3), new Unit(Prefabs.Units.CHAR_ChurchOfLight_CardinalAide, 70, 4), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Lightweaver, 72, 4), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Paladin, 74, 4), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Priest, 74, 4) }; private static Unit[] church_elite = new Unit[1] { new Unit(Prefabs.Units.CHAR_Paladin_DivineAngel, 80, 5) }; private static Unit[] church_extra = new Unit[1] { new Unit(Prefabs.Units.CHAR_Militia_EyeOfGod, 0, 1) }; private static Unit[] cultist_units = new Unit[2] { new Unit(Prefabs.Units.CHAR_Cultist_Pyromancer, 60, 2), new Unit(Prefabs.Units.CHAR_Cultist_Slicer, 60, 2) }; private static Unit[] cursed_units = new Unit[12] { new Unit(Prefabs.Units.CHAR_Cursed_MonsterToad, 61, 1), new Unit(Prefabs.Units.CHAR_Cursed_ToadSpitter, 61, 1), new Unit(Prefabs.Units.CHAR_Cursed_Witch_Exploding_Mosquito, 61, 1), new Unit(Prefabs.Units.CHAR_Cursed_MonsterToad_Minion, 62, 1), new Unit(Prefabs.Units.CHAR_Cursed_Mosquito, 62, 1), new Unit(Prefabs.Units.CHAR_Cursed_Wolf, 62, 1), new Unit(Prefabs.Units.CHAR_Cursed_WormTerror, 62, 2), new Unit(Prefabs.Units.CHAR_Cursed_Bear_Standard, 64, 2), new Unit(Prefabs.Units.CHAR_Cursed_Nightlurker, 64, 2), new Unit(Prefabs.Units.CHAR_Cursed_Witch, 72, 3), new Unit(Prefabs.Units.CHAR_Cursed_Bear_Spirit, 80, 3), new Unit(Prefabs.Units.CHAR_Cursed_Wolf_Spirit, 80, 3) }; private static Unit[] farmlands = new Unit[8] { new Unit(Prefabs.Units.CHAR_Farmlands_HostileVillager_Female_FryingPan, 28, 1), new Unit(Prefabs.Units.CHAR_Farmlands_HostileVillager_Female_Pitchfork, 28, 1), new Unit(Prefabs.Units.CHAR_Farmlands_HostileVillager_Male_Club, 28, 1), new Unit(Prefabs.Units.CHAR_Farmlands_HostileVillager_Male_Shovel, 28, 1), new Unit(Prefabs.Units.CHAR_Farmlands_HostileVillager_Male_Torch, 28, 1), new Unit(Prefabs.Units.CHAR_Farmlands_HostileVillager_Male_Unarmed, 28, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Woodcutter_Standard, 34, 1), new Unit(Prefabs.Units.CHAR_Farmland_Wolf, 40, 1) }; private static Unit[] farmNonHostile = new Unit[4] { new Unit(Prefabs.Units.CHAR_Farmlands_Villager_Female_Sister, 20, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Villager_Female, 26, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Villager_Male, 26, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Farmer, 34, 1) }; public static Unit[] farmFood = new Unit[6] { new Unit(Prefabs.Units.CHAR_Farmlands_SheepOld, 10, 1), new Unit(Prefabs.Units.CHAR_Farmlands_SmallPig, 20, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Pig, 24, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Cow, 30, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Sheep, 36, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Ram, 38, 1) }; private static Unit[] forest = new Unit[3] { new Unit(Prefabs.Units.CHAR_Forest_Wolf, 10, 1), new Unit(Prefabs.Units.CHAR_Forest_AngryMoose, 16, 2), new Unit(Prefabs.Units.CHAR_Forest_Bear_Standard, 18, 2) }; private static Unit[] gloomrot = new Unit[14] { new Unit(Prefabs.Units.CHAR_Gloomrot_Pyro, 56, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Batoon, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Railgunner, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Tazer, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Technician, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Technician_Labworker, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_TractorBeamer, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_SentryOfficer, 60, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_SentryTurret, 60, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_SpiderTank_Driller, 60, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_AceIncinerator, 74, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_SpiderTank_LightningRod, 74, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_SpiderTank_Gattler, 77, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_SpiderTank_Zapper, 77, 1) }; private static Unit[] harpy = new Unit[4] { new Unit(Prefabs.Units.CHAR_Harpy_Dasher, 66, 1), new Unit(Prefabs.Units.CHAR_Harpy_FeatherDuster, 66, 1), new Unit(Prefabs.Units.CHAR_Harpy_Sorceress, 68, 1), new Unit(Prefabs.Units.CHAR_Harpy_Scratcher, 70, 1) }; private static Unit[] militia_units = new Unit[12] { new Unit(Prefabs.Units.CHAR_Militia_Hound, 36, 1), new Unit(Prefabs.Units.CHAR_Militia_Light, 36, 1), new Unit(Prefabs.Units.CHAR_Militia_Torchbearer, 36, 2), new Unit(Prefabs.Units.CHAR_Militia_InkCrawler, 38, 2), new Unit(Prefabs.Units.CHAR_Militia_Guard, 40, 1), new Unit(Prefabs.Units.CHAR_Militia_Bomber, 47, 1), new Unit(Prefabs.Units.CHAR_Militia_Longbowman, 42, 3), new Unit(Prefabs.Units.CHAR_Militia_Nun, 42, 3), new Unit(Prefabs.Units.CHAR_Militia_Miner_Standard, 50, 1), new Unit(Prefabs.Units.CHAR_Militia_Heavy, 54, 3), new Unit(Prefabs.Units.CHAR_Militia_Devoted, 56, 2), new Unit(Prefabs.Units.CHAR_Militia_Crossbow, 70, 2) }; private static Unit[] vhunter = new Unit[2] { new Unit(Prefabs.Units.CHAR_VHunter_Leader_VBlood, 44, 5), new Unit(Prefabs.Units.CHAR_VHunter_Jade_VBlood, 57, 5) }; private static Unit[] wtf = new Unit[3] { new Unit(Prefabs.Units.CHAR_Scarecrow, 54, 3), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Sommelier_BarrelMinion, 50, 1), new Unit(Prefabs.Units.CHAR_Farmlands_HostileVillager_Werewolf, 20, 2) }; private static Unit[] spiders = new Unit[7] { new Unit(Prefabs.Units.CHAR_Spider_Forestling, 20, 1), new Unit(Prefabs.Units.CHAR_Spider_Forest, 26, 1), new Unit(Prefabs.Units.CHAR_Spider_Baneling, 56, 1), new Unit(Prefabs.Units.CHAR_Spider_Spiderling, 56, 1), new Unit(Prefabs.Units.CHAR_Spider_Melee, 58, 2), new Unit(Prefabs.Units.CHAR_Spider_Range, 58, 2), new Unit(Prefabs.Units.CHAR_Spider_Broodmother, 60, 4) }; private static Unit[] golems = new Unit[5] { new Unit(Prefabs.Units.CHAR_IronGolem, 36, 1), new Unit(Prefabs.Units.CHAR_StoneGolem, 36, 1), new Unit(Prefabs.Units.CHAR_CopperGolem, 42, 1), new Unit(Prefabs.Units.CHAR_RockElemental, 50, 1), new Unit(Prefabs.Units.CHAR_Treant, 57, 1) }; private static Unit[] mutants = new Unit[5] { new Unit(Prefabs.Units.CHAR_Mutant_RatHorror, 58, 1), new Unit(Prefabs.Units.CHAR_Mutant_FleshGolem, 60, 2), new Unit(Prefabs.Units.CHAR_Mutant_Wolf, 64, 1), new Unit(Prefabs.Units.CHAR_Mutant_Spitter, 70, 2), new Unit(Prefabs.Units.CHAR_Mutant_Bear_Standard, 74, 2) }; private static Unit[] undead_minions = new Unit[39] { new Unit(Prefabs.Units.CHAR_Undead_SkeletonSoldier_TombSummon, 1, 1), new Unit(Prefabs.Units.CHAR_Undead_SkeletonSoldier_Withered, 1, 1), new Unit(Prefabs.Units.CHAR_Undead_SkeletonCrossbow_Graveyard, 2, 1), new Unit(Prefabs.Units.CHAR_Undead_RottingGhoul, 4, 1), new Unit(Prefabs.Units.CHAR_Undead_ArmoredSkeletonCrossbow_Farbane, 18, 1), new Unit(Prefabs.Units.CHAR_Undead_SkeletonCrossbow_GolemMinion, 18, 1), new Unit(Prefabs.Units.CHAR_Undead_SkeletonCrossbow_Farbane_OLD, 20, 1), new Unit(Prefabs.Units.CHAR_Undead_SkeletonSoldier_Armored_Farbane, 20, 1), new Unit(Prefabs.Units.CHAR_Undead_SkeletonSoldier_GolemMinion, 20, 1), new Unit(Prefabs.Units.CHAR_Undead_SkeletonApprentice, 22, 1), new Unit(Prefabs.Units.CHAR_Undead_UndyingGhoul, 25, 2), new Unit(Prefabs.Units.CHAR_Undead_Priest, 27, 3), new Unit(Prefabs.Units.CHAR_Undead_Ghoul_TombSummon, 30, 1), new Unit(Prefabs.Units.CHAR_Undead_FlyingSkull, 32, 2), new Unit(Prefabs.Units.CHAR_Undead_Assassin, 35, 3), new Unit(Prefabs.Units.CHAR_Undead_ArmoredSkeletonCrossbow_Dunley, 38, 1), new Unit(Prefabs.Units.CHAR_Undead_SkeletonGolem, 38, 3), new Unit(Prefabs.Units.CHAR_Undead_Ghoul_Armored_Farmlands, 40, 2), new Unit(Prefabs.Units.CHAR_Undead_SkeletonSoldier_Armored_Dunley, 40, 2), new Unit(Prefabs.Units.CHAR_Undead_SkeletonSoldier_Infiltrator, 40, 1), new Unit(Prefabs.Units.CHAR_Undead_Guardian, 42, 2), new Unit(Prefabs.Units.CHAR_Undead_Necromancer, 46, 3), new Unit(Prefabs.Units.CHAR_Undead_Necromancer_TombSummon, 46, 3), new Unit(Prefabs.Units.CHAR_Undead_SkeletonMage, 44, 3), new Unit(Prefabs.Units.CHAR_Unholy_Baneling, 58, 1), new Unit(Prefabs.Units.CHAR_Undead_CursedSmith_FloatingWeapon_Base, 60, 3), new Unit(Prefabs.Units.CHAR_Undead_CursedSmith_FloatingWeapon_Mace, 60, 3), new Unit(Prefabs.Units.CHAR_Undead_CursedSmith_FloatingWeapon_Slashers, 60, 3), new Unit(Prefabs.Units.CHAR_Undead_CursedSmith_FloatingWeapon_Spear, 60, 3), new Unit(Prefabs.Units.CHAR_Undead_CursedSmith_FloatingWeapon_Sword, 60, 3), new Unit(Prefabs.Units.CHAR_Undead_ShadowSoldier, 60, 2), new Unit(Prefabs.Units.CHAR_Undead_SkeletonSoldier_Base, 60, 1), new Unit(Prefabs.Units.CHAR_Undead_GhostMilitia_Crossbow, 63, 2), new Unit(Prefabs.Units.CHAR_Undead_GhostMilitia_Light, 63, 2), new Unit(Prefabs.Units.CHAR_Undead_ZealousCultist_Ghost, 64, 1), new Unit(Prefabs.Units.CHAR_Undead_GhostAssassin, 65, 3), new Unit(Prefabs.Units.CHAR_Undead_GhostBanshee, 65, 3), new Unit(Prefabs.Units.CHAR_Undead_GhostBanshee_TombSummon, 65, 3), new Unit(Prefabs.Units.CHAR_Undead_GhostGuardian, 65, 3) }; private static Unit[] werewolves = new Unit[2] { new Unit(Prefabs.Units.CHAR_Werewolf, 62, 1), new Unit(Prefabs.Units.CHAR_WerewolfChieftain_VBlood, 64, 2) }; private static Unit[] winter = new Unit[3] { new Unit(Prefabs.Units.CHAR_Winter_Wolf, 50, 1), new Unit(Prefabs.Units.CHAR_Winter_Moose, 52, 2), new Unit(Prefabs.Units.CHAR_Winter_Bear_Standard, 54, 2) }; private static Unit[] servants = new Unit[59] { new Unit(Prefabs.Units.CHAR_Bandit_Bomber_Servant, 32, 1), new Unit(Prefabs.Units.CHAR_Bandit_Deadeye_Servant, 26, 1), new Unit(Prefabs.Units.CHAR_Bandit_Hunter_Servant, 16, 1), new Unit(Prefabs.Units.CHAR_Bandit_Miner_Standard_Servant, 14, 1), new Unit(Prefabs.Units.CHAR_Bandit_Mugger_Servant, 20, 1), new Unit(Prefabs.Units.CHAR_Bandit_Stalker_Servant, 30, 1), new Unit(Prefabs.Units.CHAR_Bandit_Thief_Servant, 18, 1), new Unit(Prefabs.Units.CHAR_Bandit_Thug_Servant, 16, 1), new Unit(Prefabs.Units.CHAR_Bandit_Trapper_Servant, 20, 1), new Unit(Prefabs.Units.CHAR_Bandit_Woodcutter_Standard_Servant, 14, 1), new Unit(Prefabs.Units.CHAR_Bandit_Worker_Gatherer_Servant, 14, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Archer_Servant, 56, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Cleric_Servant, 62, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Footman_Servant, 62, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Knight_2H_Servant, 68, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Knight_Shield_Servant, 68, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Lightweaver_Servant, 72, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Miner_Standard_Servant, 42, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Paladin_Servant, 74, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Priest_Servant, 74, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Rifleman_Servant, 62, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_SlaveMaster_Enforcer_Servant, 64, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_SlaveMaster_Sentry_Servant, 64, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_SlaveRuffian_Servant, 60, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Villager_Female_Servant, 50, 1), new Unit(Prefabs.Units.CHAR_ChurchOfLight_Villager_Male_Servant, 50, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Farmer_Servant, 34, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Nun_Servant, 46, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Villager_Female_Servant, 26, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Villager_Female_Sister_Servant, 20, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Villager_Male_Servant, 26, 1), new Unit(Prefabs.Units.CHAR_Farmlands_Woodcutter_Standard_Servant, 34, 1), new Unit(Prefabs.Units.CHAR_Militia_BellRinger_Servant, 36, 1), new Unit(Prefabs.Units.CHAR_Militia_Bomber_Servant, 47, 1), new Unit(Prefabs.Units.CHAR_Militia_Crossbow_Servant, 36, 1), new Unit(Prefabs.Units.CHAR_Militia_Devoted_Servant, 56, 1), new Unit(Prefabs.Units.CHAR_Militia_Guard_Servant, 40, 1), new Unit(Prefabs.Units.CHAR_Militia_Heavy_Servant, 54, 1), new Unit(Prefabs.Units.CHAR_Militia_Light_Servant, 36, 1), new Unit(Prefabs.Units.CHAR_Militia_Torchbearer_Servant, 36, 1), new Unit(Prefabs.Units.CHAR_Militia_Longbowman_Servant, 42, 1), new Unit(Prefabs.Units.CHAR_Militia_Miner_Standard_Servant, 40, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_AceIncinerator_Servant, 72, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Batoon_Servant, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Pyro_Servant, 56, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Railgunner_Servant, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_SentryOfficer_Servant, 60, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Tazer_Servant, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Technician_Labworker_Servant, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Technician_Servant, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_TractorBeamer_Servant, 58, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Villager_Female_Servant, 50, 1), new Unit(Prefabs.Units.CHAR_Gloomrot_Villager_Male_Servant, 50, 1), new Unit(Prefabs.Units.CHAR_NecromancyDagger_SkeletonBerserker_Armored_Farbane, 20, 1), new Unit(Prefabs.Units.CHAR_Paladin_FallenAngel, 80, 1), new Unit(Prefabs.Units.CHAR_Spectral_Guardian, 1, 1), new Unit(Prefabs.Units.CHAR_Spectral_SpellSlinger, 60, 1), new Unit(Prefabs.Units.CHAR_Unholy_DeathKnight, 60, 1), new Unit(Prefabs.Units.CHAR_Unholy_FallenAngel, 0, 1) }; private static ArraySegment<Unit> GetUnitsForLevel(Unit[] units, int playerLevel) { int num = playerLevel + 10; int i; for (i = 1; i < units.Length && units[i].level < num; i++) { } return new ArraySegment<Unit>(units, 0, i); } public static ArraySegment<Unit> GetFactionUnits(Prefabs.Faction faction, int playerLevel, int wantedLevel) { //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Expected O, but got Unknown switch (faction) { case Prefabs.Faction.Bandits: return GetUnitsForLevel(bandit_units, playerLevel); case Prefabs.Faction.Undead: return GetUnitsForLevel(undead_minions, playerLevel); case Prefabs.Faction.Militia: if (wantedLevel > 3) { return GetUnitsForLevel(church, playerLevel); } if (wantedLevel > 1) { return GetUnitsForLevel(militia_units, playerLevel); } return GetUnitsForLevel(farmlands, playerLevel); case Prefabs.Faction.ChurchOfLum_SpotShapeshiftVampire: return GetUnitsForLevel(church, playerLevel); case Prefabs.Faction.Gloomrot: return GetUnitsForLevel(gloomrot, playerLevel); default: { ManualLogSource logger = Plugin.Logger; bool flag = default(bool); BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(25, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(Enum.GetName(faction)); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" units not yet suppported"); } logger.LogWarning(val); return GetUnitsForLevel(bandit_units, playerLevel); } } } } public class LazyDictionary<TKey, TValue> : Dictionary<TKey, TValue> where TValue : new() { public new TValue this[TKey key] { get { if (!ContainsKey(key)) { Add(key, new TValue()); } return base[key]; } set { if (!ContainsKey(key)) { Add(key, value); } else { base[key] = value; } } } } public static class Helper { private static Entity empty_entity = default(Entity); private static Random rand = new Random(); public static ServerGameSettings SGS = null; public static ServerGameManager SGM = default(ServerGameManager); public static UserActivityGridSystem UAGS = null; public static int groupRange = 50; public static int buffGUID = 1444835872; public static int forbiddenBuffGUID = -161632603; public static bool buffLogging = false; public static bool deathLogging = false; public static PrefabGUID appliedBuff = Database.Buff.Buff_4pT2; public static PrefabGUID vBloodType = new PrefabGUID(-338774148); public static Regex rxName = new Regex("(?<=\\])[^\\[].*"); public static bool FindPlayer(string name, bool mustOnline, out Entity playerEntity, out Entity userEntity) { //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_006b: 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_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_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_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: 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_003c: 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_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_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: 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_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = Plugin.Server.EntityManager; name = name.ToLower().Trim(); if (Cache.NamePlayerCache.TryGetValue(name.ToLower(), out var value)) { playerEntity = value.CharEntity; userEntity = value.UserEntity; if (mustOnline && !((EntityManager)(ref entityManager)).GetComponentData<User>(userEntity).IsConnected) { return false; } return true; } EntityQuery val = ((EntityManager)(ref entityManager)).CreateEntityQuery((ComponentType[])(object)new ComponentType[1] { ComponentType.ReadOnly<User>() }); Enumerator<Entity> enumerator = ((EntityQuery)(ref val)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)).GetEnumerator(); while (enumerator.MoveNext()) { Entity current = enumerator.Current; User componentData = ((EntityManager)(ref entityManager)).GetComponentData<User>(current); if (mustOnline && !componentData.IsConnected) { continue; } string text = ((object)(FixedString64Bytes)(ref componentData.CharacterName)).ToString().ToLower().Trim(); bool flag = text.Equals(name); if (!flag && text.EndsWith(name)) { int num = text.IndexOf("]"); if (num > 0 && text.Length > num && text.Substring(num + 1).Equals(name)) { flag = true; } } if (flag) { userEntity = current; playerEntity = componentData.LocalCharacter._Entity; return true; } } playerEntity = empty_entity; userEntity = empty_entity; return false; } public static bool FindPlayer(ulong steamid, bool mustOnline, out Entity playerEntity, out Entity userEntity) { //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_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_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_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) EntityManager entityManager = Plugin.Server.EntityManager; if (Cache.SteamPlayerCache.TryGetValue(steamid, out var value)) { playerEntity = value.CharEntity; userEntity = value.UserEntity; if (mustOnline && !((EntityManager)(ref entityManager)).GetComponentData<User>(userEntity).IsConnected) { return false; } return true; } playerEntity = empty_entity; userEntity = empty_entity; return false; } public static int GetAllies(Entity playerCharacter, out PlayerGroup playerGroup) { //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_000e: 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_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: 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_0070: Expected O, but got Unknown //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Expected O, but got Unknown //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: 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_00a1: 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_0694: Unknown result type (might be due to invalid IL or missing references) //IL_069b: Expected O, but got Unknown //IL_0675: Unknown result type (might be due to invalid IL or missing references) //IL_0677: Unknown result type (might be due to invalid IL or missing references) //IL_062d: Unknown result type (might be due to invalid IL or missing references) //IL_0634: Expected O, but got Unknown //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Expected O, but got Unknown //IL_033f: Unknown result type (might be due to invalid IL or missing references) //IL_0344: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_036a: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0373: Unknown result type (might be due to invalid IL or missing references) //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_037d: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Expected O, but got Unknown //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Expected O, but got Unknown //IL_03d7: Unknown result type (might be due to invalid IL or missing references) //IL_03dc: Unknown result type (might be due to invalid IL or missing references) //IL_072a: Unknown result type (might be due to invalid IL or missing references) //IL_06b9: Unknown result type (might be due to invalid IL or missing references) //IL_06cd: Unknown result type (might be due to invalid IL or missing references) //IL_0652: Unknown result type (might be due to invalid IL or missing references) //IL_0666: Unknown result type (might be due to invalid IL or missing references) //IL_03c9: Unknown result type (might be due to invalid IL or missing references) //IL_03ce: Unknown result type (might be due to invalid IL or missing references) //IL_038f: Unknown result type (might be due to invalid IL or missing references) //IL_0396: Expected O, but got Unknown //IL_02dc: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Expected O, but got Unknown //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Expected O, but got Unknown //IL_041d: Unknown result type (might be due to invalid IL or missing references) //IL_0422: Unknown result type (might be due to invalid IL or missing references) //IL_0426: Unknown result type (might be due to invalid IL or missing references) //IL_03fd: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0269: 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_0272: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_046e: Unknown result type (might be due to invalid IL or missing references) //IL_0451: Unknown result type (might be due to invalid IL or missing references) //IL_0453: Unknown result type (might be due to invalid IL or missing references) //IL_04a0: Unknown result type (might be due to invalid IL or missing references) //IL_04a2: Unknown result type (might be due to invalid IL or missing references) //IL_04df: Unknown result type (might be due to invalid IL or missing references) //IL_04e4: Unknown result type (might be due to invalid IL or missing references) //IL_04e8: Unknown result type (might be due to invalid IL or missing references) //IL_05ce: Unknown result type (might be due to invalid IL or missing references) //IL_05d5: Unknown result type (might be due to invalid IL or missing references) //IL_056f: Unknown result type (might be due to invalid IL or missing references) //IL_0571: Unknown result type (might be due to invalid IL or missing references) //IL_05a7: Unknown result type (might be due to invalid IL or missing references) //IL_05ac: Unknown result type (might be due to invalid IL or missing references) //IL_05b0: Unknown result type (might be due to invalid IL or missing references) //IL_05b5: Unknown result type (might be due to invalid IL or missing references) //IL_05b9: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = Plugin.Server.EntityManager; bool flag = default(bool); EntityManagerDebug debug; if (!((EntityManager)(ref entityManager)).HasComponent<PlayerCharacter>(playerCharacter)) { if (ExperienceSystem.xpLogging) { ManualLogSource logger = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(22, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Entity is not user: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(playerCharacter); } logger.LogInfo(val); ManualLogSource logger2 = Plugin.Logger; val = new BepInExInfoLogInterpolatedStringHandler(39, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Components for Player Character are: "); BepInExInfoLogInterpolatedStringHandler obj = val; entityManager = Plugin.Server.EntityManager; debug = ((EntityManager)(ref entityManager)).Debug; ((BepInExLogInterpolatedStringHandler)obj).AppendFormatted<string>(((EntityManagerDebug)(ref debug)).GetEntityInfo(playerCharacter)); } logger2.LogInfo(val); } playerGroup = new PlayerGroup { Allies = new Dictionary<Entity, Entity>() }; return 0; } if (ExperienceSystem.xpLogging) { ManualLogSource logger3 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(33, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Beginning To Parse Player Group"); } logger3.LogInfo(val); } if (Cache.PlayerAllies.TryGetValue(playerCharacter, out playerGroup)) { if (ExperienceSystem.xpLogging) { ManualLogSource logger4 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(38, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Allies Found in Cache, timestamp is "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(playerGroup.TimeStamp); } logger4.LogInfo(val); } if ((DateTime.Now - playerGroup.TimeStamp).TotalSeconds < 300.0) { return playerGroup.AllyCount; } if (ExperienceSystem.xpLogging) { ManualLogSource logger5 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(26, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Refreshing cached allies"); } logger5.LogInfo(val); } } entityManager = Plugin.Server.EntityManager; Team val2 = default(Team); if (!((EntityManager)(ref entityManager)).TryGetComponentData<Team>(playerCharacter, ref val2)) { if (ExperienceSystem.xpLogging) { ManualLogSource logger6 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(43, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Could not get team for Player Character: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(playerCharacter); } logger6.LogInfo(val); ManualLogSource logger7 = Plugin.Logger; val = new BepInExInfoLogInterpolatedStringHandler(39, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Components for Player Character are: "); BepInExInfoLogInterpolatedStringHandler obj2 = val; entityManager = Plugin.Server.EntityManager; debug = ((EntityManager)(ref entityManager)).Debug; ((BepInExLogInterpolatedStringHandler)obj2).AppendFormatted<string>(((EntityManagerDebug)(ref debug)).GetEntityInfo(playerCharacter)); } logger7.LogInfo(val); } playerGroup = new PlayerGroup { Allies = new Dictionary<Entity, Entity>() }; return 0; } if (ExperienceSystem.xpLogging) { ManualLogSource logger8 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(50, 3, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Player Character Found Value: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<int>(val2.Value); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" - Faction Index: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<int>(val2.FactionIndex); } logger8.LogInfo(val); } playerGroup.TimeStamp = DateTime.Now; Dictionary<Entity, Entity> dictionary = new Dictionary<Entity, Entity>(); entityManager = Plugin.Server.EntityManager; EntityQueryDesc[] array = new EntityQueryDesc[1]; EntityQueryDesc val3 = new EntityQueryDesc(); val3.All = Il2CppStructArray<ComponentType>.op_Implicit((ComponentType[])(object)new ComponentType[2] { ComponentType.ReadOnly<PlayerCharacter>(), ComponentType.ReadOnly<IsConnected>() }); val3.Options = (EntityQueryOptions)2; array[0] = val3; EntityQuery val4 = ((EntityManager)(ref entityManager)).CreateEntityQuery((EntityQueryDesc[])(object)array); NativeArray<Entity> val5 = ((EntityQuery)(ref val4)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)); if (ExperienceSystem.xpLogging) { ManualLogSource logger9 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(45, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": got connected PC entities buffer of length "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<int>(val5.Length); } logger9.LogInfo(val); } Enumerator<Entity> enumerator = val5.GetEnumerator(); Team val7 = default(Team); while (enumerator.MoveNext()) { Entity current = enumerator.Current; Entity val6; if (ExperienceSystem.xpLogging) { ManualLogSource logger10 = Plugin.Logger; string text = DateTime.Now.ToString(); val6 = current; logger10.LogInfo((object)(text + ": got Entity " + ((object)(Entity)(ref val6)).ToString())); } entityManager = Plugin.Server.EntityManager; if (((EntityManager)(ref entityManager)).HasComponent<PlayerCharacter>(current)) { if (ExperienceSystem.xpLogging) { ManualLogSource logger11 = Plugin.Logger; string text2 = DateTime.Now.ToString(); val6 = current; logger11.LogInfo((object)(text2 + ": Entity is User " + ((object)(Entity)(ref val6)).ToString())); } if (((Entity)(ref current)).Equals(playerCharacter)) { if (ExperienceSystem.xpLogging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Entity is self")); } dictionary[current] = current; continue; } bool flag2 = false; try { if (ExperienceSystem.xpLogging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Trying to get teams ")); } entityManager = Plugin.Server.EntityManager; bool flag3 = ((EntityManager)(ref entityManager)).TryGetComponentData<Team>(current, ref val7); if (ExperienceSystem.xpLogging) { if (flag3) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": Team Value:" + val7.Value + " - Faction Index: " + val7.FactionIndex)); } else { ManualLogSource logger12 = Plugin.Logger; string text3 = DateTime.Now.ToString(); val6 = current; logger12.LogInfo((object)(text3 + ": Could not get team for entity: " + ((object)(Entity)(ref val6)).ToString())); ManualLogSource logger13 = Plugin.Logger; string text4 = DateTime.Now.ToString(); entityManager = Plugin.Server.EntityManager; debug = ((EntityManager)(ref entityManager)).Debug; logger13.LogInfo((object)(text4 + ": Components for entity are: " + ((EntityManagerDebug)(ref debug)).GetEntityInfo(current))); } } flag2 = flag3 && val7.Value == val2.Value; } catch (Exception ex) { if (ExperienceSystem.xpLogging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": IsAllies Failed " + ex.Message)); } } if (flag2) { if (ExperienceSystem.xpLogging) { ManualLogSource logger14 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(13, 3, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Allies: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(playerCharacter); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" - "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(current); } logger14.LogInfo(val); } dictionary[current] = current; } else if (ExperienceSystem.xpLogging) { ManualLogSource logger15 = Plugin.Logger; BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(17, 3, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<DateTime>(DateTime.Now); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(": Not allies: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(playerCharacter); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" - "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(current); } logger15.LogInfo(val); } } else if (ExperienceSystem.xpLogging) { Plugin.Logger.LogInfo((object)(DateTime.Now.ToString() + ": No Associated User!")); } } playerGroup.Allies = dictionary; playerGroup.AllyCount = dictionary.Count; Cache.PlayerAllies[playerCharacter] = playerGroup; return playerGroup.AllyCount; } public static void ApplyBuff(Entity User, Entity Char, PrefabGUID GUID) { //IL_0005: 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_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_001d: 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_0025: 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_0033: 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_003a: Unknown result type (might be due to invalid IL or missing references) Plugin.Server.GetExistingSystem<DebugEventsSystem>(); FromCharacter val = default(FromCharacter); val.User = User; val.Character = Char; ApplyBuffDebugEvent val2 = default(ApplyBuffDebugEvent); val2.BuffPrefabGUID = GUID; ApplyBuffDebugEvent item = val2; Database.playerBuffs.Add(item); } public static string GetTrueName(string name) { MatchCollection matchCollection = rxName.Matches(name); if (matchCollection.Count > 0) { name = matchCollection[matchCollection.Count - 1].ToString(); } return name; } public static void CreatePlayerCache() { //IL_0019: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: 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_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0085: 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_008d: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: 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_00bc: 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_00f9: Unknown result type (might be due to invalid IL or missing references) Cache.NamePlayerCache.Clear(); Cache.SteamPlayerCache.Clear(); EntityManager entityManager = Plugin.Server.EntityManager; EntityQueryDesc[] array = new EntityQueryDesc[1]; EntityQueryDesc val = new EntityQueryDesc(); val.All = Il2CppStructArray<ComponentType>.op_Implicit((ComponentType[])(object)new ComponentType[1] { ComponentType.ReadOnly<User>() }); val.Options = (EntityQueryOptions)2; array[0] = val; EntityQuery val2 = ((EntityManager)(ref entityManager)).CreateEntityQuery((EntityQueryDesc[])(object)array); Enumerator<Entity> enumerator = ((EntityQuery)(ref val2)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)).GetEnumerator(); while (enumerator.MoveNext()) { Entity current = enumerator.Current; entityManager = Plugin.Server.EntityManager; User componentData = ((EntityManager)(ref entityManager)).GetComponentData<User>(current); PlayerData value = new PlayerData(((object)(FixedString64Bytes)(ref componentData.CharacterName)).ToString(), componentData.PlatformId, componentData.IsConnected, current, componentData.LocalCharacter._Entity); Cache.NamePlayerCache.TryAdd(GetTrueName(((object)(FixedString64Bytes)(ref componentData.CharacterName)).ToString().ToLower()), value); Cache.SteamPlayerCache.TryAdd(componentData.PlatformId, value); } Plugin.Logger.LogWarning((object)"Player Cache Created."); } public static Dictionary<TKey, TVal> LoadDB<TKey, TVal>(string specificFile) { confirmFile("BepInEx/config/RPGMods/Experience/", specificFile); confirmFile("BepInEx/config/RPGMods/Experience/Backup/", specificFile); string json = File.ReadAllText("BepInEx/config/RPGMods/Experience/" + specificFile); Dictionary<TKey, TVal> dictionary; try { dictionary = JsonSerializer.Deserialize<Dictionary<TKey, TVal>>(json); if (dictionary == null) { json = File.ReadAllText("BepInEx/config/RPGMods/Experience/Backup/" + specificFile); dictionary = JsonSerializer.Deserialize<Dictionary<TKey, TVal>>(json); } Plugin.Logger.LogWarning((object)(DateTime.Now.ToString() + ": DB Populated for " + specificFile)); } catch (Exception ex) { dictionary = new Dictionary<TKey, TVal>(); Plugin.Logger.LogWarning((object)(DateTime.Now.ToString() + ": DB Created for " + specificFile)); Plugin.Logger.LogWarning((object)(DateTime.Now.ToString() + ": Caught error for " + specificFile + " of: " + ex.ToString())); } return dictionary; } public static void TeleportTo(ChatCommandContext ctx, Tuple<float, float, float> position) { //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_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_0021: 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_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003e: 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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0061: 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_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: 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_0081: 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_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = Plugin.Server.EntityManager; Entity val = ((EntityManager)(ref entityManager)).CreateEntity((ComponentType[])(object)new ComponentType[2] { ComponentType.ReadWrite<FromCharacter>(), ComponentType.ReadWrite<PlayerTeleportDebugEvent>() }); entityManager = Plugin.Server.EntityManager; ((EntityManager)(ref entityManager)).SetComponentData<FromCharacter>(val, new FromCharacter { User = ctx.Event.SenderUserEntity, Character = ctx.Event.SenderCharacterEntity }); entityManager = Plugin.Server.EntityManager; ((EntityManager)(ref entityManager)).SetComponentData<PlayerTeleportDebugEvent>(val, new PlayerTeleportDebugEvent { Position = new float3(position.Item1, position.Item2, position.Item3), Target = (TeleportTarget)0 }); } public static void AddItemToInventory(ChatCommandContext ctx, PrefabGUID guid, int amount) { //IL_0005: 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_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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) Plugin.Server.GetExistingSystem<GameDataSystem>(); AddItemSettings val = default(AddItemSettings); val.EntityManager = Plugin.Server.EntityManager; val.DropRemainder = true; val.EquipIfPossible = true; InventoryUtilitiesServer.TryAddItem(val, ctx.Event.SenderCharacterEntity, guid, amount); } public static bool IsPlayerInCombat(Entity player) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0021: 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_002c: Unknown result type (might be due to invalid IL or missing references) if (!BuffUtility.HasBuff(Plugin.Server.EntityManager, player, PrefabIdentifier.op_Implicit(Database.Buff.InCombat))) { return BuffUtility.HasBuff(Plugin.Server.EntityManager, player, PrefabIdentifier.op_Implicit(Database.Buff.InCombat_PvP)); } return true; } public static void confirmFile(string address, string file) { try { Directory.CreateDirectory(address); } catch (Exception ex) { Plugin.Logger.LogWarning((object)(DateTime.Now.ToString() + ": Error creating directory at " + address + "\n Error is: " + ex.Message)); } try { if (!File.Exists(address + file)) { File.Create(address + file).Dispose(); } } catch (Exception ex2) { Plugin.Logger.LogWarning((object)(DateTime.Now.ToString() + ": Error creating file at " + address + "\n Error is: " + ex2.Message)); } } } public class ItemKit { public string Name { get; } public Dictionary<int, int> PrefabGUIDs { get; } public ItemKit(string name, Dictionary<int, int> prefabGuids) { Name = name; PrefabGUIDs = prefabGuids; } } public static class Output { public static void CustomErrorMessage(VChatEvent ev, string message) { //IL_0005: 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) ServerChatUtils.SendSystemMessageToClient(Plugin.Server.EntityManager, ev.User, "<color=#ff0000