Decompiled source of ArenaBuilds v0.2.10

ArenaBuilds.dll

Decompiled 2 days ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Text.Json;
using System.Text.RegularExpressions;
using ArenaBuilds.Commands.ManualConverters;
using ArenaBuilds.Data;
using ArenaBuilds.Data.Db;
using ArenaBuilds.Extensions;
using ArenaBuilds.Helpers;
using ArenaBuilds.Models;
using ArenaBuilds.Models.CommandArguments;
using ArenaBuilds.Models.Interfaces;
using BepInEx;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using HarmonyLib;
using Il2CppSystem;
using Il2CppSystem.Collections.Generic;
using Microsoft.CodeAnalysis;
using ProjectM;
using ProjectM.Gameplay.Systems;
using ProjectM.Network;
using ProjectM.Scripting;
using ProjectM.Shared;
using Stunlock.Core;
using Unity.Collections;
using Unity.Entities;
using UnityEngine;
using VampireCommandFramework;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("Crostomos")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Server mod that lets you instantly equip custom builds via in-game commands")]
[assembly: AssemblyFileVersion("0.2.10.0")]
[assembly: AssemblyInformationalVersion("0.2.10-dev+ea1a1eda0c53c18eff737ac9f57b233ea3005a42")]
[assembly: AssemblyProduct("ArenaBuilds")]
[assembly: AssemblyTitle("ArenaBuilds")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.2.10.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 ArenaBuilds
{
	internal static class BuildManager
	{
		private static readonly string FileDirectory = Path.Combine("BepInEx", "config", "ArenaBuilds");

		private const string BuildFile = "builds.json";

		private static readonly string BuildPath = Path.Combine(FileDirectory, "builds.json");

		public static Dictionary<string, BuildModel> Builds { get; private set; } = new Dictionary<string, BuildModel>(StringComparer.OrdinalIgnoreCase);


		public static void LoadData()
		{
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Expected O, but got Unknown
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Expected O, but got Unknown
			bool flag = default(bool);
			BepInExInfoLogInterpolatedStringHandler val;
			if (!File.Exists(BuildPath))
			{
				ManualLogSource logger = Plugin.Logger;
				val = new BepInExInfoLogInterpolatedStringHandler(25, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Builds.json not found in ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(BuildPath);
				}
				logger.LogInfo(val);
				CreateEmptyBuildsFile();
			}
			string json = File.ReadAllText(BuildPath);
			Dictionary<string, BuildModel> dictionary = JsonSerializer.Deserialize<Dictionary<string, BuildModel>>(json, new JsonSerializerOptions
			{
				AllowTrailingCommas = true
			});
			Builds = new Dictionary<string, BuildModel>(dictionary, StringComparer.OrdinalIgnoreCase);
			ManualLogSource logger2 = Plugin.Logger;
			val = new BepInExInfoLogInterpolatedStringHandler(31, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Loaded ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<int>(Builds.Count);
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" builds from Builds.json");
			}
			logger2.LogInfo(val);
		}

		private static void CreateEmptyBuildsFile()
		{
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Expected O, but got Unknown
			if (!Directory.Exists(FileDirectory))
			{
				Directory.CreateDirectory(FileDirectory);
			}
			Dictionary<string, BuildModel> value = new Dictionary<string, BuildModel> { 
			{
				"EmptyDefault",
				new BuildModel()
			} };
			string contents = JsonSerializer.Serialize(value, new JsonSerializerOptions
			{
				WriteIndented = true
			});
			File.WriteAllText(BuildPath, contents);
			ManualLogSource logger = Plugin.Logger;
			bool flag = default(bool);
			BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(29, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Created empty Builds.json at ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(BuildPath);
			}
			logger.LogInfo(val);
		}

		public static string GetBuildList()
		{
			if (Builds == null || Builds.Count == 0)
			{
				return string.Empty;
			}
			return Builds.Keys.ToFormattedList();
		}
	}
	internal class Core
	{
		private static World Server => GetWorld("Server") ?? throw new Exception("There is no Server world.");

		public static PrefabCollectionSystem PrefabCollectionSystem => Server.GetExistingSystemManaged<PrefabCollectionSystem>();

		public static ActivateVBloodAbilitySystem ActivateVBloodAbilitySystem => Server.GetExistingSystemManaged<ActivateVBloodAbilitySystem>();

		public static ServerGameManager ServerGameManager => Server.GetExistingSystemManaged<ServerScriptMapper>()._ServerGameManager;

		public static DebugEventsSystem DebugEventsSystem => Server.GetExistingSystemManaged<DebugEventsSystem>();

		public static EntityManager EntityManager => Server.EntityManager;

		private static World GetWorld(string name)
		{
			Enumerator<World> enumerator = World.s_AllWorlds.GetEnumerator();
			while (enumerator.MoveNext())
			{
				World current = enumerator.Current;
				if (current.Name == name)
				{
					return current;
				}
			}
			return null;
		}
	}
	[BepInPlugin("ArenaBuilds", "ArenaBuilds", "0.2.10-dev")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BasePlugin
	{
		private Harmony _harmony;

		public static ManualLogSource Logger;

		public override void Load()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Expected O, but got Unknown
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			Logger = ((BasePlugin)this).Log;
			ManualLogSource log = ((BasePlugin)this).Log;
			bool flag = default(bool);
			BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(27, 2, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Plugin ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("ArenaBuilds");
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" version ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("0.2.10-dev");
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is loaded!");
			}
			log.LogInfo(val);
			_harmony = new Harmony("ArenaBuilds");
			_harmony.PatchAll(Assembly.GetExecutingAssembly());
			BuildManager.LoadData();
			Database.Initialize();
			CommandRegistry.RegisterAll();
		}

		public override bool Unload()
		{
			CommandRegistry.UnregisterAssembly();
			Harmony harmony = _harmony;
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
			return true;
		}
	}
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "ArenaBuilds";

		public const string PLUGIN_NAME = "ArenaBuilds";

		public const string PLUGIN_VERSION = "0.2.10-dev";
	}
}
namespace ArenaBuilds.Models
{
	internal class Abilities
	{
		public AbilityData Travel { get; set; } = new AbilityData();


