using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Core.Logging.Interpolation; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using HarmonyLib; using Il2CppInterop.Runtime; using Il2CppInterop.Runtime.InteropTypes.Arrays; using Il2CppSystem.Collections.Generic; using LeadAHorseToWater.Compat; using LeadAHorseToWater.Processes; using LeadAHorseToWater.VCFCompat; using Microsoft.CodeAnalysis; using ProjectM; using ProjectM.CastleBuilding; using ProjectM.Network; using SemanticVersioning; using Stunlock.Core; 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("LeadAHorseToWater")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Lead a horse to a well to make it drink.")] [assembly: AssemblyFileVersion("0.8.0.0")] [assembly: AssemblyInformationalVersion("0.8.0+7.Branch.main.Sha.3a4f86d79ddaf80b1994addd34afd69104ed7425")] [assembly: AssemblyProduct("LeadAHorseToWater")] [assembly: AssemblyTitle("LeadAHorseToWater")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.8.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } internal static class ECSExtensions { internal static void With(this Entity entity, VExtensions.ActionRef action) where T : struct { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) T item = entity.RW(); action(ref item); EntityManager entityManager = VWorld.Game.EntityManager; ((EntityManager)(ref entityManager)).SetComponentData(entity, item); } internal static bool Has(this Entity entity) where T : struct { //IL_0005: 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_001d: 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) int num = TypeIndex.op_Implicit(TypeManager.GetTypeIndex(Il2CppType.Of())); EntityManager entityManager = VWorld.Game.EntityManager; return ((EntityManager)(ref entityManager)).HasComponentRaw(entity, TypeIndex.op_Implicit(num)); } internal unsafe static T RW(this Entity entity) where T : struct { //IL_0005: 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_001d: 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_007d: Unknown result type (might be due to invalid IL or missing references) int num = TypeIndex.op_Implicit(TypeManager.GetTypeIndex(Il2CppType.Of())); EntityManager entityManager = VWorld.Game.EntityManager; T* componentDataRawRW = (T*)((EntityManager)(ref entityManager)).GetComponentDataRawRW(entity, TypeIndex.op_Implicit(num)); if (componentDataRawRW == null) { throw new InvalidOperationException($"Failure to access ReadWrite <{typeof(T).Name}> typeIndex({num}) on entity({entity})."); } return *componentDataRawRW; } internal unsafe static T Read(this Entity entity) where T : struct { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_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_001d: 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_007d: Unknown result type (might be due to invalid IL or missing references) int num = TypeIndex.op_Implicit(TypeManager.GetTypeIndex(Il2CppType.Of())); EntityManager entityManager = VWorld.Game.EntityManager; T* componentDataRawRO = (T*)((EntityManager)(ref entityManager)).GetComponentDataRawRO(entity, TypeIndex.op_Implicit(num)); if (componentDataRawRO == null) { throw new InvalidOperationException($"Failure to access ReadOnly <{typeof(T).Name}> typeIndex({num}) on entity({entity})."); } return *componentDataRawRO; } } namespace LeadAHorseToWater { [BepInPlugin("LeadAHorseToWater", "LeadAHorseToWater", "0.8.0")] [BepInProcess("VRisingServer.exe")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BasePlugin { private Harmony _harmony; public static ManualLogSource LogInstance { get; private set; } public override void Load() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown LogInstance = ((BasePlugin)this).Log; Settings.Initialize(((BasePlugin)this).Config); _harmony = Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null); ManualLogSource log = ((BasePlugin)this).Log; bool flag = default(bool); BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(42, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Plugin "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted("LeadAHorseToWater"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is loaded! (Bloodstone-free build)"); } log.LogInfo(val); ((BasePlugin)this).Log.LogInfo((object)"Trying to find VCF:"); if (Commands.Enabled) { Commands.Register(); } else { ((BasePlugin)this).Log.LogError((object)"This mod has commands, you need to install VampireCommandFramework to use them, find whereever you get mods or : https://a.deca.gg/vcf ."); } } public override bool Unload() { if (Commands.Enabled) { Commands.Unregister(); } Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } return true; } } public static class Settings { public static ConfigEntry DISTANCE_REQUIRED; public static ConfigEntry SECONDS_DRINK_PER_TICK; public static ConfigEntry MAX_DRINK_AMOUNT; public static ConfigEntry ENABLE_RENAME; public static ConfigEntry ENABLED_WELL_PREFAB; public static HashSet EnabledWellPrefabs = new HashSet(); private static Dictionary _fountains = new Dictionary { { "stone", 986517450 }, { "iron", 1247163010 }, { "bronze", -1790149989 }, { "small", 549920910 }, { "large", 177891172 } }; private static ManualLogSource log => Plugin.LogInstance; public static ConfigEntry HORSE_BREED_PREFAB { get; private set; } public static ConfigEntry HORSE_BREED_ITEM_NAME { get; private set; } public static ConfigEntry HORSE_BREED_COST { get; private set; } public static ConfigEntry HORSE_BREED_MUTATION_RANGE { get; private set; } public static ConfigEntry HORSE_BREED_MAX_SPEED { get; private set; } public static ConfigEntry HORSE_BREED_MAX_ROTATION { get; private set; } public static ConfigEntry HORSE_BREED_MAX_ACCELERATION { get; private set; } internal static void Initialize(ConfigFile config) { DISTANCE_REQUIRED = config.Bind("Server", "DistanceRequired", 5f, "Horses must be within this distance from well. (5 =1 tile)"); SECONDS_DRINK_PER_TICK = config.Bind("Server", "SecondsDrinkPerTick", 30, "How many seconds added per drink tick (~1.5seconds), default values would be about 24 minutes for the default max amount at fountain."); MAX_DRINK_AMOUNT = config.Bind("Server", "MaxDrinkAmount", 28800, "Time in seconds, default value is roughly amount of time when you take wild horses."); ENABLE_RENAME = config.Bind("Server", "EnableRename", true, "If true will rename horses in drinking range with a symbol"); ENABLED_WELL_PREFAB = config.Bind("Server", "EnabledWellPrefabs", "Stone, Large", "This is a comma seperated list of prefabs to use for the well. You can choose from one of (stone, iron, bronze, small, big) or (advanced: at your own risk) you can also include an arbitrary guid hash of of a castle connected placeable."); HORSE_BREED_PREFAB = config.Bind("Breeding", "BreedingRequiredItem", -570287766, "This prefab is consumed as a cost to breed horses."); HORSE_BREED_ITEM_NAME = config.Bind("Breeding", "BreedingCostItemName", "special fish (twilight snapper)", "This is the name of the required item that will be consumed."); HORSE_BREED_COST = config.Bind("Breeding", "BreedingCostAmount", 1, "This is the amount of the required item consumed."); HORSE_BREED_MUTATION_RANGE = config.Bind("Breeding", "MutationRange", 0.05f, "This is the half range +/- this value for applied for mutation."); HORSE_BREED_MAX_SPEED = config.Bind("Breeding", "MaxSpeed", 14f, "The absolute maximum speed for horses including selective breeding and mutations."); HORSE_BREED_MAX_ROTATION = config.Bind("Breeding", "MaxRotation", 16f, "The absolute maximum rotation for horses including selective breeding and mutations."); HORSE_BREED_MAX_ACCELERATION = config.Bind("Breeding", "MaxAcceleration", 9f, "The absolute maximum acceleration for horses including selective breeding and mutations."); ENABLED_WELL_PREFAB.SettingChanged += delegate { ParseEnabledWells(); }; ParseEnabledWells(); } private static void ParseEnabledWells() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Expected O, but got Unknown //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Expected O, but got Unknown //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Expected O, but got Unknown EnabledWellPrefabs.Clear(); string value = ENABLED_WELL_PREFAB.Value; string[] array = value.Split(",", StringSplitOptions.RemoveEmptyEntries); ManualLogSource obj = log; bool flag = default(bool); BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(29, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Parsing "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(value); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is value "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(array); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" are values"); } obj.LogDebug(val); string[] array2 = array; for (int i = 0; i < array2.Length; i++) { string text = array2[i].Trim().ToLowerInvariant(); int value2; if (int.TryParse(text, out var result)) { EnabledWellPrefabs.Add(result); ManualLogSource obj2 = log; val = new BepInExDebugLogInterpolatedStringHandler(20, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(result); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is acting well type"); } obj2.LogDebug(val); } else if (_fountains.TryGetValue(text, out value2)) { EnabledWellPrefabs.Add(value2); ManualLogSource obj3 = log; val = new BepInExDebugLogInterpolatedStringHandler(14, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(value2); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(text); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" well type"); } obj3.LogDebug(val); } else { ManualLogSource obj4 = log; BepInExWarningLogInterpolatedStringHandler val2 = new BepInExWarningLogInterpolatedStringHandler(27, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("Unknown well prefab value: "); ((BepInExLogInterpolatedStringHandler)val2).AppendFormatted(text); } obj4.LogWarning(val2); } } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "LeadAHorseToWater"; public const string PLUGIN_NAME = "LeadAHorseToWater"; public const string PLUGIN_VERSION = "0.8.0"; } } namespace LeadAHorseToWater.Processes { public record BabyHorseData(string name, Team team, float3 position, float speed, float acceleration, float rotation, int parentId1, int parentId2, DateTime notBefore); public static class BreedHorseProcess { public static BabyHorseData NextBabyData = null; private static HashSet _knownHorses = new HashSet(); private static ManualLogSource _log => Plugin.LogInstance; public static void Update(NativeArray horses) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_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_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown //IL_00a4: 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_007c: 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_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Expected O, but got Unknown //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0186: 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_0284: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Expected O, but got Unknown //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) try { Enumerator enumerator = horses.GetEnumerator(); bool flag = default(bool); BepInExDebugLogInterpolatedStringHandler val3; while (enumerator.MoveNext()) { Entity current = enumerator.Current; if (!_knownHorses.Contains(current.Index)) { NetworkId val = current.Read(); Translation val2 = current.Read(); ManualLogSource log = _log; val3 = new BepInExDebugLogInterpolatedStringHandler(27, 3, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("Found horse "); ((BepInExLogInterpolatedStringHandler)val3).AppendFormatted(current.Index); ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral(" NetworkId="); ((BepInExLogInterpolatedStringHandler)val3).AppendFormatted(val); ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral(" at "); ((BepInExLogInterpolatedStringHandler)val3).AppendFormatted(val2); } log.LogDebug(val3); _knownHorses.Add(current.Index); } } if (NextBabyData == null || DateTime.Now < NextBabyData.notBefore) { return; } ManualLogSource log2 = _log; val3 = new BepInExDebugLogInterpolatedStringHandler(24, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("We're expecting a baby: "); ((BepInExLogInterpolatedStringHandler)val3).AppendFormatted(NextBabyData); } log2.LogDebug(val3); Entity baby = Entity.Null; float num = float.MaxValue; enumerator = horses.GetEnumerator(); while (enumerator.MoveNext()) { Entity current2 = enumerator.Current; if (current2.Index == NextBabyData.parentId1 || current2.Index == NextBabyData.parentId2) { continue; } float num2 = Vector3.Distance(float3.op_Implicit(current2.Read().Value), float3.op_Implicit(NextBabyData.position)); if (num2 < num) { ManualLogSource log3 = _log; val3 = new BepInExDebugLogInterpolatedStringHandler(19, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("Closest horse <"); ((BepInExLogInterpolatedStringHandler)val3).AppendFormatted(current2.Index); ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("> - "); ((BepInExLogInterpolatedStringHandler)val3).AppendFormatted(num2); } log3.LogDebug(val3); num = num2; baby = current2; } } if (num > 8f) { _log.LogDebug((object)"Closest horse is too far so I give up, resetting baby data"); NextBabyData = null; return; } EntityManager entityManager = VWorld.Server.EntityManager; ((EntityManager)(ref entityManager)).SetComponentData(baby, new Team { Value = NextBabyData.team.Value }); baby.With((VExtensions.ActionRef)delegate(ref NameableInteractable ni) { //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) ni.Name = FixedString64Bytes.op_Implicit(NextBabyData.name); }); baby.With((VExtensions.ActionRef)delegate(ref Mountable mount) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown mount.MaxSpeed = NextBabyData.speed; mount.Acceleration = NextBabyData.acceleration; mount.RotationSpeed = NextBabyData.rotation; ManualLogSource log5 = _log; bool flag2 = default(bool); BepInExDebugLogInterpolatedStringHandler val4 = new BepInExDebugLogInterpolatedStringHandler(48, 4, ref flag2); if (flag2) { ((BepInExLogInterpolatedStringHandler)val4).AppendLiteral("Updated baby "); ((BepInExLogInterpolatedStringHandler)val4).AppendFormatted(baby.Index); ((BepInExLogInterpolatedStringHandler)val4).AppendLiteral(" \n Speed "); ((BepInExLogInterpolatedStringHandler)val4).AppendFormatted(mount.MaxSpeed); ((BepInExLogInterpolatedStringHandler)val4).AppendLiteral("\n Acceleration "); ((BepInExLogInterpolatedStringHandler)val4).AppendFormatted(mount.Acceleration); ((BepInExLogInterpolatedStringHandler)val4).AppendLiteral("\n Rotation "); ((BepInExLogInterpolatedStringHandler)val4).AppendFormatted(mount.RotationSpeed); } log5.LogDebug(val4); }); NextBabyData = null; } catch (Exception ex) { ManualLogSource log4 = _log; if (log4 != null) { log4.LogError((object)ex); } NextBabyData = null; } } } public class WellCacheProcess { private const int MAX_BATCH = 1000; private bool _initialized; private Queue _possibleWells = new Queue(); private bool _scanForAdded; private static ManualLogSource _log => Plugin.LogInstance; public Dictionary Cache { get; } = new Dictionary(); public IEnumerable Positions => Cache.Values.Select(((bool IsInvalidated, float3 Location) x) => x.Location); public void PlanScanForAdded() { _scanForAdded = true; } public void InvalidateEntity(Entity e) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001c: 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) if (Cache.ContainsKey(e)) { Cache[e] = (true, Cache[e].Location); } } public void InvalidateAll() { //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_0026: 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_0034: Unknown result type (might be due to invalid IL or missing references) foreach (Entity item in Cache.Keys.ToList()) { Cache[item] = (true, Cache[item].Location); } } public void Update() { //IL_006a: 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_0072: 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_0098: Expected O, but got Unknown //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Expected O, but got Unknown if (!_initialized) { _initialized = true; QueryForPossible(includeDisabled: true); } else if (_scanForAdded) { QueryForPossible(includeDisabled: false); _scanForAdded = false; } bool flag = default(bool); ManualLogSource log; if (_possibleWells.Any()) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); int num = Math.Min(1000, _possibleWells.Count); for (int i = 0; i < num; i++) { Entity entity = _possibleWells.Dequeue(); UpdateCache(entity); } log = _log; if (log != null) { BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(48, 3, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Updated "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(num); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" entities in "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(stopwatch.ElapsedMilliseconds); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("ms, "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(_possibleWells.Count); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" remain, ending update."); } log.LogDebug(val); } return; } List> list = Cache.Where((KeyValuePair x) => x.Value.IsInvalidated).ToList(); if (!list.Any()) { return; } Stopwatch stopwatch2 = new Stopwatch(); stopwatch2.Start(); foreach (KeyValuePair item in list) { Entity key = item.Key; UpdateCache(key); } log = _log; if (log != null) { BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(43, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Invalidated "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(list.Count); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" entities in "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(stopwatch2.ElapsedMilliseconds); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("ms, ending update."); } log.LogDebug(val); } } public static bool IsWellPrefab(PrefabGUID guid) { return Settings.EnabledWellPrefabs.Contains(((PrefabGUID)(ref guid)).GuidHash); } private void UpdateCache(Entity entity) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: 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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Expected O, but got Unknown //IL_0059: 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_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = VWorld.Server.EntityManager; bool flag = default(bool); ManualLogSource log; if (((EntityManager)(ref entityManager)).HasComponent(entity)) { entityManager = VWorld.Server.EntityManager; if (((EntityManager)(ref entityManager)).HasComponent(entity)) { entityManager = VWorld.Server.EntityManager; BlueprintData componentData = ((EntityManager)(ref entityManager)).GetComponentData(entity); if (IsWellPrefab(componentData.Guid)) { entityManager = VWorld.Server.EntityManager; LocalToWorld componentData2 = ((EntityManager)(ref entityManager)).GetComponentData(entity); log = _log; if (log != null) { BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(39, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Well Found: Blueprint GUID="); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(componentData.Guid); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(", Location="); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(((LocalToWorld)(ref componentData2)).Position); } log.LogDebug(val); } (bool, float3) value = (false, ((LocalToWorld)(ref componentData2)).Position); if (Cache.ContainsKey(entity)) { Cache[entity] = value; } else { Cache.Add(entity, value); } return; } } } if (!Cache.Remove(entity)) { return; } log = _log; if (log != null) { BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(37, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Updating "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(entity.Index); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" but no longer matches well."); } log.LogDebug(val); } } public void QueryForPossible(bool includeDisabled) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected O, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Expected O, but got Unknown ManualLogSource log = _log; bool flag = default(bool); if (log != null) { BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(27, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Querying for Wells FullMap="); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(includeDisabled); } log.LogDebug(val); } Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); EntityManager entityManager = VWorld.Server.EntityManager; EntityQueryDesc[] array = new EntityQueryDesc[1]; EntityQueryDesc val2 = new EntityQueryDesc(); val2.All = Il2CppStructArray.op_Implicit((ComponentType[])(object)new ComponentType[7] { ComponentType.ReadOnly(), ComponentType.ReadOnly(), ComponentType.ReadOnly(), ComponentType.ReadOnly(), ComponentType.ReadOnly(), ComponentType.ReadOnly(), ComponentType.ReadOnly() }); val2.Options = (EntityQueryOptions)(includeDisabled ? 2 : 0); array[0] = val2; EntityQuery val3 = ((EntityManager)(ref entityManager)).CreateEntityQuery((EntityQueryDesc[])(object)array); _possibleWells = new Queue((IEnumerable)((EntityQuery)(ref val3)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)).ToArray()); log = _log; if (log != null) { BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(15, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Enqueued "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(_possibleWells.Count); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" in "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(stopwatch.ElapsedMilliseconds); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("ms"); } log.LogDebug(val); } } } } namespace LeadAHorseToWater.Patches { [HarmonyPatch(typeof(CheckInSunSystem), "OnUpdate")] public static class LeadAHorseToWaterSystem { private static DateTime NoUpdateBefore = DateTime.MinValue; private const string DRINKING_PREFIX = "♻ "; private static ManualLogSource _log => Plugin.LogInstance; public static WellCacheProcess Wells { get; } = new WellCacheProcess(); public static void Prefix(CheckInSunSystem __instance) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_006a: 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_007f: 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_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: 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_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) try { if (NoUpdateBefore > DateTime.Now) { return; } NoUpdateBefore = DateTime.Now.AddSeconds(1.5); NativeArray horses = HorseUtil.GetHorses(); if (horses.Length == 0) { return; } Wells.Update(); BreedHorseProcess.Update(horses); Enumerator enumerator = horses.GetEnumerator(); while (enumerator.MoveNext()) { Entity current = enumerator.Current; if (!IsHorseWeFeed(current)) { continue; } EntityManager entityManager = VWorld.Server.EntityManager; LocalToWorld componentData = ((EntityManager)(ref entityManager)).GetComponentData(current); float3 position = ((LocalToWorld)(ref componentData)).Position; bool flag = false; foreach (float3 position2 in Wells.Positions) { if (Vector3.Distance(float3.op_Implicit(position2), float3.op_Implicit(position)) < Settings.DISTANCE_REQUIRED.Value) { flag = true; break; } } HandleRename(current, flag); if (flag) { current.WithComponentData((VExtensions.ActionRef)delegate(ref FeedableInventory inventory) { inventory.FeedProgressTime = Mathf.Max(inventory.FeedProgressTime, Mathf.Min(inventory.FeedProgressTime + (float)Settings.SECONDS_DRINK_PER_TICK.Value, (float)Settings.MAX_DRINK_AMOUNT.Value)); inventory.IsFed = true; }); } } } catch (Exception ex) { ManualLogSource log = _log; if (log != null) { log.LogError((object)ex.ToString()); } } } private static void HandleRename(Entity horseEntity, bool closeEnough) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) if (!Settings.ENABLE_RENAME.Value) { return; } horseEntity.WithComponentData((VExtensions.ActionRef)delegate(ref NameableInteractable nameable) { //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_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) string text = ((object)Unsafe.As(ref nameable.Name)/*cast due to .constrained prefix*/).ToString(); bool flag = text.StartsWith("♻ "); if (!closeEnough && flag) { nameable.Name = FixedString64Bytes.op_Implicit(text.Substring("♻ ".Length)); } else if (closeEnough && !flag) { nameable.Name = FixedString64Bytes.op_Implicit("♻ " + text); } }); } private static bool IsHorseWeFeed(Entity horse) { //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_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Expected O, but got Unknown //IL_005d: 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) EntityManager entityManager = VWorld.Server.EntityManager; if (!horse.Has()) { return false; } ComponentLookup componentLookup = ((EntityManager)(ref entityManager)).GetComponentLookup(true); if (((EntityManager)(ref entityManager)).HasComponent(horse)) { return !Team.IsInUnitTeam(componentLookup[horse]); } ManualLogSource log = _log; if (log != null) { bool flag = default(bool); BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(39, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Horse <"); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(horse.Index); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("> does not have Team component. "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(horse); } log.LogDebug(val); } return false; } } [HarmonyPatch(typeof(PlaceTileModelSystem))] public static class PlaceTileModelSystem_Patch { private static ManualLogSource _log => Plugin.LogInstance; [HarmonyPostfix] [HarmonyPatch("ClearEditing")] public static void Moving(PlaceTileModelSystem __instance, EntityManager entityManager, Entity tileModelEntity, Entity character) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_002e: Unknown result type (might be due to invalid IL or missing references) LeadAHorseToWaterSystem.Wells.InvalidateEntity(tileModelEntity); ManualLogSource log = _log; if (log != null) { bool flag = default(bool); BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(27, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Pseudo Moving Event Entity:"); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(tileModelEntity.Index); } log.LogDebug(val); } } [HarmonyPostfix] [HarmonyPatch("VerifyCanBuildTileModels")] public static void Destroying(PlaceTileModelSystem __instance, EntityManager entityManager, Entity character) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown LeadAHorseToWaterSystem.Wells.InvalidateAll(); ManualLogSource log = _log; if (log != null) { bool flag = default(bool); BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(20, 0, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Pseudo Destroy Event"); } log.LogDebug(val); } } [HarmonyPostfix] [HarmonyPatch("HasUnlockedBlueprint")] public static void Building(PlaceTileModelSystem __instance, Entity user, PrefabGUID prefabGuid, Entity prefab) { //IL_0000: 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_0027: Expected O, but got Unknown //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (!WellCacheProcess.IsWellPrefab(prefabGuid)) { return; } LeadAHorseToWaterSystem.Wells.PlanScanForAdded(); ManualLogSource log = _log; if (log != null) { bool flag = default(bool); BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(40, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Pseudo Building Event prefab: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(prefabGuid); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(", entity: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(prefab.Index); } log.LogDebug(val); } } } } namespace LeadAHorseToWater.Compat { internal static class EntityExtensions { internal static void WithComponentData(this Entity entity, VExtensions.ActionRef action) where T : struct { //IL_0000: Unknown result type (might be due to invalid IL or missing references) entity.With(action); } } public static class VExtensions { public delegate void ActionRef(ref T item); } public static class VWorld { private static World _server; public static World Server { get { if (_server != null && _server.IsCreated) { return _server; } _server = GetWorld("Server"); return _server; } } public static World Game => Server; public static bool IsServer => true; public static bool IsClient => false; private static World GetWorld(string name) { Enumerator enumerator = World.s_AllWorlds.GetEnumerator(); while (enumerator.MoveNext()) { World current = enumerator.Current; if (current.Name == name) { return current; } } return null; } } } namespace LeadAHorseToWater.VCFCompat { public static class Commands { public record Horse(Entity Entity); public class NamedHorseConverter : CommandArgumentConverter { [CommandGroup("horse", "h")] public class HorseCommands { private static PrefabGUID BreedItemType = new PrefabGUID(-570287766); private const string TagColor = "#BF5"; private Horse GetRequiredClosestHorse(ChatCommandContext ctx) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) Entity? closetHorse = HorseUtil.GetClosetHorse(ctx.Event.SenderCharacterEntity); if (!closetHorse.HasValue) { throw ctx.Error("No closest horse and expected to find one based on usage."); } return new Horse(closetHorse.Value); } [Command("breed", null, null, null, null, false)] public void Breed(ChatCommandContext ctx) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: 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_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012e: 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) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Expected O, but got Unknown //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Expected O, but got Unknown //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02fc: Unknown result type (might be due to invalid IL or missing references) //IL_0309: Unknown result type (might be due to invalid IL or missing references) //IL_0329: 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_0333: Unknown result type (might be due to invalid IL or missing references) //IL_0336: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Unknown result type (might be due to invalid IL or missing references) //IL_0369: Unknown result type (might be due to invalid IL or missing references) //IL_036b: Unknown result type (might be due to invalid IL or missing references) //IL_036d: Unknown result type (might be due to invalid IL or missing references) //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_023e: 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_0272: Unknown result type (might be due to invalid IL or missing references) Entity senderCharacterEntity = ctx.Event.SenderCharacterEntity; if (BreedHorseProcess.NextBabyData != null) { throw ctx.Error("There's already a pair breeding, try again in a few seconds."); } Entity val = default(Entity); if (!InventoryUtilities.TryGetInventoryEntity(VWorld.Server.EntityManager, senderCharacterEntity, ref val, 0)) { throw ctx.Error("Could not find inventory, have you not created a character yet?"); } List list = HorseUtil.ClosestHorses(senderCharacterEntity); if (list.Count != 2) { throw ctx.Error($"Must have only two nearby horses, found {list.Count}"); } PrefabGUID val2 = default(PrefabGUID); ((PrefabGUID)(ref val2))..ctor(Settings.HORSE_BREED_PREFAB.Value); int value = Settings.HORSE_BREED_COST.Value; if (!InventoryUtilitiesServer.TryRemoveItem(VWorld.Server.EntityManager, val, val2, value)) { throw ctx.Error($"You must have at least {value} {Settings.HORSE_BREED_ITEM_NAME.Value} in your inventory."); } float3 value2 = list[0].Read().Value; float3 value3 = list[1].Read().Value; Vector3 val3 = Vector3.Lerp(float3.op_Implicit(value2), float3.op_Implicit(value3), 0.5f); Mountable val4 = list[0].Read(); ManualLogSource log = _log; bool flag = default(bool); BepInExDebugLogInterpolatedStringHandler val5 = new BepInExDebugLogInterpolatedStringHandler(44, 4, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val5).AppendLiteral("Parent "); ((BepInExLogInterpolatedStringHandler)val5).AppendFormatted(list[0].Index); ((BepInExLogInterpolatedStringHandler)val5).AppendLiteral("\n Speed: "); ((BepInExLogInterpolatedStringHandler)val5).AppendFormatted(val4.MaxSpeed); ((BepInExLogInterpolatedStringHandler)val5).AppendLiteral("\n Acceleration: "); ((BepInExLogInterpolatedStringHandler)val5).AppendFormatted(val4.Acceleration); ((BepInExLogInterpolatedStringHandler)val5).AppendLiteral("\n Rotation: "); ((BepInExLogInterpolatedStringHandler)val5).AppendFormatted(val4.RotationSpeed); } log.LogDebug(val5); Mountable val6 = list[1].Read(); ManualLogSource log2 = _log; val5 = new BepInExDebugLogInterpolatedStringHandler(44, 4, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val5).AppendLiteral("Parent "); ((BepInExLogInterpolatedStringHandler)val5).AppendFormatted(list[1].Index); ((BepInExLogInterpolatedStringHandler)val5).AppendLiteral("\n Speed: "); ((BepInExLogInterpolatedStringHandler)val5).AppendFormatted(val6.MaxSpeed); ((BepInExLogInterpolatedStringHandler)val5).AppendLiteral("\n Acceleration: "); ((BepInExLogInterpolatedStringHandler)val5).AppendFormatted(val6.Acceleration); ((BepInExLogInterpolatedStringHandler)val5).AppendLiteral("\n Rotation: "); ((BepInExLogInterpolatedStringHandler)val5).AppendFormatted(val6.RotationSpeed); } log2.LogDebug(val5); StringBuilder sb = new StringBuilder(); sb.AppendLine("Offspring Details"); Func obj = delegate(string label, float parent1, float parent2, float maxValue) { string text = parent1.ToString("F1"); string text2 = parent2.ToString("F2"); float num2; string value4; if (_random.NextDouble() > 0.5) { num2 = parent1; value4 = $"( {Format.Underline(text)} | {Format.Color(text2, "#888")} )"; } else { num2 = parent2; value4 = $"( {Format.Color(text, "#888")} | {Format.Underline(text2)} )"; } float num3 = maxValue * Settings.HORSE_BREED_MUTATION_RANGE.Value; float num4 = (float)(_random.NextDouble() * 2.0 - 1.0); float num5 = num4 * num3; char? value5 = ((num4 > 0f) ? new char?('+') : ((char?)null)); string value6 = Format.Color($"{value5}{num5:F1}[{num4:P}]", (num5 > 0f) ? "#1d1" : "#d11"); float num6 = MathF.Min(num2 + num5, maxValue); string value7 = ((num6 == maxValue) ? Format.Color(" [MAX]", "#e0e") : ""); string value8 = Format.Bold($"{num6:F1}{value7}"); StringBuilder stringBuilder = sb; StringBuilder.AppendInterpolatedStringHandler handler = new StringBuilder.AppendInterpolatedStringHandler(5, 4, stringBuilder); handler.AppendFormatted(Format.Color(Format.Bold(label), Color.White)); handler.AppendLiteral(" "); handler.AppendFormatted(value4); handler.AppendLiteral(" "); handler.AppendFormatted(value6); handler.AppendLiteral(" = "); handler.AppendFormatted(value8); stringBuilder.AppendLine(ref handler); return num6; }; float speed = obj("Speed", val4.MaxSpeed, val6.MaxSpeed, Settings.HORSE_BREED_MAX_SPEED.Value); float acceleration = obj("Acceleration", val4.Acceleration, val6.Acceleration, Settings.HORSE_BREED_MAX_ACCELERATION.Value); float num = obj("Rotation", val4.RotationSpeed / 10f, val6.RotationSpeed / 10f, Settings.HORSE_BREED_MAX_ROTATION.Value); Team team = list[0].Read(); HorseUtil.SpawnHorse(1, float3.op_Implicit(val3)); ctx.Reply(sb.ToString()); BreedHorseProcess.NextBabyData = new BabyHorseData("Baby Horse " + StatTag(speed, acceleration, num), team, float3.op_Implicit(val3), speed, acceleration, num * 10f, list[0].Index, list[1].Index, DateTime.Now.AddSeconds(1.5)); } private string StatTag(float speed, float acceleration, float rotation) { return $"Ⓢ {speed:F1} Ⓐ {acceleration:F1} Ⓡ {rotation:F1}"; } [Command("tag-stats", null, null, null, null, false)] public unsafe void TagStats(ChatCommandContext ctx, Horse horse = null) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_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_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) if ((object)horse == null) { horse = GetRequiredClosestHorse(ctx); } EntityManager entityManager = VWorld.Server.EntityManager; NameableInteractable componentData = ((EntityManager)(ref entityManager)).GetComponentData(horse.Entity); string name = ((object)(*(FixedString64Bytes*)(&componentData.Name))/*cast due to .constrained prefix*/).ToString(); int num = name.LastIndexOf("Ⓢ", StringComparison.Ordinal); if (num > 0) { int num2 = name.LastIndexOf(" 0 && num2 < num) { name = name.Substring(0, num2 - 1); } } if (name.Length >= 20) { ctx.Reply($"Name is too long, must be less than 20 characters, currently [without tag] {name.Length} characters"); } else { Mountable val = horse.Entity.Read(); string tag = StatTag(val.MaxSpeed, val.Acceleration, val.RotationSpeed / 10f); horse.Entity.With((VExtensions.ActionRef)delegate(ref NameableInteractable nameInteract) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) nameInteract.Name = FixedString64Bytes.op_Implicit(name + " " + tag); }); } } [Command("speed", null, null, null, null, true)] public void SetSpeed(ChatCommandContext ctx, float speed) { SetSpeed(ctx, GetRequiredClosestHorse(ctx), speed); } [Command("speed", null, null, null, null, true)] public void SetSpeed(ChatCommandContext ctx, Horse horse, float speed) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) horse.Entity.With((VExtensions.ActionRef)delegate(ref Mountable mount) { mount.MaxSpeed = speed; }); ctx.Reply($"Horse speed set to {speed}"); } [Command("acceleration", "accel", null, null, null, true)] public void SetAcceleration(ChatCommandContext ctx, float acceleration) { SetAcceleration(ctx, GetRequiredClosestHorse(ctx), acceleration); } [Command("acceleration", "accel", null, null, null, true)] public void SetAcceleration(ChatCommandContext ctx, Horse horse, float acceleration) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) horse.Entity.With((VExtensions.ActionRef)delegate(ref Mountable mount) { mount.Acceleration = acceleration; }); ctx.Reply($"Horse acceleration set to {acceleration}"); } [Command("rotation", null, null, null, null, true)] public void SetRotation(ChatCommandContext ctx, float rotation) { SetRotation(ctx, GetRequiredClosestHorse(ctx), rotation); } [Command("rotation", null, null, null, null, true)] public void SetRotation(ChatCommandContext ctx, Horse horse, float rotation) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) horse.Entity.With((VExtensions.ActionRef)delegate(ref Mountable mount) { mount.RotationSpeed = rotation * 10f; }); ctx.Reply($"Horse rotation set to {rotation}"); } [Command("warp", null, null, null, null, true)] public void WarpHorse(ChatCommandContext ctx, Horse horse = null) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: 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_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_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) if ((object)horse == null) { horse = GetRequiredClosestHorse(ctx); } EntityManager entityManager = VWorld.Server.EntityManager; LocalToWorld componentData = ((EntityManager)(ref entityManager)).GetComponentData(horse.Entity); float3 position = ((LocalToWorld)(ref componentData)).Position; entityManager = VWorld.Server.EntityManager; Entity val = ((EntityManager)(ref entityManager)).CreateEntity((ComponentType[])(object)new ComponentType[2] { ComponentType.ReadWrite(), ComponentType.ReadWrite() }); entityManager = VWorld.Server.EntityManager; ((EntityManager)(ref entityManager)).SetComponentData(val, new FromCharacter { User = ctx.Event.SenderUserEntity, Character = ctx.Event.SenderCharacterEntity }); entityManager = VWorld.Server.EntityManager; ((EntityManager)(ref entityManager)).SetComponentData(val, new PlayerTeleportDebugEvent { Position = ((float3)(ref position)).xyz, Target = (TeleportTarget)0 }); ctx.Reply("Warped to horse."); } [Command("spawn", null, null, null, null, true)] public void HorseMe(ChatCommandContext ctx, int num = 1) { //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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_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_0024: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = VWorld.Server.EntityManager; float3 value = ((EntityManager)(ref entityManager)).GetComponentData(ctx.Event.SenderUserEntity).Value; HorseUtil.SpawnHorse(num, value); ctx.Reply($"Spawned {num} horse{((num > 1) ? "s" : "")} near you."); } [Command("whistle", "w", null, null, null, true)] public void Whistle(ChatCommandContext ctx, Horse horse = null) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) if ((object)horse == null) { horse = GetRequiredClosestHorse(ctx); } EntityManager entityManager = VWorld.Server.EntityManager; float3 userPos = ((EntityManager)(ref entityManager)).GetComponentData(ctx.Event.SenderUserEntity).Value; entityManager = VWorld.Server.EntityManager; ((EntityManager)(ref entityManager)).GetComponentData(horse.Entity); horse.Entity.With((VExtensions.ActionRef)delegate(ref Translation t) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) t.Value = userPos; }); ctx.Reply("Horse moved to you."); } [Command("rename", null, null, null, null, true)] public void Rename(ChatCommandContext ctx, string newName) { Rename(ctx, GetRequiredClosestHorse(ctx), newName); } [Command("rename", null, null, null, null, true)] public void Rename(ChatCommandContext ctx, Horse horse, string newName) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) string oldName = ""; horse.Entity.With((VExtensions.ActionRef)delegate(ref NameableInteractable t) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) oldName = ((object)Unsafe.As(ref t.Name)/*cast due to .constrained prefix*/).ToString(); t.Name = FixedString64Bytes.op_Implicit(newName); }); ctx.Reply($"Horse '{oldName}' renamed to '{newName}'."); } [Command("kill", null, null, null, null, true)] public void Kill(ChatCommandContext ctx, Horse horse = null) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) if ((object)horse == null) { horse = GetRequiredClosestHorse(ctx); } HorseUtil.KillWithNoDrops(horse.Entity); ctx.Reply("Horse removed."); } [Command("cull", null, null, null, null, true)] public void Kill(ChatCommandContext ctx, float radius = 5f, float percentage = 1f) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) List list = HorseUtil.ClosestHorses(ctx.Event.SenderCharacterEntity, radius); int count = list.Count; int num = Math.Clamp((int)((float)count * percentage), 0, count); int num2 = num; foreach (Entity item in list) { if (num2 == 0) { break; } HorseUtil.KillWithNoDrops(item); num2--; } ctx.Reply($"Removed {num} horses."); } [Command("famish", null, null, null, null, true)] public void Famish(ChatCommandContext ctx, float radius = 5f) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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) List list = HorseUtil.ClosestHorses(ctx.Event.SenderCharacterEntity, radius); int hungryCount = 0; foreach (Entity item in list) { if (item.Has()) { item.With((VExtensions.ActionRef)delegate(ref FeedableInventory t) { t.FeedProgressTime = 0f; hungryCount++; }); } } ctx.Reply($"{hungryCount} horses have been made hungry."); } } private const float radius = 25f; public unsafe override Horse Parse(ChatCommandContext ctx, string input) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: 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) foreach (Entity item in HorseUtil.ClosestHorses(ctx.Event.SenderCharacterEntity, 25f)) { EntityManager entityManager = VWorld.Server.EntityManager; NameableInteractable componentData = ((EntityManager)(ref entityManager)).GetComponentData(item); if (((object)(*(FixedString64Bytes*)(&componentData.Name))/*cast due to .constrained prefix*/).ToString().Contains(input, StringComparison.OrdinalIgnoreCase)) { return new Horse(item); } } throw ctx.Error($"Could not find a horse within {25f:F1} units named like \"{input}\""); } } private static Random _random; private static ManualLogSource _log => Plugin.LogInstance; public static bool Enabled { get; private set; } static Commands() { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown _random = new Random(); Enabled = ((BaseChainloader)(object)IL2CPPChainloader.Instance).Plugins.TryGetValue("gg.deca.VampireCommandFramework", out var value); if (Enabled) { ManualLogSource log = _log; bool flag = default(bool); BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(13, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("VCF Version: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted(value.Metadata.Version); } log.LogWarning(val); } } public static void Register() { CommandRegistry.RegisterAll(); } public static void Unregister() { CommandRegistry.UnregisterAssembly(); } } internal static class HorseUtil { private static Entity empty_entity = default(Entity); public static PrefabGUID DeadVampHorseBuffGuid = new PrefabGUID(525019977); private static Dictionary HorseGuids = new Dictionary { { "Regular", new PrefabGUID(1149585723) }, { "Spectral", new PrefabGUID(2022889449) } }; internal static void SpawnHorse(int countlocal, float3 localPos) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_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_0020: Unknown result type (might be due to invalid IL or missing references) PrefabGUID val = HorseGuids["Regular"]; VWorld.Server.GetExistingSystemManaged().SpawnUnit(empty_entity, val, localPos, countlocal, 1f, 2f, -1f); } internal static NativeArray GetHorses() { //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_001b: Expected O, but got Unknown //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0087: 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_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = VWorld.Server.EntityManager; EntityQueryDesc[] array = new EntityQueryDesc[1]; EntityQueryDesc val = new EntityQueryDesc(); val.All = Il2CppStructArray.op_Implicit((ComponentType[])(object)new ComponentType[4] { ComponentType.ReadWrite(), ComponentType.ReadWrite(), ComponentType.ReadOnly(), ComponentType.ReadOnly() }); val.None = Il2CppStructArray.op_Implicit((ComponentType[])(object)new ComponentType[2] { ComponentType.ReadOnly(), ComponentType.ReadOnly() }); array[0] = val; EntityQuery val2 = ((EntityManager)(ref entityManager)).CreateEntityQuery((EntityQueryDesc[])(object)array); return ((EntityQuery)(ref val2)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)); } internal static Entity? GetClosetHorse(Entity e) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_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_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) NativeArray horses = GetHorses(); EntityManager entityManager = VWorld.Server.EntityManager; LocalToWorld componentData = ((EntityManager)(ref entityManager)).GetComponentData(e); float3 position = ((LocalToWorld)(ref componentData)).Position; float num = float.MaxValue; Entity? result = null; Enumerator enumerator = horses.GetEnumerator(); while (enumerator.MoveNext()) { Entity current = enumerator.Current; entityManager = VWorld.Server.EntityManager; componentData = ((EntityManager)(ref entityManager)).GetComponentData(current); float3 position2 = ((LocalToWorld)(ref componentData)).Position; float num2 = Vector3.Distance(float3.op_Implicit(position), float3.op_Implicit(position2)); if (num2 < num) { num = num2; result = current; } } return result; } internal static List ClosestHorses(Entity e, float radius = 5f) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_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_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) NativeArray horses = GetHorses(); List list = new List(); EntityManager entityManager = VWorld.Server.EntityManager; LocalToWorld componentData = ((EntityManager)(ref entityManager)).GetComponentData(e); float3 position = ((LocalToWorld)(ref componentData)).Position; Enumerator enumerator = horses.GetEnumerator(); while (enumerator.MoveNext()) { Entity current = enumerator.Current; entityManager = VWorld.Server.EntityManager; componentData = ((EntityManager)(ref entityManager)).GetComponentData(current); float3 position2 = ((LocalToWorld)(ref componentData)).Position; if (Vector3.Distance(float3.op_Implicit(position), float3.op_Implicit(position2)) < radius) { list.Add(current); } } return list; } internal static void KillWithNoDrops(Entity horse) { //IL_0000: 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_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_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_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) if (horse.Has()) { DebugEventsSystem existingSystemManaged = VWorld.Server.GetExistingSystemManaged(); ApplyBuffDebugEvent val = new ApplyBuffDebugEvent { BuffPrefabGUID = DeadVampHorseBuffGuid }; FromCharacter val2 = new FromCharacter { User = horse, Character = horse }; existingSystemManaged.ApplyBuff(val2, val); } else { horse.With((VExtensions.ActionRef)delegate(ref Health t) { t.IsDead = true; }); EntityManager entityManager = VWorld.Server.EntityManager; ((EntityManager)(ref entityManager)).AddComponent(horse, ComponentType.op_Implicit(Il2CppType.Of())); } } } }