Decompiled source of Armory v1.1.9

Armory.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using ItemManager;
using JetBrains.Annotations;
using Jewelcrafting;
using LocalizationManager;
using Microsoft.CodeAnalysis;
using PieceManager;
using ServerSync;
using TMPro;
using UnityEngine;
using YamlDotNet.Core;
using YamlDotNet.Core.Events;
using YamlDotNet.Core.Tokens;
using YamlDotNet.Helpers;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.Converters;
using YamlDotNet.Serialization.EventEmitters;
using YamlDotNet.Serialization.NamingConventions;
using YamlDotNet.Serialization.NodeDeserializers;
using YamlDotNet.Serialization.NodeTypeResolvers;
using YamlDotNet.Serialization.ObjectFactories;
using YamlDotNet.Serialization.ObjectGraphTraversalStrategies;
using YamlDotNet.Serialization.ObjectGraphVisitors;
using YamlDotNet.Serialization.Schemas;
using YamlDotNet.Serialization.TypeInspectors;
using YamlDotNet.Serialization.TypeResolvers;
using YamlDotNet.Serialization.Utilities;
using YamlDotNet.Serialization.ValueDeserializers;

[assembly: ComVisible(false)]
[assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Guid("E0E2F92E-557C-4A05-9D89-AA92A0BD75C4")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyFileVersion("1.1.9")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Therzie")]
[assembly: AssemblyProduct("Armory")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyTitle("Armory")]
[assembly: AssemblyDescription("")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.1.9.0")]
[module: <2e3ad713-eabe-4dfc-b4a9-bbe5d355b777>RefSafetyRules(11)]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[<f74c6127-4f5b-4db3-a4df-caecbbd0da93>Embedded]
	internal sealed class <f74c6127-4f5b-4db3-a4df-caecbbd0da93>EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[<f74c6127-4f5b-4db3-a4df-caecbbd0da93>Embedded]
	[CompilerGenerated]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class <75b0ea3e-2c06-4e53-958f-4d89854efa6b>NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public <75b0ea3e-2c06-4e53-958f-4d89854efa6b>NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public <75b0ea3e-2c06-4e53-958f-4d89854efa6b>NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[<f74c6127-4f5b-4db3-a4df-caecbbd0da93>Embedded]
	[CompilerGenerated]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class <76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public <76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	[<f74c6127-4f5b-4db3-a4df-caecbbd0da93>Embedded]
	[CompilerGenerated]
	internal sealed class <2e3ad713-eabe-4dfc-b4a9-bbe5d355b777>RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public <2e3ad713-eabe-4dfc-b4a9-bbe5d355b777>RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace Armory
{
	public class ArmoryMaterialSwap
	{
		[HarmonyPatch(typeof(Player), "OnSpawned")]
		[HarmonyPriority(0)]
		private static class ZNetScene_Awake_Patch_ArmoryMaterialSwap
		{
			[HarmonyPatch(typeof(FejdStartup), "Awake")]
			private static class FejdStartup_Awake_Patch
			{
				[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
				private static void Postfix(FejdStartup __instance)
				{
					FirstInit = false;
				}
			}

			public static bool FirstInit;

			[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
			private static void ReplaceItem(string monsterName, string itemName, string itemIWantToReplace, string itemIWillReplaceTo, int quantityForCreation, int quantityForUpgrade)
			{
				if (!Object.op_Implicit((Object)(object)ZNetScene.instance.GetPrefab(monsterName)))
				{
					return;
				}
				GameObject itemPrefab = ObjectDB.instance.GetItemPrefab(itemName);
				if (!Object.op_Implicit((Object)(object)itemPrefab))
				{
					return;
				}
				Recipe recipe = ObjectDB.instance.GetRecipe(itemPrefab.GetComponent<ItemDrop>().m_itemData);
				if (!Object.op_Implicit((Object)(object)recipe))
				{
					return;
				}
				Requirement[] resources = recipe.m_resources;
				foreach (Requirement val in resources)
				{
					if (((Object)val.m_resItem).name == itemIWantToReplace)
					{
						val.m_resItem = ObjectDB.instance.GetItemPrefab(itemIWillReplaceTo).GetComponent<ItemDrop>();
						val.m_amount = quantityForCreation;
						val.m_amountPerLevel = quantityForUpgrade;
					}
				}
			}

			[HarmonyPriority(0)]
			[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
			private static void Postfix(ZNetScene __instance)
			{
				if (!FirstInit)
				{
					FirstInit = true;
					ReplaceItem("Fox_TW", "ArmorLeatherLegs_TW", "DeerHide", "FoxPelt_TW", 3, 2);
					ReplaceItem("Fox_TW", "ArmorLeatherChest_TW", "LeatherScraps", "FoxPelt_TW", 3, 2);
					ReplaceItem("GrizzlyBear_TW", "ArmorVidarChest_TW", "WolfPelt", "GrizzlyBearPelt_TW", 4, 2);
					ReplaceItem("BlackBear_TW", "HelmetBlackBear_TW", "TrollBone_TW", "TrophyBlackBear_TW", 1, 0);
					ReplaceItem("BlackBear_TW", "HelmetBlackBear_TW", "DeerHide", "BlackBearPelt_TW", 6, 3);
					ReplaceItem("GrizzlyBear_TW", "HelmetGrizzlyBear_TW", "Obsidian", "TrophyGrizzlyBear_TW", 1, 0);
					ReplaceItem("GrizzlyBear_TW", "HelmetGrizzlyBear_TW", "WolfPelt", "GrizzlyBearPelt_TW", 10, 5);
					ReplaceItem("ArcticBear_TW", "HelmetArcticBear_TW", "FrozenClaw_TW", "TrophyArcticBear_TW", 1, 1);
					ReplaceItem("Razorback_TW", "HelmetRazorback_TW", "TrophyBoar", "TrophyRazorback_TW", 1, 0);
					ReplaceItem("SummonedImp_TW", "BeltYmir_TW", "DemonicEssence_TW", "ReginEssence_TW", 6, 0);
					ReplaceItem("SummonedImp_TW", "HelmetUllr_TW", "DemonicEssence_TW", "ReginEssence_TW", 8, 4);
					ReplaceItem("SummonedImp_TW", "ArmorUllrChest_TW", "DemonicEssence_TW", "ReginEssence_TW", 10, 5);
					ReplaceItem("SummonedImp_TW", "ArmorUllrLegs_TW", "DemonicEssence_TW", "ReginEssence_TW", 8, 4);
				}
			}
		}
	}
	[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)]
	[BepInPlugin("Therzie.Armory", "Armory", "1.1.9")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class ArmoryPlugin : BaseUnityPlugin
	{
		[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)]
		public enum Toggle
		{
			On = 1,
			Off = 0
		}

		[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)]
		[HarmonyPatch(typeof(StationExtension), "FindExtensions")]
		private static class StationExtension_FindExtensionsArmory_Patch
		{
			[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
			private static bool Prefix(StationExtension __instance, CraftingStation station, Vector3 pos, ref List<StationExtension> extensions)
			{
				//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)
				if (((Object)((Component)station).gameObject).name == "Armory_TW(Clone)")
				{
					foreach (StationExtension allExtension in StationExtension.m_allExtensions)
					{
						if (Vector3.Distance(((Component)allExtension).transform.position, pos) < 30f && allExtension.m_craftingStation.m_name == "$piece_forge" && (allExtension.m_stack || !StationExtension.ExtensionInList(extensions, allExtension)))
						{
							extensions.Add(allExtension);
						}
					}
					return false;
				}
				return true;
			}
		}

		[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)]
		[HarmonyPatch(typeof(StationExtension), "FindClosestStationInRange", new Type[] { typeof(Vector3) })]
		private static class StationExtension_FindClosestStationInRangeArmory_Patch
		{
			[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
			private static bool Prefix(StationExtension __instance, ref CraftingStation __result, Vector3 center)
			{
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				//IL_003e: Unknown result type (might be due to invalid IL or missing references)
				if (__instance.m_craftingStation.m_name == "$piece_forge")
				{
					__result = CraftingStation.FindClosestStationInRange(__instance.m_craftingStation.m_name, center, 30f);
					if (!Object.op_Implicit((Object)(object)__result))
					{
						__result = CraftingStation.FindClosestStationInRange("$piece_armory_TW", center, 30f);
					}
					return false;
				}
				return true;
			}
		}

		[HarmonyPatch(typeof(ObjectDB), "Awake")]
		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)]
		private static class DisableRecipesArmory
		{
			private static readonly List<string> disabledRecipes = new List<string>();

			private static void Postfix(ObjectDB __instance)
			{
				foreach (Recipe recipe in __instance.m_recipes)
				{
					if (!((Object)(object)recipe.m_item == (Object)null) && disabledRecipes.Contains(((Object)recipe.m_item).name))
					{
						ArmoryLogger.LogInfo((object)("ODB Disabling recipe for " + ((Object)recipe.m_item).name));
						recipe.m_enabled = false;
					}
				}
			}
		}

		[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)]
		[HarmonyPatch(typeof(InventoryGui), "DoCrafting")]
		private static class KeepSocketsWhileUpgrading
		{
			[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
			private static void Prefix(InventoryGui __instance, [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] out ItemData __state)
			{
				if (API.IsLoaded() && __instance.m_craftRecipe.m_resources.Length != 0)
				{
					ItemData item = ((Humanoid)Player.m_localPlayer).GetInventory().GetItem(__instance.m_craftRecipe.m_resources[0].m_resItem.m_itemData.m_shared.m_name, __instance.m_craftRecipe.m_resources[0].m_resItem.m_itemData.m_quality, false);
					if (item != null)
					{
						List<API.GemInfo> gems = API.GetGems(item);
						if (gems != null && gems.Count > 0)
						{
							__state = __instance.m_craftRecipe.m_item.m_itemData;
							__instance.m_craftRecipe.m_item.m_itemData.m_dropPrefab = ((Component)__instance.m_craftRecipe.m_item).gameObject;
							API.SetGems(__state, gems);
							return;
						}
					}
				}
				__state = null;
			}

			[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(2)]
			private static void Finalizer(ItemData __state)
			{
				if (__state != null)
				{
					API.SetGems(__state, new List<API.GemInfo>());
				}
			}
		}

		[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)]
		private class ConfigurationManagerAttributes
		{
			[UsedImplicitly]
			public int? Order;

			[UsedImplicitly]
			public bool? Browsable;

			[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
			[UsedImplicitly]
			public string Category;

			[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(new byte[] { 2, 1 })]
			[UsedImplicitly]
			public Action<ConfigEntryBase> CustomDrawer;
		}

		internal const string ModName = "Armory";

		internal const string ModVersion = "1.1.9";

		internal const string Author = "Therzie";

		private const string ModGUID = "Therzie.Armory";

		private static string ConfigFileName = "Therzie.Armory.cfg";

		private static string ConfigFileFullPath;

		internal static string ConnectionError;

		private readonly Harmony _harmony = new Harmony("Therzie.Armory");

		public static readonly ManualLogSource ArmoryLogger;

		private static readonly ConfigSync ConfigSync;

		private static ConfigEntry<Toggle> _serverConfigLocked;

		private static ConfigEntry<Toggle> _recipeIsActiveConfig;

		public void Awake()
		{
			Localizer.Load();
			_serverConfigLocked = config("1 - General", "Lock Configuration", Toggle.On, "If on, the configuration is locked and can be changed by server admins only.");
			ConfigSync.AddLockingConfigEntry<Toggle>(_serverConfigLocked);
			BuildPiece.ConfigurationEnabled = true;
			BuildPiece buildPiece = new BuildPiece("armorystation", "Armory_TW");
			buildPiece.Category.Set("Warfare");
			buildPiece.Crafting.Set(PieceManager.CraftingTable.Forge);
			buildPiece.RequiredItems.Add("Stone", 20, recover: true);
			buildPiece.RequiredItems.Add("BronzeNails", 40, recover: true);
			buildPiece.RequiredItems.Add("Bronze", 10, recover: true);
			buildPiece.RequiredItems.Add("SurtlingCore", 5, recover: true);
			buildPiece.RequiredItems.Add("TrophyEikthyr", 1, recover: true);
			PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "vfx_smelter_addfuel_TW");
			PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "vfx_smelter_addore_TW");
			PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "vfx_smelter_produce_TW");
			PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "sfx_smelter_add_TW");
			PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "sfx_smelter_produce_TW");
			PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "sfx_chest_open_TW");
			PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "sfx_chest_close_TW");
			PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "CargoCrate_TW");
			Item item = new Item("armory", "HelmetRazorback_TW");
			item.Configurable = Configurability.Recipe;
			item.Crafting.Add("Armory_TW", 1);
			item.RequiredItems.Add("RazorbackLeather_TW", 8);
			item.RequiredItems.Add("RazorbackTusk_TW", 6);
			item.RequiredItems.Add("TrophyBoar", 2);
			item.RequiredUpgradeItems.Add("RazorbackLeather_TW", 4);
			item.RequiredUpgradeItems.Add("RazorbackTusk_TW", 3);
			item.CraftAmount = 1;
			Item item2 = new Item("armory", "ArmorRazorbackChest_TW");
			item2.Configurable = Configurability.Recipe;
			item2.Crafting.Add("Armory_TW", 1);
			item2.RequiredItems.Add("RazorbackLeather_TW", 12);
			item2.RequiredItems.Add("Bronze", 6);
			item2.RequiredItems.Add("RazorbackTusk_TW", 2);
			item2.RequiredUpgradeItems.Add("RazorbackLeather_TW", 6);
			item2.RequiredUpgradeItems.Add("Bronze", 3);
			item2.CraftAmount = 1;
			Item item3 = new Item("armory", "ArmorRazorbackLegs_TW");
			item3.Configurable = Configurability.Recipe;
			item3.Crafting.Add("Armory_TW", 1);
			item3.RequiredItems.Add("RazorbackLeather_TW", 8);
			item3.RequiredItems.Add("Bronze", 6);
			item3.RequiredItems.Add("RazorbackTusk_TW", 2);
			item3.RequiredUpgradeItems.Add("RazorbackLeather_TW", 4);
			item3.RequiredUpgradeItems.Add("Bronze", 3);
			item3.CraftAmount = 1;
			Item item4 = new Item("armory", "HelmetBlackBear_TW");
			item4.Configurable = Configurability.Recipe;
			item4.Crafting.Add("Armory_TW", 2);
			item4.RequiredItems.Add("DeerHide", 6);
			item4.RequiredItems.Add("Bronze", 12);
			item4.RequiredItems.Add("TrollBone_TW", 4);
			item4.RequiredUpgradeItems.Add("DeerHide", 3);
			item4.RequiredUpgradeItems.Add("Bronze", 6);
			item4.CraftAmount = 1;
			Item item5 = new Item("armory", "HelmetGrizzlyBear_TW");
			item5.Configurable = Configurability.Recipe;
			item5.Crafting.Add("Armory_TW", 4);
			item5.RequiredItems.Add("WolfPelt", 8);
			item5.RequiredItems.Add("Silver", 18);
			item5.RequiredItems.Add("WolfFang", 6);
			item5.RequiredItems.Add("Obsidian", 12);
			item5.RequiredUpgradeItems.Add("WolfPelt", 4);
			item5.RequiredUpgradeItems.Add("Silver", 9);
			item5.RequiredUpgradeItems.Add("WolfFang", 3);
			item5.CraftAmount = 1;
			Item item6 = new Item("armory", "HelmetArcticBear_TW");
			item6.Configurable = Configurability.Recipe;
			item6.Crafting.Add("Armory_TW", 4);
			item6.RequiredItems.Add("ArcticBearPelt_TW", 12);
			item6.RequiredItems.Add("TyraniumBar_TW", 15);
			item6.RequiredItems.Add("FrozenFang_TW", 12);
			item6.RequiredItems.Add("FrozenClaw_TW", 15);
			item6.RequiredUpgradeItems.Add("ArcticBearPelt_TW", 6);
			item6.RequiredUpgradeItems.Add("TyraniumBar_TW", 8);
			item6.RequiredUpgradeItems.Add("FrozenFang_TW", 6);
			item6.RequiredUpgradeItems.Add("FrozenClaw_TW", 8);
			item6.CraftAmount = 1;
			Item item7 = new Item("armory", "HelmetUllr_TW");
			item7.Configurable = Configurability.Recipe;
			item7.Crafting.Add("Armory_TW", 4);
			item7.RequiredItems.Add("DemonicEssence_TW", 8);
			item7.RequiredItems.Add("ArcticMammothTusk_TW", 20);
			item7.RequiredItems.Add("MinotaurHorn_TW", 20);
			item7.RequiredItems.Add("BlackIce_TW", 20);
			item7.RequiredUpgradeItems.Add("DemonicEssence_TW", 6);
			item7.RequiredUpgradeItems.Add("ArcticMammothTusk_TW", 8);
			item7.RequiredUpgradeItems.Add("MinotaurHorn_TW", 6);
			item7.RequiredUpgradeItems.Add("BlackIce_TW", 8);
			item7.CraftAmount = 1;
			Item item8 = new Item("armory", "ArmorUllrChest_TW");
			item8.Configurable = Configurability.Recipe;
			item8.Crafting.Add("Armory_TW", 4);
			item8.RequiredItems.Add("DemonicEssence_TW", 10);
			item8.RequiredItems.Add("AshenScale_TW", 30);
			item8.RequiredItems.Add("AshenFang_TW", 30);
			item8.RequiredItems.Add("ArcticBearPelt_TW", 20);
			item8.RequiredUpgradeItems.Add("DemonicEssence_TW", 6);
			item8.RequiredUpgradeItems.Add("AshenScale_TW", 8);
			item8.RequiredUpgradeItems.Add("AshenFang_TW", 6);
			item8.RequiredUpgradeItems.Add("ArcticBearPelt_TW", 8);
			item8.CraftAmount = 1;
			Item item9 = new Item("armory", "ArmorUllrLegs_TW");
			item9.Configurable = Configurability.Recipe;
			item9.Crafting.Add("Armory_TW", 4);
			item9.RequiredItems.Add("DemonicEssence_TW", 8);
			item9.RequiredItems.Add("FrozenClaw_TW", 30);
			item9.RequiredItems.Add("ArcticWolfPelt_TW", 30);
			item9.RequiredItems.Add("AshenFur_TW", 20);
			item9.RequiredUpgradeItems.Add("DemonicEssence_TW", 6);
			item9.RequiredUpgradeItems.Add("FrozenClaw_TW", 8);
			item9.RequiredUpgradeItems.Add("ArcticWolfPelt_TW", 6);
			item9.RequiredUpgradeItems.Add("AshenFur_TW", 8);
			item9.CraftAmount = 1;
			Item item10 = new Item("armory", "BeltYmir_TW");
			item10.Configurable = Configurability.Recipe;
			item10.Crafting.Add(ItemManager.CraftingTable.MageTable, 2);
			item10.RequiredItems.Add("BeltStrength", 1);
			item10.RequiredItems.Add("DemonicEssence_TW", 20);
			item10.RequiredItems.Add("YmirRemains", 10);
			item10.CraftAmount = 1;
			Item item11 = new Item("armory", "CapeTrollBlack_TW");
			item11.Configurable = Configurability.Recipe;
			item11.Crafting.Add(ItemManager.CraftingTable.Workbench, 2);
			item11.RequiredItems.Add("TrollHide", 8);
			item11.RequiredItems.Add("Coal", 8);
			item11.RequiredItems.Add("CapeTrollHide", 1);
			item11.RequiredUpgradeItems.Add("TrollHide", 3);
			item11.RequiredUpgradeItems.Add("Coal", 3);
			item11.RequiredUpgradeItems.Add("BoneFragments", 2);
			item11.CraftAmount = 1;
			Item item12 = new Item("armory", "HelmetLeather_TW");
			item12.Configurable = Configurability.Recipe;
			item12.Crafting.Add(ItemManager.CraftingTable.Workbench, 2);
			item12.RequiredItems.Add("HelmetLeather", 1);
			item12.RequiredItems.Add("TrophyDeer", 1);
			item12.RequiredItems.Add("DeerHide", 4);
			item12.RequiredUpgradeItems.Add("LeatherScraps", 2);
			item12.RequiredUpgradeItems.Add("DeerHide", 2);
			item12.CraftAmount = 1;
			Item item13 = new Item("armory", "ArmorLeatherChest_TW");
			item13.Configurable = Configurability.Recipe;
			item13.Crafting.Add(ItemManager.CraftingTable.Workbench, 2);
			item13.RequiredItems.Add("ArmorLeatherChest", 1);
			item13.RequiredItems.Add("DeerHide", 6);
			item13.RequiredItems.Add("LeatherScraps", 3);
			item13.RequiredUpgradeItems.Add("LeatherScraps", 2);
			item13.RequiredUpgradeItems.Add("DeerHide", 3);
			item13.CraftAmount = 1;
			Item item14 = new Item("armory", "ArmorLeatherLegs_TW");
			item14.Configurable = Configurability.Recipe;
			item14.Crafting.Add(ItemManager.CraftingTable.Workbench, 2);
			item14.RequiredItems.Add("ArmorLeatherLegs", 1);
			item14.RequiredItems.Add("LeatherScraps", 6);
			item14.RequiredItems.Add("DeerHide", 3);
			item14.RequiredUpgradeItems.Add("LeatherScraps", 3);
			item14.RequiredUpgradeItems.Add("DeerHide", 2);
			item14.CraftAmount = 1;
			Item item15 = new Item("armory", "HelmetRogue_TW");
			item15.Configurable = Configurability.Recipe;
			item15.Crafting.Add("Armory_TW", 1);
			item15.RequiredItems.Add("HelmetTrollLeather", 1);
			item15.RequiredItems.Add("TrollHide", 8);
			item15.RequiredItems.Add("GreydwarfEye", 8);
			item15.RequiredUpgradeItems.Add("TrollHide", 4);
			item15.RequiredUpgradeItems.Add("GreydwarfEye", 4);
			item15.RequiredUpgradeItems.Add("Coal", 3);
			item15.CraftAmount = 1;
			Item item16 = new Item("armory", "ArmorRogueChest_TW");
			item16.Configurable = Configurability.Recipe;
			item16.Crafting.Add("Armory_TW", 1);
			item16.RequiredItems.Add("ArmorTrollLeatherChest", 1);
			item16.RequiredItems.Add("BoneFragments", 10);
			item16.RequiredItems.Add("TrollBone_TW", 2);
			item16.RequiredUpgradeItems.Add("TrollHide", 3);
			item16.RequiredUpgradeItems.Add("BoneFragments", 4);
			item16.RequiredUpgradeItems.Add("TrollBone_TW", 1);
			item16.CraftAmount = 1;
			Item item17 = new Item("armory", "ArmorRogueLegs_TW");
			item17.Configurable = Configurability.Recipe;
			item17.Crafting.Add("Armory_TW", 1);
			item17.RequiredItems.Add("ArmorTrollLeatherLegs", 1);
			item17.RequiredItems.Add("TrollHide", 8);
			item17.RequiredItems.Add("DeerHide", 6);
			item17.RequiredUpgradeItems.Add("TrollHide", 4);
			item17.RequiredUpgradeItems.Add("BoneFragments", 3);
			item17.RequiredUpgradeItems.Add("DeerHide", 3);
			item17.CraftAmount = 1;
			Item item18 = new Item("armory", "HelmetRogueIron_TW");
			item18.Configurable = Configurability.Recipe;
			item18.Crafting.Add("Armory_TW", 2);
			item18.RequiredItems.Add("HelmetRogue_TW", 1);
			item18.RequiredItems.Add("Iron", 12);
			item18.RequiredItems.Add("RottenPelt_TW", 4);
			item18.RequiredUpgradeItems.Add("Iron", 6);
			item18.RequiredUpgradeItems.Add("RottenPelt_TW", 2);
			item18.RequiredUpgradeItems.Add("Ooze", 3);
			item18.CraftAmount = 1;
			Item item19 = new Item("armory", "ArmorRogueIronChest_TW");
			item19.Configurable = Configurability.Recipe;
			item19.Crafting.Add("Armory_TW", 2);
			item19.RequiredItems.Add("ArmorRogueChest_TW", 1);
			item19.RequiredItems.Add("Iron", 12);
			item19.RequiredItems.Add("RottenPelt_TW", 6);
			item19.RequiredUpgradeItems.Add("Iron", 6);
			item19.RequiredUpgradeItems.Add("RottenPelt_TW", 3);
			item19.RequiredUpgradeItems.Add("WitheredBone", 2);
			item19.CraftAmount = 1;
			Item item20 = new Item("armory", "ArmorRogueIronLegs_TW");
			item20.Configurable = Configurability.Recipe;
			item20.Crafting.Add("Armory_TW", 2);
			item20.RequiredItems.Add("ArmorRogueLegs_TW", 1);
			item20.RequiredItems.Add("Iron", 12);
			item20.RequiredItems.Add("RottenPelt_TW", 4);
			item20.RequiredUpgradeItems.Add("Iron", 6);
			item20.RequiredUpgradeItems.Add("RottenPelt_TW", 2);
			item20.RequiredUpgradeItems.Add("Entrails", 4);
			item20.CraftAmount = 1;
			Item item21 = new Item("armory", "HelmetRogueSilver_TW");
			item21.Configurable = Configurability.Recipe;
			item21.Crafting.Add("Armory_TW", 3);
			item21.RequiredItems.Add("HelmetRogueIron_TW", 1);
			item21.RequiredItems.Add("Silver", 14);
			item21.RequiredItems.Add("WolfFang", 4);
			item21.RequiredItems.Add("JuteRed", 2);
			item21.RequiredUpgradeItems.Add("Silver", 7);
			item21.RequiredUpgradeItems.Add("WolfFang", 2);
			item21.RequiredUpgradeItems.Add("JuteRed", 1);
			item21.CraftAmount = 1;
			Item item22 = new Item("armory", "ArmorRogueSilverChest_TW");
			item22.Configurable = Configurability.Recipe;
			item22.Crafting.Add("Armory_TW", 3);
			item22.RequiredItems.Add("ArmorRogueIronChest_TW", 1);
			item22.RequiredItems.Add("Silver", 14);
			item22.RequiredItems.Add("JuteRed", 6);
			item22.RequiredItems.Add("WolfPelt", 4);
			item22.RequiredUpgradeItems.Add("Silver", 7);
			item22.RequiredUpgradeItems.Add("JuteRed", 3);
			item22.RequiredUpgradeItems.Add("WolfPelt", 2);
			item22.CraftAmount = 1;
			Item item23 = new Item("armory", "ArmorRogueSilverLegs_TW");
			item23.Configurable = Configurability.Recipe;
			item23.Crafting.Add("Armory_TW", 3);
			item23.RequiredItems.Add("ArmorRogueIronLegs_TW", 1);
			item23.RequiredItems.Add("Silver", 14);
			item23.RequiredItems.Add("Obsidian", 8);
			item23.RequiredItems.Add("JuteRed", 4);
			item23.RequiredUpgradeItems.Add("Silver", 7);
			item23.RequiredUpgradeItems.Add("Obsidian", 4);
			item23.RequiredUpgradeItems.Add("JuteRed", 2);
			item23.CraftAmount = 1;
			Item item24 = new Item("armory", "HelmetRogueBM_TW");
			item24.Configurable = Configurability.Recipe;
			item24.Crafting.Add("Armory_TW", 4);
			item24.RequiredItems.Add("HelmetRogueSilver_TW", 1);
			item24.RequiredItems.Add("BlackMetal", 16);
			item24.RequiredItems.Add("LinenThread", 8);
			item24.RequiredItems.Add("LoxPelt", 4);
			item24.RequiredUpgradeItems.Add("BlackMetal", 8);
			item24.RequiredUpgradeItems.Add("LinenThread", 4);
			item24.RequiredUpgradeItems.Add("LoxPelt", 2);
			item24.CraftAmount = 1;
			Item item25 = new Item("armory", "ArmorRogueBMChest_TW");
			item25.Configurable = Configurability.Recipe;
			item25.Crafting.Add("Armory_TW", 4);
			item25.RequiredItems.Add("ArmorRogueSilverChest_TW", 1);
			item25.RequiredItems.Add("BlackMetal", 16);
			item25.RequiredItems.Add("LoxPelt", 6);
			item25.RequiredItems.Add("LoxBone_TW", 4);
			item25.RequiredUpgradeItems.Add("BlackMetal", 8);
			item25.RequiredUpgradeItems.Add("LoxPelt", 3);
			item25.RequiredUpgradeItems.Add("LoxBone_TW", 2);
			item25.CraftAmount = 1;
			Item item26 = new Item("armory", "ArmorRogueBMLegs_TW");
			item26.Configurable = Configurability.Recipe;
			item26.Crafting.Add("Armory_TW", 4);
			item26.RequiredItems.Add("ArmorRogueSilverLegs_TW", 1);
			item26.RequiredItems.Add("BlackMetal", 16);
			item26.RequiredItems.Add("LinenThread", 6);
			item26.RequiredItems.Add("Needle", 6);
			item26.RequiredUpgradeItems.Add("BlackMetal", 8);
			item26.RequiredUpgradeItems.Add("LinenThread", 3);
			item26.RequiredUpgradeItems.Add("Needle", 3);
			item26.CraftAmount = 1;
			Item item27 = new Item("armory", "HelmetRogueCarapace_TW");
			item27.Configurable = Configurability.Recipe;
			item27.Crafting.Add("Armory_TW", 4);
			item27.RequiredItems.Add("HelmetRogueBM_TW", 1);
			item27.RequiredItems.Add("Softtissue", 18);
			item27.RequiredItems.Add("Eitr", 6);
			item27.RequiredItems.Add("VenomousFang_TW", 6);
			item27.RequiredUpgradeItems.Add("Softtissue", 9);
			item27.RequiredUpgradeItems.Add("Eitr", 3);
			item27.RequiredUpgradeItems.Add("VenomousFang_TW", 3);
			item27.CraftAmount = 1;
			Item item28 = new Item("armory", "ArmorRogueCarapaceChest_TW");
			item28.Configurable = Configurability.Recipe;
			item28.Crafting.Add("Armory_TW", 4);
			item28.RequiredItems.Add("ArmorRogueBMChest_TW", 1);
			item28.RequiredItems.Add("Softtissue", 18);
			item28.RequiredItems.Add("Carapace", 10);
			item28.RequiredItems.Add("Eitr", 8);
			item28.RequiredUpgradeItems.Add("Softtissue", 9);
			item28.RequiredUpgradeItems.Add("Carapace", 5);
			item28.RequiredUpgradeItems.Add("Eitr", 4);
			item28.CraftAmount = 1;
			Item item29 = new Item("armory", "ArmorRogueCarapaceLegs_TW");
			item29.Configurable = Configurability.Recipe;
			item29.Crafting.Add("Armory_TW", 4);
			item29.RequiredItems.Add("ArmorRogueBMLegs_TW", 1);
			item29.RequiredItems.Add("Softtissue", 18);
			item29.RequiredItems.Add("Eitr", 6);
			item29.RequiredItems.Add("DarkCrystal_TW", 6);
			item29.RequiredUpgradeItems.Add("Softtissue", 9);
			item29.RequiredUpgradeItems.Add("Eitr", 3);
			item29.RequiredUpgradeItems.Add("DarkCrystal_TW", 3);
			item29.CraftAmount = 1;
			Item item30 = new Item("armory", "HelmetRogueTyranium_TW");
			item30.Configurable = Configurability.Recipe;
			item30.Crafting.Add("Armory_TW", 4);
			item30.RequiredItems.Add("HelmetRogueCarapace_TW", 1);
			item30.RequiredItems.Add("TyraniumBar_TW", 25);
			item30.RequiredItems.Add("GlacierCrystal_TW", 12);
			item30.RequiredItems.Add("FrozenFang_TW", 8);
			item30.RequiredUpgradeItems.Add("TyraniumBar_TW", 12);
			item30.RequiredUpgradeItems.Add("GlacierCrystal_TW", 6);
			item30.RequiredUpgradeItems.Add("FrozenFang_TW", 4);
			item30.CraftAmount = 1;
			Item item31 = new Item("armory", "ArmorRogueTyraniumChest_TW");
			item31.Configurable = Configurability.Recipe;
			item31.Crafting.Add("Armory_TW", 4);
			item31.RequiredItems.Add("ArmorRogueCarapaceChest_TW", 1);
			item31.RequiredItems.Add("TyraniumBar_TW", 25);
			item31.RequiredItems.Add("ArcticMammothPelt_TW", 12);
			item31.RequiredItems.Add("ArcticBearPelt_TW", 8);
			item31.RequiredUpgradeItems.Add("TyraniumBar_TW", 5);
			item31.RequiredUpgradeItems.Add("ArcticMammothPelt_TW", 6);
			item31.RequiredUpgradeItems.Add("ArcticBearPelt_TW", 4);
			item31.CraftAmount = 1;
			Item item32 = new Item("armory", "ArmorRogueTyraniumLegs_TW");
			item32.Configurable = Configurability.Recipe;
			item32.Crafting.Add("Armory_TW", 4);
			item32.RequiredItems.Add("ArmorRogueCarapaceLegs_TW", 1);
			item32.RequiredItems.Add("TyraniumBar_TW", 25);
			item32.RequiredItems.Add("ArcticWolfPelt_TW", 12);
			item32.RequiredItems.Add("ArcticSerpentScale_TW", 8);
			item32.RequiredUpgradeItems.Add("TyraniumBar_TW", 12);
			item32.RequiredUpgradeItems.Add("ArcticWolfPelt_TW", 6);
			item32.RequiredUpgradeItems.Add("ArcticSerpentScale_TW", 4);
			item32.CraftAmount = 1;
			Item item33 = new Item("armory", "HelmetVigorous_TW");
			item33.Configurable = Configurability.Recipe;
			item33.Crafting.Add("Armory_TW", 1);
			item33.RequiredItems.Add("HelmetBronze", 1);
			item33.RequiredItems.Add("Bronze", 6);
			item33.RequiredItems.Add("BoneFragments", 4);
			item33.RequiredUpgradeItems.Add("Bronze", 3);
			item33.RequiredUpgradeItems.Add("DeerHide", 1);
			item33.RequiredUpgradeItems.Add("BoneFragments", 2);
			item33.CraftAmount = 1;
			Item item34 = new Item("armory", "ArmorVigorousChest_TW");
			item34.Configurable = Configurability.Recipe;
			item34.Crafting.Add("Armory_TW", 1);
			item34.RequiredItems.Add("ArmorBronzeChest", 1);
			item34.RequiredItems.Add("Bronze", 8);
			item34.RequiredItems.Add("TrollBone_TW", 4);
			item34.RequiredUpgradeItems.Add("Bronze", 4);
			item34.RequiredUpgradeItems.Add("DeerHide", 2);
			item34.RequiredUpgradeItems.Add("TrollBone_TW", 2);
			item34.CraftAmount = 1;
			Item item35 = new Item("armory", "ArmorVigorousLegs_TW");
			item35.Configurable = Configurability.Recipe;
			item35.Crafting.Add("Armory_TW", 1);
			item35.RequiredItems.Add("ArmorBronzeLegs", 1);
			item35.RequiredItems.Add("Bronze", 6);
			item35.RequiredItems.Add("DeerHide", 4);
			item35.RequiredUpgradeItems.Add("Bronze", 3);
			item35.RequiredUpgradeItems.Add("LeatherScraps", 4);
			item35.RequiredUpgradeItems.Add("DeerHide", 2);
			item35.CraftAmount = 1;
			Item item36 = new Item("armory", "HelmetVigorousIron_TW");
			item36.Configurable = Configurability.Recipe;
			item36.Crafting.Add("Armory_TW", 2);
			item36.RequiredItems.Add("HelmetVigorous_TW", 1);
			item36.RequiredItems.Add("Iron", 12);
			item36.RequiredItems.Add("RottenPelt_TW", 4);
			item36.RequiredItems.Add("Ooze", 4);
			item36.RequiredUpgradeItems.Add("Iron", 6);
			item36.RequiredUpgradeItems.Add("RottenPelt_TW", 2);
			item36.RequiredUpgradeItems.Add("Ooze", 2);
			item36.CraftAmount = 1;
			Item item37 = new Item("armory", "ArmorVigorousIronChest_TW");
			item37.Configurable = Configurability.Recipe;
			item37.Crafting.Add("Armory_TW", 2);
			item37.RequiredItems.Add("ArmorVigorousChest_TW", 1);
			item37.RequiredItems.Add("Iron", 12);
			item37.RequiredItems.Add("Entrails", 6);
			item37.RequiredItems.Add("WitheredBone", 4);
			item37.RequiredUpgradeItems.Add("Iron", 6);
			item37.RequiredUpgradeItems.Add("Entrails", 3);
			item37.RequiredUpgradeItems.Add("WitheredBone", 2);
			item37.CraftAmount = 1;
			Item item38 = new Item("armory", "ArmorVigorousIronLegs_TW");
			item38.Configurable = Configurability.Recipe;
			item38.Crafting.Add("Armory_TW", 2);
			item38.RequiredItems.Add("ArmorVigorousLegs_TW", 1);
			item38.RequiredItems.Add("Iron", 12);
			item38.RequiredItems.Add("RottenPelt_TW", 4);
			item38.RequiredItems.Add("Guck", 6);
			item38.RequiredUpgradeItems.Add("Iron", 12);
			item38.RequiredUpgradeItems.Add("RottenPelt_TW", 3);
			item38.RequiredUpgradeItems.Add("Guck", 3);
			item38.CraftAmount = 1;
			Item item39 = new Item("armory", "HelmetVigorousSilver_TW");
			item39.Configurable = Configurability.Recipe;
			item39.Crafting.Add("Armory_TW", 3);
			item39.RequiredItems.Add("HelmetVigorousIron_TW", 1);
			item39.RequiredItems.Add("Silver", 25);
			item39.RequiredItems.Add("Obsidian", 12);
			item39.RequiredItems.Add("WolfFang", 6);
			item39.RequiredUpgradeItems.Add("Silver", 12);
			item39.RequiredUpgradeItems.Add("Obsidian", 6);
			item39.RequiredUpgradeItems.Add("WolfFang", 3);
			item39.CraftAmount = 1;
			Item item40 = new Item("armory", "ArmorVigorousSilverChest_TW");
			item40.Configurable = Configurability.Recipe;
			item40.Crafting.Add("Armory_TW", 3);
			item40.RequiredItems.Add("ArmorVigorousIronChest_TW", 1);
			item40.RequiredItems.Add("Silver", 25);
			item40.RequiredItems.Add("WolfPelt", 6);
			item40.RequiredItems.Add("Crystal", 6);
			item40.RequiredUpgradeItems.Add("Silver", 12);
			item40.RequiredUpgradeItems.Add("WolfPelt", 3);
			item40.RequiredUpgradeItems.Add("Crystal", 3);
			item40.CraftAmount = 1;
			Item item41 = new Item("armory", "ArmorVigorousSilverLegs_TW");
			item41.Configurable = Configurability.Recipe;
			item41.Crafting.Add("Armory_TW", 3);
			item41.RequiredItems.Add("ArmorVigorousIronLegs_TW", 1);
			item41.RequiredItems.Add("Silver", 25);
			item41.RequiredItems.Add("WolfHairBundle", 15);
			item41.RequiredItems.Add("WolfPelt", 8);
			item41.RequiredUpgradeItems.Add("Silver", 12);
			item41.RequiredUpgradeItems.Add("WolfHairBundle", 8);
			item41.RequiredUpgradeItems.Add("WolfPelt", 4);
			item41.CraftAmount = 1;
			Item item42 = new Item("armory", "HelmetVigorousBM_TW");
			item42.Configurable = Configurability.Recipe;
			item42.Crafting.Add("Armory_TW", 4);
			item42.RequiredItems.Add("HelmetVigorousSilver_TW", 1);
			item42.RequiredItems.Add("BlackMetal", 25);
			item42.RequiredItems.Add("LinenThread", 12);
			item42.RequiredItems.Add("Tar", 8);
			item42.RequiredUpgradeItems.Add("BlackMetal", 25);
			item42.RequiredUpgradeItems.Add("LinenThread", 6);
			item42.RequiredUpgradeItems.Add("Tar", 4);
			item42.CraftAmount = 1;
			Item item43 = new Item("armory", "ArmorVigorousBMChest_TW");
			item43.Configurable = Configurability.Recipe;
			item43.Crafting.Add("Armory_TW", 4);
			item43.RequiredItems.Add("ArmorVigorousSilverChest_TW", 1);
			item43.RequiredItems.Add("BlackMetal", 25);
			item43.RequiredItems.Add("LoxPelt", 8);
			item43.RequiredItems.Add("LoxBone_TW", 6);
			item43.RequiredUpgradeItems.Add("BlackMetal", 12);
			item43.RequiredUpgradeItems.Add("LoxPelt", 4);
			item43.RequiredUpgradeItems.Add("LoxBone_TW", 3);
			item43.CraftAmount = 1;
			Item item44 = new Item("armory", "ArmorVigorousBMLegs_TW");
			item44.Configurable = Configurability.Recipe;
			item44.Crafting.Add("Armory_TW", 4);
			item44.RequiredItems.Add("ArmorVigorousSilverLegs_TW", 1);
			item44.RequiredItems.Add("BlackMetal", 25);
			item44.RequiredItems.Add("Tar", 10);
			item44.RequiredItems.Add("Needle", 8);
			item44.RequiredUpgradeItems.Add("BlackMetal", 12);
			item44.RequiredUpgradeItems.Add("Tar", 5);
			item44.RequiredUpgradeItems.Add("Needle", 4);
			item44.CraftAmount = 1;
			Item item45 = new Item("armory", "HelmetVigorousCarapace_TW");
			item45.Configurable = Configurability.Recipe;
			item45.Crafting.Add("Armory_TW", 4);
			item45.RequiredItems.Add("HelmetVigorousBM_TW", 1);
			item45.RequiredItems.Add("Carapace", 25);
			item45.RequiredItems.Add("Eitr", 8);
			item45.RequiredItems.Add("Mandible", 6);
			item45.RequiredUpgradeItems.Add("Carapace", 12);
			item45.RequiredUpgradeItems.Add("Eitr", 4);
			item45.RequiredUpgradeItems.Add("Mandible", 3);
			item45.CraftAmount = 1;
			Item item46 = new Item("armory", "ArmorVigorousCarapaceChest_TW");
			item46.Configurable = Configurability.Recipe;
			item46.Crafting.Add("Armory_TW", 4);
			item46.RequiredItems.Add("ArmorVigorousBMChest_TW", 1);
			item46.RequiredItems.Add("Carapace", 25);
			item46.RequiredItems.Add("Eitr", 8);
			item46.RequiredItems.Add("ScaleHide", 10);
			item46.RequiredUpgradeItems.Add("Carapace", 12);
			item46.RequiredUpgradeItems.Add("Eitr", 4);
			item46.RequiredUpgradeItems.Add("ScaleHide", 5);
			item46.CraftAmount = 1;
			Item item47 = new Item("armory", "ArmorVigorousCarapaceLegs_TW");
			item47.Configurable = Configurability.Recipe;
			item47.Crafting.Add("Armory_TW", 4);
			item47.RequiredItems.Add("ArmorVigorousBMLegs_TW", 1);
			item47.RequiredItems.Add("Carapace", 25);
			item47.RequiredItems.Add("Eitr", 8);
			item47.RequiredItems.Add("Softtissue", 10);
			item47.RequiredUpgradeItems.Add("Carapace", 12);
			item47.RequiredUpgradeItems.Add("Eitr", 4);
			item47.RequiredUpgradeItems.Add("Softtissue", 5);
			item47.CraftAmount = 1;
			Item item48 = new Item("armory", "HelmetVigorousTyranium_TW");
			item48.Configurable = Configurability.Recipe;
			item48.Crafting.Add("Armory_TW", 4);
			item48.RequiredItems.Add("HelmetVigorousCarapace_TW", 1);
			item48.RequiredItems.Add("TyraniumBar_TW", 30);
			item48.RequiredItems.Add("GlacierCrystal_TW", 15);
			item48.RequiredItems.Add("ArcticMammothTusk_TW", 8);
			item48.RequiredUpgradeItems.Add("TyraniumBar_TW", 15);
			item48.RequiredUpgradeItems.Add("GlacierCrystal_TW", 12);
			item48.RequiredUpgradeItems.Add("ArcticMammothTusk_TW", 4);
			item48.CraftAmount = 1;
			Item item49 = new Item("armory", "ArmorVigorousTyraniumChest_TW");
			item49.Configurable = Configurability.Recipe;
			item49.Crafting.Add("Armory_TW", 4);
			item49.RequiredItems.Add("ArmorVigorousCarapaceChest_TW", 1);
			item49.RequiredItems.Add("TyraniumBar_TW", 30);
			item49.RequiredItems.Add("ArcticWolfPelt_TW", 8);
			item49.RequiredItems.Add("FrozenClaw_TW", 8);
			item49.RequiredUpgradeItems.Add("TyraniumBar_TW", 15);
			item49.RequiredUpgradeItems.Add("ArcticWolfPelt_TW", 4);
			item49.RequiredUpgradeItems.Add("FrozenClaw_TW", 4);
			item49.CraftAmount = 1;
			Item item50 = new Item("armory", "ArmorVigorousTyraniumLegs_TW");
			item50.Configurable = Configurability.Recipe;
			item50.Crafting.Add("Armory_TW", 4);
			item50.RequiredItems.Add("ArmorVigorousCarapaceLegs_TW", 1);
			item50.RequiredItems.Add("TyraniumBar_TW", 30);
			item50.RequiredItems.Add("ArcticBearPelt_TW", 8);
			item50.RequiredItems.Add("FrozenFang_TW", 8);
			item50.RequiredUpgradeItems.Add("TyraniumBar_TW", 15);
			item50.RequiredUpgradeItems.Add("ArcticBearPelt_TW", 4);
			item50.RequiredUpgradeItems.Add("FrozenFang_TW", 4);
			item50.CraftAmount = 1;
			Item item51 = new Item("armory", "HelmetWarrior_TW");
			item51.Configurable = Configurability.Recipe;
			item51.Crafting.Add("Armory_TW", 2);
			item51.RequiredItems.Add("HelmetIron", 1);
			item51.RequiredItems.Add("Iron", 12);
			item51.RequiredItems.Add("RottenPelt_TW", 6);
			item51.RequiredItems.Add("WitheredBone", 3);
			item51.RequiredUpgradeItems.Add("Iron", 12);
			item51.RequiredUpgradeItems.Add("RottenPelt_TW", 3);
			item51.RequiredUpgradeItems.Add("WitheredBone", 2);
			item51.CraftAmount = 1;
			Item item52 = new Item("armory", "ArmorWarriorChest_TW");
			item52.Configurable = Configurability.Recipe;
			item52.Crafting.Add("Armory_TW", 2);
			item52.RequiredItems.Add("ArmorIronChest", 1);
			item52.RequiredItems.Add("Iron", 12);
			item52.RequiredItems.Add("RottenPelt_TW", 6);
			item52.RequiredItems.Add("Guck", 6);
			item52.RequiredUpgradeItems.Add("Iron", 12);
			item52.RequiredUpgradeItems.Add("RottenPelt_TW", 3);
			item52.RequiredUpgradeItems.Add("Guck", 4);
			item52.CraftAmount = 1;
			Item item53 = new Item("armory", "ArmorWarriorLegs_TW");
			item53.Configurable = Configurability.Recipe;
			item53.Crafting.Add("Armory_TW", 2);
			item53.RequiredItems.Add("ArmorIronLegs", 1);
			item53.RequiredItems.Add("Iron", 12);
			item53.RequiredItems.Add("Ooze", 5);
			item53.RequiredItems.Add("Entrails", 6);
			item53.RequiredUpgradeItems.Add("Iron", 12);
			item53.RequiredUpgradeItems.Add("Ooze", 4);
			item53.RequiredUpgradeItems.Add("Entrails", 4);
			item53.CraftAmount = 1;
			Item item54 = new Item("armory", "HelmetWarriorSilver_TW");
			item54.Configurable = Configurability.Recipe;
			item54.Crafting.Add("Armory_TW", 3);
			item54.RequiredItems.Add("HelmetWarrior_TW", 1);
			item54.RequiredItems.Add("Silver", 25);
			item54.RequiredItems.Add("Obsidian", 12);
			item54.RequiredItems.Add("WolfFang", 6);
			item54.RequiredUpgradeItems.Add("Silver", 12);
			item54.RequiredUpgradeItems.Add("Obsidian", 6);
			item54.RequiredUpgradeItems.Add("WolfFang", 3);
			item54.CraftAmount = 1;
			Item item55 = new Item("armory", "ArmorWarriorSilverChest_TW");
			item55.Configurable = Configurability.Recipe;
			item55.Crafting.Add("Armory_TW", 3);
			item55.RequiredItems.Add("ArmorWarriorChest_TW", 1);
			item55.RequiredItems.Add("Silver", 25);
			item55.RequiredItems.Add("Crystal", 10);
			item55.RequiredItems.Add("FreezeGland", 6);
			item55.RequiredUpgradeItems.Add("Silver", 12);
			item55.RequiredUpgradeItems.Add("Crystal", 5);
			item55.RequiredUpgradeItems.Add("FreezeGland", 3);
			item55.CraftAmount = 1;
			Item item56 = new Item("armory", "ArmorWarriorSilverLegs_TW");
			item56.Configurable = Configurability.Recipe;
			item56.Crafting.Add("Armory_TW", 3);
			item56.RequiredItems.Add("ArmorWarriorLegs_TW", 1);
			item56.RequiredItems.Add("Silver", 20);
			item56.RequiredItems.Add("WolfHairBundle", 15);
			item56.RequiredItems.Add("WolfPelt", 8);
			item56.RequiredUpgradeItems.Add("Silver", 10);
			item56.RequiredUpgradeItems.Add("WolfHairBundle", 8);
			item56.RequiredUpgradeItems.Add("WolfPelt", 4);
			item56.CraftAmount = 1;
			Item item57 = new Item("armory", "HelmetWarriorBM_TW");
			item57.Configurable = Configurability.Recipe;
			item57.Crafting.Add("Armory_TW", 4);
			item57.RequiredItems.Add("HelmetWarriorSilver_TW", 1);
			item57.RequiredItems.Add("BlackMetal", 25);
			item57.RequiredItems.Add("Tar", 10);
			item57.RequiredItems.Add("LoxBone_TW", 6);
			item57.RequiredUpgradeItems.Add("BlackMetal", 12);
			item57.RequiredUpgradeItems.Add("Tar", 5);
			item57.RequiredUpgradeItems.Add("LoxBone_TW", 3);
			item57.CraftAmount = 1;
			Item item58 = new Item("armory", "ArmorWarriorBMChest_TW");
			item58.Configurable = Configurability.Recipe;
			item58.Crafting.Add("Armory_TW", 4);
			item58.RequiredItems.Add("ArmorWarriorSilverChest_TW", 1);
			item58.RequiredItems.Add("BlackMetal", 25);
			item58.RequiredItems.Add("Tar", 12);
			item58.RequiredItems.Add("Needle", 10);
			item58.RequiredUpgradeItems.Add("BlackMetal", 12);
			item58.RequiredUpgradeItems.Add("Tar", 6);
			item58.RequiredUpgradeItems.Add("Needle", 5);
			item58.CraftAmount = 1;
			Item item59 = new Item("armory", "ArmorWarriorBMLegs_TW");
			item59.Configurable = Configurability.Recipe;
			item59.Crafting.Add("Armory_TW", 4);
			item59.RequiredItems.Add("ArmorWarriorSilverLegs_TW", 1);
			item59.RequiredItems.Add("BlackMetal", 25);
			item59.RequiredItems.Add("LinenThread", 12);
			item59.RequiredItems.Add("LoxPelt", 8);
			item59.RequiredUpgradeItems.Add("LinenThread", 6);
			item59.RequiredUpgradeItems.Add("BlackMetal", 12);
			item59.RequiredUpgradeItems.Add("LoxPelt", 4);
			item59.CraftAmount = 1;
			Item item60 = new Item("armory", "HelmetWarriorCarapace_TW");
			item60.Configurable = Configurability.Recipe;
			item60.Crafting.Add("Armory_TW", 4);
			item60.RequiredItems.Add("HelmetWarriorBM_TW", 1);
			item60.RequiredItems.Add("Carapace", 25);
			item60.RequiredItems.Add("Eitr", 8);
			item60.RequiredItems.Add("VenomousFang_TW", 6);
			item60.RequiredUpgradeItems.Add("Carapace", 12);
			item60.RequiredUpgradeItems.Add("Eitr", 4);
			item60.RequiredUpgradeItems.Add("VenomousFang_TW", 3);
			item60.CraftAmount = 1;
			Item item61 = new Item("armory", "ArmorWarriorCarapaceChest_TW");
			item61.Configurable = Configurability.Recipe;
			item61.Crafting.Add("Armory_TW", 4);
			item61.RequiredItems.Add("ArmorWarriorBMChest_TW", 1);
			item61.RequiredItems.Add("Carapace", 25);
			item61.RequiredItems.Add("Eitr", 8);
			item61.RequiredItems.Add("Bilebag", 6);
			item61.RequiredUpgradeItems.Add("Carapace", 12);
			item61.RequiredUpgradeItems.Add("Eitr", 4);
			item61.RequiredUpgradeItems.Add("Bilebag", 3);
			item61.CraftAmount = 1;
			Item item62 = new Item("armory", "ArmorWarriorCarapaceLegs_TW");
			item62.Configurable = Configurability.Recipe;
			item62.Crafting.Add("Armory_TW", 4);
			item62.RequiredItems.Add("ArmorWarriorBMLegs_TW", 1);
			item62.RequiredItems.Add("Softtissue", 25);
			item62.RequiredItems.Add("Eitr", 8);
			item62.RequiredItems.Add("ScaleHide", 12);
			item62.RequiredUpgradeItems.Add("Softtissue", 12);
			item62.RequiredUpgradeItems.Add("Eitr", 4);
			item62.RequiredUpgradeItems.Add("ScaleHide", 6);
			item62.CraftAmount = 1;
			Item item63 = new Item("armory", "HelmetWarriorFlametal_TW");
			item63.Configurable = Configurability.Recipe;
			item63.Crafting.Add("Armory_TW", 4);
			item63.RequiredItems.Add("HelmetWarriorCarapace_TW", 1);
			item63.RequiredItems.Add("Flametal", 30);
			item63.RequiredItems.Add("MinotaurHorn_TW", 8);
			item63.RequiredItems.Add("AshenClaw_TW", 8);
			item63.RequiredUpgradeItems.Add("Flametal", 15);
			item63.RequiredUpgradeItems.Add("MinotaurHorn_TW", 4);
			item63.RequiredUpgradeItems.Add("AshenClaw_TW", 4);
			item63.CraftAmount = 1;
			Item item64 = new Item("armory", "ArmorWarriorFlametalChest_TW");
			item64.Configurable = Configurability.Recipe;
			item64.Crafting.Add("Armory_TW", 4);
			item64.RequiredItems.Add("ArmorWarriorCarapaceChest_TW", 1);
			item64.RequiredItems.Add("Flametal", 30);
			item64.RequiredItems.Add("VolcanicCrystal_TW", 15);
			item64.RequiredItems.Add("AshenScale_TW", 8);
			item64.RequiredUpgradeItems.Add("Flametal", 15);
			item64.RequiredUpgradeItems.Add("VolcanicCrystal_TW", 8);
			item64.RequiredUpgradeItems.Add("AshenScale_TW", 4);
			item64.CraftAmount = 1;
			Item item65 = new Item("armory", "ArmorWarriorFlametalLegs_TW");
			item65.Configurable = Configurability.Recipe;
			item65.Crafting.Add("Armory_TW", 4);
			item65.RequiredItems.Add("ArmorWarriorCarapaceLegs_TW", 1);
			item65.RequiredItems.Add("Flametal", 30);
			item65.RequiredItems.Add("AshenFur_TW", 10);
			item65.RequiredItems.Add("AshenChitin_TW", 10);
			item65.RequiredUpgradeItems.Add("Flametal", 15);
			item65.RequiredUpgradeItems.Add("AshenFur_TW", 5);
			item65.RequiredUpgradeItems.Add("AshenChitin_TW", 5);
			item65.CraftAmount = 1;
			Item item66 = new Item("armory", "HelmetVidar_TW");
			item66.Configurable = Configurability.Recipe;
			item66.Crafting.Add("Armory_TW", 3);
			item66.RequiredItems.Add("HelmetDrake", 1);
			item66.RequiredItems.Add("Silver", 12);
			item66.RequiredItems.Add("Bronze", 10);
			item66.RequiredItems.Add("WolfFang", 4);
			item66.RequiredUpgradeItems.Add("Silver", 12);
			item66.RequiredUpgradeItems.Add("Bronze", 6);
			item66.RequiredUpgradeItems.Add("WolfFang", 3);
			item66.CraftAmount = 1;
			Item item67 = new Item("armory", "ArmorVidarChest_TW");
			item67.Configurable = Configurability.Recipe;
			item67.Crafting.Add("Armory_TW", 3);
			item67.RequiredItems.Add("ArmorWolfChest", 1);
			item67.RequiredItems.Add("Silver", 12);
			item67.RequiredItems.Add("Bronze", 10);
			item67.RequiredItems.Add("WolfPelt", 4);
			item67.RequiredUpgradeItems.Add("Silver", 12);
			item67.RequiredUpgradeItems.Add("Bronze", 6);
			item67.RequiredUpgradeItems.Add("WolfPelt", 3);
			item67.CraftAmount = 1;
			Item item68 = new Item("armory", "ArmorVidarLegs_TW");
			item68.Configurable = Configurability.Recipe;
			item68.Crafting.Add("Armory_TW", 3);
			item68.RequiredItems.Add("ArmorWolfLegs", 1);
			item68.RequiredItems.Add("Silver", 12);
			item68.RequiredItems.Add("Bronze", 10);
			item68.RequiredItems.Add("WolfHairBundle", 10);
			item68.RequiredUpgradeItems.Add("Silver", 12);
			item68.RequiredUpgradeItems.Add("Bronze", 6);
			item68.RequiredUpgradeItems.Add("WolfHairBundle", 8);
			item68.CraftAmount = 1;
			Item item69 = new Item("armory", "HelmetVidarBM_TW");
			item69.Configurable = Configurability.Recipe;
			item69.Crafting.Add("Armory_TW", 4);
			item69.RequiredItems.Add("HelmetVidar_TW", 1);
			item69.RequiredItems.Add("BlackMetal", 25);
			item69.RequiredItems.Add("Tar", 12);
			item69.RequiredItems.Add("LoxBone_TW", 6);
			item69.RequiredUpgradeItems.Add("BlackMetal", 12);
			item69.RequiredUpgradeItems.Add("Tar", 6);
			item69.RequiredUpgradeItems.Add("LoxBone_TW", 3);
			item69.CraftAmount = 1;
			Item item70 = new Item("armory", "ArmorVidarBMChest_TW");
			item70.Configurable = Configurability.Recipe;
			item70.Crafting.Add("Armory_TW", 4);
			item70.RequiredItems.Add("ArmorVidarChest_TW", 1);
			item70.RequiredItems.Add("BlackMetal", 25);
			item70.RequiredItems.Add("LinenThread", 12);
			item70.RequiredItems.Add("LoxPelt", 8);
			item70.RequiredUpgradeItems.Add("BlackMetal", 12);
			item70.RequiredUpgradeItems.Add("LinenThread", 6);
			item70.RequiredUpgradeItems.Add("LoxPelt", 4);
			item70.CraftAmount = 1;
			Item item71 = new Item("armory", "ArmorVidarBMLegs_TW");
			item71.Configurable = Configurability.Recipe;
			item71.Crafting.Add("Armory_TW", 4);
			item71.RequiredItems.Add("ArmorVidarLegs_TW", 1);
			item71.RequiredItems.Add("BlackMetal", 25);
			item71.RequiredItems.Add("LoxPelt", 8);
			item71.RequiredItems.Add("Needle", 8);
			item71.RequiredUpgradeItems.Add("BlackMetal", 12);
			item71.RequiredUpgradeItems.Add("LoxPelt", 4);
			item71.RequiredUpgradeItems.Add("Needle", 4);
			item71.CraftAmount = 1;
			Item item72 = new Item("armory", "HelmetVidarCarapace_TW");
			item72.Configurable = Configurability.Recipe;
			item72.Crafting.Add("Armory_TW", 4);
			item72.RequiredItems.Add("HelmetVidarBM_TW", 1);
			item72.RequiredItems.Add("Carapace", 25);
			item72.RequiredItems.Add("Eitr", 8);
			item72.RequiredItems.Add("DarkCrystal_TW", 6);
			item72.RequiredUpgradeItems.Add("Carapace", 12);
			item72.RequiredUpgradeItems.Add("Eitr", 4);
			item72.RequiredUpgradeItems.Add("DarkCrystal_TW", 4);
			item72.CraftAmount = 1;
			Item item73 = new Item("armory", "ArmorVidarCarapaceChest_TW");
			item73.Configurable = Configurability.Recipe;
			item73.Crafting.Add("Armory_TW", 4);
			item73.RequiredItems.Add("ArmorVidarBMChest_TW", 1);
			item73.RequiredItems.Add("Carapace", 25);
			item73.RequiredItems.Add("Eitr", 8);
			item73.RequiredItems.Add("ScaleHide", 12);
			item73.RequiredUpgradeItems.Add("Carapace", 12);
			item73.RequiredUpgradeItems.Add("Eitr", 4);
			item73.RequiredUpgradeItems.Add("ScaleHide", 6);
			item73.CraftAmount = 1;
			Item item74 = new Item("armory", "ArmorVidarCarapaceLegs_TW");
			item74.Configurable = Configurability.Recipe;
			item74.Crafting.Add("Armory_TW", 4);
			item74.RequiredItems.Add("ArmorVidarBMLegs_TW", 1);
			item74.RequiredItems.Add("Softtissue", 25);
			item74.RequiredItems.Add("Eitr", 8);
			item74.RequiredItems.Add("JuteBlack_TW", 10);
			item74.RequiredUpgradeItems.Add("Softtissue", 12);
			item74.RequiredUpgradeItems.Add("Eitr", 4);
			item74.RequiredUpgradeItems.Add("JuteBlack_TW", 5);
			item74.CraftAmount = 1;
			Item item75 = new Item("armory", "HelmetVidarFlametal_TW");
			item75.Configurable = Configurability.Recipe;
			item75.Crafting.Add("Armory_TW", 4);
			item75.RequiredItems.Add("HelmetVidarCarapace_TW", 1);
			item75.RequiredItems.Add("Flametal", 30);
			item75.RequiredItems.Add("VolcanicCrystal_TW", 15);
			item75.RequiredItems.Add("AshenFang_TW", 8);
			item75.RequiredUpgradeItems.Add("Flametal", 15);
			item75.RequiredUpgradeItems.Add("VolcanicCrystal_TW", 8);
			item75.RequiredUpgradeItems.Add("AshenFang_TW", 4);
			item75.CraftAmount = 1;
			Item item76 = new Item("armory", "ArmorVidarFlametalChest_TW");
			item76.Configurable = Configurability.Recipe;
			item76.Crafting.Add("Armory_TW", 4);
			item76.RequiredItems.Add("ArmorVidarCarapaceChest_TW", 1);
			item76.RequiredItems.Add("Flametal", 30);
			item76.RequiredItems.Add("AshenScale_TW", 12);
			item76.RequiredItems.Add("LavaGland_TW", 8);
			item76.RequiredUpgradeItems.Add("Flametal", 15);
			item76.RequiredUpgradeItems.Add("AshenScale_TW", 6);
			item76.RequiredUpgradeItems.Add("LavaGland_TW", 4);
			item76.CraftAmount = 1;
			Item item77 = new Item("armory", "ArmorVidarFlametalLegs_TW");
			item77.Configurable = Configurability.Recipe;
			item77.Crafting.Add("Armory_TW", 4);
			item77.RequiredItems.Add("ArmorVidarCarapaceLegs_TW", 1);
			item77.RequiredItems.Add("Flametal", 30);
			item77.RequiredItems.Add("AshenFur_TW", 12);
			item77.RequiredItems.Add("AshenChitin_TW", 8);
			item77.RequiredUpgradeItems.Add("Flametal", 12);
			item77.RequiredUpgradeItems.Add("AshenFur_TW", 6);
			item77.RequiredUpgradeItems.Add("AshenChitin_TW", 4);
			item77.CraftAmount = 1;
			Item obj = new Item("armory", "HelmetFenrir_TW")
			{
				Configurable = Configurability.Recipe
			};
			MaterialReplacer.RegisterGameObjectForShaderSwap(obj.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			obj.Crafting.Add("Armory_TW", 3);
			obj.RequiredItems.Add("HelmetFenring", 1);
			obj.RequiredItems.Add("Silver", 20);
			obj.RequiredItems.Add("JuteRed", 6);
			obj.RequiredItems.Add("WolfFang", 6);
			obj.RequiredUpgradeItems.Add("Silver", 10);
			obj.RequiredUpgradeItems.Add("JuteRed", 3);
			obj.RequiredUpgradeItems.Add("WolfFang", 3);
			obj.CraftAmount = 1;
			Item item78 = new Item("armory", "ArmorFenrirChest_TW");
			item78.Configurable = Configurability.Recipe;
			item78.Crafting.Add("Armory_TW", 3);
			item78.RequiredItems.Add("ArmorFenringChest", 1);
			item78.RequiredItems.Add("Silver", 20);
			item78.RequiredItems.Add("JuteRed", 8);
			item78.RequiredItems.Add("WolfPelt", 6);
			item78.RequiredUpgradeItems.Add("Silver", 10);
			item78.RequiredUpgradeItems.Add("JuteRed", 4);
			item78.RequiredUpgradeItems.Add("WolfPelt", 3);
			item78.CraftAmount = 1;
			Item item79 = new Item("armory", "ArmorFenrirLegs_TW");
			item79.Configurable = Configurability.Recipe;
			item79.Crafting.Add("Armory_TW", 3);
			item79.RequiredItems.Add("ArmorFenringLegs", 1);
			item79.RequiredItems.Add("Silver", 20);
			item79.RequiredItems.Add("WolfHairBundle", 20);
			item79.RequiredItems.Add("Obsidian", 12);
			item79.RequiredUpgradeItems.Add("Silver", 10);
			item79.RequiredUpgradeItems.Add("WolfHairBundle", 10);
			item79.RequiredUpgradeItems.Add("Obsidian", 6);
			item79.CraftAmount = 1;
			Item obj2 = new Item("armory", "HelmetFenrirBM_TW")
			{
				Configurable = Configurability.Recipe
			};
			MaterialReplacer.RegisterGameObjectForShaderSwap(obj2.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			obj2.Crafting.Add("Armory_TW", 4);
			obj2.RequiredItems.Add("HelmetFenrir_TW", 1);
			obj2.RequiredItems.Add("BlackMetal", 20);
			obj2.RequiredItems.Add("LinenThread", 12);
			obj2.RequiredItems.Add("LoxPelt", 8);
			obj2.RequiredUpgradeItems.Add("BlackMetal", 10);
			obj2.RequiredUpgradeItems.Add("LinenThread", 6);
			obj2.RequiredUpgradeItems.Add("LoxPelt", 4);
			obj2.CraftAmount = 1;
			Item item80 = new Item("armory", "ArmorFenrirBMChest_TW");
			item80.Configurable = Configurability.Recipe;
			item80.Crafting.Add("Armory_TW", 4);
			item80.RequiredItems.Add("ArmorFenrirChest_TW", 1);
			item80.RequiredItems.Add("BlackMetal", 20);
			item80.RequiredItems.Add("LinenThread", 12);
			item80.RequiredItems.Add("LoxBone_TW", 8);
			item80.RequiredUpgradeItems.Add("BlackMetal", 10);
			item80.RequiredUpgradeItems.Add("LinenThread", 6);
			item80.RequiredUpgradeItems.Add("LoxBone_TW", 4);
			item80.CraftAmount = 1;
			Item item81 = new Item("armory", "ArmorFenrirBMLegs_TW");
			item81.Configurable = Configurability.Recipe;
			item81.Crafting.Add("Armory_TW", 4);
			item81.RequiredItems.Add("ArmorFenrirLegs_TW", 1);
			item81.RequiredItems.Add("BlackMetal", 20);
			item81.RequiredItems.Add("Tar", 12);
			item81.RequiredItems.Add("Needle", 8);
			item81.RequiredUpgradeItems.Add("BlackMetal", 10);
			item81.RequiredUpgradeItems.Add("Tar", 6);
			item81.RequiredUpgradeItems.Add("Needle", 4);
			item81.CraftAmount = 1;
			Item obj3 = new Item("armory", "HelmetFenrirCarapace_TW")
			{
				Configurable = Configurability.Recipe
			};
			MaterialReplacer.RegisterGameObjectForShaderSwap(obj3.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			obj3.Crafting.Add("Armory_TW", 4);
			obj3.RequiredItems.Add("HelmetFenrirBM_TW", 1);
			obj3.RequiredItems.Add("Carapace", 25);
			obj3.RequiredItems.Add("Eitr", 8);
			obj3.RequiredItems.Add("VenomousFang_TW", 6);
			obj3.RequiredUpgradeItems.Add("Carapace", 12);
			obj3.RequiredUpgradeItems.Add("Eitr", 4);
			obj3.RequiredUpgradeItems.Add("VenomousFang_TW", 3);
			obj3.CraftAmount = 1;
			Item item82 = new Item("armory", "ArmorFenrirCarapaceChest_TW");
			item82.Configurable = Configurability.Recipe;
			item82.Crafting.Add("Armory_TW", 4);
			item82.RequiredItems.Add("ArmorFenrirBMChest_TW", 1);
			item82.RequiredItems.Add("Softtissue", 25);
			item82.RequiredItems.Add("Eitr", 8);
			item82.RequiredItems.Add("JuteBlack_TW", 10);
			item82.RequiredUpgradeItems.Add("Softtissue", 12);
			item82.RequiredUpgradeItems.Add("Eitr", 4);
			item82.RequiredUpgradeItems.Add("JuteBlack_TW", 5);
			item82.CraftAmount = 1;
			Item item83 = new Item("armory", "ArmorFenrirCarapaceLegs_TW");
			item83.Configurable = Configurability.Recipe;
			item83.Crafting.Add("Armory_TW", 4);
			item83.RequiredItems.Add("ArmorFenrirBMLegs_TW", 1);
			item83.RequiredItems.Add("Softtissue", 25);
			item83.RequiredItems.Add("Eitr", 8);
			item83.RequiredItems.Add("ScaleHide", 12);
			item83.RequiredUpgradeItems.Add("Softtissue", 12);
			item83.RequiredUpgradeItems.Add("Eitr", 4);
			item83.RequiredUpgradeItems.Add("ScaleHide", 6);
			item83.CraftAmount = 1;
			Item obj4 = new Item("armory", "HelmetFenrirTyranium_TW")
			{
				Configurable = Configurability.Recipe
			};
			MaterialReplacer.RegisterGameObjectForShaderSwap(obj4.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			obj4.Crafting.Add("Armory_TW", 4);
			obj4.RequiredItems.Add("HelmetFenrirCarapace_TW", 1);
			obj4.RequiredItems.Add("TyraniumBar_TW", 30);
			obj4.RequiredItems.Add("ArcticWolfPelt_TW", 12);
			obj4.RequiredItems.Add("PrimalFenrisHairBundle_TW", 8);
			obj4.RequiredUpgradeItems.Add("TyraniumBar_TW", 15);
			obj4.RequiredUpgradeItems.Add("ArcticWolfPelt_TW", 6);
			obj4.RequiredUpgradeItems.Add("PrimalFenrisHairBundle_TW", 4);
			obj4.CraftAmount = 1;
			Item item84 = new Item("armory", "ArmorFenrirTyraniumChest_TW");
			item84.Configurable = Configurability.Recipe;
			item84.Crafting.Add("Armory_TW", 4);
			item84.RequiredItems.Add("ArmorFenrirCarapaceChest_TW", 1);
			item84.RequiredItems.Add("TyraniumBar_TW", 30);
			item84.RequiredItems.Add("ArcticSerpentScale_TW", 12);
			item84.RequiredItems.Add("PrimalFenrisHairBundle_TW", 8);
			item84.RequiredUpgradeItems.Add("TyraniumBar_TW", 15);
			item84.RequiredUpgradeItems.Add("ArcticSerpentScale_TW", 8);
			item84.RequiredUpgradeItems.Add("PrimalFenrisHairBundle_TW", 4);
			item84.CraftAmount = 1;
			Item item85 = new Item("armory", "ArmorFenrirTyraniumLegs_TW");
			item85.Configurable = Configurability.Recipe;
			item85.Crafting.Add("Armory_TW", 4);
			item85.RequiredItems.Add("ArmorFenrirCarapaceLegs_TW", 1);
			item85.RequiredItems.Add("TyraniumBar_TW", 30);
			item85.RequiredItems.Add("PrimalFenrisHairBundle_TW", 10);
			item85.RequiredItems.Add("FrozenClaw_TW", 8);
			item85.RequiredUpgradeItems.Add("TyraniumBar_TW", 15);
			item85.RequiredUpgradeItems.Add("PrimalFenrisHairBundle_TW", 5);
			item85.RequiredUpgradeItems.Add("FrozenClaw_TW", 4);
			item85.CraftAmount = 1;
			Item item86 = new Item("armory", "HelmetBold_TW");
			item86.Configurable = Configurability.Recipe;
			item86.Crafting.Add("Armory_TW", 4);
			item86.RequiredItems.Add("HelmetPadded", 1);
			item86.RequiredItems.Add("BlackMetal", 12);
			item86.RequiredItems.Add("LoxPelt", 6);
			item86.RequiredItems.Add("LoxBone_TW", 4);
			item86.RequiredUpgradeItems.Add("BlackMetal", 12);
			item86.RequiredUpgradeItems.Add("LoxPelt", 4);
			item86.RequiredUpgradeItems.Add("LoxBone_TW", 3);
			item86.CraftAmount = 1;
			Item item87 = new Item("armory", "ArmorBoldChest_TW");
			item87.Configurable = Configurability.Recipe;
			item87.Crafting.Add("Armory_TW", 4);
			item87.RequiredItems.Add("ArmorPaddedCuirass", 1);
			item87.RequiredItems.Add("BlackMetal", 12);
			item87.RequiredItems.Add("Tar", 6);
			item87.RequiredItems.Add("LoxPelt", 6);
			item87.RequiredUpgradeItems.Add("BlackMetal", 12);
			item87.RequiredUpgradeItems.Add("Tar", 6);
			item87.RequiredUpgradeItems.Add("LoxPelt", 4);
			item87.CraftAmount = 1;
			Item item88 = new Item("armory", "ArmorBoldLegs_TW");
			item88.Configurable = Configurability.Recipe;
			item88.Crafting.Add("Armory_TW", 4);
			item88.RequiredItems.Add("ArmorPaddedGreaves", 1);
			item88.RequiredItems.Add("BlackMetal", 12);
			item88.RequiredItems.Add("LinenThread", 10);
			item88.RequiredItems.Add("Needle", 6);
			item88.RequiredUpgradeItems.Add("BlackMetal", 12);
			item88.RequiredUpgradeItems.Add("LinenThread", 6);
			item88.RequiredUpgradeItems.Add("Needle", 4);
			item88.CraftAmount = 1;
			Item item89 = new Item("armory", "HelmetBoldCarapace_TW");
			item89.Configurable = Configurability.Recipe;
			item89.Crafting.Add("Armory_TW", 4);
			item89.RequiredItems.Add("HelmetBold_TW", 1);
			item89.RequiredItems.Add("Carapace", 25);
			item89.RequiredItems.Add("Eitr", 8);
			item89.RequiredItems.Add("DarkCrystal_TW", 6);
			item89.RequiredUpgradeItems.Add("Carapace", 12);
			item89.RequiredUpgradeItems.Add("Eitr", 4);
			item89.RequiredUpgradeItems.Add("DarkCrystal_TW", 3);
			item89.CraftAmount = 1;
			Item item90 = new Item("armory", "ArmorBoldCarapaceChest_TW");
			item90.Configurable = Configurability.Recipe;
			item90.Crafting.Add("Armory_TW", 4);
			item90.RequiredItems.Add("ArmorBoldChest_TW", 1);
			item90.RequiredItems.Add("Carapace", 25);
			item90.RequiredItems.Add("Eitr", 8);
			item90.RequiredItems.Add("ScaleHide", 15);
			item90.RequiredUpgradeItems.Add("Carapace", 12);
			item90.RequiredUpgradeItems.Add("Eitr", 4);
			item90.RequiredUpgradeItems.Add("ScaleHide", 8);
			item90.CraftAmount = 1;
			Item item91 = new Item("armory", "ArmorBoldCarapaceLegs_TW");
			item91.Configurable = Configurability.Recipe;
			item91.Crafting.Add("Armory_TW", 4);
			item91.RequiredItems.Add("ArmorBoldLegs_TW", 1);
			item91.RequiredItems.Add("Carapace", 25);
			item91.RequiredItems.Add("Eitr", 8);
			item91.RequiredItems.Add("Softtissue", 15);
			item91.RequiredUpgradeItems.Add("Carapace", 12);
			item91.RequiredUpgradeItems.Add("Eitr", 4);
			item91.RequiredUpgradeItems.Add("Softtissue", 8);
			item91.CraftAmount = 1;
			Item item92 = new Item("armory", "HelmetBoldFlametal_TW");
			item92.Configurable = Configurability.Recipe;
			item92.Crafting.Add("Armory_TW", 4);
			item92.RequiredItems.Add("HelmetBoldCarapace_TW", 1);
			item92.RequiredItems.Add("Flametal", 30);
			item92.RequiredItems.Add("AshenFang_TW", 12);
			item92.RequiredItems.Add("LavaGland_TW", 8);
			item92.RequiredUpgradeItems.Add("Flametal", 15);
			item92.RequiredUpgradeItems.Add("AshenFang_TW", 6);
			item92.RequiredUpgradeItems.Add("LavaGland_TW", 4);
			item92.CraftAmount = 1;
			Item item93 = new Item("armory", "ArmorBoldFlametalChest_TW");
			item93.Configurable = Configurability.Recipe;
			item93.Crafting.Add("Armory_TW", 4);
			item93.RequiredItems.Add("ArmorBoldCarapaceChest_TW", 1);
			item93.RequiredItems.Add("Flametal", 30);
			item93.RequiredItems.Add("VolcanicCrystal_TW", 15);
			item93.RequiredItems.Add("AshenScale_TW", 8);
			item93.RequiredUpgradeItems.Add("Flametal", 15);
			item93.RequiredUpgradeItems.Add("VolcanicCrystal_TW", 8);
			item93.RequiredUpgradeItems.Add("AshenScale_TW", 8);
			item93.CraftAmount = 1;
			Item item94 = new Item("armory", "ArmorBoldFlametalLegs_TW");
			item94.Configurable = Configurability.Recipe;
			item94.Crafting.Add("Armory_TW", 4);
			item94.RequiredItems.Add("ArmorBoldCarapaceLegs_TW", 1);
			item94.RequiredItems.Add("Flametal", 30);
			item94.RequiredItems.Add("AshenFur_TW", 12);
			item94.RequiredItems.Add("AshenClaw_TW", 8);
			item94.RequiredUpgradeItems.Add("Flametal", 15);
			item94.RequiredUpgradeItems.Add("AshenFur_TW", 6);
			item94.RequiredUpgradeItems.Add("AshenClaw_TW", 8);
			item94.CraftAmount = 1;
			Item item95 = new Item("armory", "HelmetLegion_TW");
			item95.Configurable = Configurability.Recipe;
			item95.Crafting.Add("Armory_TW", 4);
			item95.RequiredItems.Add("HelmetCarapace", 1);
			item95.RequiredItems.Add("Carapace", 12);
			item95.RequiredItems.Add("Eitr", 8);
			item95.RequiredItems.Add("Mandible", 4);
			item95.RequiredUpgradeItems.Add("Carapace", 12);
			item95.RequiredUpgradeItems.Add("Eitr", 4);
			item95.RequiredUpgradeItems.Add("Mandible", 2);
			item95.CraftAmount = 1;
			Item item96 = new Item("armory", "ArmorLegionChest_TW");
			item96.Configurable = Configurability.Recipe;
			item96.Crafting.Add("Armory_TW", 4);
			item96.RequiredItems.Add("ArmorCarapaceChest", 1);
			item96.RequiredItems.Add("Carapace", 12);
			item96.RequiredItems.Add("Eitr", 8);
			item96.RequiredItems.Add("DarkCrystal_TW", 6);
			item96.RequiredUpgradeItems.Add("Carapace", 12);
			item96.RequiredUpgradeItems.Add("Eitr", 4);
			item96.RequiredUpgradeItems.Add("DarkCrystal_TW", 3);
			item96.CraftAmount = 1;
			Item item97 = new Item("armory", "ArmorLegionLegs_TW");
			item97.Configurable = Configurability.Recipe;
			item97.Crafting.Add("Armory_TW", 4);
			item97.RequiredItems.Add("ArmorCarapaceLegs", 1);
			item97.RequiredItems.Add("Softtissue", 12);
			item97.RequiredItems.Add("Eitr", 8);
			item97.RequiredItems.Add("ScaleHide", 8);
			item97.RequiredUpgradeItems.Add("Softtissue", 12);
			item97.RequiredUpgradeItems.Add("Eitr", 4);
			item97.RequiredUpgradeItems.Add("ScaleHide", 4);
			item97.CraftAmount = 1;
			Item item98 = new Item("armory", "HelmetLegionFlametal_TW");
			item98.Configurable = Configurability.Recipe;
			item98.Crafting.Add("Armory_TW", 4);
			item98.RequiredItems.Add("HelmetLegion_TW", 1);
			item98.RequiredItems.Add("Flametal", 30);
			item98.RequiredItems.Add("AshenChitin_TW", 12);
			item98.RequiredItems.Add("AshenFang_TW", 8);
			item98.RequiredUpgradeItems.Add("Flametal", 15);
			item98.RequiredUpgradeItems.Add("AshenChitin_TW", 6);
			item98.RequiredUpgradeItems.Add("AshenFang_TW", 4);
			item98.CraftAmount = 1;
			Item item99 = new Item("armory", "ArmorLegionFlametalChest_TW");
			item99.Configurable = Configurability.Recipe;
			item99.Crafting.Add("Armory_TW", 4);
			item99.RequiredItems.Add("ArmorLegionChest_TW", 1);
			item99.RequiredItems.Add("Flametal", 30);
			item99.RequiredItems.Add("AshenScale_TW", 12);
			item99.RequiredItems.Add("LavaGland_TW", 8);
			item99.RequiredUpgradeItems.Add("Flametal", 15);
			item99.RequiredUpgradeItems.Add("AshenScale_TW", 6);
			item99.RequiredUpgradeItems.Add("LavaGland_TW", 4);
			item99.CraftAmount = 1;
			Item item100 = new Item("armory", "ArmorLegionFlametalLegs_TW");
			item100.Configurable = Configurability.Recipe;
			item100.Crafting.Add("Armory_TW", 4);
			item100.RequiredItems.Add("ArmorLegionLegs_TW", 1);
			item100.RequiredItems.Add("Flametal", 30);
			item100.RequiredItems.Add("AshenFur_TW", 12);
			item100.RequiredItems.Add("AshenClaw_TW", 8);
			item100.RequiredUpgradeItems.Add("Flametal", 15);
			item100.RequiredUpgradeItems.Add("AshenFur_TW", 8);
			item100.RequiredUpgradeItems.Add("AshenClaw_TW", 4);
			item100.CraftAmount = 1;
			Item item101 = new Item("armory", "HelmetDestruction_TW");
			item101.Configurable = Configurability.Recipe;
			item101.Crafting.Add("Armory_TW", 4);
			item101.RequiredItems.Add("HelmetMage", 1);
			item101.RequiredItems.Add("Softtissue", 12);
			item101.RequiredItems.Add("Eitr", 10);
			item101.RequiredItems.Add("DarkCrystal_TW", 8);
			item101.RequiredUpgradeItems.Add("Softtissue", 12);
			item101.RequiredUpgradeItems.Add("Eitr", 5);
			item101.RequiredUpgradeItems.Add("DarkCrystal_TW", 4);
			item101.CraftAmount = 1;
			Item item102 = new Item("armory", "ArmorDestructionChest_TW");
			item102.Configurable = Configurability.Recipe;
			item102.Crafting.Add("Armory_TW", 4);
			item102.RequiredItems.Add("ArmorMageChest", 1);
			item102.RequiredItems.Add("Softtissue", 12);
			item102.RequiredItems.Add("Eitr", 10);
			item102.RequiredItems.Add("GiantBloodSack", 8);
			item102.RequiredUpgradeItems.Add("Softtissue", 12);
			item102.RequiredUpgradeItems.Add("Eitr", 5);
			item102.RequiredUpgradeItems.Add("GiantBloodSack", 4);
			item102.CraftAmount = 1;
			Item item103 = new Item("armory", "ArmorDestructionLegs_TW");
			item103.Configurable = Configurability.Recipe;
			item103.Crafting.Add("Armory_TW", 4);
			item103.RequiredItems.Add("ArmorMageLegs", 1);
			item103.RequiredItems.Add("Softtissue", 12);
			item103.RequiredItems.Add("Eitr", 10);
			item103.RequiredItems.Add("ScaleHide", 8);
			item103.RequiredUpgradeItems.Add("Softtissue", 12);
			item103.RequiredUpgradeItems.Add("Eitr", 5);
			item103.RequiredUpgradeItems.Add("ScaleHide", 6);
			item103.CraftAmount = 1;
			Item item104 = new Item("armory", "HelmetDestructionTyranium_TW");
			item104.Configurable = Configurability.Recipe;
			item104.Crafting.Add("Armory_TW", 4);
			item104.RequiredItems.Add("HelmetDestruction_TW", 1);
			item104.RequiredItems.Add("TyraniumBar_TW", 30);
			item104.RequiredItems.Add("GlacierCrystal_TW", 20);
			item104.RequiredItems.Add("ArcticMammothTusk_TW", 10);
			item104.RequiredUpgradeItems.Add("TyraniumBar_TW", 15);
			item104.RequiredUpgradeItems.Add("GlacierCrystal_TW", 10);
			item104.RequiredUpgradeItems.Add("ArcticMammothTusk_TW", 5);
			item104.CraftAmount = 1;
			Item item105 = new Item("armory", "ArmorDestructionTyraniumChest_TW");
			item105.Configurable = Configurability.Recipe;
			item105.Crafting.Add("Armory_TW", 4);
			item105.RequiredItems.Add("ArmorDestructionChest_TW", 1);
			item105.RequiredItems.Add("TyraniumBar_TW", 30);
			item105.RequiredItems.Add("GlacierGland_TW", 14);
			item105.RequiredItems.Add("ArcticSerpentScale_TW", 8);
			item105.RequiredUpgradeItems.Add("TyraniumBar_TW", 12);
			item105.RequiredUpgradeItems.Add("GlacierGland_TW", 7);
			item105.RequiredUpgradeItems.Add("ArcticSerpentScale_TW", 4);
			item105.CraftAmount = 1;
			Item item106 = new Item("armory", "ArmorDestructionTyraniumLegs_TW");
			item106.Configurable = Configurability.Recipe;
			item106.Crafting.Add("Armory_TW", 4);
			item106.RequiredItems.Add("ArmorDestructionLegs_TW", 1);
			item106.RequiredItems.Add("TyraniumBar_TW", 30);
			item106.RequiredItems.Add("FrozenFang_TW", 12);
			item106.RequiredItems.Add("JotunnTooth_TW", 8);
			item106.RequiredUpgradeItems.Add("TyraniumBar_TW", 15);
			item106.RequiredUpgradeItems.Add("FrozenFang_TW", 6);
			item106.RequiredUpgradeItems.Add("JotunnTooth_TW", 4);
			item106.CraftAmount = 1;
			Item item107 = new Item("armory", "HelmetSacrifice_TW");
			item107.Configurable = Configurability.Recipe;
			item107.Crafting.Add("Armory_TW", 4);
			item107.RequiredItems.Add("HelmetMage", 1);
			item107.RequiredItems.Add("Carapace", 12);
			item107.RequiredItems.Add("Eitr", 10);
			item107.RequiredItems.Add("DarkCrystal_TW", 10);
			item107.RequiredUpgradeItems.Add("Carapace", 12);
			item107.RequiredUpgradeItems.Add("Eitr", 5);
			item107.RequiredUpgradeItems.Add("DarkCrystal_TW", 5);
			item107.CraftAmount = 1;
			Item item108 = new Item("armory", "ArmorSacrificeChest_TW");
			item108.Configurable = Configurability.Recipe;
			item108.Crafting.Add("Armory_TW", 4);
			item108.RequiredItems.Add("ArmorMageChest", 1);
			item108.RequiredItems.Add("ScaleHide", 10);
			item108.RequiredItems.Add("Eitr", 10);
			item108.RequiredItems.Add("JuteBlack_TW", 10);
			item108.RequiredUpgradeItems.Add("ScaleHide", 6);
			item108.RequiredUpgradeItems.Add("Eitr", 5);
			item108.RequiredUpgradeItems.Add("JuteBlack_TW", 6);
			item108.CraftAmount = 1;
			Item item109 = new Item("armory", "ArmorSacrificeLegs_TW");
			item109.Configurable = Configurability.Recipe;
			item109.Crafting.Add("Armory_TW", 4);
			item109.RequiredItems.Add("ArmorMageLegs", 1);
			item109.RequiredItems.Add("Softtissue", 12);
			item109.RequiredItems.Add("Eitr", 10);
			item109.RequiredItems.Add("VenomousFang_TW", 8);
			item109.RequiredUpgradeItems.Add("Softtissue", 12);
			item109.RequiredUpgradeItems.Add("Eitr", 5);
			item109.RequiredUpgradeItems.Add("VenomousFang_TW", 4);
			item109.CraftAmount = 1;
			Item item110 = new Item("armory", "HelmetSacrificeFlametal_TW");
			item110.Configurable = Configurability.Recipe;
			item110.Crafting.Add("Armory_TW", 4);
			item110.RequiredItems.Add("HelmetSacrifice_TW", 1);
			item110.RequiredItems.Add("Flametal", 30);
			item110.RequiredItems.Add("MinotaurHorn_TW", 12);
			item110.RequiredItems.Add("DemonicEssence_TW", 12);
			item110.RequiredUpgradeItems.Add("Flametal", 15);
			item110.RequiredUpgradeItems.Add("MinotaurHorn_TW", 6);
			item110.RequiredUpgradeItems.Add("DemonicEssence_TW", 6);
			item110.CraftAmount = 1;
			Item item111 = new Item("armory", "ArmorSacrificeFlametalChest_TW");
			item111.Configurable = Configurability.Recipe;
			item111.Crafting.Add("Armory_TW", 4);
			item111.RequiredItems.Add("ArmorSacrificeChest_TW", 1);
			item111.RequiredItems.Add("Flametal", 30);
			item111.RequiredItems.Add("AshenScale_TW", 14);
			item111.RequiredItems.Add("VolcanicCrystal_TW", 14);
			item111.RequiredUpgradeItems.Add("Flametal", 15);
			item111.RequiredUpgradeItems.Add("AshenScale_TW", 7);
			item111.RequiredUpgradeItems.Add("VolcanicCrystal_TW", 7);
			item111.CraftAmount = 1;
			Item item112 = new Item("armory", "ArmorSacrificeFlametalLegs_TW");
			item112.Configurable = Configurability.Recipe;
			item112.Crafting.Add("Armory_TW", 4);
			item112.RequiredItems.Add("ArmorSacrificeLegs_TW", 1);
			item112.RequiredItems.Add("Flametal", 30);
			item112.RequiredItems.Add("AshenClaw_TW", 12);
			item112.RequiredItems.Add("DemonicEssence_TW", 12);
			item112.RequiredUpgradeItems.Add("Flametal", 15);
			item112.RequiredUpgradeItems.Add("AshenClaw_TW", 6);
			item112.RequiredUpgradeItems.Add("DemonicEssence_TW", 6);
			item112.CraftAmount = 1;
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			_harmony.PatchAll(executingAssembly);
			SetupWatcher();
		}

		private void OnDestroy()
		{
			((BaseUnityPlugin)this).Config.Save();
		}

		private void SetupWatcher()
		{
			FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(Paths.ConfigPath, ConfigFileName);
			fileSystemWatcher.Changed += ReadConfigValues;
			fileSystemWatcher.Created += ReadConfigValues;
			fileSystemWatcher.Renamed += ReadConfigValues;
			fileSystemWatcher.IncludeSubdirectories = true;
			fileSystemWatcher.SynchronizingObject = ThreadingHelper.SynchronizingObject;
			fileSystemWatcher.EnableRaisingEvents = true;
		}

		private void ReadConfigValues(object sender, FileSystemEventArgs e)
		{
			if (!File.Exists(ConfigFileFullPath))
			{
				return;
			}
			try
			{
				ArmoryLogger.LogDebug((object)"ReadConfigValues called");
				((BaseUnityPlugin)this).Config.Reload();
			}
			catch
			{
				ArmoryLogger.LogError((object)("There was an issue loading your " + ConfigFileName));
				ArmoryLogger.LogError((object)"Please check your config entries for spelling and format!");
			}
		}

		private ConfigEntry<T> config<[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] T>(string group, string name, T value, ConfigDescription description, bool synchronizedSetting = true)
		{
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Expected O, but got Unknown
			ConfigDescription val = new ConfigDescription(description.Description + (synchronizedSetting ? " [Synced with Server]" : " [Not Synced with Server]"), description.AcceptableValues, description.Tags);
			ConfigEntry<T> val2 = ((BaseUnityPlugin)this).Config.Bind<T>(group, name, value, val);
			ConfigSync.AddConfigEntry<T>(val2).SynchronizedConfig = synchronizedSetting;
			return val2;
		}

		private ConfigEntry<T> config<[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] T>(string group, string name, T value, string description, bool synchronizedSetting = true)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()), synchronizedSetting);
		}

		static ArmoryPlugin()
		{
			string configPath = Paths.ConfigPath;
			char directorySeparatorChar = Path.DirectorySeparatorChar;
			ConfigFileFullPath = configPath + directorySeparatorChar + ConfigFileName;
			ConnectionError = "";
			ArmoryLogger = Logger.CreateLogSource("Armory");
			ConfigSync = new ConfigSync("Therzie.Armory")
			{
				DisplayName = "Armory",
				CurrentVersion = "1.1.9",
				MinimumRequiredVersion = "1.1.9",
				ModRequired = true
			};
			_serverConfigLocked = null;
			_recipeIsActiveConfig = null;
		}
	}
	[HarmonyPatch(typeof(ZNetScene), "Awake")]
	public static class ArmoryDrops_Patch
	{
		[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
		public static void Postfix(ZNetScene __instance)
		{
			//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_004a: 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_0058: 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_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Expected O, but got Unknown
			if (!Object.op_Implicit((Object)(object)__instance))
			{
				return;
			}
			GameObject prefab = __instance.GetPrefab("Gjall");
			if (Object.op_Implicit((Object)(object)prefab))
			{
				CharacterDrop component = prefab.GetComponent<CharacterDrop>();
				if (Object.op_Implicit((Object)(object)component))
				{
					component.m_drops.Add(new Drop
					{
						m_prefab = __instance.GetPrefab("Bilebag"),
						m_amountMin = 1,
						m_amountMax = 1,
						m_chance = 1f,
						m_onePerPlayer = false,
						m_levelMultiplier = false
					});
				}
			}
		}
	}
	[HarmonyPatch(typeof(ZNet), "OnNewConnection")]
	public static class RegisterAndCheckVersion
	{
		[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
		private static void Prefix(ZNetPeer peer, ref ZNet __instance)
		{
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Expected O, but got Unknown
			ArmoryPlugin.ArmoryLogger.LogDebug((object)"Registering version RPC handler");
			peer.m_rpc.Register<ZPackage>("Armory_VersionCheck", (Action<ZRpc, ZPackage>)RpcHandlers.RPC_Armory_Version);
			ArmoryPlugin.ArmoryLogger.LogDebug((object)"Invoking version check");
			ZPackage val = new ZPackage();
			val.Write("1.1.9");
			peer.m_rpc.Invoke("Armory_VersionCheck", new object[1] { val });
		}
	}
	[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
	[HarmonyPatch(typeof(ZNet), "RPC_PeerInfo")]
	[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)]
	public static class VerifyClient
	{
		private static bool Prefix(ZRpc rpc, ZPackage pkg, ref ZNet __instance)
		{
			if (!__instance.IsServer() || RpcHandlers.ValidatedPeers.Contains(rpc))
			{
				return true;
			}
			ArmoryPlugin.ArmoryLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") never sent version or couldn't due to previous disconnect, disconnecting"));
			rpc.Invoke("Error", new object[1] { 3 });
			return false;
		}

		private static void Postfix(ZNet __instance)
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			ZRoutedRpc.instance.InvokeRoutedRPC(ZRoutedRpc.instance.GetServerPeerID(), "RequestAdminSync", new object[1] { (object)new ZPackage() });
		}
	}
	[HarmonyPatch(typeof(FejdStartup), "ShowConnectError")]
	public class ShowConnectionError
	{
		[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
		private static void Postfix(FejdStartup __instance)
		{
			if (__instance.m_connectionFailedPanel.activeSelf)
			{
				__instance.m_connectionFailedError.fontSizeMax = 25f;
				__instance.m_connectionFailedError.fontSizeMin = 15f;
				TMP_Text connectionFailedError = __instance.m_connectionFailedError;
				connectionFailedError.text = connectionFailedError.text + "\n" + ArmoryPlugin.ConnectionError;
			}
		}
	}
	[HarmonyPatch(typeof(ZNet), "Disconnect")]
	public static class RemoveDisconnectedPeerFromVerified
	{
		[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
		private static void Prefix(ZNetPeer peer, ref ZNet __instance)
		{
			if (__instance.IsServer())
			{
				ArmoryPlugin.ArmoryLogger.LogInfo((object)("Peer (" + peer.m_rpc.m_socket.GetHostName() + ") disconnected, removing from validated list"));
				RpcHandlers.ValidatedPeers.Remove(peer.m_rpc);
			}
		}
	}
	[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
	[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)]
	public static class RpcHandlers
	{
		public static readonly List<ZRpc> ValidatedPeers = new List<ZRpc>();

		public static void RPC_Armory_Version(ZRpc rpc, ZPackage pkg)
		{
			string text = pkg.ReadString();
			ArmoryPlugin.ArmoryLogger.LogInfo((object)("Version check, local: 1.1.9,  remote: " + text));
			if (text != "1.1.9")
			{
				ArmoryPlugin.ConnectionError = "Armory Installed: 1.1.9\n Needed: " + text;
				if (ZNet.instance.IsServer())
				{
					ArmoryPlugin.ArmoryLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") has incompatible version, disconnecting"));
					rpc.Invoke("Error", new object[1] { 3 });
				}
			}
			else if (!ZNet.instance.IsServer())
			{
				ArmoryPlugin.ArmoryLogger.LogInfo((object)"Received same version from server!");
			}
			else
			{
				ArmoryPlugin.ArmoryLogger.LogInfo((object)("Adding peer (" + rpc.m_socket.GetHostName() + ") to validated list"));
				ValidatedPeers.Add(rpc);
			}
		}
	}
}
namespace StatusEffectManager
{
	[PublicAPI]
	[Description("The ItemDrop effect to apply the status effect")]
	public enum EffectType
	{
		Equip,
		Attack,
		Consume,
		Set
	}
	public struct SE_Item
	{
		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(1)]
		public StatusEffect Effect;