		public AbilityData Ability1 { get; set; } = new AbilityData();


		public AbilityData Ability2 { get; set; } = new AbilityData();


		public UltimateAbilityData Ultimate { get; set; } = new UltimateAbilityData();

	}
	internal class AbilityData : IAbilityData
	{
		public string Name { get; set; } = string.Empty;


		public JewelData Jewel { get; set; } = new JewelData();

	}
	internal class Armors
	{
		public string Boots { get; set; } = string.Empty;


		public string Chest { get; set; } = string.Empty;


		public string Gloves { get; set; } = string.Empty;


		public string Legs { get; set; } = string.Empty;


		public string MagicSource { get; set; } = string.Empty;


		public string Head { get; set; } = string.Empty;


		public string Cloak { get; set; } = string.Empty;


		public string Bag { get; set; } = string.Empty;

	}
	internal class BloodData
	{
		public bool GiveBloodPotion { get; set; } = false;


		public bool FillBloodPool { get; set; } = false;


		public string PrimaryType { get; set; } = string.Empty;


		public string SecondaryType { get; set; } = string.Empty;


		public float PrimaryQuality { get; set; } = 0f;


		public float SecondaryQuality { get; set; } = 0f;


		public int SecondaryBuffIndex { get; set; } = 0;

	}
	internal class BuildItemData
	{
		public string Name { get; set; } = string.Empty;


		public int Amount { get; set; } = 0;

	}
	internal class BuildModel
	{
		public BuildSettings Settings { get; set; } = new BuildSettings();


		public BloodData Blood { get; set; } = new BloodData();


		public List<BuildItemData> Items { get; set; } = new List<BuildItemData>();


		public Abilities Abilities { get; set; } = new Abilities();


		public PassiveSpells PassiveSpells { get; set; } = new PassiveSpells();


		public Armors Armors { get; set; } = new Armors();


		public List<WeaponData> Weapons { get; set; } = new List<WeaponData>();

	}
	internal class BuildSettings
	{
		public bool ClearInventory { get; set; }
	}
	internal class JewelData
	{
		public string SpellMod1 { get; set; } = string.Empty;


		public float SpellMod1Power { get; set; } = 0f;


		public string SpellMod2 { get; set; } = string.Empty;


		public float SpellMod2Power { get; set; } = 0f;


		public string SpellMod3 { get; set; } = string.Empty;


		public float SpellMod3Power { get; set; } = 0f;


		public string SpellMod4 { get; set; } = string.Empty;


		public float SpellMod4Power { get; set; } = 0f;

	}
	internal class PassiveSpells
	{
		public string PassiveSpell1 { get; set; } = string.Empty;


		public string PassiveSpell2 { get; set; } = string.Empty;


		public string PassiveSpell3 { get; set; } = string.Empty;


		public string PassiveSpell4 { get; set; } = string.Empty;


		public string PassiveSpell5 { get; set; } = string.Empty;

	}
	internal class UltimateAbilityData : IAbilityData
	{
		public string Name { get; set; } = string.Empty;

	}
	internal class WeaponData
	{
		public string Name { get; set; } = string.Empty;


		public string InfuseSpellMod { get; set; } = string.Empty;


		public string SpellMod1 { get; set; } = string.Empty;


		public string SpellMod2 { get; set; } = string.Empty;


		public string StatMod1 { get; set; } = string.Empty;


		public float StatMod1Power { get; set; } = 0f;


		public string StatMod2 { get; set; } = string.Empty;


		public float StatMod2Power { get; set; } = 0f;


		public string StatMod3 { get; set; } = string.Empty;


		public float StatMod3Power { get; set; } = 0f;


		public string StatMod4 { get; set; } = string.Empty;


		public float StatMod4Power { get; set; } = 0f;

	}
}
namespace ArenaBuilds.Models.Interfaces
{
	internal interface IAbilityData
	{
		string Name { get; set; }
	}
	internal interface ICommandArgument
	{
		string Name { get; set; }

		string PrefabName { get; set; }

		List<string> ArgNames { get; set; }
	}
	internal interface IDatabase
	{
		void Init();
	}
}
namespace ArenaBuilds.Models.CommandArguments
{
	internal class AbilityModel : ICommandArgument
	{
		public string Name { get; set; }

		public string SpellSchool { get; set; }

		public string PrefabName { get; set; }

		public List<string> ArgNames { get; set; }

		public AbilityModel(string name, string prefabName, List<string> argNames, string spellSchool)
		{
			Name = name;
			SpellSchool = spellSchool;
			PrefabName = prefabName;
			ArgNames = argNames;
			base..ctor();
		}
	}
	internal class ArtifactWeaponModel : WeaponModel
	{
		public string SpellMod1 { get; set; } = string.Empty;


		public string SpellMod2 { get; set; } = string.Empty;


		public int Variation { get; set; } = 1;


		public ArtifactWeaponModel(string name, string basePrefabName, List<string> argNames)
			: base(name, basePrefabName, argNames)
		{
		}

		public static ArtifactWeaponModel FromWeaponModel(WeaponModel weapon)
		{
			return new ArtifactWeaponModel(weapon.Name, weapon.BasePrefabName, weapon.ArgNames)
			{
				PrefabName = weapon.PrefabName
			};
		}
	}
	internal class InfuseSpellModModel : ICommandArgument
	{
		public string Name { get; set; }

		public string PrefabName { get; set; }

		public List<string> ArgNames { get; set; }

		public InfuseSpellModModel(string name, string prefabName, List<string> argNames)
		{
			Name = name;
			PrefabName = prefabName;
			ArgNames = argNames;
			base..ctor();
		}
	}
	internal class StatModModel : ICommandArgument
	{
		public string Name { get; set; }

		public string PrefabName { get; set; }

		public List<string> ArgNames { get; set; }

