Decompiled source of Penumbra v1.0.4

Penumbra.dll

Decompiled a month ago
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