Decompiled source of Penumbra v1.0.4
Penumbra.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.Json; using System.Text.Json.Serialization; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Configuration; using BepInEx.Core.Logging.Interpolation; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using BepInEx.Unity.IL2CPP.Utils.Collections; using HarmonyLib; using Il2CppInterop.Runtime; using Il2CppSystem; using Il2CppSystem.Collections.Generic; using Il2CppSystem.Text; using Microsoft.CodeAnalysis; using Penumbra.Resources; using Penumbra.Services; using ProjectM; using ProjectM.Network; using ProjectM.Physics; using ProjectM.Scripting; using ProjectM.Shared; 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("Penumbra")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.4.0")] [assembly: AssemblyInformationalVersion("1.0.4")] [assembly: AssemblyProduct("Penumbra")] [assembly: AssemblyTitle("Penumbra")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.4.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Penumbra { internal static class Buffs { private static EntityManager EntityManager => Core.EntityManager; private static ServerGameManager ServerGameManager => Core.ServerGameManager; private static DebugEventsSystem DebugEventsSystem => Core.DebugEventsSystem; public static bool TryApplyBuff(this Entity entity, PrefabGUID buffPrefabGuid) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_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_001d: 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_0026: 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) //IL_003b: Unknown result type (might be due to invalid IL or missing references) if (!entity.HasBuff(buffPrefabGuid)) { ApplyBuffDebugEvent val = default(ApplyBuffDebugEvent); val.BuffPrefabGUID = buffPrefabGuid; ApplyBuffDebugEvent val2 = val; FromCharacter val3 = default(FromCharacter); val3.Character = entity; val3.User = entity; FromCharacter val4 = val3; DebugEventsSystem.ApplyBuff(val4, val2); return true; } return false; } public static bool TryGetBuff(this Entity entity, PrefabGUID buffPrefabGUID, out Entity buffEntity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) ServerGameManager serverGameManager = ServerGameManager; if (((ServerGameManager)(ref serverGameManager)).TryGetBuff(entity, ((PrefabGUID)(ref buffPrefabGUID)).ToIdentifier(), ref buffEntity)) { return true; } return false; } public static bool TryRemoveBuff(this Entity entity, PrefabGUID buffPrefabGuid) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_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) if (entity.TryGetBuff(buffPrefabGuid, out var buffEntity)) { DestroyUtility.Destroy(EntityManager, buffEntity, (DestroyDebugReason)13, (string)null, 0); return true; } return false; } public static bool TryApplyAndGetBuff(this Entity entity, PrefabGUID buffPrefabGuid, out Entity buffEntity) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: 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) buffEntity = Entity.Null; if (entity.TryApplyBuff(buffPrefabGuid) && entity.TryGetBuff(buffPrefabGuid, out buffEntity)) { return true; } return false; } } internal static class Core { private static MonoBehaviour _monoBehaviour; private static readonly Dictionary<PrefabGUID, string> _prefabGuidsToNames = new Dictionary<PrefabGUID, string>(); public static bool _hasInitialized; public static World Server { get; } = GetServerWorld() ?? throw new Exception("There is no Server world!"); public static EntityManager EntityManager => Server.EntityManager; public static ServerGameManager ServerGameManager => ServerScriptMapper.GetServerGameManager(); public static PrefabCollectionSystem PrefabCollectionSystem { get; internal set; } public static ServerGameSettingsSystem ServerGameSettingsSystem { get; internal set; } public static ServerScriptMapper ServerScriptMapper { get; internal set; } public static DebugEventsSystem DebugEventsSystem { get; internal set; } public static EntityCommandBufferSystem EntityCommandBufferSystem { get; internal set; } public static Singleton NetworkIdSystem { get; internal set; } public static double ServerTime => ServerGameManager.ServerTime; public static ManualLogSource Log => Plugin.LogInstance; public static IReadOnlyDictionary<PrefabGUID, string> PrefabGuidsToNames => _prefabGuidsToNames; public static void Initialize() { //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!_hasInitialized) { PrefabCollectionSystem = Server.GetExistingSystemManaged<PrefabCollectionSystem>(); ServerGameSettingsSystem = Server.GetExistingSystemManaged<ServerGameSettingsSystem>(); DebugEventsSystem = Server.GetExistingSystemManaged<DebugEventsSystem>(); ServerScriptMapper = Server.GetExistingSystemManaged<ServerScriptMapper>(); EntityCommandBufferSystem = Server.GetExistingSystemManaged<EntityCommandBufferSystem>(); NetworkIdSystem = ((ComponentSystemBase)ServerScriptMapper).GetSingleton<Singleton>(); new MerchantService(); InitializePrefabGuidNames(); _hasInitialized = true; } } private static World GetServerWorld() { return ((IEnumerable<World>)World.s_AllWorlds.ToArray()).FirstOrDefault((Func<World, bool>)((World world) => world.Name == "Server")); } private static void InitializePrefabGuidNames() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) Enumerator<string, PrefabGUID> enumerator = PrefabCollectionSystem.SpawnableNameToPrefabGuidDictionary.GetEnumerator(); while (enumerator.MoveNext()) { KeyValuePair<string, PrefabGUID> current = enumerator.Current; _prefabGuidsToNames[current.Value] = current.Key; } } public static void StartCoroutine(IEnumerator routine) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown if ((Object)(object)_monoBehaviour == (Object)null) { GameObject val = new GameObject("Penumbra"); _monoBehaviour = (MonoBehaviour)(object)val.AddComponent<IgnorePhysicsDebugSystem>(); Object.DontDestroyOnLoad((Object)val); } _monoBehaviour.StartCoroutine(CollectionExtensions.WrapToIl2Cpp(routine)); } public static void LogEntity(World world, Entity entity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_0007: 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 StringBuilder val = new StringBuilder(); bool flag = default(bool); try { EntityDebuggingUtility.DumpEntity(world, entity, true, val); ManualLogSource log = Log; BepInExInfoLogInterpolatedStringHandler val2 = new BepInExInfoLogInterpolatedStringHandler(13, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("Entity Dump:\n"); ((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<string>(((Object)val).ToString()); } log.LogInfo(val2); } catch (Exception ex) { ManualLogSource log2 = Log; BepInExWarningLogInterpolatedStringHandler val3 = new BepInExWarningLogInterpolatedStringHandler(22, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("Error dumping entity: "); ((BepInExLogInterpolatedStringHandler)val3).AppendFormatted<string>(ex.Message); } log2.LogWarning(val3); } } } internal static class Extensions { public delegate void WithRefHandler<T>(ref T item); private static EntityManager EntityManager => Core.EntityManager; private static ServerGameManager ServerGameManager => Core.ServerGameManager; private static PrefabCollectionSystem PrefabCollectionSystem => Core.PrefabCollectionSystem; public static void With<T>(this Entity entity, WithRefHandler<T> action) where T : struct { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) T item = entity.ReadRW<T>(); action(ref item); EntityManager entityManager = EntityManager; ((EntityManager)(ref entityManager)).SetComponentData<T>(entity, item); } public static void AddWith<T>(this Entity entity, WithRefHandler<T> action) where T : struct { //IL_0000: 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_0008: Unknown result type (might be due to invalid IL or missing references) if (!entity.Has<T>()) { entity.Add<T>(); } entity.With(action); } public unsafe static void Write<T>(this Entity entity, T componentData) where T : struct { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_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_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) TypeIndex typeIndex = new ComponentType(Il2CppType.Of<T>(), (AccessMode)0).TypeIndex; byte[] array = StructureToByteArray(componentData); int num = Marshal.SizeOf<T>(); fixed (byte* ptr = array) { EntityManager entityManager = EntityManager; ((EntityManager)(ref entityManager)).SetComponentDataRaw(entity, typeIndex, (void*)ptr, num); } } private static byte[] StructureToByteArray<T>(T structure) where T : struct { int num = Marshal.SizeOf(structure); byte[] array = new byte[num]; IntPtr intPtr = Marshal.AllocHGlobal(num); Marshal.StructureToPtr(structure, intPtr, fDeleteOld: true); Marshal.Copy(intPtr, array, 0, num); Marshal.FreeHGlobal(intPtr); return array; } private unsafe static T ReadRW<T>(this Entity entity) where T : struct { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_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) TypeIndex typeIndex = new ComponentType(Il2CppType.Of<T>(), (AccessMode)0).TypeIndex; EntityManager entityManager = EntityManager; return Marshal.PtrToStructure<T>(new IntPtr(((EntityManager)(ref entityManager)).GetComponentDataRawRW(entity, typeIndex))); } public unsafe static T Read<T>(this Entity entity) where T : struct { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_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) TypeIndex typeIndex = new ComponentType(Il2CppType.Of<T>(), (AccessMode)0).TypeIndex; EntityManager entityManager = EntityManager; return Marshal.PtrToStructure<T>(new IntPtr(((EntityManager)(ref entityManager)).GetComponentDataRawRO(entity, typeIndex))); } public static DynamicBuffer<T> ReadBuffer<T>(this Entity entity) where T : struct { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = EntityManager; return ((EntityManager)(ref entityManager)).GetBuffer<T>(entity, false); } public static bool TryGetComponent<T>(this Entity entity, out T componentData) where T : struct { //IL_0007: 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) componentData = default(T); if (entity.Has<T>()) { componentData = entity.Read<T>(); return true; } return false; } public static bool TryRemoveComponent<T>(this Entity entity) where T : struct { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) if (entity.Has<T>()) { entity.Remove<T>(); return true; } return false; } public static bool Has<T>(this Entity entity) where T : struct { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = EntityManager; return ((EntityManager)(ref entityManager)).HasComponent(entity, new ComponentType(Il2CppType.Of<T>(), (AccessMode)0)); } public static bool Has(this Entity entity, ComponentType componentType) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = EntityManager; return ((EntityManager)(ref entityManager)).HasComponent(entity, componentType); } public static string GetPrefabName(this PrefabGUID prefabGuid) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) if (!Core.PrefabGuidsToNames.TryGetValue(prefabGuid, out var value)) { return "String.Empty"; } return value ?? ""; } public static void Add<T>(this Entity entity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = EntityManager; ((EntityManager)(ref entityManager)).AddComponent(entity, new ComponentType(Il2CppType.Of<T>(), (AccessMode)0)); } public static void Add(this Entity entity, ComponentType componentType) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = EntityManager; ((EntityManager)(ref entityManager)).AddComponent(entity, componentType); } public static void Remove<T>(this Entity entity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = EntityManager; ((EntityManager)(ref entityManager)).RemoveComponent(entity, new ComponentType(Il2CppType.Of<T>(), (AccessMode)0)); } public static bool IsTrader(this Entity entity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) if (entity.Has<Trader>()) { return true; } return false; } public static bool IsMerchant(this Entity entity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) if (entity.Has<Trader>() && entity.Has<Immortal>()) { return true; } return false; } public static bool Exists(this Entity entity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: 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) if (entity.HasValue()) { EntityManager entityManager = EntityManager; return ((EntityManager)(ref entityManager)).Exists(entity); } return false; } public static bool HasValue(this Entity entity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) return entity != Entity.Null; } public static NetworkId GetNetworkId(this Entity entity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) if (entity.TryGetComponent<NetworkId>(out NetworkId componentData)) { return componentData; } return NetworkId.Empty; } public static void ForEach<T>(this IEnumerable<T> source, Action<T> action) { foreach (T item in source) { action(item); } } public static Entity GetUserEntity(this Entity character) { //IL_0000: 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_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) if (character.TryGetComponent<PlayerCharacter>(out PlayerCharacter componentData)) { return componentData.UserEntity; } return Entity.Null; } public static User GetUser(this Entity entity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_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_0027: 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_0019: Unknown result type (might be due to invalid IL or missing references) if (entity.TryGetComponent<PlayerCharacter>(out PlayerCharacter componentData) && componentData.UserEntity.TryGetComponent<User>(out User componentData2)) { return componentData2; } if (entity.TryGetComponent<User>(out componentData2)) { return componentData2; } return User.Empty; } public static bool HasBuff(this Entity entity, PrefabGUID buffPrefabGuid) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) ServerGameManager serverGameManager = ServerGameManager; return ((ServerGameManager)(ref serverGameManager)).HasBuff(entity, ((PrefabGUID)(ref buffPrefabGuid)).ToIdentifier()); } public static void Destroy(this Entity entity) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) if (entity.Exists()) { DestroyUtility.Destroy(EntityManager, entity, (DestroyDebugReason)0, (string)null, 0); } } public static void SetPosition(this Entity entity, float3 position) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0041: 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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_008f: 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_0097: Unknown result type (might be due to invalid IL or missing references) if (entity.Has<AggroConsumer>()) { entity.With<AggroConsumer>((WithRefHandler<AggroConsumer>)delegate(ref AggroConsumer aggroConsumer) { //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) aggroConsumer.PreCombatPosition = position; }); } if (entity.Has<SpawnTransform>()) { entity.With<SpawnTransform>((WithRefHandler<SpawnTransform>)delegate(ref SpawnTransform spawnTransform) { //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) spawnTransform.Position = position; }); } if (entity.Has<Height>()) { entity.With<Height>((WithRefHandler<Height>)delegate(ref Height height) { //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) height.LastPosition = position; }); } if (entity.Has<LocalTransform>()) { entity.With<LocalTransform>((WithRefHandler<LocalTransform>)delegate(ref LocalTransform localTransform) { //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) localTransform.Position = position; }); } if (entity.Has<Translation>()) { entity.With<Translation>((WithRefHandler<Translation>)delegate(ref Translation translation) { //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) translation.Value = position; }); } if (entity.Has<LastTranslation>()) { entity.With<LastTranslation>((WithRefHandler<LastTranslation>)delegate(ref LastTranslation lastTranslation) { //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) lastTranslation.Value = position; }); } } public static void SetFaction(this Entity entity, PrefabGUID factionPrefabGUID) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) if (entity.Has<FactionReference>()) { entity.With<FactionReference>((WithRefHandler<FactionReference>)delegate(ref FactionReference factionReference) { //IL_0007: 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) factionReference.FactionGuid._Value = factionPrefabGUID; }); } } public static void Start(this IEnumerator routine) { Core.StartCoroutine(routine); } public static EntityQuery BuildEntityQuery(this EntityManager entityManager, ComponentType[] all) { //IL_0003: 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_001e: 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) EntityQueryBuilder val = default(EntityQueryBuilder); ((EntityQueryBuilder)(ref val))..ctor(AllocatorHandle.op_Implicit((Allocator)2)); foreach (ComponentType val2 in all) { ((EntityQueryBuilder)(ref val)).AddAll(val2); } return ((EntityManager)(ref entityManager)).CreateEntityQuery(ref val); } public static EntityQuery BuildEntityQuery(this EntityManager entityManager, ComponentType[] all, EntityQueryOptions options) { //IL_0003: 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_001e: 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_003b: Unknown result type (might be due to invalid IL or missing references) EntityQueryBuilder val = default(EntityQueryBuilder); ((EntityQueryBuilder)(ref val))..ctor(AllocatorHandle.op_Implicit((Allocator)2)); foreach (ComponentType val2 in all) { ((EntityQueryBuilder)(ref val)).AddAll(val2); } ((EntityQueryBuilder)(ref val)).WithOptions(options); return ((EntityManager)(ref entityManager)).CreateEntityQuery(ref val); } public static EntityQuery BuildEntityQuery(this EntityManager entityManager, ComponentType[] all, ComponentType[] none, EntityQueryOptions options) { //IL_0003: 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_001e: 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_003f: 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_0053: 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_005e: Unknown result type (might be due to invalid IL or missing references) EntityQueryBuilder val = default(EntityQueryBuilder); ((EntityQueryBuilder)(ref val))..ctor(AllocatorHandle.op_Implicit((Allocator)2)); ComponentType[] array = all; foreach (ComponentType val2 in array) { ((EntityQueryBuilder)(ref val)).AddAll(val2); } array = none; foreach (ComponentType val3 in array) { ((EntityQueryBuilder)(ref val)).AddNone(val3); } ((EntityQueryBuilder)(ref val)).WithOptions(options); return ((EntityManager)(ref entityManager)).CreateEntityQuery(ref val); } } internal static class GenerateREADME { private static readonly Regex _commandGroupRegex = new Regex("\\[CommandGroup\\(name:\\s*\"(?<group>[^\"]+)\",\\s*\"(?<short>[^\"]+)\"\\)\\]"); private static readonly Regex _commandGroupAndShortRegex = new Regex("\\[CommandGroup\\(name:\\s*\"(?<group>[^\"]+)\"(?:\\s*,\\s*short:\\s*\"(?<short>[^\"]+)\")?\\)\\]"); private static readonly Regex _commandAttributeRegex = new Regex("\\[Command\\(name:\\s*\"(?<name>[^\"]+)\"(?:,\\s*shortHand:\\s*\"(?<shortHand>[^\"]+)\")?(?:,\\s*adminOnly:\\s*(?<adminOnly>\\w+))?(?:,\\s*usage:\\s*\"(?<usage>[^\"]+)\")?(?:,\\s*description:\\s*\"(?<description>[^\"]+)\")?\\)\\]"); private const string COMMANDS_HEADER = "## Commands"; private const string CONFIG_HEADER = "## Configuration"; private static readonly Dictionary<(string groupName, string groupShort), List<(string name, string shortHand, bool adminOnly, string usage, string description)>> _commandsByGroup = new Dictionary<(string, string), List<(string, string, bool, string, string)>>(); private static string CommandsPath { get; set; } private static string ReadMePath { get; set; } public static void Main(string[] args) { if (Environment.GetEnvironmentVariable("GITHUB_ACTIONS") == "true") { Console.WriteLine("GenerateREADME skipped during GitHub Actions build."); return; } if (args.Length < 2) { Console.WriteLine("Usage: GenerateREADME <CommandsPath> <ReadMePath>"); return; } CommandsPath = args[0]; ReadMePath = args[1]; try { Generate(); Console.WriteLine("README generated successfully."); } catch (Exception ex) { Console.WriteLine("Error generating README: " + ex.Message); } } private static void Generate() { CollectCommands(); UpdateReadme(BuildCommandsSection()); } private static void CollectCommands() { foreach (string item6 in from file in Directory.GetFiles(CommandsPath, "*.cs") where !Path.GetFileName(file).Equals("DevCommands.cs", StringComparison.OrdinalIgnoreCase) select file) { string input = File.ReadAllText(item6); Match match = _commandGroupRegex.Match(input); if (!match.Success) { match = _commandGroupAndShortRegex.Match(input); } string item; string item2; if (match.Success) { item = match.Groups["group"].Value; item2 = match.Groups["short"].Value; } else { item = "misc"; item2 = string.Empty; } if (!_commandsByGroup.TryGetValue((item, item2), out List<(string, string, bool, string, string)> value)) { value = new List<(string, string, bool, string, string)>(); _commandsByGroup[(item, item2)] = value; } foreach (Match item7 in _commandAttributeRegex.Matches(input)) { string value2 = item7.Groups["name"].Value; string item3 = (item7.Groups["shortHand"].Success ? item7.Groups["shortHand"].Value : string.Empty); bool result = false; if (item7.Groups["adminOnly"].Success) { bool.TryParse(item7.Groups["adminOnly"].Value, out result); } string item4 = (item7.Groups["usage"].Success ? item7.Groups["usage"].Value : string.Empty); string item5 = (item7.Groups["description"].Success ? item7.Groups["description"].Value : string.Empty); value.Add((value2, item3, result, item4, item5)); } } } private static string BuildCommandsSection() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("## Commands"); List<(string, string)> list = _commandsByGroup.Keys.OrderBy(((string groupName, string groupShort) g) => g.groupName).ToList(); foreach (var item6 in list) { var (text, text2) = item6; foreach (var item7 in _commandsByGroup[item6]) { string item = item7.name; string item2 = item7.shortHand; bool item3 = item7.adminOnly; string item4 = item7.usage; string item5 = item7.description; bool flag = !string.IsNullOrEmpty(item2); bool num = !string.IsNullOrEmpty(text2); string text3 = (string.IsNullOrEmpty(item4) ? item : item4); string text4 = ((text3.EndsWith(item) || !flag) ? item : string.Empty); string value = (item3 ? " \ud83d\udd12" : string.Empty); string empty = string.Empty; empty = ((!num) ? (flag ? text3.Replace("." + text + " " + item2, "") : text3.Replace("." + text + " " + text4, "")) : (flag ? text3.Replace("." + text2 + " " + item2, "") : text3.Replace("." + text2 + " " + text4, ""))); string value2 = $"- `.{text} {item}{empty}`{value}"; stringBuilder.AppendLine(value2); StringBuilder stringBuilder2; StringBuilder.AppendInterpolatedStringHandler handler; if (!string.IsNullOrEmpty(item5)) { stringBuilder2 = stringBuilder; StringBuilder stringBuilder3 = stringBuilder2; handler = new StringBuilder.AppendInterpolatedStringHandler(4, 1, stringBuilder2); handler.AppendLiteral(" - "); handler.AppendFormatted(item5); stringBuilder3.AppendLine(ref handler); } stringBuilder2 = stringBuilder; StringBuilder stringBuilder4 = stringBuilder2; handler = new StringBuilder.AppendInterpolatedStringHandler(16, 1, stringBuilder2); handler.AppendLiteral(" - Shortcut: *"); handler.AppendFormatted(text3); handler.AppendLiteral("*"); stringBuilder4.AppendLine(ref handler); } if (list.IndexOf(item6) < list.Count - 1) { stringBuilder.AppendLine(); } } return stringBuilder.ToString(); } private static void UpdateReadme(string commandsSection) { bool flag = false; bool flag2 = false; List<string> list = new List<string>(); try { foreach (string item in File.ReadLines(ReadMePath)) { if (item.Trim().Equals("## Commands", StringComparison.OrdinalIgnoreCase)) { flag = true; flag2 = true; list.Add(commandsSection); continue; } if (flag && item.Trim().StartsWith("## ", StringComparison.OrdinalIgnoreCase) && !item.Trim().Equals("## Commands", StringComparison.OrdinalIgnoreCase)) { flag = false; } if (!flag) { list.Add(item); } } if (!flag2) { list.Add("## Commands"); list.Add(commandsSection); } File.WriteAllLines(ReadMePath, list); } catch (Exception ex) { Console.Error.WriteLine("Error updating the readme: " + ex.Message); throw; } } private static string Capitalize(string input) { if (!string.IsNullOrEmpty(input)) { return char.ToUpper(input[0]) + input.Substring(1, input.Length - 1); } return input; } } [BepInPlugin("io.zfolmt.Penumbra", "Penumbra", "1.0.4")] internal class Plugin : BasePlugin { public class MerchantConfig { public string[] OutputItems; public int[] OutputAmounts; public string[] InputItems; public int[] InputAmounts; public int[] StockAmounts; public int RestockTime; public bool Roam; } private Harmony _harmony; private static readonly List<MerchantConfig> _merchants = new List<MerchantConfig>(); internal static Plugin Instance { get; set; } public static Harmony Harmony => Instance._harmony; public static ManualLogSource LogInstance => ((BasePlugin)Instance).Log; public static List<MerchantConfig> Merchants => _merchants; public override void Load() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown Instance = this; _harmony = Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null); InitConfig(); CommandRegistry.RegisterAll(); ManualLogSource log = Core.Log; bool flag = default(bool); BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(10, 2, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("Penumbra"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("["); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("1.0.4"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("] loaded!"); } log.LogInfo(val); } private void InitConfig() { LoadMerchants(); if (_merchants.Count == 0) { CreateDefaultMerchants(); } SaveMerchants(); } private void LoadMerchants() { //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Expected O, but got Unknown int num = 0; while (true) { string text = $"Merchant{num + 1}"; ConfigEntry<string> val = ((BasePlugin)this).Config.Bind<string>(text, "OutputItems", "", "Comma-separated item prefab IDs for output"); if (string.IsNullOrEmpty(val.Value)) { break; } MerchantConfig item = new MerchantConfig { OutputItems = val.Value.Split(','), OutputAmounts = ParseIntArray(((BasePlugin)this).Config.Bind<string>(text, "OutputAmounts", "", "Amounts for each output item").Value), InputItems = ((BasePlugin)this).Config.Bind<string>(text, "InputItems", "", "Comma-separated item prefab IDs for input").Value.Split(','), InputAmounts = ParseIntArray(((BasePlugin)this).Config.Bind<string>(text, "InputAmounts", "", "Amounts for each input item").Value), StockAmounts = ParseIntArray(((BasePlugin)this).Config.Bind<string>(text, "StockAmounts", "", "Stock amounts for each output item").Value), RestockTime = ((BasePlugin)this).Config.Bind<int>(text, "RestockTime", 60, "Restock time in minutes").Value, Roam = ((BasePlugin)this).Config.Bind<bool>(text, "Roam", false, "Pace around or stay put.").Value }; _merchants.Add(item); num++; } ManualLogSource logInstance = LogInstance; bool flag = default(bool); BepInExWarningLogInterpolatedStringHandler val2 = new BepInExWarningLogInterpolatedStringHandler(18, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("Loaded "); ((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<int>(_merchants.Count); ((BepInExLogInterpolatedStringHandler)val2).AppendLiteral(" merchants!"); } logInstance.LogWarning(val2); } private static int[] ParseIntArray(string value) { List<int> list = new List<int>(); int result; foreach (int item in from v in value.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries) select int.TryParse(v, out result) ? result : 0) { list.Add(item); } return list.ToArray(); } private static void CreateDefaultMerchants() { _merchants.Add(new MerchantConfig { OutputItems = new string[16] { "1247086852", "-1619308732", "2019195024", "-222860772", "950358400", "220001518", "124616797", "1954207008", "-1930402723", "1801132968", "1630030026", "-915028618", "1102277512", "1272855317", "781586362", "2099198078" }, OutputAmounts = new int[16] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, InputItems = new string[16] { "-182923609", "-1629804427", "1334469825", "1488205677", "-77477508", "-77477508", "-77477508", "-77477508", "-77477508", "-77477508", "-77477508", "-77477508", "-77477508", "-77477508", "-77477508", "-77477508" }, InputAmounts = new int[16] { 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, StockAmounts = new int[16] { 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }, RestockTime = 60, Roam = false }); _merchants.Add(new MerchantConfig { OutputItems = new string[9] { "28358550", "28358550", "28358550", "28358550", "28358550", "28358550", "28358550", "28358550", "28358550" }, OutputAmounts = new int[9] { 250, 250, 250, 250, 250, 125, 125, 100, 100 }, InputItems = new string[9] { "-21943750", "666638454", "-1260254082", "-1581189572", "551949280", "-1461326411", "1655869633", "1262845777", "2085163661" }, InputAmounts = new int[9] { 1, 1, 1, 1, 5, 5, 5, 500, 500 }, StockAmounts = new int[9] { 99, 99, 99, 99, 99, 99, 99, 99, 99 }, RestockTime = 60, Roam = false }); MerchantConfig merchantConfig = new MerchantConfig(); merchantConfig.OutputItems = new string[20] { "-2128818978", "-1988816037", "-1607893829", "238268650", "409678749", "607559019", "-2073081569", "1780339680", "-262204844", "-548847761", "-1797796642", "1587354182", "-1785271534", "1863126275", "584164197", "379281083", "136740861", "-1814109557", "821609569", "-1755568324" }; MerchantConfig merchantConfig2 = merchantConfig; List<int> list = new List<int>(); foreach (int item in Enumerable.Repeat(1, 20)) { list.Add(item); } merchantConfig2.OutputAmounts = list.ToArray(); MerchantConfig merchantConfig3 = merchantConfig; List<string> list2 = new List<string>(); foreach (string item2 in Enumerable.Repeat("-257494203", 20)) { list2.Add(item2); } merchantConfig3.InputItems = list2.ToArray(); merchantConfig.InputAmounts = new int[20] { 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 500, 500, 500, 500, 500, 500, 500 }; MerchantConfig merchantConfig4 = merchantConfig; List<int> list3 = new List<int>(); foreach (int item3 in Enumerable.Repeat(99, 20)) { list3.Add(item3); } merchantConfig4.StockAmounts = list3.ToArray(); merchantConfig.RestockTime = 60; merchantConfig.Roam = false; _merchants.Add(merchantConfig); _merchants.Add(new MerchantConfig { OutputItems = new string[4] { "-257494203", "-257494203", "-257494203", "-257494203" }, OutputAmounts = new int[4] { 50, 75, 100, 150 }, InputItems = new string[4] { "-456161884", "988417522", "-1787563914", "805157024" }, InputAmounts = new int[4] { 250, 250, 250, 250 }, StockAmounts = new int[4] { 99, 99, 99, 99 }, RestockTime = 60, Roam = false }); _merchants.Add(new MerchantConfig { OutputItems = new string[5] { "-1370210913", "1915695899", "862477668", "429052660", "28358550" }, OutputAmounts = new int[5] { 1, 1, 1500, 15, 250 }, InputItems = new string[5] { "-257494203", "-257494203", "-257494203", "-257494203", "-257494203" }, InputAmounts = new int[5] { 250, 250, 250, 250, 250 }, StockAmounts = new int[5] { 99, 99, 99, 99, 99 }, RestockTime = 60, Roam = false }); LogInstance.LogWarning((object)"Created default merchants!"); } private void SaveMerchants() { ((BasePlugin)this).Config.Clear(); for (int i = 0; i < _merchants.Count; i++) { string text = $"Merchant{i + 1}"; MerchantConfig merchantConfig = _merchants[i]; ((BasePlugin)this).Config.Bind<string>(text, "OutputItems", string.Join(",", merchantConfig.OutputItems), "Comma-separated item prefab IDs for output."); ((BasePlugin)this).Config.Bind<string>(text, "OutputAmounts", string.Join(",", merchantConfig.OutputAmounts), "Amounts for each output item."); ((BasePlugin)this).Config.Bind<string>(text, "InputItems", string.Join(",", merchantConfig.InputItems), "Comma-separated item prefab IDs for input."); ((BasePlugin)this).Config.Bind<string>(text, "InputAmounts", string.Join(",", merchantConfig.InputAmounts), "Amounts for each input item."); ((BasePlugin)this).Config.Bind<string>(text, "StockAmounts", string.Join(",", merchantConfig.StockAmounts), "Stock amounts for each output item."); ((BasePlugin)this).Config.Bind<int>(text, "RestockTime", merchantConfig.RestockTime, "Restock time in minutes."); ((BasePlugin)this).Config.Bind<bool>(text, "Roam", merchantConfig.Roam, "Pace around or stay put."); } } public override bool Unload() { ((BasePlugin)this).Config.Clear(); _harmony.UnpatchSelf(); return true; } } public static class MyPluginInfo { public const string PLUGIN_GUID = "io.zfolmt.Penumbra"; public const string PLUGIN_NAME = "Penumbra"; public const string PLUGIN_VERSION = "1.0.4"; } } namespace Penumbra.Services { internal class MerchantService { public class MerchantWares { public List<PrefabGUID> OutputItems; public List<int> OutputAmounts; public List<PrefabGUID> InputItems; public List<int> InputAmounts; public List<int> StockAmounts; public int RestockInterval; public DateTime NextRestockTime = DateTime.MaxValue; public int MerchantIndex; public bool Roam; } private const float TIME_CONSTANT = 60f; private const float SPAWN_DELAY = 0.25f; private const float ROUTINE_DELAY = 15f; private static readonly WaitForSeconds _spawnDelay = new WaitForSeconds(0.25f); private static readonly WaitForSeconds _routineDelay = new WaitForSeconds(15f); private static readonly PrefabGUID _infiniteInvulnerabilityBuff = PrefabGUIDs.InfiniteInvulnerabilityBuff; private static readonly PrefabGUID _buffResistanceUberMob = PrefabGUIDs.BuffResistance_UberMob_IgniteResistant; private static readonly ComponentType[] _merchantComponents = (ComponentType[])(object)new ComponentType[2] { ComponentType.ReadOnly(Il2CppType.Of<Trader>()), ComponentType.ReadOnly(Il2CppType.Of<Immortal>()) }; private static readonly ComponentType[] _globalPatrolComponents = (ComponentType[])(object)new ComponentType[3] { ComponentType.ReadOnly(Il2CppType.Of<GlobalPatrolState>()), ComponentType.ReadOnly(Il2CppType.Of<MovePatrolState>()), ComponentType.ReadOnly(Il2CppType.Of<VBloodUnitSpawnSource>()) }; private static EntityQuery _merchantQuery; private static readonly ConcurrentDictionary<Entity, MerchantWares> _activeMerchants = new ConcurrentDictionary<Entity, MerchantWares>(); private static readonly List<MerchantWares> _merchantWares = new List<MerchantWares>(); private static EntityManager EntityManager => Core.EntityManager; private static ServerGameManager ServerGameManager => Core.ServerGameManager; private static EntityTypeHandle EntityTypeHandle { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = EntityManager; return ((EntityManager)(ref entityManager)).GetEntityTypeHandle(); } } private static EntityStorageInfoLookup EntityStorageInfoLookup { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = EntityManager; return ((EntityManager)(ref entityManager)).GetEntityStorageInfoLookup(); } } private static ComponentTypeHandle<Immortal> ImmortalHandle { get { //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_0009: Unknown result type (might be due to invalid IL or missing references) EntityManager entityManager = EntityManager; return ((EntityManager)(ref entityManager)).GetComponentTypeHandle<Immortal>(true); } } public static IReadOnlyDictionary<Entity, MerchantWares> ActiveMerchants => _activeMerchants; public static MerchantWares GetMerchantWares(int index) { return _merchantWares[index]; } public MerchantService() { //IL_0006: 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) _merchantQuery = EntityManager.BuildEntityQuery(_merchantComponents, (EntityQueryOptions)2); try { PopulateMerchantWares(); GetActiveMerchants(); RestockMerchantsRoutine().Start(); } catch (Exception ex) { Core.Log.LogError((object)ex); } } private static IEnumerator RestockMerchantsRoutine() { bool flag = default(bool); while (true) { DateTime now = DateTime.UtcNow; foreach (KeyValuePair<Entity, MerchantWares> activeMerchant in ActiveMerchants) { try { Entity key = activeMerchant.Key; MerchantWares value = activeMerchant.Value; if (!key.Exists()) { _activeMerchants.TryRemove(key, out var _); continue; } if (value.NextRestockTime.Equals(DateTime.MaxValue)) { SyncNextRestock(key, value); } else if (now >= value.NextRestockTime) { UpdateMerchantStock(key, value, now); } goto IL_00fd; } catch (Exception ex) { ManualLogSource log = Core.Log; BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(28, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("RestockMerchantsRoutine() - "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Exception>(ex); } log.LogWarning(val); goto IL_00fd; } IL_00fd: yield return null; } yield return _routineDelay; } } private static void PopulateMerchantWares() { //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_006d: 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_0117: 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) _ = DateTime.UtcNow; foreach (Plugin.MerchantConfig merchant in Plugin.Merchants) { MerchantWares merchantWares = new MerchantWares(); MerchantWares merchantWares2 = merchantWares; List<PrefabGUID> list = new List<PrefabGUID>(); foreach (PrefabGUID item3 in ((IEnumerable<string>)merchant.OutputItems).Select((Func<string, PrefabGUID>)((string id) => new PrefabGUID(int.Parse(id))))) { list.Add(item3); } merchantWares2.OutputItems = list; MerchantWares merchantWares3 = merchantWares; List<int> list2 = new List<int>(); int[] outputAmounts = merchant.OutputAmounts; foreach (int item in outputAmounts) { list2.Add(item); } merchantWares3.OutputAmounts = list2; MerchantWares merchantWares4 = merchantWares; List<PrefabGUID> list3 = new List<PrefabGUID>(); foreach (PrefabGUID item4 in ((IEnumerable<string>)merchant.InputItems).Select((Func<string, PrefabGUID>)((string id) => new PrefabGUID(int.Parse(id))))) { list3.Add(item4); } merchantWares4.InputItems = list3; MerchantWares merchantWares5 = merchantWares; List<int> list4 = new List<int>(); outputAmounts = merchant.InputAmounts; foreach (int item in outputAmounts) { list4.Add(item); } merchantWares5.InputAmounts = list4; MerchantWares merchantWares6 = merchantWares; List<int> list5 = new List<int>(); outputAmounts = merchant.StockAmounts; foreach (int item in outputAmounts) { list5.Add(item); } merchantWares6.StockAmounts = list5; merchantWares.RestockInterval = merchant.RestockTime; merchantWares.MerchantIndex = Plugin.Merchants.IndexOf(merchant); merchantWares.Roam = merchant.Roam; MerchantWares item2 = merchantWares; _merchantWares.Add(item2); } } public static void SpawnMerchant(PrefabGUID traderPrefabGuid, float3 aimPosition, MerchantWares wares) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) ServerGameManager serverGameManager = ServerGameManager; Entity merchant = ((ServerGameManager)(ref serverGameManager)).InstantiateEntityImmediate(Entity.Null, traderPrefabGuid); ApplyOrRefreshModifications(merchant, wares.Roam); ModifyMerchant(merchant, aimPosition, wares).Start(); } private static void ApplyOrRefreshModifications(Entity merchant, bool roam) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_005f: 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_00b3: 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_011f: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) if (!merchant.Exists()) { return; } merchant.AddWith<EntityOwner>((Extensions.WithRefHandler<EntityOwner>)delegate(ref EntityOwner entityOwner) { //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) entityOwner.Owner = merchant; }); merchant.AddWith<Buffable>((Extensions.WithRefHandler<Buffable>)delegate(ref Buffable buffable) { buffable.KnockbackResistanceIndex._Value = 11; }); merchant.AddWith<BuffResistances>((Extensions.WithRefHandler<BuffResistances>)delegate(ref BuffResistances buffResistances) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) buffResistances.InitialSettingGuid = _buffResistanceUberMob; }); merchant.AddWith<Immortal>((Extensions.WithRefHandler<Immortal>)delegate(ref Immortal immortal) { immortal.IsImmortal = true; }); merchant.With<DynamicCollision>((Extensions.WithRefHandler<DynamicCollision>)delegate(ref DynamicCollision dynamicCollision) { dynamicCollision.Immobile = true; }); if (!roam && merchant.TryApplyAndGetBuff(_infiniteInvulnerabilityBuff, out var buffEntity)) { buffEntity.AddWith<ModifyMovementSpeedBuff>((Extensions.WithRefHandler<ModifyMovementSpeedBuff>)delegate(ref ModifyMovementSpeedBuff modifyMovementSpeed) { modifyMovementSpeed.MoveSpeed = 0f; modifyMovementSpeed.MultiplyAdd = false; }); } else { merchant.TryApplyBuff(_infiniteInvulnerabilityBuff); } } private static IEnumerator ModifyMerchant(Entity merchant, float3 aimPosition, MerchantWares wares) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) yield return _spawnDelay; merchant.SetPosition(aimPosition); merchant.With<UnitStats>((Extensions.WithRefHandler<UnitStats>)delegate(ref UnitStats unitStats) { unitStats.DamageReduction._Value = 100f; unitStats.PhysicalResistance._Value = 100f; unitStats.SpellResistance._Value = 100f; unitStats.HealthRecovery._Value = 1f; unitStats.FireResistance._Value = wares.MerchantIndex; }); merchant.AddWith<Immortal>((Extensions.WithRefHandler<Immortal>)delegate(ref Immortal immortal) { immortal.IsImmortal = true; }); merchant.With<DynamicCollision>((Extensions.WithRefHandler<DynamicCollision>)delegate(ref DynamicCollision dynamicCollision) { dynamicCollision.Immobile = true; }); _activeMerchants.TryAdd(merchant, wares); DateTime utcNow = DateTime.UtcNow; UpdateMerchantStock(merchant, wares, utcNow); } private static void UpdateMerchantStock(Entity merchant, MerchantWares merchantWares, DateTime now) { //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_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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: 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_0088: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: 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_0152: Unknown result type (might be due to invalid IL or missing references) float restockTime = (float)merchantWares.RestockInterval * 60f; merchantWares.NextRestockTime = now.AddMinutes(merchantWares.RestockInterval); DynamicBuffer<TradeOutput> val = merchant.ReadBuffer<TradeOutput>(); DynamicBuffer<TraderEntry> val2 = merchant.ReadBuffer<TraderEntry>(); DynamicBuffer<TradeCost> val3 = merchant.ReadBuffer<TradeCost>(); val.Clear(); val2.Clear(); val3.Clear(); for (int i = 0; i < merchantWares.OutputItems.Count; i++) { val.Add(new TradeOutput { Amount = (ushort)merchantWares.OutputAmounts[i], Item = merchantWares.OutputItems[i] }); val3.Add(new TradeCost { Amount = (ushort)merchantWares.InputAmounts[i], Item = merchantWares.InputItems[i] }); val2.Add(new TraderEntry { RechargeInterval = restockTime, CostCount = 1, CostStartIndex = (byte)i, FullRechargeTime = restockTime, OutputCount = 1, OutputStartIndex = (byte)i, StockAmount = (ushort)merchantWares.StockAmounts[i] }); } merchant.AddWith<Trader>((Extensions.WithRefHandler<Trader>)delegate(ref Trader trader) { trader.RestockTime = restockTime; trader.PrevRestockTime = Core.ServerTime; trader.NextRestockTime = Core.ServerTime + (double)restockTime; }); } private static void SyncNextRestock(Entity merchant, MerchantWares merchantWares) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0059: 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_006b: Unknown result type (might be due to invalid IL or missing references) Trader val = merchant.Read<Trader>(); double serverTime = Core.ServerTime; float restockTime = (float)merchantWares.RestockInterval * 60f; double num = val.NextRestockTime - val.PrevRestockTime; if (!val.RestockTime.Equals(restockTime)) { merchant.With<Trader>((Extensions.WithRefHandler<Trader>)delegate(ref Trader trader) { trader.RestockTime = restockTime; }); } if (serverTime > val.NextRestockTime || num > (double)restockTime) { UpdateMerchantStock(merchant, merchantWares, DateTime.UtcNow); } } private static void GetActiveMerchants() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_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_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Expected O, but got Unknown //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_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_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_0068: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: 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_0087: Expected O, but got Unknown NativeArray<ArchetypeChunk> val = ((EntityQuery)(ref _merchantQuery)).CreateArchetypeChunkArray(AllocatorHandle.op_Implicit((Allocator)2)); EntityStorageInfoLookup entityStorageInfoLookup = EntityStorageInfoLookup; int num = 0; bool flag = default(bool); try { Enumerator<ArchetypeChunk> enumerator = val.GetEnumerator(); while (enumerator.MoveNext()) { ArchetypeChunk current = enumerator.Current; NativeArray<Entity> nativeArray = ((ArchetypeChunk)(ref current)).GetNativeArray(EntityTypeHandle); ((ArchetypeChunk)(ref current)).GetNativeArray<Immortal>(ImmortalHandle); for (int i = 0; i < ((ArchetypeChunk)(ref current)).Count; i++) { Entity val2 = nativeArray[i]; if (!((EntityStorageInfoLookup)(ref entityStorageInfoLookup)).Exists(val2)) { continue; } int num2 = GetMerchantIndex(val2); if (num2 < 0) { ManualLogSource log = Core.Log; BepInExWarningLogInterpolatedStringHandler val3 = new BepInExWarningLogInterpolatedStringHandler(70, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("Merchant entity has invalid wares index ("); ((BepInExLogInterpolatedStringHandler)val3).AppendFormatted<int>(num2); ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("), using default as fallback!"); } log.LogWarning(val3); num2 = 0; } MerchantWares merchantWares = GetMerchantWares(num2); ApplyOrRefreshModifications(val2, merchantWares.Roam); _activeMerchants.TryAdd(val2, merchantWares); num++; } } } finally { val.Dispose(); ManualLogSource log2 = Core.Log; BepInExWarningLogInterpolatedStringHandler val3 = new BepInExWarningLogInterpolatedStringHandler(44, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("Tracking "); ((BepInExLogInterpolatedStringHandler)val3).AppendFormatted<int>(num); ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral(" Penumbra merchants found in world!"); } log2.LogWarning(val3); } } private static int GetMerchantIndex(Entity merchant) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) if (merchant.TryGetComponent<UnitStats>(out UnitStats componentData)) { return componentData.FireResistance._Value; } return -1; } } } namespace Penumbra.Resources { internal static class PrefabGUIDs { public static readonly PrefabGUID VM_VBlood_TEMPLATE = new PrefabGUID(2075390218); public static readonly PrefabGUID _10x6RectangularTablesModularBuildMenuGroup = new PrefabGUID(-375280343); public static readonly PrefabGUID _3x3RoundTablesModularBuildMenuGroup = new PrefabGUID(-1226637162); public static readonly PrefabGUID _3x6RectangularTablesBuildMenuGroup = new PrefabGUID(-1058166909); public static readonly PrefabGUID _6x6RoundTablesModularBuildMenuGroup = new PrefabGUID(-1428481029); public static readonly PrefabGUID AB_AmbientLightning_Light = new PrefabGUID(589474506); public static readonly PrefabGUID AB_AmbientLightning_Light_GameplayStrike = new PrefabGUID(-2094079027); public static readonly PrefabGUID AB_ApplyWeaponCoating_AbilityGroup = new PrefabGUID(1327173823); public static readonly PrefabGUID AB_ApplyWeaponCoating_Activate = new PrefabGUID(-578949147); public static readonly PrefabGUID AB_ApplyWeaponCoating_Blood_AbilityGroup = new PrefabGUID(-1007451621); public static readonly PrefabGUID AB_ApplyWeaponCoating_Blood_Activate = new PrefabGUID(1186329047); public static readonly PrefabGUID AB_ApplyWeaponCoating_Blood_Cast = new PrefabGUID(765001445); public static readonly PrefabGUID AB_ApplyWeaponCoating_Cast = new PrefabGUID(1271061994); public static readonly PrefabGUID AB_ApplyWeaponCoating_Chaos_AbilityGroup = new PrefabGUID(-1706926836); public static readonly PrefabGUID AB_ApplyWeaponCoating_Chaos_Activate = new PrefabGUID(-1012725577); public static readonly PrefabGUID AB_ApplyWeaponCoating_Chaos_Cast = new PrefabGUID(1273123129); public static readonly PrefabGUID AB_ApplyWeaponCoating_Frost_AbilityGroup = new PrefabGUID(2110406288); public static readonly PrefabGUID AB_ApplyWeaponCoating_Frost_Activate = new PrefabGUID(-1250180678); public static readonly PrefabGUID AB_ApplyWeaponCoating_Frost_Cast = new PrefabGUID(-346833706); public static readonly PrefabGUID AB_ApplyWeaponCoating_Illusion_AbilityGroup = new PrefabGUID(-1063090297); public static readonly PrefabGUID AB_ApplyWeaponCoating_Illusion_Activate = new PrefabGUID(1197567253); public static readonly PrefabGUID AB_ApplyWeaponCoating_Illusion_Cast = new PrefabGUID(-237809887); public static readonly PrefabGUID AB_ApplyWeaponCoating_Storm_AbilityGroup = new PrefabGUID(419215380); public static readonly PrefabGUID AB_ApplyWeaponCoating_Storm_Activate = new PrefabGUID(655641197); public static readonly PrefabGUID AB_ApplyWeaponCoating_Storm_Cast = new PrefabGUID(1215462047); public static readonly PrefabGUID AB_ApplyWeaponCoating_Unholy_AbilityGroup = new PrefabGUID(1293762372); public static readonly PrefabGUID AB_ApplyWeaponCoating_Unholy_Activate = new PrefabGUID(1932625569); public static readonly PrefabGUID AB_ApplyWeaponCoating_Unholy_Cast = new PrefabGUID(-2088804628); public static readonly PrefabGUID AB_Archer_Projectile_Cast = new PrefabGUID(1106195644); public static readonly PrefabGUID AB_Archer_Projectile_Group = new PrefabGUID(-751119210); public static readonly PrefabGUID AB_Archer_Projectile01 = new PrefabGUID(-1423243724); public static readonly PrefabGUID AB_ArchMage_ArcaneImprisonment_AbilityGroup = new PrefabGUID(91941562); public static readonly PrefabGUID AB_ArchMage_ArcaneImprisonment_Cast = new PrefabGUID(1965996833); public static readonly PrefabGUID AB_ArchMage_ArcaneImprisonment_ImprisonBuff = new PrefabGUID(2007858431); public static readonly PrefabGUID AB_ArchMage_ArcaneImprisonment_MoveBehaviourBuff = new PrefabGUID(1099681289); public static readonly PrefabGUID AB_ArchMage_ArcaneImprisonment_RingArea = new PrefabGUID(-1952370580); public static readonly PrefabGUID AB_ArchMage_CrystalLance_AbilityGroup = new PrefabGUID(1520734123); public static readonly PrefabGUID AB_ArchMage_CrystalLance_AggroBuff = new PrefabGUID(-967628321); public static readonly PrefabGUID AB_ArchMage_CrystalLance_Cast_01 = new PrefabGUID(-88630604); public static readonly PrefabGUID AB_ArchMage_CrystalLance_Cast_02 = new PrefabGUID(1895752824); public static readonly PrefabGUID AB_ArchMage_CrystalLance_Cast_03 = new PrefabGUID(-518248879); public static readonly PrefabGUID AB_ArchMage_CrystalLance_Charged_AbilityGroup = new PrefabGUID(1187623532); public static readonly PrefabGUID AB_ArchMage_CrystalLance_Charged_Cast = new PrefabGUID(-1536831420); public static readonly PrefabGUID AB_ArchMage_CrystalLance_Charged_HitBuff = new PrefabGUID(1237316881); public static readonly PrefabGUID AB_ArchMage_CrystalLance_Charged_Projectile = new PrefabGUID(-1385969356); public static readonly PrefabGUID AB_ArchMage_CrystalLance_Charged_SplinterProjectile = new PrefabGUID(-485680280); public static readonly PrefabGUID AB_ArchMage_CrystalLance_Projectile = new PrefabGUID(826214455); public static readonly PrefabGUID AB_ArchMage_Emote_Aggro_AbilityGroup = new PrefabGUID(-139137314); public static readonly PrefabGUID AB_ArchMage_Emote_Aggro_Buff = new PrefabGUID(-1161618215); public static readonly PrefabGUID AB_ArchMage_Emote_Aggro_Buff_ALREADY_EXISTS_2 = new PrefabGUID(-1748472670); public static readonly PrefabGUID AB_ArchMage_Emote_Aggro_Cast = new PrefabGUID(-2059383344); public static readonly PrefabGUID AB_ArchMage_FireSpinner_AbilityGroup = new PrefabGUID(1217615468); public static readonly PrefabGUID AB_ArchMage_FireSpinner_Cast = new PrefabGUID(-1997201513); public static readonly PrefabGUID AB_ArchMage_FireSpinner_Projectile = new PrefabGUID(612861780); public static readonly PrefabGUID AB_ArchMage_FireSpinner_Spinner = new PrefabGUID(-1672727739); public static readonly PrefabGUID AB_ArchMage_FlameSphere_AggroBuff = new PrefabGUID(-240922728); public static readonly PrefabGUID AB_ArchMage_FlameSphere_AreaDamageBuff = new PrefabGUID(-1640482518); public static readonly PrefabGUID AB_ArchMage_FlameSphere_AreaEffectBuff = new PrefabGUID(-139562596); public static readonly PrefabGUID AB_ArchMage_FlameSphere_AreaInitBuff = new PrefabGUID(451676082); public static readonly PrefabGUID AB_ArchMage_FlameSphere_Dash_AbilityGroup = new PrefabGUID(-1754787506); public static readonly PrefabGUID AB_ArchMage_FlameSphere_Dash_Cast = new PrefabGUID(2138663579); public static readonly PrefabGUID AB_ArchMage_FlameSphere_Dash_Trigger = new PrefabGUID(1679920133); public static readonly PrefabGUID AB_ArchMage_FlameSphere_Projectile = new PrefabGUID(269193311); public static readonly PrefabGUID AB_ArchMage_FlameSphere_ShouldDestroyBuff = new PrefabGUID(299001257); public static readonly PrefabGUID AB_ArchMage_FlamingIce_AbilityGroup = new PrefabGUID(-2025881745); public static readonly PrefabGUID AB_ArchMage_FlamingIce_Area = new PrefabGUID(379217467); public static readonly PrefabGUID AB_ArchMage_FlamingIce_Cast = new PrefabGUID(1890249378); public static readonly PrefabGUID AB_ArchMage_FlamingIce_Channel = new PrefabGUID(-920928426); public static readonly PrefabGUID AB_ArchMage_FlamingIce_FreezeBuff = new PrefabGUID(821255111); public static readonly PrefabGUID AB_ArchMage_FlamingIce_Trigger = new PrefabGUID(-1488767962); public static readonly PrefabGUID AB_ArchMage_LightningArc_AbilityGroup = new PrefabGUID(-1232816408); public static readonly PrefabGUID AB_ArchMage_LightningArc_Cast = new PrefabGUID(-1524769526); public static readonly PrefabGUID AB_ArchMage_LightningArc_Projectile = new PrefabGUID(1211897000); public static readonly PrefabGUID AB_ArchMage_LightningCurse_AbilityGroup = new PrefabGUID(1365358996); public static readonly PrefabGUID AB_ArchMage_LightningCurse_Cast = new PrefabGUID(1142315183); public static readonly PrefabGUID AB_ArchMage_LightningCurse_Projectile = new PrefabGUID(-1317668918); public static readonly PrefabGUID AB_ArchMage_LightningCurse_ProjectileSpawnerBuff = new PrefabGUID(2089605812); public static readonly PrefabGUID AB_ArchMage_LightningCurse_ProjectileTrigger = new PrefabGUID(390853496); public static readonly PrefabGUID AB_ArchMage_LightningCurse_Trigger = new PrefabGUID(-988990419); public static readonly PrefabGUID AB_ArchMage_MirrorImage_AbilityGroup = new PrefabGUID(-1897317770); public static readonly PrefabGUID AB_ArchMage_MirrorImage_Cast = new PrefabGUID(-1714013936); public static readonly PrefabGUID AB_ArchMage_MirrorImage_EndPhase = new PrefabGUID(262354515); public static readonly PrefabGUID AB_ArchMage_MirrorImage_MoveBehaviourBuff = new PrefabGUID(-1099792891); public static readonly PrefabGUID AB_ArchMage_MirrorImage_Phase = new PrefabGUID(30325069); public static readonly PrefabGUID AB_ArchMage_MirrorImage_Trigger = new PrefabGUID(292114817); public static readonly PrefabGUID AB_ArchMage_Teleport_AbilityGroup = new PrefabGUID(886063983); public static readonly PrefabGUID AB_ArchMage_Teleport_Cast = new PrefabGUID(484270946); public static readonly PrefabGUID AB_ArchMage_Teleport_EndPhase = new PrefabGUID(56049482); public static readonly PrefabGUID AB_ArchMage_Teleport_Phase = new PrefabGUID(-723899936); public static readonly PrefabGUID AB_Bandit_Ambush_Buff = new PrefabGUID(614276301); public static readonly PrefabGUID AB_Bandit_Ambush_RevealBuff = new PrefabGUID(-1076678456); public static readonly PrefabGUID AB_Bandit_Bomber_Elite_Roll = new PrefabGUID(-2048180340); public static readonly PrefabGUID AB_Bandit_Bomber_Elite_Roll_Group = new PrefabGUID(192866635); public static readonly PrefabGUID AB_Bandit_BombThrow_AbilityGroup = new PrefabGUID(-1743551272); public static readonly PrefabGUID AB_Bandit_BombThrow_Cast = new PrefabGUID(-733996338); public static readonly PrefabGUID AB_Bandit_BombThrow_Throw = new PrefabGUID(746729709); public static readonly PrefabGUID AB_Bandit_ClusterBombThrow_AbilityGroup = new PrefabGUID(-444905742); public static readonly PrefabGUID AB_Bandit_ClusterBombThrow_Cast = new PrefabGUID(-1999880094); public static readonly PrefabGUID AB_Bandit_ClusterBombThrow_Throw_A = new PrefabGUID(-2120057081); public static readonly PrefabGUID AB_Bandit_ClusterBombThrow_Throw_B = new PrefabGUID(1077321307); public static readonly PrefabGUID AB_Bandit_ClusterBombThrow_Throw_C = new PrefabGUID(-1517314668); public static readonly PrefabGUID AB_Bandit_Deadeye_Camouflage_AbilityGroup = new PrefabGUID(403340165); public static readonly PrefabGUID AB_Bandit_Deadeye_Camouflage_Buff = new PrefabGUID(-1494713411); public static readonly PrefabGUID AB_Bandit_Deadeye_Camouflage_Cast = new PrefabGUID(1619421912); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosbarrage_Area = new PrefabGUID(-2085683744); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosbarrage_Cast = new PrefabGUID(-425480162); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosbarrage_Channel_Buff = new PrefabGUID(-1024366257); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosbarrage_Group = new PrefabGUID(1996370390); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosbarrage_Hard_Area = new PrefabGUID(318586876); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosbarrage_Hard_Cast = new PrefabGUID(646697719); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosbarrage_Hard_Channel_Buff = new PrefabGUID(1894913654); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosbarrage_Hard_Group = new PrefabGUID(642767950); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosbarrage_Hard_Throw = new PrefabGUID(-1052631664); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosbarrage_Throw = new PrefabGUID(1552667718); public static readonly PrefabGUID AB_Bandit_Deadeye_ChaosNuke_Hard_Area = new PrefabGUID(1433173866); public static readonly PrefabGUID AB_Bandit_Deadeye_ChaosNuke_Hard_Cast = new PrefabGUID(-538723780); public static readonly PrefabGUID AB_Bandit_Deadeye_ChaosNuke_Hard_Group = new PrefabGUID(-1181691042); public static readonly PrefabGUID AB_Bandit_Deadeye_ChaosNuke_Hard_ProjectileDown = new PrefabGUID(-1181723749); public static readonly PrefabGUID AB_Bandit_Deadeye_ChaosNuke_Hard_ProjectileUp = new PrefabGUID(-2066463501); public static readonly PrefabGUID AB_Bandit_Deadeye_ChaosNuke_Hard_Spawner = new PrefabGUID(516139794); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosstorm_Cast = new PrefabGUID(-2024307089); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosstorm_Channel_Buff = new PrefabGUID(-1625210735); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosstorm_Group = new PrefabGUID(-1230681995); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosstorm_Hard_Cast = new PrefabGUID(-549357932); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosstorm_Hard_Channel_Buff = new PrefabGUID(-381215490); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosstorm_Hard_Group = new PrefabGUID(-836774616); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosstorm_Hard_Projectile = new PrefabGUID(338969973); public static readonly PrefabGUID AB_Bandit_Deadeye_Chaosstorm_Projectile = new PrefabGUID(659256615); public static readonly PrefabGUID AB_Bandit_Deadeye_Idle_Buff = new PrefabGUID(-881914431); public static readonly PrefabGUID AB_Bandit_Deadeye_RangedAttack_Cast = new PrefabGUID(1015300268); public static readonly PrefabGUID AB_Bandit_Deadeye_RangedAttack_Group = new PrefabGUID(1336193986); public static readonly PrefabGUID AB_Bandit_Deadeye_RangedAttack_Projectile = new PrefabGUID(1262043059); public static readonly PrefabGUID AB_Bandit_Deadeye_Roll_AbilityGroup = new PrefabGUID(-912372242); public static readonly PrefabGUID AB_Bandit_Deadeye_Roll_CastAndRoll = new PrefabGUID(-1983337096); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_01_AbilityGroup = new PrefabGUID(-1601441951); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_02_AbilityGroup = new PrefabGUID(-1657698157); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_03_AbilityGroup = new PrefabGUID(-228936316); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_Cast = new PrefabGUID(16980588); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_Hard_AbilityGroup = new PrefabGUID(514628041); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_Hard_Cast = new PrefabGUID(1621374433); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_Hard_ReachPos = new PrefabGUID(-2128770207); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_Hard_TargetSerpentSlotBuff = new PrefabGUID(343491640); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_Hard_WalkToPosBuff = new PrefabGUID(-352192969); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_ReachPos = new PrefabGUID(145985534); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_TargetSerpentSlotBuff = new PrefabGUID(1018849261); public static readonly PrefabGUID AB_Bandit_Fisherman_FeedSerpentLineup_WalkToPosBuff = new PrefabGUID(424796826); public static readonly PrefabGUID AB_Bandit_Fisherman_FishHook_AbilityGroup = new PrefabGUID(643209588); public static readonly PrefabGUID AB_Bandit_Fisherman_FishHook_Buff = new PrefabGUID(1578560559); public static readonly PrefabGUID AB_Bandit_Fisherman_FishHook_Cast = new PrefabGUID(1802235612); public static readonly PrefabGUID AB_Bandit_Fisherman_FishHook_DownedStun = new PrefabGUID(-531963043); public static readonly PrefabGUID AB_Bandit_Fisherman_FishHook_PullBuff = new PrefabGUID(1511401953); public static readonly PrefabGUID AB_Bandit_Fisherman_FishHook_Throw = new PrefabGUID(-406761191); public static readonly PrefabGUID AB_Bandit_Fisherman_FishHook_Travel = new PrefabGUID(-56609007); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingBlowfish_AbilityGroup = new PrefabGUID(-2096565232); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingBlowfish_Buff = new PrefabGUID(-942168862); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingBlowfish_Cast = new PrefabGUID(2137527296); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingBlowfish_MinionSpawnPostTravel = new PrefabGUID(2145493958); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingBlowfish_MinionSpawnTravel = new PrefabGUID(796446287); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingBlowfish_MinionTrigger = new PrefabGUID(-263342865); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingBlowfish_TargetFishSpotBuff = new PrefabGUID(-1441774408); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingLineup_AbilityGroup = new PrefabGUID(-82547339); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingLineup_Cast = new PrefabGUID(-1677547928); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingLineup_TargetSerpentSlotBuff = new PrefabGUID(-459325308); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingLineup_WalkToPosBuff = new PrefabGUID(1667669669); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingOldBoot_AbilityGroup = new PrefabGUID(396802528); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingOldBoot_Buff = new PrefabGUID(1143164491); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingOldBoot_Cast = new PrefabGUID(1705082862); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingOldBoot_Object = new PrefabGUID(1173936438); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingOldBoot_SpawnTravel = new PrefabGUID(-2113681866); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingOldBoot_TargetFishSpotBuff = new PrefabGUID(-588408781); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingPiranhas_AbilityGroup = new PrefabGUID(647582679); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingPiranhas_Buff = new PrefabGUID(-1612091215); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingPiranhas_Cast = new PrefabGUID(-256287804); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingPiranhas_MinionSpawnPostTravel = new PrefabGUID(1359094029); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingPiranhas_MinionSpawnTravel = new PrefabGUID(-1957344524); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingPiranhas_MinionTrigger = new PrefabGUID(-1982947231); public static readonly PrefabGUID AB_Bandit_Fisherman_FishingPiranhas_TargetFishSpotBuff = new PrefabGUID(-1108714409); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_AbilityGroup = new PrefabGUID(571532506); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Buff = new PrefabGUID(-515272712); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Cast_Throw = new PrefabGUID(1184409626); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_DespawnBuff = new PrefabGUID(-163781604); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_DespawnDelayBuff = new PrefabGUID(2141155864); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Hard_AbilityGroup = new PrefabGUID(-405467076); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Hard_Buff = new PrefabGUID(-162196022); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Hard_Cast_Throw = new PrefabGUID(-31935559); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Hard_DespawnBuff = new PrefabGUID(1573364739); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Hard_DespawnDelayBuff = new PrefabGUID(1995307154); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Hard_SpawnBuff = new PrefabGUID(796768594); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Hard_SpawnPosOccupiedBuff = new PrefabGUID(45227631); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Hard_Summon = new PrefabGUID(-1203439535); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Hard_TargetFishSpotBuff = new PrefabGUID(-1067814600); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Hard_Throw = new PrefabGUID(605436873); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_SpawnBuff = new PrefabGUID(1431881003); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_SpawnPosOccupiedBuff = new PrefabGUID(979966699); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Summon = new PrefabGUID(294823191); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_TargetFishSpotBuff = new PrefabGUID(-2105496725); public static readonly PrefabGUID AB_Bandit_Fisherman_SerpentFeed_Throw = new PrefabGUID(197909875); public static readonly PrefabGUID AB_Bandit_Fisherman_SpinAttack_AbilityGroup = new PrefabGUID(-1807544727); public static readonly PrefabGUID AB_Bandit_Fisherman_SpinAttack_Cast = new PrefabGUID(160205942); public static readonly PrefabGUID AB_Bandit_Fisherman_SpinAttack_Channel = new PrefabGUID(-1448436196); public static readonly PrefabGUID AB_Bandit_Fisherman_SpinAttack_Hit = new PrefabGUID(1481190476); public static readonly PrefabGUID AB_Bandit_Fisherman_SwingAttack_AbilityGroup = new PrefabGUID(1516349451); public static readonly PrefabGUID AB_Bandit_Fisherman_SwingAttack_Cast01 = new PrefabGUID(1168365685); public static readonly PrefabGUID AB_Bandit_Fisherman_SwingAttack_Cast02 = new PrefabGUID(102339461); public static readonly PrefabGUID AB_Bandit_Fisherman_SwingAttack_Hit01 = new PrefabGUID(1700359110); public static readonly PrefabGUID AB_Bandit_Fisherman_SwingAttack_Hit02 = new PrefabGUID(2031929448); public static readonly PrefabGUID AB_Bandit_Foreman_BloodRage_AbilityGroup = new PrefabGUID(-892431821); public static readonly PrefabGUID AB_Bandit_Foreman_BloodRage_Area = new PrefabGUID(-55501018); public static readonly PrefabGUID AB_Bandit_Foreman_BloodRage_Buff = new PrefabGUID(-250777393); public static readonly PrefabGUID AB_Bandit_Foreman_BloodRage_Cast = new PrefabGUID(1967051268); public static readonly PrefabGUID AB_Bandit_Foreman_BoltStorm_Cast = new PrefabGUID(-102278544); public static readonly PrefabGUID AB_Bandit_Foreman_BoltStorm_Group = new PrefabGUID(1187864883); public static readonly PrefabGUID AB_Bandit_Foreman_BoltStorm_Throw = new PrefabGUID(-326095012); public static readonly PrefabGUID AB_Bandit_Foreman_BoltStorm_Throw_Center = new PrefabGUID(1034684941); public static readonly PrefabGUID AB_Bandit_Foreman_BoltStorm_Trigger = new PrefabGUID(-978448375); public static readonly PrefabGUID AB_Bandit_Foreman_Crossbow_BloodRage_Cast = new PrefabGUID(-236936957); public static readonly PrefabGUID AB_Bandit_Foreman_Crossbow_BloodRage_Group = new PrefabGUID(-1100933071); public static readonly PrefabGUID AB_Bandit_Foreman_Crossbow_Cast = new PrefabGUID(-504877178); public static readonly PrefabGUID AB_Bandit_Foreman_Crossbow_Group = new PrefabGUID(-2010697707); public static readonly PrefabGUID AB_Bandit_Foreman_Crossbow_Hard_AbilityGroup = new PrefabGUID(46962343); public static readonly PrefabGUID AB_Bandit_Foreman_Crossbow_Hard_BloodRage_AbilityGroup = new PrefabGUID(-1432555386); public static readonly PrefabGUID AB_Bandit_Foreman_Crossbow_Hard_BloodRage_Cast = new PrefabGUID(-1188423561); public static readonly PrefabGUID AB_Bandit_Foreman_Crossbow_Hard_Cast = new PrefabGUID(-1555191296); public static readonly PrefabGUID AB_Bandit_Foreman_Crossbow_Hard_Projectile = new PrefabGUID(-1461521784); public static readonly PrefabGUID AB_Bandit_Foreman_Crossbow_Projectile = new PrefabGUID(926720349); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_AbilityGroup = new PrefabGUID(-1326540020); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_Cast = new PrefabGUID(13962946); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_Hard_AbilityGroup = new PrefabGUID(-1696612225); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_Hard_Cast = new PrefabGUID(45482985); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_Init_AbilityGroup = new PrefabGUID(-871701576); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_Init_Buff = new PrefabGUID(-1850501474); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_Init_Cast = new PrefabGUID(1428691280); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_Init_Hard_AbilityGroup = new PrefabGUID(-1568783706); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_Init_Hard_Cast = new PrefabGUID(-1456665278); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_Projectile = new PrefabGUID(1154919829); public static readonly PrefabGUID AB_Bandit_Foreman_RapidShot_StaggerBuff = new PrefabGUID(1772599073); public static readonly PrefabGUID AB_Bandit_Foreman_Reinforcement_Cast = new PrefabGUID(-968455089); public static readonly PrefabGUID AB_Bandit_Foreman_Reinforcement_GateBoss_MinionBuff = new PrefabGUID(1936552741); public static readonly PrefabGUID AB_Bandit_Foreman_Reinforcement_Group = new PrefabGUID(1914101495); public static readonly PrefabGUID AB_Bandit_Foreman_Reinforcement_Summon = new PrefabGUID(891231141); public static readonly PrefabGUID AB_Bandit_Foreman_Roll_CastAndRoll = new PrefabGUID(-902150618); public static readonly PrefabGUID AB_Bandit_Foreman_Roll_Group = new PrefabGUID(-1773431654); public static readonly PrefabGUID AB_Bandit_Foreman_ThrowNet_Buff = new PrefabGUID(-1388221055); public static readonly PrefabGUID AB_Bandit_Foreman_ThrowNet_Cast = new PrefabGUID(-378355710); public static readonly PrefabGUID AB_Bandit_Foreman_ThrowNet_Group = new PrefabGUID(2130985273); public static readonly PrefabGUID AB_Bandit_Foreman_ThrowNet_Throw = new PrefabGUID(1792504388); public static readonly PrefabGUID AB_Bandit_Foreman_VBlood_Emote_Aggro_AbilityGroup = new PrefabGUID(-1675488046); public static readonly PrefabGUID AB_Bandit_Foreman_VBlood_Emote_Aggro_Buff = new PrefabGUID(1564776620); public static readonly PrefabGUID AB_Bandit_Foreman_VBlood_Emote_Aggro_Cast = new PrefabGUID(-1709807211); public static readonly PrefabGUID AB_Bandit_FrostArrow_Camouflage_HARD_AbilityGroup = new PrefabGUID(1015070299); public static readonly PrefabGUID AB_Bandit_FrostArrow_Camouflage_HARD_Buff = new PrefabGUID(172001911); public static readonly PrefabGUID AB_Bandit_FrostArrow_Camouflage_HARD_Cast = new PrefabGUID(1320706811); public static readonly PrefabGUID AB_Bandit_FrostArrow_Camouflage_HARD_EndBuff = new PrefabGUID(-289232633); public static readonly PrefabGUID AB_Bandit_FrostArrow_Camouflage_HARD_Nova = new PrefabGUID(577840459); public static readonly PrefabGUID AB_Bandit_FrostArrow_RainOfArrows_AbilityGroup = new PrefabGUID(766284586); public static readonly PrefabGUID AB_Bandit_FrostArrow_RainOfArrows_Cast = new PrefabGUID(-652657527); public static readonly PrefabGUID AB_Bandit_FrostArrow_RainOfArrows_Hard_AbilityGroup = new PrefabGUID(-328617085); public static readonly PrefabGUID AB_Bandit_FrostArrow_RainOfArrows_Hard_Cast = new PrefabGUID(2055017810); public static readonly PrefabGUID AB_Bandit_FrostArrow_RainOfArrows_Hard_Throw01 = new PrefabGUID(-698051948); public static readonly PrefabGUID AB_Bandit_FrostArrow_RainOfArrows_Hard_Throw02 = new PrefabGUID(209868589); public static readonly PrefabGUID AB_Bandit_FrostArrow_RainOfArrows_Hard_Trigger01 = new PrefabGUID(-721181968); public static readonly PrefabGUID AB_Bandit_FrostArrow_RainOfArrows_Hard_Trigger02 = new PrefabGUID(1789626324); public static readonly PrefabGUID AB_Bandit_FrostArrow_RainOfArrows_Throw = new PrefabGUID(-1404569475); public static readonly PrefabGUID AB_Bandit_FrostArrow_RainOfArrows_Trigger = new PrefabGUID(1085881602); public static readonly PrefabGUID AB_Bandit_FrosttArrow_MultiShot_Cast = new PrefabGUID(-895811403); public static readonly PrefabGUID AB_Bandit_FrosttArrow_MultiShot_Group = new PrefabGUID(2134585360); public static readonly PrefabGUID AB_Bandit_FrosttArrow_MultiShot_Hard_Cast = new PrefabGUID(-1374239147); public static readonly PrefabGUID AB_Bandit_FrosttArrow_MultiShot_Hard_Group = new PrefabGUID(-1871956083); public static readonly PrefabGUID AB_Bandit_FrosttArrow_MultiShot_Projectile = new PrefabGUID(1042909452); public static readonly PrefabGUID AB_Bandit_Hunter_Bow_Cast = new PrefabGUID(1547925762); public static readonly PrefabGUID AB_Bandit_Hunter_Bow_Group = new PrefabGUID(-39311902); public static readonly PrefabGUID AB_Bandit_Hunter_Bow_Projectile = new PrefabGUID(1802976129); public static readonly PrefabGUID AB_Bandit_Hunter_Roll_AbilityGroup = new PrefabGUID(564244811); public static readonly PrefabGUID AB_Bandit_Hunter_Roll_CastAndRoll = new PrefabGUID(828882973); public static readonly PrefabGUID AB_Bandit_Leader_CallWolf_AbilityGroup = new PrefabGUID(-1854347593); public static readonly PrefabGUID AB_Bandit_Leader_CallWolf_Cast = new PrefabGUID(-1437515280); public static readonly PrefabGUID AB_Bandit_Leader_CallWolf_Summon = new PrefabGUID(-419870015); public static readonly PrefabGUID AB_Bandit_Leader_Crossbow_Cast = new PrefabGUID(1956190540); public static readonly PrefabGUID AB_Bandit_Leader_Crossbow_Group = new PrefabGUID(-589722860); public static readonly PrefabGUID AB_Bandit_Leader_Crossbow_Projectile = new PrefabGUID(-269688030); public static readonly PrefabGUID AB_Bandit_Leader_OnAggro_AbilityGroup = new PrefabGUID(1567999366); public static readonly PrefabGUID AB_Bandit_Leader_OnAggro_Cast = new PrefabGUID(1304417048); public static readonly PrefabGUID AB_Bandit_Leader_QuickDraw_AbilityGroup = new PrefabGUID(-67405040); public static readonly PrefabGUID AB_Bandit_Leader_QuickDraw_Buff = new PrefabGUID(-1406264844); public static readonly PrefabGUID AB_Bandit_Leader_QuickDraw_Cast = new PrefabGUID(-1144749945); public static readonly PrefabGUID AB_Bandit_Leader_QuickDraw_CountEnemies = new PrefabGUID(1163260); public static readonly PrefabGUID AB_Bandit_Leader_QuickDraw_Stagger_Debuff = new PrefabGUID(2013098681); public static readonly PrefabGUID AB_Bandit_Leader_Roll_AbilityGroup = new PrefabGUID(138056981); public static readonly PrefabGUID AB_Bandit_Leader_Roll_CastAndRoll = new PrefabGUID(814281313); public static readonly PrefabGUID AB_Bandit_Leader_Strafe_Cast = new PrefabGUID(-1478907722); public static readonly PrefabGUID AB_Bandit_Leader_Strafe_Group = new PrefabGUID(920868547); public static readonly PrefabGUID A