		public StatModModel(string name, string prefabName, List<string> argNames)
		{
			Name = name;
			PrefabName = prefabName;
			ArgNames = argNames;
			base..ctor();
		}
	}
	internal class WeaponModel : ICommandArgument
	{
		public string Name { get; set; }

		public string BasePrefabName { get; set; }

		public string PrefabName { get; set; }

		public List<string> ArgNames { get; set; }

		public WeaponModel(string name, string basePrefabName, List<string> argNames)
		{
			Name = name;
			BasePrefabName = basePrefabName;
			PrefabName = "Item_Weapon_" + basePrefabName + "_T05_Iron";
			ArgNames = argNames;
			base..ctor();
		}

		public void SetLegendaryPrefab()
		{
			PrefabName = "Item_Weapon_" + BasePrefabName + "_Legendary_T08";
		}

		public void SetArtifactPrefab(int variation = 1)
		{
			PrefabName = $"Item_Weapon_{BasePrefabName}_Unique_T08_Variation0{variation}";
		}
	}
}
namespace ArenaBuilds.Helpers
{
	internal static class AbilityHelper
	{
		public static void EquipAbilities(Entity character, User user, Abilities abilities)
		{
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Expected O, but got Unknown
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			(IAbilityData, AbilityTypeEnum)[] array = new(IAbilityData, AbilityTypeEnum)[4]
			{
				(abilities.Travel, (AbilityTypeEnum)2),
				(abilities.Ability1, (AbilityTypeEnum)5),
				(abilities.Ability2, (AbilityTypeEnum)6),
				(abilities.Ultimate, (AbilityTypeEnum)7)
			};
			(IAbilityData, AbilityTypeEnum)[] array2 = array;
			bool flag = default(bool);
			for (int i = 0; i < array2.Length; i++)
			{
				var (abilityData, slot) = array2[i];
				if (string.IsNullOrEmpty(abilityData.Name))
				{
					continue;
				}
				if (UtilsHelper.TryGetPrefabGuid(abilityData.Name, out var guid))
				{
					EquipAbility(character, guid, slot);
					if (abilityData is AbilityData abilityData2)
					{
						JewelHelper.CreateAndEquip(user, guid, abilityData2.Jewel);
					}
					continue;
				}
				ManualLogSource logger = Plugin.Logger;
				BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(28, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Ability guid not found for ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(abilityData.Name);
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral(".");
				}
				logger.LogWarning(val);
			}
		}

		public static void EquipPassiveSpells(Entity character, PassiveSpells passiveSpells)
		{
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Expected O, but got Unknown
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			string[] array = new string[5] { passiveSpells.PassiveSpell1, passiveSpells.PassiveSpell2, passiveSpells.PassiveSpell3, passiveSpells.PassiveSpell4, passiveSpells.PassiveSpell5 };
			bool flag = default(bool);
			for (int i = 0; i < array.Length; i++)
			{
				if (string.IsNullOrEmpty(array[i]))
				{
					continue;
				}
				if (UtilsHelper.TryGetPrefabGuid(array[i], out var guid))
				{
					EquipSpellPassive(character, guid, i);
					continue;
				}
				ManualLogSource logger = Plugin.Logger;
				BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(34, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Passive spell guid not found for ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(array[i]);
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral(".");
				}
				logger.LogWarning(val);
			}
		}

		public static void ClearAbilities(Entity character)
		{
			//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_0009: 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_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: 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)
			EntityManager entityManager = Core.EntityManager;
			DynamicBuffer<VBloodAbilityBuffEntry> val = default(DynamicBuffer<VBloodAbilityBuffEntry>);
			if (((EntityManager)(ref entityManager)).TryGetBuffer<VBloodAbilityBuffEntry>(character, ref val))
			{
				Enumerator<VBloodAbilityBuffEntry> enumerator = val.GetEnumerator();
				while (enumerator.MoveNext())
				{
					VBloodAbilityBuffEntry current = enumerator.Current;
					VBloodAbilityUtilities.TryRemoveVBloodAbility(Core.EntityManager, character, current.ActiveAbility);
				}
			}
		}

		public static void ClearPassiveSpells(Entity character)
		{
			//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_0009: 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_0026: Unknown result type (might be due to invalid IL or missing references)
			EntityManager entityManager = Core.EntityManager;
			DynamicBuffer<ActivePassivesBuffer> val = default(DynamicBuffer<ActivePassivesBuffer>);
			if (((EntityManager)(ref entityManager)).TryGetBuffer<ActivePassivesBuffer>(character, ref val))
			{
				for (int i = 0; i < val.Length; i++)
				{
					val[i] = default(ActivePassivesBuffer);
				}
			}
		}

		private static void EquipAbility(Entity character, PrefabGUID guid, AbilityTypeEnum slot)
		{
			//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_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_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Invalid comparison between Unknown and I4
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			VBloodAbilityUtilities.TryApplyVBloodAbility(Core.EntityManager, Core.ActivateVBloodAbilitySystem._BuffSpawnerSystemData, Core.PrefabCollectionSystem._PrefabLookupMap, character, guid, (VBloodAbilityApplyType)0, (int)slot == 5);
		}

		private static void EquipSpellPassive(Entity character, PrefabGUID guid, int slot)
		{
			//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_0009: 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_0027: 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_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			EntityManager entityManager = Core.EntityManager;
			DynamicBuffer<ActivePassivesBuffer> val = default(DynamicBuffer<ActivePassivesBuffer>);
			if (((EntityManager)(ref entityManager)).TryGetBuffer<ActivePassivesBuffer>(character, ref val))
			{
				val[slot] = new ActivePassivesBuffer
				{
					Entity = default(Entity),
					PrefabGuid = guid
				};
			}
		}
	}
	internal static class ArmorHelper
	{
		public static void EquipArmors(Entity character, Armors armors)
		{
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Expected O, but got Unknown
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			string[] array = new string[8] { armors.Boots, armors.Chest, armors.Gloves, armors.Legs, armors.MagicSource, armors.Head, armors.Cloak, armors.Bag };
			string[] array2 = array;
			bool flag = default(bool);
			foreach (string text in array2)
			{
				if (string.IsNullOrEmpty(text))
				{
					continue;
				}
				if (UtilsHelper.TryGetPrefabGuid(text, out var guid))
				{
					GiveAndEquip(character, guid);
					continue;
				}
				ManualLogSource logger = Plugin.Logger;
				BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(26, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Armor guid not found for ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(text);
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral(".");
				}
				logger.LogWarning(val);
			}
		}