		public EffectType Type;
	}
	[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
	[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)]
	[PublicAPI]
	public class CustomSE
	{
		private static readonly List<CustomSE> RegisteredEffects = new List<CustomSE>();

		private static readonly Dictionary<StatusEffect, CustomSE> CustomEffectMap = new Dictionary<StatusEffect, CustomSE>();

		internal static readonly List<StatusEffect> CustomSEs = new List<StatusEffect>();

		internal static readonly Dictionary<SE_Item, string> AddToPrefabs = new Dictionary<SE_Item, string>();

		[Description("Instance of the StatusEffect.")]
		public readonly StatusEffect Effect;

		public EffectType Type;

		private string _folderName = "icons";

		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		private AssetBundle _assetBundle;

		[Description("Sets the icon for the StatusEffect. Must be 64x64")]
		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		public Sprite IconSprite;

		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		private string IconName;

		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		private LocalizeKey _name;

		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		private static Localization _english;

		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		private static BaseUnityPlugin _plugin;

		private static bool hasConfigSync = true;

		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		private static object _configSync;

		[Description("Sets the icon for the StatusEffect. Must be 64x64")]
		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		public string Icon
		{
			[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(2)]
			get
			{
				return IconName;
			}
			[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(2)]
			set
			{
				IconName = value;
				IconSprite = ((IconName == null) ? null : loadSprite(IconName));
				Effect.m_icon = IconSprite;
			}
		}

		[Description("Sets the in-game name for the StatusEffect")]
		public LocalizeKey Name
		{
			get
			{
				LocalizeKey name = _name;
				if (name != null)
				{
					return name;
				}
				StatusEffect effect = Effect;
				if (effect.m_name.StartsWith("$"))
				{
					_name = new LocalizeKey(effect.m_name);
				}
				else
				{
					string text = "$statuseffect_" + ((Object)Effect).name.Replace(" ", "_");
					_name = new LocalizeKey(text).English(effect.m_name);
					effect.m_name = text;
				}
				return _name;
			}
		}

		private static Localization english
		{
			get
			{
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_0011: Expected O, but got Unknown
				if (_english == null)
				{
					_english = new Localization();
					_english.SetupLanguage("English");
				}
				return _english;
			}
		}

		private static BaseUnityPlugin plugin
		{
			get
			{
				//IL_009b: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a5: Expected O, but got Unknown
				if (_plugin == null)
				{
					IEnumerable<TypeInfo> source;
					try
					{
						source = Assembly.GetExecutingAssembly().DefinedTypes.ToList();
					}
					catch (ReflectionTypeLoadException ex)
					{
						source = from t in ex.Types
							where t != null
							select t.GetTypeInfo();
					}
					_plugin = (BaseUnityPlugin)Chainloader.ManagerObject.GetComponent((Type)source.First([<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] (TypeInfo t) => t.IsClass && typeof(BaseUnityPlugin).IsAssignableFrom(t)));
				}
				return _plugin;
			}
		}

		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		private static object configSync
		{
			[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(2)]
			get
			{
				if (_configSync == null && hasConfigSync)
				{
					Type type = Assembly.GetExecutingAssembly().GetType("ServerSync.ConfigSync");
					if ((object)type != null)
					{
						_configSync = Activator.CreateInstance(type, plugin.Info.Metadata.GUID + " ItemManager");
						type.GetField("CurrentVersion").SetValue(_configSync, plugin.Info.Metadata.Version.ToString());
						type.GetProperty("IsLocked").SetValue(_configSync, true);
					}
					else
					{
						hasConfigSync = false;
					}
				}
				return _configSync;
			}
		}

		public CustomSE(string assetBundleFileName, string customEffectName, string folderName = "assets")
			: this(EffectManager.RegisterAssetBundle(assetBundleFileName, folderName), customEffectName)
		{
		}

		public CustomSE(AssetBundle bundle, string customEffectName)
		{
			Effect = EffectManager.RegisterCustomSE(bundle, customEffectName);
			RegisteredEffects.Add(this);
			CustomEffectMap[Effect] = this;
		}

		public CustomSE(string customEffectName)
		{
			Effect = ScriptableObject.CreateInstance<StatusEffect>();
			EffectManager.RegisterCustomSE(Effect, customEffectName);
			RegisteredEffects.Add(this);
			CustomEffectMap[Effect] = this;
		}

		[return: <75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		private byte[] ReadEmbeddedFileBytes(string name)
		{
			using MemoryStream memoryStream = new MemoryStream();
			Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(Assembly.GetExecutingAssembly().GetName().Name + ((_folderName == "") ? "" : ".") + _folderName + "." + name);
			if (manifestResourceStream == null)
			{
				return null;
			}
			manifestResourceStream.CopyTo(memoryStream);
			return memoryStream.ToArray();
		}

		[return: <75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)]
		private Texture2D loadTexture(string name)
		{
			//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_0019: Expected O, but got Unknown
			//IL_001b: Expected O, but got Unknown
			byte[] array = ReadEmbeddedFileBytes(name);
			if (array != null)
			{
				Texture2D val = new Texture2D(0, 0);
				ImageConversion.LoadImage(val, array);
				return val;
			}
			return null;
		}

		private Sprite loadSprite(string name)
		{
			//IL_0020: 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)
			Texture2D val = loadTexture(name);
			if (val != null)
			{
				return Sprite.Create(val, new Rect(0f, 0f, 64f, 64f), Vector2.zero);
			}
			AssetBundle assetBundle = _assetBundle;
			Sprite val2 = ((assetBundle != null) ? assetBundle.LoadAsset<Sprite>(name) : null);
			if (val2 != null)
			{
				return val2;
			}
			throw new FileNotFoundException("Could not find a file named " + name + " for the effect icon");
		}

		public void AddSEToPrefab(CustomSE customSE, string prefabName)
		{
			SE_Item sE_Item = default(SE_Item);
			sE_Item.Effect = customSE.Effect;
			sE_Item.Type = customSE.Type;
			SE_Item key = sE_Item;
			AddToPrefabs.Add(key, prefabName);
		}

		private static ConfigEntry<T> config<[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] T>(string group, string name, T value, ConfigDescription description)
		{
			ConfigEntry<T> val = plugin.Config.Bind<T>(group, name, value, description);
			configSync?.GetType().GetMethod("AddConfigEntry").MakeGenericMethod(typeof(T))
				.Invoke(configSync, new object[1] { val });
			return val;
		}

		private static ConfigEntry<T> config<[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] T>(string group, string name, T value, string description)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Expected O, but got Unknown
			return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()));
		}
	}
	[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
	[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)]
	[PublicAPI]
	public class LocalizeKey
	{
		public readonly string Key;

		public LocalizeKey(string key)
		{
			Key = key.Replace("$", "");
		}

		public LocalizeKey English(string key)
		{
			return addForLang("English", key);
		}

		public LocalizeKey Swedish(string key)
		{
			return addForLang("Swedish", key);
		}

		public LocalizeKey French(string key)
		{
			return addForLang("French", key);
		}

		public LocalizeKey Italian(string key)
		{
			return addForLang("Italian", key);
		}

		public LocalizeKey German(string key)
		{
			return addForLang("German", key);
		}

		public LocalizeKey Spanish(string key)
		{
			return addForLang("Spanish", key);
		}

		public LocalizeKey Russian(string key)
		{
			return addForLang("Russian", key);
		}

		public LocalizeKey Romanian(string key)
		{
			return addForLang("Romanian", key);
		}

		public LocalizeKey Bulgarian(string key)
		{
			return addForLang("Bulgarian", key);
		}

		public LocalizeKey Macedonian(string key)
		{
			return addForLang("Macedonian", key);
		}

		public LocalizeKey Finnish(string key)
		{
			return addForLang("Finnish", key);
		}

		public LocalizeKey Danish(string key)
		{
			return addForLang("Danish", key);
		}

		public LocalizeKey Norwegian(string key)
		{
			return addForLang("Norwegian", key);
		}

		public LocalizeKey Icelandic(string key)
		{
			return addForLang("Icelandic", key);
		}

		public LocalizeKey Turkish(string key)
		{
			return addForLang("Turkish", key);
		}

		public LocalizeKey Lithuanian(string key)
		{
			return addForLang("Lithuanian", key);
		}

		public LocalizeKey Czech(string key)
		{
			return addForLang("Czech", key);
		}

		public LocalizeKey Hungarian(string key)
		{
			return addForLang("Hungarian", key);
		}

		public LocalizeKey Slovak(string key)
		{
			return addForLang("Slovak", key);
		}

		public LocalizeKey Polish(string key)
		{
			return addForLang("Polish", key);
		}

		public LocalizeKey Dutch(string key)
		{
			return addForLang("Dutch", key);
		}

		public LocalizeKey Portuguese_European(string key)
		{
			return addForLang("Portuguese_European", key);
		}

		public LocalizeKey Portuguese_Brazilian(string key)
		{
			return addForLang("Portuguese_Brazilian", key);
		}

		public LocalizeKey Chinese(string key)
		{
			return addForLang("Chinese", key);
		}

		public LocalizeKey Japanese(string key)
		{
			return addForLang("Japanese", key);
		}

		public LocalizeKey Korean(string key)
		{
			return addForLang("Korean", key);
		}

		public LocalizeKey Hindi(string key)
		{
			return addForLang("Hindi", key);
		}

		public LocalizeKey Thai(string key)
		{
			return addForLang("Thai", key);
		}

		public LocalizeKey Abenaki(string key)
		{
			return addForLang("Abenaki", key);
		}

		public LocalizeKey Croatian(string key)
		{
			return addForLang("Croatian", key);
		}

		public LocalizeKey Georgian(string key)
		{
			return addForLang("Georgian", key);
		}

		public LocalizeKey Greek(string key)
		{
			return addForLang("Greek", key);
		}

		public LocalizeKey Serbian(string key)
		{
			return addForLang("Serbian", key);
		}

		public LocalizeKey Ukrainian(string key)
		{
			return addForLang("Ukrainian", key);
		}

		private LocalizeKey addForLang(string lang, string value)
		{
			if (Localization.instance.GetSelectedLanguage() == lang)
			{
				Localization.instance.AddWord(Key, value);
			}
			else if (lang == "English" && !Localization.instance.m_translations.ContainsKey(Key))
			{
				Localization.instance.AddWord(Key, value);
			}
			return this;
		}
	}
	[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)]
	[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
	public static class EffectManager
	{
		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)]
		private struct BundleId
		{
			[UsedImplicitly]
			public string assetBundleFileName;

			[UsedImplicitly]
			public string folderName;
		}

		private static readonly Dictionary<BundleId, AssetBundle> bundleCache;

		static EffectManager()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Expected O, but got Unknown
			bundleCache = new Dictionary<BundleId, AssetBundle>();
			Harmony val = new Harmony("org.bepinex.helpers.StatusEffectManager");
			val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(ObjectDB), "Awake", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(EffectManager), "Patch_ObjectDBInit", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
			val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(ZNetScene), "Awake", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(EffectManager), "Patch_ZNetSceneAwake", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
		}

		public static AssetBundle RegisterAssetBundle(string assetBundleFileName, string folderName = "assets")
		{
			BundleId bundleId = default(BundleId);
			bundleId.assetBundleFileName = assetBundleFileName;
			bundleId.folderName = folderName;
			BundleId key = bundleId;
			if (!bundleCache.TryGetValue(key, out var value))
			{
				Dictionary<BundleId, AssetBundle> dictionary = bundleCache;
				AssetBundle? obj = ((IEnumerable<AssetBundle>)Resources.FindObjectsOfTypeAll<AssetBundle>()).FirstOrDefault((Func<AssetBundle, bool>)([<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] (AssetBundle a) => ((Object)a).name == assetBundleFileName)) ?? AssetBundle.LoadFromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream(Assembly.GetExecutingAssembly().GetName().Name + ((folderName == "") ? "" : ".") + folderName + "." + assetBundleFileName));
				AssetBundle result = obj;
				dictionary[key] = obj;
				return result;
			}
			return value;
		}

		public static StatusEffect RegisterCustomSE(string assetBundleFileName, string customEffectName, string folderName = "assets")
		{
			return RegisterCustomSE(RegisterAssetBundle(assetBundleFileName, folderName), customEffectName);
		}

		public static StatusEffect RegisterCustomSE(AssetBundle assets, string customEffectName)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Expected O, but got Unknown
			StatusEffect val = (StatusEffect)assets.LoadAsset<ScriptableObject>(customEffectName);
			CustomSE.CustomSEs.Add(val);
			return val;
		}

		public static StatusEffect RegisterCustomSE(StatusEffect customSE, string customEffectName)
		{
			((Object)customSE).name = customEffectName;
			CustomSE.CustomSEs.Add(customSE);
			return customSE;
		}

		[HarmonyPriority(700)]
		private static void Patch_ObjectDBInit(ObjectDB __instance)
		{
			foreach (StatusEffect customSE in CustomSE.CustomSEs)
			{
				if (!__instance.m_StatusEffects.Contains(customSE))
				{
					__instance.m_StatusEffects.Add(customSE);
				}
			}
			__instance.UpdateItemHashes();
		}

		[HarmonyPriority(700)]
		private static void Patch_ZNetSceneAwake(ZNetScene __instance)
		{
			foreach (KeyValuePair<SE_Item, string> addToPrefab in CustomSE.AddToPrefabs)
			{
				try
				{
					GameObject prefab = __instance.GetPrefab(addToPrefab.Value);
					ItemDrop val = (Object.op_Implicit((Object)(object)prefab) ? prefab.GetComponent<ItemDrop>() : prefab.GetComponentInChildren<ItemDrop>());
					Aoe val2 = (Object.op_Implicit((Object)(object)prefab) ? prefab.GetComponent<Aoe>() : prefab.GetComponentInChildren<Aoe>());
					EffectArea val3 = (Object.op_Implicit((Object)(object)prefab) ? prefab.GetComponent<EffectArea>() : prefab.GetComponentInChildren<EffectArea>());
					if (Object.op_Implicit((Object)(object)val))
					{
						switch (addToPrefab.Key.Type)
						{
						case EffectType.Equip:
							val.m_itemData.m_shared.m_equipStatusEffect = addToPrefab.Key.Effect;
							break;
						case EffectType.Attack:
							val.m_itemData.m_shared.m_attackStatusEffect = addToPrefab.Key.Effect;
							break;
						case EffectType.Consume:
							val.m_itemData.m_shared.m_consumeStatusEffect = addToPrefab.Key.Effect;
							break;
						case EffectType.Set:
							val.m_itemData.m_shared.m_setSize = 1;
							val.m_itemData.m_shared.m_setName = ((Object)addToPrefab.Key.Effect).name;
							val.m_itemData.m_shared.m_setStatusEffect = addToPrefab.Key.Effect;
							break;
						default:
							throw new ArgumentOutOfRangeException();
						}
					}
					else if (Object.op_Implicit((Object)(object)val2))
					{
						val2.m_statusEffect = ((Object)addToPrefab.Key.Effect).name;
					}
					else if (Object.op_Implicit((Object)(object)val3))
					{
						val3.m_statusEffect = ((Object)addToPrefab.Key.Effect).name;
					}
					else
					{
						Debug.LogWarning((object)("The prefab '" + ((Object)prefab).name + "' does not have an ItemDrop, AOE, or EffectArea component. Cannot add the StatusEffect to the prefab."));
					}
				}
				catch (Exception)
				{
					Debug.LogWarning((object)"BROKE");
				}
			}
		}
	}
}
namespace SkillManager
{
	[<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)]
	[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)]
	[PublicAPI]
	public class Skill
	{
		[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)]
		public static class LocalizationCache
		{
			private static readonly Dictionary<string, Localization> localizations = new Dictionary<string, Localization>();

			internal static void LocalizationPostfix(Localization __instance, string language)
			{
				string key = localizations.FirstOrDefault([<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] (KeyValuePair<string, Localization> l) => l.Value == __instance).Key;
				if (key != null)
				{
					localizations.Remove(key);
				}
				if (!localizations.ContainsKey(language))
				{
					localizations.Add(language, __instance);
				}
			}

			public static Localization ForLanguage([<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] string language = null)
			{
				//IL_0024: Unknown result type (might be due to invalid IL or missing references)
				//IL_002a