		private static void GiveAndEquip(Entity character, PrefabGUID guid)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0004: 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)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0018: Unknown result type (might be due to invalid IL or missing references)
			Entity val = InventoryHelper.AddItemToInventory(character, guid, 1);
			int itemSlot = InventoryUtilities.GetItemSlot<EntityManager>(Core.EntityManager, character, guid, val);
			InventoryHelper.EquipEquipment(character, itemSlot);
		}
	}
	internal static class BloodHelper
	{
		public static void SetBlood(Entity character, string primaryBloodType, string secondaryBloodType = "", float primaryQuality = 100f, float secondaryQuality = 100f, int secondaryBuffIndex = 0, int amount = 100)
		{
			//IL_001b: 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_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			if (TryGetBloodGuids(primaryBloodType, secondaryBloodType, out var primaryGuid, out var secondaryGuid, ref secondaryQuality, ref secondaryBuffIndex))
			{
				ConsumeBloodAdminEvent val = default(ConsumeBloodAdminEvent);
				val.Amount = amount;
				val.PrimaryQuality = Mathf.Clamp(primaryQuality, 0f, 100f);
				val.SecondaryQuality = Mathf.Clamp(secondaryQuality, 0f, 100f);
				val.PrimaryType = primaryGuid;
				val.SecondaryType = secondaryGuid;
				val.SecondaryBuffIndex = (byte)Mathf.Clamp(secondaryBuffIndex, 0, 2);
				val.ApplyTier4SecondaryBuff = secondaryGuid != new PrefabGUID(0);
				ConsumeBloodAdminEvent eventData = val;
				UtilsHelper.CreateEventFromCharacter<ConsumeBloodAdminEvent>(character, eventData);
			}
		}

		public static void GiveBloodPotion(Entity character, string primaryBloodType, string secondaryBloodType = "", float primaryQuality = 100f, float secondaryQuality = 100f, int secondaryBuffIndex = 0)
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: 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_005e: 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_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: 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)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			if (TryGetBloodGuids(primaryBloodType, secondaryBloodType, out var primaryGuid, out var secondaryGuid, ref secondaryQuality, ref secondaryBuffIndex))
			{
				Entity val = InventoryHelper.AddItemToInventory(character, Prefabs.Item_Consumable_PrisonPotion_Bloodwine, 1);
				StoredBlood val2 = default(StoredBlood);
				val2.BloodQuality = Mathf.Clamp(primaryQuality, 0f, 100f);
				val2.PrimaryBloodType = primaryGuid;
				val2.SecondaryBlood = new SecondaryBloodData
				{
					Type = secondaryGuid,
					Quality = Mathf.Clamp(secondaryQuality, 0f, 100f),
					BuffIndex = (byte)Mathf.Clamp(secondaryBuffIndex, 0, 2)
				};
				StoredBlood val3 = val2;
				EntityManager entityManager = Core.EntityManager;
				((EntityManager)(ref entityManager)).SetComponentData<StoredBlood>(val, val3);
			}
		}

		private static bool TryGetBloodGuids(string primaryBloodType, string secondaryBloodType, out PrefabGUID primaryGuid, out PrefabGUID secondaryGuid, ref float secondaryQuality, ref int secondaryBuffIndex)
		{
			//IL_0002: 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)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Expected O, but got Unknown
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			primaryGuid = default(PrefabGUID);
			secondaryGuid = default(PrefabGUID);
			if (string.IsNullOrEmpty(primaryBloodType))
			{
				return false;
			}
			if (!UtilsHelper.TryGetPrefabGuid(primaryBloodType, out primaryGuid))
			{
				ManualLogSource logger = Plugin.Logger;
				bool flag = default(bool);
				BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(39, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Primary Blood type guid not found for ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(primaryBloodType);
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral(".");
				}
				logger.LogWarning(val);
				return false;
			}
			if (string.IsNullOrEmpty(secondaryBloodType) || !UtilsHelper.TryGetPrefabGuid(secondaryBloodType, out secondaryGuid))
			{
				secondaryGuid = new PrefabGUID(0);
				secondaryQuality = 0f;
				secondaryBuffIndex = 0;
			}
			return true;
		}
	}
	internal static class InventoryHelper
	{
		public static void GiveItems(Entity character, List<BuildItemData> items)
		{
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Expected O, but got Unknown
			//IL_003c: 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_0044: Unknown result type (might be due to invalid IL or missing references)
			bool flag = default(bool);
			foreach (BuildItemData item in items)
			{
				if (string.IsNullOrEmpty(item.Name))
				{
					continue;
				}
				if (UtilsHelper.TryGetPrefabGuid(item.Name, out var guid))
				{
					AddItemToInventory(character, guid, item.Amount);
					continue;
				}
				ManualLogSource logger = Plugin.Logger;
				BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(25, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Item guid not found for ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(item.Name);
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral(".");
				}
				logger.LogWarning(val);
			}
		}

		public static Entity AddItemToInventory(Entity recipient, PrefabGUID guid, int amount)
		{
			//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)
			//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_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_002f: 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_0037: 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)
			try
			{
				ServerGameManager serverGameManager = Core.ServerGameManager;
				AddItemResponse val = ((ServerGameManager)(ref serverGameManager)).TryAddInventoryItem(recipient, guid, amount);
				return val.NewEntity;
			}
			catch (Exception ex)
			{
				Plugin.Logger.LogFatal((object)ex);
			}
			return default(Entity);
		}

		public static void EquipEquipment(Entity character, int slot)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0004: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			UtilsHelper.CreateEventFromCharacter<EquipItemEvent>(character, new EquipItemEvent
			{
				SlotIndex = slot
			});
		}

		public static void ClearInventory(Entity character)
		{
			//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_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: 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_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: 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_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			EntityManager entityManager = Core.EntityManager;
			Equipment componentData = ((EntityManager)(ref entityManager)).GetComponentData<Equipment>(character);
			List<Entity> list = new List<Entity>(9);
			NetworkedEntity equipmentEntity = ((Equipment)(ref componentData)).GetEquipmentEntity((EquipmentType)0);
			list.Add(((NetworkedEntity)(ref equipmentEntity)).GetEntityOnServer());
			equipmentEntity = ((Equipment)(ref componentData)).GetEquipmentEntity((EquipmentType)1);
			list.Add(((NetworkedEntity)(ref equipmentEntity)).GetEntityOnServer());
			equipmentEntity = ((Equipment)(ref componentData)).GetEquipmentEntity((EquipmentType)5);
			list.Add(((NetworkedEntity)(ref equipmentEntity)).GetEntityOnServer());
			equipmentEntity = ((Equipment)(ref componentData)).GetEquipmentEntity((EquipmentType)4);
			list.Add(((NetworkedEntity)(ref equipmentEntity)).GetEntityOnServer());
			equipmentEntity = ((Equipment)(ref componentData)).GetEquipmentEntity((EquipmentType)9);
			list.Add(((NetworkedEntity)(ref equipmentEntity)).GetEntityOnServer());
			equipmentEntity = ((Equipment)(ref componentData)).GetEquipmentEntity((EquipmentType)8);
			list.Add(((NetworkedEntity)(ref equipmentEntity)).GetEntityOnServer());
			equipmentEntity = ((Equipment)(ref componentData)).GetEquipmentEntity((EquipmentType)3);
			list.Add(((NetworkedEntity)(ref equipmentEntity)).GetEntityOnServer());
			equipmentEntity = ((Equipment)(ref componentData)).GetEquipmentEntity((EquipmentType)10);
			list.Add(((NetworkedEntity)(ref equipmentEntity)).GetEntityOnServer());
			equipmentEntity = ((Equipment)(ref componentData)).GetEquipmentEntity((EquipmentType)2);
			list.Add(((NetworkedEntity)(ref equipmentEntity)).GetEntityOnServer());
			List<Entity> source = list;
			foreach (Entity item in source.Where((Entity entity) => entity != default(Entity)))
			{
				InventoryUtilitiesServer.TryUnEquipItem(Core.EntityManager, character, item, default(Nullable_Unboxed<EntityCommandBuffer>));
			}
			InventoryUtilitiesServer.ClearInventory(Core.EntityManager, character);
		}
	}
	internal static class JewelHelper
	{
		public static void CreateAndEquip(User user, PrefabGUID abilityGuid, JewelData jewelData)
		{
			//IL_0003: 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_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			CreateJewelDebugEventV2 val = default(CreateJewelDebugEventV2);
			val.AbilityPrefabGuid = abilityGuid;
			val.Equip = true;
			val.SpellMod1 = UtilsHelper.GetPrefabGuid(jewelData.SpellMod1).GetValueOrDefault();
			val.SpellMod1Power = Mathf.Clamp(jewelData.SpellMod1Power, 0f, 1f);
			val.SpellMod2 = UtilsHelper.GetPrefabGuid(jewelData.SpellMod2).GetValueOrDefault();
			val.SpellMod2Power = Mathf.Clamp(jewelData.SpellMod2Power, 0f, 1f);
			val.SpellMod3 = UtilsHelper.GetPrefabGuid(jewelData.SpellMod3).GetValueOrDefault();
			val.SpellMod3Power = Mathf.Clamp(jewelData.SpellMod3Power, 0f, 1f);
			val.SpellMod4 = UtilsHelper.GetPrefabGuid(jewelData.SpellMod4).GetValueOrDefault();
			val.SpellMod4Power = Mathf.Clamp(jewelData.SpellMod4Power, 0f, 1f);
			val.Tier = 3;
			CreateJewelDebugEventV2 val2 = val;
			Core.DebugEventsSystem.CreateJewelEvent(user.Index, ref val2);
		}
	}
	internal static class PlayerHelper
	{
		public static void UnlockAll(Entity user, Entity character)
		{
			//IL_0003: 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_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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			FromCharacter val = default(FromCharacter);
			val.User = user;
			val.Character = character;
			FromCharacter val2 = val;
			Core.DebugEventsSystem.UnlockAllResearch(val2);
			Core.DebugEventsSystem.UnlockAllVBloods(val2);
			Core.DebugEventsSystem.CompleteAllAchievements(val2);
		}
	}
	internal static class UtilsHelper
	{
		public static bool TryGetPrefabGuid(string name, out PrefabGUID guid)
		{
			//IL_0026: 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_001c: Unknown result type (might be due to invalid IL or missing references)
			PrefabGUID? prefabGuid = GetPrefabGuid(name);
			if (prefabGuid.HasValue)
			{
				guid = prefabGuid.Value;
				return true;
			}
			guid = default(PrefabGUID);
			return false;
		}

		public static PrefabGUID? GetPrefabGuid(string name)
		{
			Type typeFromHandle = typeof(Prefabs);
			FieldInfo field = typeFromHandle.GetField(name, BindingFlags.Static | BindingFlags.Public);
			return (field != null && field.FieldType == typeof(PrefabGUID)) ? ((PrefabGUID?)field.GetValue(null)) : null;
		}

		public static void CreateEventFromCharacter<T>(Entity character, T eventData)
		{
			//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_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_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0039: 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_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			EntityManager entityManager = Core.EntityManager;
			Entity val = ((EntityManager)(ref entityManager)).CreateEntity((ComponentType[])(object)new ComponentType[2]
			{
				ComponentType.ReadWrite<FromCharacter>(),
				ComponentType.ReadWrite<T>()
			});
			Entity userEntity = GetUserEntity(character);
			entityManager = Core.EntityManager;
			((EntityManager)(ref entityManager)).SetComponentData<FromCharacter>(val, new FromCharacter
			{
				User = userEntity,
				Character = character
			});
			entityManager = Core.EntityManager;
			((EntityManager)(ref entityManager)).SetComponentData<T>(val, eventData);
		}

		private static Entity GetUserEntity(Entity character)
		{
			//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_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			EntityManager entityManager = Core.EntityManager;
			PlayerCharacter componentData = ((EntityManager)(ref entityManager)).GetComponentData<PlayerCharacter>(character);
			return componentData.UserEntity;
		}
	}
	internal static class WeaponHelper
	{
		public static void GiveWeapons(User user, Entity character, List<WeaponData> weapons)
		{
			//IL_0024: 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_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			foreach (WeaponData weapon in weapons)
			{
				if (IsLegendary(weapon.Name))
				{
					CreateAndGiveLegendaryWeapon(user.Index, weapon);
				}
				else if (IsArtifact(weapon.Name))
				{
					CreateAndGiveArtifactWeapon(user.Index, character, weapon);
				}
				else
				{
					CreateAndGiveWeapon(character, weapon);
				}
			}
		}

		public static void CreateAndGiveLegendaryWeapon(int userIndex, WeaponData weaponData)
		{
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			if (string.IsNullOrEmpty(weaponData.Name))
			{
				return;
			}
			if (!UtilsHelper.TryGetPrefabGuid(weaponData.Name, out var guid))
			{
				ManualLogSource logger = Plugin.Logger;
				bool flag = default(bool);
				BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(27, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Weapon guid not found for ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(weaponData.Name);
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral(".");
				}
				logger.LogWarning(val);
			}
			else
			{
				CreateLegendaryWeaponDebugEvent val2 = default(CreateLegendaryWeaponDebugEvent);
				val2.WeaponPrefabGuid = guid;
				val2.Tier = 8;
				val2.InfuseSpellMod = UtilsHelper.GetPrefabGuid(weaponData.InfuseSpellMod).GetValueOrDefault();
				val2.StatMod1 = UtilsHelper.GetPrefabGuid(weaponData.StatMod1).GetValueOrDefault();
				val2.StatMod1Power = Mathf.Clamp(weaponData.StatMod1Power, 0f, 1f);
				val2.StatMod2 = UtilsHelper.GetPrefabGuid(weaponData.StatMod2).GetValueOrDefault();
				val2.StatMod2Power = Mathf.Clamp(weaponData.StatMod2Power, 0f, 1f);
				val2.StatMod3 = UtilsHelper.GetPrefabGuid(weaponData.StatMod3).GetValueOrDefault();
				val2.StatMod3Power = Mathf.Clamp(weaponData.StatMod3Power, 0f, 1f);
				val2.StatMod4 = UtilsHelper.GetPrefabGuid(weaponData.StatMod4).GetValueOrDefault();
				val2.StatMod4Power = Mathf.Clamp(weaponData.StatMod4Power, 0f, 1f);
				CreateLegendaryWeaponDebugEvent val3 = val2;
				Core.DebugEventsSystem.CreateLegendaryWeaponEvent(userIndex, ref val3);
			}
		}

		public static void CreateAndGiveArtifactWeapon(int userIndex, Entity character, WeaponData weaponData)
		{
			//IL_0009: 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_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Expected O, but got Unknown
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			CreateAndGiveLegendaryWeapon(userIndex, weaponData);
			Entity createdWeapon = GetCreatedWeapon(character, weaponData);
			if (string.IsNullOrEmpty(weaponData.SpellMod1))
			{
				weaponData.SpellMod1 = GetDefaultSpellMod(weaponData.Name, 1);
			}
			if (string.IsNullOrEmpty(weaponData.SpellMod2))
			{
				weaponData.SpellMod2 = GetDefaultSpellMod(weaponData.Name, 2);
			}
			if (HasValidSpellMods(weaponData))
			{
				SetAbilityMod(createdWeapon, weaponData);
				return;
			}
			ManualLogSource logger = Plugin.Logger;
			bool flag = default(bool);
			BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(19, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Wrong SpellMod for ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(weaponData.Name);
			}
			logger.LogWarning(val);
		}

		private static bool IsLegendary(string prefabName)
		{
			return prefabName.Contains("Legendary");
		}

		private static bool IsArtifact(string prefabName)
		{
			return prefabName.Contains("Unique_T08");
		}

		private static string GetWeaponNameType(WeaponData weaponData)
		{
			return weaponData.Name.Split('_')[2];
		}

		private static string GetDefaultSpellMod(string weaponName, int modIndex)
		{
			if (WeaponDb.ArtifactWeaponPrefabToAbilityMods.TryGetValue(weaponName, out (string, string) value))
			{
				switch (modIndex)
				{
				case 1:
					return value.Item1;
				case 2:
					return value.Item2;
				}
			}
			return string.Empty;
		}

		private static bool HasValidSpellMods(WeaponData weaponData)
		{
			string weaponNameType = GetWeaponNameType(weaponData);
			return weaponData.SpellMod1.Contains(weaponNameType) && weaponData.SpellMod2.Contains(weaponNameType);
		}

		private static void CreateAndGiveWeapon(Entity character, WeaponData weaponData)
		{
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Expected O, but got Unknown
			//IL_0024: 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_0027: Unknown result type (might be due to invalid IL or missing references)
			if (string.IsNullOrEmpty(weaponData.Name))
			{
				return;
			}
			if (UtilsHelper.TryGetPrefabGuid(weaponData.Name, out var guid))
			{
				InventoryHelper.AddItemToInventory(character, guid, 1);
				return;
			}
			ManualLogSource logger = Plugin.Logger;
			bool flag = default(bool);
			BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(27, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Weapon guid not found for ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(weaponData.Name);
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral(".");
			}
			logger.LogWarning(val);
		}

		private static SpellMod CreateSpellMod(string statMod, float statPower)
		{
			//IL_0003: 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_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			SpellMod result = default(SpellMod);
			result.Id = UtilsHelper.GetPrefabGuid(statMod).GetValueOrDefault();
			result.Power = statPower;
			return result;
		}

		private static void SetAbilityMod(Entity weapon, WeaponData weaponData)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0004: 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_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: 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_0051: 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_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: 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_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			if (!(weapon == default(Entity)))
			{
				EntityManager entityManager = Core.EntityManager;
				LegendaryItemSpellModSetComponent componentData = ((EntityManager)(ref entityManager)).GetComponentData<LegendaryItemSpellModSetComponent>(weapon);
				SpellModSet val = default(SpellModSet);
				val.Mod0 = CreateSpellMod(weaponData.SpellMod1, 1f);
				val.Count = 1;
				SpellModSet abilityMods = val;
				val = default(SpellModSet);
				val.Mod0 = CreateSpellMod(weaponData.SpellMod2, 1f);
				val.Count = 1;
				SpellModSet abilityMods2 = val;
				componentData.AbilityMods0 = abilityMods;
				componentData.AbilityMods1 = abilityMods2;
				entityManager = Core.EntityManager;
				((EntityManager)(ref entityManager)).SetComponentData<LegendaryItemSpellModSetComponent>(weapon, componentData);
			}
		}

		private static Entity GetCreatedWeapon(Entity character, WeaponData weaponData)
		{
			//IL_0010: 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_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: 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_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0301: Unknown result type (might be due to invalid IL or missing references)
			//IL_0303: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: 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_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_0138: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Unknown result type (might be due to invalid IL or missing references)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0202: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_0237: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0241: Unknown result type (might be due to invalid IL or missing references)
			//IL_0214: Unknown result type (might be due to invalid IL or missing references)
			//IL_0218: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_026e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0273: Unknown result type (might be due to invalid IL or missing references)
			//IL_0278: Unknown result type (might be due to invalid IL or missing references)
			//IL_027d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_02af: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_028f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			NativeArray<InventoryBuffer> val = default(NativeArray<InventoryBuffer>);
			if (!UtilsHelper.TryGetPrefabGuid(weaponData.Name, out var guid) || !InventoryUtilities.TryGetInventory<EntityManager>(Core.EntityManager, character, ref val, 0))
			{
				return default(Entity);
			}
			PrefabGUID? prefabGuid = UtilsHelper.GetPrefabGuid(weaponData.StatMod1);
			PrefabGUID? prefabGuid2 = UtilsHelper.GetPrefabGuid(weaponData.StatMod2);
			PrefabGUID? prefabGuid3 = UtilsHelper.GetPrefabGuid(weaponData.StatMod3);
			PrefabGUID? prefabGuid4 = UtilsHelper.GetPrefabGuid(weaponData.StatMod4);
			PrefabGUID? prefabGuid5 = UtilsHelper.GetPrefabGuid(weaponData.InfuseSpellMod);
			PrefabGUID? prefabGuid6 = UtilsHelper.GetPrefabGuid(weaponData.SpellMod1);
			PrefabGUID? prefabGuid7 = UtilsHelper.GetPrefabGuid(weaponData.SpellMod2);
			Enumerator<InventoryBuffer> enumerator = val.GetEnumerator();
			while (enumerator.MoveNext())
			{
				InventoryBuffer current = enumerator.Current;
				Entity entity = current.ItemEntity._Entity;
				if (entity == default(Entity))
				{
					continue;
				}
				EntityManager entityManager = Core.EntityManager;
				if (!((EntityManager)(ref entityManager)).HasComponent<PrefabGUID>(entity))
				{
					continue;
				}
				entityManager = Core.EntityManager;
				if (!((EntityManager)(ref entityManager)).HasComponent<LegendaryItemSpellModSetComponent>(entity))
				{
					continue;
				}
				entityManager = Core.EntityManager;
				PrefabGUID componentData = ((EntityManager)(ref entityManager)).GetComponentData<PrefabGUID>(entity);
				if (componentData != guid)
				{
					continue;
				}
				entityManager = Core.EntityManager;
				LegendaryItemSpellModSetComponent componentData2 = ((EntityManager)(ref entityManager)).GetComponentData<LegendaryItemSpellModSetComponent>(entity);
				SpellModSet statMods = componentData2.StatMods;
				if (prefabGuid.HasValue)
				{
					PrefabGUID id = statMods.Mod0.Id;
					PrefabGUID? val2 = prefabGuid;
					if (!val2.HasValue || id != val2.GetValueOrDefault())
					{
						continue;
					}
				}
				if (prefabGuid2.HasValue)
				{
					PrefabGUID id = statMods.Mod1.Id;
					PrefabGUID? val2 = prefabGuid2;
					if (!val2.HasValue || id != val2.GetValueOrDefault())
					{
						continue;
					}
				}
				if (prefabGuid3.HasValue)
				{
					PrefabGUID id = statMods.Mod2.Id;
					PrefabGUID? val2 = prefabGuid3;
					if (!val2.HasValue || id != val2.GetValueOrDefault())
					{
						continue;
					}
				}
				if (prefabGuid4.HasValue)
				{
					PrefabGUID id = statMods.Mod3.Id;
					PrefabGUID? val2 = prefabGuid4;
					if (!val2.HasValue || id != val2.GetValueOrDefault())
					{
						continue;
					}
				}
				if (prefabGuid5.HasValue)
				{
					PrefabGUID id = componentData2.AbilityMods0.Mod0.Id;
					PrefabGUID? val2 = prefabGuid5;
					if (!val2.HasValue || id != val2.GetValueOrDefault())
					{
						continue;
					}
				}
				if (prefabGuid6.HasValue)
				{
					PrefabGUID id = componentData2.AbilityMods0.Mod0.Id;
					PrefabGUID? val2 = prefabGuid6;
					if (val2.HasValue && id == val2.GetValueOrDefault())
					{
						continue;
					}
				}
				if (prefabGuid7.HasValue)
				{
					PrefabGUID id = componentData2.AbilityMods1.Mod0.Id;
					PrefabGUID? val2 = prefabGuid7;
					if (val2.HasValue && id == val2.GetValueOrDefault())
					{
						continue;
					}
				}
				return entity;
			}
			return default(Entity);
		}
	}
}
namespace ArenaBuilds.Extensions
{
	internal static class IntegerExtensions
	{
		private const string Base36Chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

		public static string ToBase36(this int value)
		{
			int num = value;
			int num2 = num;
			if (num2 >= 0)
			{
				if (num2 == 0)
				{
					return "0";
				}
				string text = "";
				while (value > 0)
				{
					int index = value % 36;
					text = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[index] + text;
					value /= 36;
				}
				return text;
			}
			Plugin.Logger.LogError((object)"Negative integers are not supported by base36 conversion.");
			return string.Empty;
		}
	}
	internal static class ListExtensions
	{
		public static string ToIndexedList(this IEnumerable<string> list)
		{
			StringBuilder stringBuilder = new StringBuilder();
			int num = 1;
			foreach (string item in list)
			{
				StringBuilder stringBuilder2 = stringBuilder;
				StringBuilder.AppendInterpolatedStringHandler handler = new StringBuilder.AppendInterpolatedStringHandler(3, 2, stringBuilder2);
				handler.AppendFormatted(num.ToBase36());
				handler.AppendLiteral(" : ");
				handler.AppendFormatted(item);
				stringBuilder2.AppendLine(ref handler);
				num++;
			}
			return stringBuilder.ToString();
		}

		public static string ToFormattedList(this IEnumerable<string> list)
		{
			StringBuilder stringBuilder = new StringBuilder();
			foreach (string item in list)
			{
				StringBuilder stringBuilder2 = stringBuilder;
				StringBuilder.AppendInterpolatedStringHandler handler = new StringBuilder.AppendInterpolatedStringHandler(2, 1, stringBuilder2);
				handler.AppendLiteral("- ");
				handler.AppendFormatted(item);
				stringBuilder2.AppendLine(ref handler);
			}
			return stringBuilder.ToString();
		}

		public static string ToFormattedList(this IEnumerable<ICommandArgument> list, bool showName = false)
		{
			StringBuilder stringBuilder = new StringBuilder();
			foreach (ICommandArgument item in list)
			{
				if (item.ArgNames.Count != 0)
				{
					string value = ((item.ArgNames.Count > 1) ? string.Join(" / ", item.ArgNames) : item.ArgNames[0]);
					if (showName)
					{
						StringBuilder stringBuilder2 = stringBuilder;
						StringBuilder stringBuilder3 = stringBuilder2;
						StringBuilder.AppendInterpolatedStringHandler handler = new StringBuilder.AppendInterpolatedStringHandler(5, 2, stringBuilder2);
						handler.AppendLiteral("- ");
						handler.AppendFormatted(value);
						handler.AppendLiteral(" : ");
						handler.AppendFormatted(item.Name);
						stringBuilder3.AppendLine(ref handler);
					}
					else
					{
						StringBuilder stringBuilder2 = stringBuilder;
						StringBuilder stringBuilder4 = stringBuilder2;
						StringBuilder.AppendInterpolatedStringHandler handler = new StringBuilder.AppendInterpolatedStringHandler(2, 1, stringBuilder2);
						handler.AppendLiteral("- ");
						handler.AppendFormatted(value);
						stringBuilder4.AppendLine(ref handler);
					}
				}
			}
			return stringBuilder.ToString();
		}

		public static ICommandArgument ContainsCommandArgument(this IEnumerable<ICommandArgument> list, string input)
		{
			return list.FirstOrDefault((ICommandArgument s) => s.ArgNames.Any((string arg) => arg.Contains(input, StringComparison.OrdinalIgnoreCase)));
		}

		public static ICommandArgument EqualsCommandArgument(this IEnumerable<ICommandArgument> list, string input)
		{
			return list.FirstOrDefault((ICommandArgument s) => s.ArgNames.Contains<string>(input, StringComparer.OrdinalIgnoreCase));
		}
	}
	internal static class StringExtensions
	{
		public static int FromBase36(this string input)
		{
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Expected O, but got Unknown
			if (string.IsNullOrWhiteSpace(input))
			{
				return 0;
			}
			input = input.ToUpper();
			int num = 0;
			string text = input;
			bool flag = default(bool);
			foreach (char c in text)
			{
				int num2;
				switch (c)
				{
				case '0':
				case '1':
				case '2':
				case '3':
				case '4':
				case '5':
				case '6':
				case '7':
				case '8':
				case '9':
					num2 = c - 48;
					break;
				case 'A':
				case 'B':
				case 'C':
				case 'D':
				case 'E':
				case 'F':
				case 'G':
				case 'H':
				case 'I':
				case 'J':
				case 'K':
				case 'L':
				case 'M':
				case 'N':
				case 'O':
				case 'P':
				case 'Q':
				case 'R':
				case 'S':
				case 'T':
				case 'U':
				case 'V':
				case 'W':
				case 'X':
				case 'Y':
				case 'Z':
					num2 = c - 65 + 10;
					break;
				default:
				{
					ManualLogSource logger = Plugin.Logger;
					BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(38, 1, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Invalid character '");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<char>(c);
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("' in base36 string.");
					}
					logger.LogError(val);
					return 0;
				}
				}
				num = num * 36 + num2;
			}
			return num;
		}
	}
}
namespace ArenaBuilds.Data
{
	internal static class Database
	{
		public static void Initialize()
		{
			List<IDatabase> list = new List<IDatabase>
			{
				new SpellSchoolDb(),
				new AbilityDb(),
				new SpellModDb(),
				new StatModDb(),
				new InfuseSpellModDb(),
				new WeaponDb(),
				new AbilityToSpellModDb()
			};
			foreach (IDatabase item in list)
			{
				item.Init();
			}
			Plugin.Logger.LogInfo((object)"All databases initialized.");
		}
	}
	internal static class Prefabs
	{
		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