Decompiled source of SouthsilArmor v3.1.8

ItemManagerModTemplate.dll

Decompiled 3 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.Cryptography;
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 Microsoft.CodeAnalysis;
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.BufferedDeserialization;
using YamlDotNet.Serialization.BufferedDeserialization.TypeDiscriminators;
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: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("SouthsilArmor")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyProduct("SouthsilArmor")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("4358610B-F3F4-4843-B7AF-98B7BC60DCDE")]
[assembly: AssemblyFileVersion("3.1.8")]
[assembly: AssemblyCompany("southsil")]
[assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("3.1.8.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[<a5c23817-8b74-496a-9de6-bcf4b1e5e34b>Embedded]
	internal sealed class <a5c23817-8b74-496a-9de6-bcf4b1e5e34b>EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[<a5c23817-8b74-496a-9de6-bcf4b1e5e34b>Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class <8802124b-7b79-436c-9abb-8db6a093401c>NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public <8802124b-7b79-436c-9abb-8db6a093401c>NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public <8802124b-7b79-436c-9abb-8db6a093401c>NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[<a5c23817-8b74-496a-9de6-bcf4b1e5e34b>Embedded]
	[CompilerGenerated]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class <3d631749-898d-4ebd-a183-897175eeecc2>NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public <3d631749-898d-4ebd-a183-897175eeecc2>NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace ItemManagerModTemplate
{
	[BepInPlugin("southsil.SouthsilArmor", "SouthsilArmor", "3.1.8")]
	[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(0)]
	[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
	public class ItemManagerModTemplatePlugin : BaseUnityPlugin
	{
		[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(0)]
		public enum Toggle
		{
			On = 1,
			Off = 0
		}

		[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(0)]
		private class ConfigurationManagerAttributes
		{
			[UsedImplicitly]
			public int? Order;

			[UsedImplicitly]
			public bool? Browsable;

			[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(2)]
			[UsedImplicitly]
			public string Category;

			[UsedImplicitly]
			[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(new byte[] { 2, 1 })]
			public Action<ConfigEntryBase> CustomDrawer;
		}

		internal const string ModName = "SouthsilArmor";

		internal const string ModVersion = "3.1.8";

		internal const string Author = "southsil";

		private const string ModGUID = "southsil.SouthsilArmor";

		private static string ConfigFileName = "southsil.SouthsilArmor.cfg";

		private static string ConfigFileFullPath;

		internal static string ConnectionError;

		private readonly Harmony _harmony = new Harmony("southsil.SouthsilArmor");

		public static readonly ManualLogSource ItemManagerModTemplateLogger;

		private static readonly ConfigSync ConfigSync;

		private static ConfigEntry<Toggle> _serverConfigLocked;

		private static ConfigEntry<Toggle> _recipeIsActiveConfig;

		public void Awake()
		{
			_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);
			Item item = new Item("neckhelm", "neckhelm");
			item.Name.English("Neck-King Crown");
			item.Description.English("A crown of gems and boar tusks, denoting you as King of the Mighty Necks!");
			item.Crafting.Add(CraftingTable.Workbench, 2);
			item.MaximumRequiredStationLevel = 7;
			item.RequiredItems.Add("DeerHide", 10);
			item.RequiredItems.Add("AmberPearl", 3);
			item.RequiredItems.Add("Ruby", 1);
			item.RequiredItems.Add("TrophyBoar", 2);
			item.RequiredUpgradeItems.Add("DeerHide", 5);
			item.RequiredUpgradeItems.Add("TrophyBoar", 1);
			item.CraftAmount = 1;
			Item item2 = new Item("neckchest", "neckchest");
			item2.Name.English("Neck-King Armor");
			item2.Description.English("Heavier and certainly more floral than standard leather armor.");
			item2.Crafting.Add(CraftingTable.Workbench, 2);
			item2.MaximumRequiredStationLevel = 7;
			item2.RequiredItems.Add("DeerHide", 10);
			item2.RequiredItems.Add("Dandelion", 8);
			item2.RequiredItems.Add("BoneFragments", 8);
			item2.RequiredItems.Add("TrophyNeck", 1);
			item2.RequiredUpgradeItems.Add("DeerHide", 5);
			item2.RequiredUpgradeItems.Add("BoneFragments", 5);
			item2.CraftAmount = 1;
			Item item3 = new Item("necklegs", "necklegs");
			item3.Name.English("Skirt of Neck tails");
			item3.Description.English("Who would have thought that Neck tails en-masse provided pretty reasonable, albeit slimy, protection...");
			item3.Crafting.Add(CraftingTable.Workbench, 2);
			item3.MaximumRequiredStationLevel = 7;
			item3.RequiredItems.Add("DeerHide", 10);
			item3.RequiredItems.Add("NeckTail", 20);
			item3.RequiredItems.Add("BoneFragments", 8);
			item3.RequiredItems.Add("LeatherScraps", 10);
			item3.RequiredUpgradeItems.Add("DeerHide", 5);
			item3.RequiredUpgradeItems.Add("NeckTail", 10);
			item3.CraftAmount = 1;
			Item item4 = new Item("chiefhelmboar", "chiefhelmboar");
			item4.Name.English("Chieftain Boar Headdress");
			item4.Description.English("The hood of a great tribal chieftain. This one depicts a boar.");
			item4.Crafting.Add(CraftingTable.Workbench, 2);
			item4.MaximumRequiredStationLevel = 7;
			item4.RequiredItems.Add("DeerHide", 20);
			item4.RequiredItems.Add("LeatherScraps", 10);
			item4.RequiredItems.Add("SurtlingCore", 1);
			item4.RequiredItems.Add("TrophyBoar", 1);
			item4.RequiredUpgradeItems.Add("DeerHide", 10);
			item4.RequiredUpgradeItems.Add("TrophyBoar", 1);
			item4.CraftAmount = 1;
			Item item5 = new Item("chiefhelmdeer", "chiefhelmdeer");
			item5.Name.English("Chieftain Deer Headdress");
			item5.Description.English("The hood of a great tribal chieftain. This one depicts a deer.");
			item5.Crafting.Add(CraftingTable.Workbench, 2);
			item5.MaximumRequiredStationLevel = 7;
			item5.RequiredItems.Add("DeerHide", 20);
			item5.RequiredItems.Add("LeatherScraps", 10);
			item5.RequiredItems.Add("SurtlingCore", 1);
			item5.RequiredItems.Add("TrophyDeer", 1);
			item5.RequiredUpgradeItems.Add("DeerHide", 10);
			item5.RequiredUpgradeItems.Add("TrophyDeer", 1);
			item5.CraftAmount = 1;
			Item item6 = new Item("chiefchest", "chiefchest");
			item6.Name.English("Chieftain's Chestguard");
			item6.Description.English("Rune-etched flint wards give this armor an eerie protection.");
			item6.Crafting.Add(CraftingTable.Workbench, 2);
			item6.MaximumRequiredStationLevel = 7;
			item6.RequiredItems.Add("DeerHide", 20);
			item6.RequiredItems.Add("ShieldWood", 1);
			item6.RequiredItems.Add("SurtlingCore", 2);
			item6.RequiredItems.Add("TrophySkeleton", 2);
			item6.RequiredUpgradeItems.Add("DeerHide", 10);
			item6.RequiredUpgradeItems.Add("BoneFragments", 10);
			item6.CraftAmount = 1;
			Item item7 = new Item("chieflegs", "chieflegs");
			item7.Name.English("Chieftain's Belt");
			item7.Description.English("Ok, got your knives, got your axe... plus whatever you're holding... probably ready to enter the forest, now.");
			item7.Crafting.Add(CraftingTable.Workbench, 2);
			item7.MaximumRequiredStationLevel = 7;
			item7.RequiredItems.Add("DeerHide", 20);
			item7.RequiredItems.Add("KnifeFlint", 2);
			item7.RequiredItems.Add("SurtlingCore", 2);
			item7.RequiredItems.Add("TrophySkeleton", 2);
			item7.RequiredUpgradeItems.Add("DeerHide", 10);
			item7.RequiredUpgradeItems.Add("BoneFragments", 10);
			item7.CraftAmount = 1;
			Item item8 = new Item("bronzetrollhelm", "bronzetrollhelm");
			item8.Name.English("Trollfighter Helm");
			item8.Description.English("A heavy bronze helm with a small visor.");
			item8.Crafting.Add(CraftingTable.Forge, 2);
			item8.MaximumRequiredStationLevel = 7;
			item8.RequiredItems.Add("Bronze", 8);
			item8.RequiredItems.Add("BoneFragments", 5);
			item8.RequiredItems.Add("TrophyFrostTroll", 1);
			item8.RequiredUpgradeItems.Add("Bronze", 5);
			item8.RequiredUpgradeItems.Add("BoneFragments", 3);
			item8.CraftAmount = 1;
			Item item9 = new Item("trollchest", "trollchest");
			item9.Name.English("Trollfighter Armor");
			item9.Description.English("Heavy bronze armor with carefully placed spikes, used by wild-folk who wrestle trolls.");
			item9.Crafting.Add(CraftingTable.Forge, 2);
			item9.MaximumRequiredStationLevel = 7;
			item9.RequiredItems.Add("Bronze", 8);
			item9.RequiredItems.Add("BoneFragments", 5);
			item9.RequiredItems.Add("TrophyFrostTroll", 1);
			item9.RequiredUpgradeItems.Add("Bronze", 5);
			item9.RequiredUpgradeItems.Add("BoneFragments", 3);
			item9.CraftAmount = 1;
			Item item10 = new Item("trolllegs", "trolllegs");
			item10.Name.English("Trollfighter Legs");
			item10.Description.English("Heavy shinguards, with spikes too, make kicking the troll quite a viable option.");
			item10.Crafting.Add(CraftingTable.Forge, 2);
			item10.MaximumRequiredStationLevel = 7;
			item10.RequiredItems.Add("Bronze", 8);
			item10.RequiredItems.Add("BoneFragments", 5);
			item10.RequiredItems.Add("TrophyFrostTroll", 1);
			item10.RequiredUpgradeItems.Add("Bronze", 5);
			item10.RequiredUpgradeItems.Add("BoneFragments", 3);
			item10.CraftAmount = 1;
			Item item11 = new Item("heavybronzehelm", "heavybronzehelm");
			item11.Name.English("Battleswine Helm");
			item11.Description.English("A heavy bronze helmet with curved horns jutting forward.");
			item11.Crafting.Add(CraftingTable.Forge, 2);
			item11.MaximumRequiredStationLevel = 7;
			item11.RequiredItems.Add("Bronze", 20);
			item11.RequiredItems.Add("BoneFragments", 5);
			item11.RequiredItems.Add("TrophyGreydwarfBrute", 1);
			item11.RequiredUpgradeItems.Add("Bronze", 8);
			item11.RequiredUpgradeItems.Add("BoneFragments", 3);
			item11.CraftAmount = 1;
			Item item12 = new Item("heavybronzechest", "heavybronzechest");
			item12.Name.English("Battleswine Pauldrons");
			item12.Description.English("Thick bronze pauldrons, inspired by the might of the wild boar.");
			item12.Crafting.Add(CraftingTable.Forge, 2);
			item12.MaximumRequiredStationLevel = 7;
			item12.RequiredItems.Add("Bronze", 20);
			item12.RequiredItems.Add("BoneFragments", 5);
			item12.RequiredItems.Add("TrophyBoar", 1);
			item12.RequiredUpgradeItems.Add("Bronze", 8);
			item12.RequiredUpgradeItems.Add("BoneFragments", 3);
			item12.CraftAmount = 1;
			Item item13 = new Item("heavybronzelegs", "heavybronzelegs");
			item13.Name.English("Battleswine Kilt");
			item13.Description.English("A heavy skirt which is weighted down, and provides surprising protection.");
			item13.Crafting.Add(CraftingTable.Forge, 2);
			item13.MaximumRequiredStationLevel = 7;
			item13.RequiredItems.Add("Bronze", 20);
			item13.RequiredItems.Add("LeatherScraps", 10);
			item13.RequiredItems.Add("TrophyFrostTroll", 1);
			item13.RequiredUpgradeItems.Add("Bronze", 8);
			item13.RequiredUpgradeItems.Add("BoneFragments", 3);
			item13.CraftAmount = 1;
			Item item14 = new Item("ancienthelm", "ancienthelm");
			item14.Name.English("Ancient Helm");
			item14.Description.English("This helm is from an age even before yours. It speaks of authority.");
			item14.Crafting.Add(CraftingTable.Forge, 2);
			item14.MaximumRequiredStationLevel = 7;
			item14.RequiredItems.Add("Bronze", 20);
			item14.RequiredItems.Add("AncientSeed", 6);
			item14.RequiredItems.Add("TrophyGreydwarfShaman", 1);
			item14.RequiredUpgradeItems.Add("Bronze", 8);
			item14.RequiredUpgradeItems.Add("AncientSeed", 3);
			item14.CraftAmount = 1;
			Item item15 = new Item("ancientchest", "ancientchest");
			item15.Name.English("Ancient Cuirass");
			item15.Description.English("Keenly forged with techniques long forgotten, it is both light and strong.");
			item15.Crafting.Add(CraftingTable.Forge, 2);
			item15.MaximumRequiredStationLevel = 7;
			item15.RequiredItems.Add("Bronze", 20);
			item15.RequiredItems.Add("Tin", 10);
			item15.RequiredItems.Add("AncientSeed", 6);
			item15.RequiredItems.Add("LeatherScraps", 20);
			item15.RequiredUpgradeItems.Add("Bronze", 8);
			item15.RequiredUpgradeItems.Add("Tin", 3);
			item15.CraftAmount = 1;
			Item item16 = new Item("ancientlegs", "ancientlegs");
			item16.Name.English("Ancient Legguards");
			item16.Description.English("You could probably muster a fairly meme worthy kick whilst wearing these.");
			item16.Crafting.Add(CraftingTable.Forge, 2);
			item16.MaximumRequiredStationLevel = 7;
			item16.RequiredItems.Add("Bronze", 20);
			item16.RequiredItems.Add("Tin", 10);
			item16.RequiredItems.Add("AncientSeed", 6);
			item16.RequiredItems.Add("LeatherScraps", 20);
			item16.RequiredUpgradeItems.Add("Bronze", 8);
			item16.RequiredUpgradeItems.Add("Tin", 3);
			item16.CraftAmount = 1;
			Item item17 = new Item("trollhelm", "trollhelm");
			item17.Name.English("Majestic Helm");
			item17.Description.English("A famous viking's helmet, with massive horns from a Baphomet demon.");
			item17.Crafting.Add(CraftingTable.Forge, 2);
			item17.MaximumRequiredStationLevel = 7;
			item17.RequiredItems.Add("Bronze", 10);
			item17.RequiredItems.Add("Copper", 8);
			item17.RequiredItems.Add("BoneFragments", 8);
			item17.RequiredItems.Add("TrophyFrostTroll", 8);
			item17.RequiredUpgradeItems.Add("Bronze", 8);
			item17.RequiredUpgradeItems.Add("TrophyFrostTroll", 1);
			item17.CraftAmount = 1;
			Item item18 = new Item("knighthelm", "knighthelm");
			item18.Name.English("Knight's Helm");
			item18.Description.English("This knight's helmet is more intricate than you'd like, but it'll protect you a little while longer.");
			item18.Crafting.Add(CraftingTable.Forge, 3);
			item18.MaximumRequiredStationLevel = 7;
			item18.RequiredItems.Add("Iron", 25);
			item18.RequiredItems.Add("TrophySerpent", 1);
			item18.RequiredUpgradeItems.Add("Iron", 10);
			item18.CraftAmount = 1;
			Item item19 = new Item("knightchest", "knightchest");
			item19.Name.English("Knight's Armor");
			item19.Description.English("Thick leather, robust chainmail and plate metal. It's designed to keep you safe, so you can keep killing.");
			item19.Crafting.Add(CraftingTable.Forge, 3);
			item19.MaximumRequiredStationLevel = 7;
			item19.RequiredItems.Add("Chain", 5);
			item19.RequiredItems.Add("Iron", 25);
			item19.RequiredItems.Add("LeatherScraps", 30);
			item19.RequiredUpgradeItems.Add("Iron", 10);
			item19.RequiredUpgradeItems.Add("Chain", 3);
			item19.CraftAmount = 1;
			Item item20 = new Item("knightlegs", "knightlegs");
			item20.Name.English("Knight's Leggings");
			item20.Description.English("Well travelled breeches and finely crafted iron boots.");
			item20.Crafting.Add(CraftingTable.Forge, 3);
			item20.MaximumRequiredStationLevel = 7;
			item20.RequiredItems.Add("Chain", 5);
			item20.RequiredItems.Add("Iron", 25);
			item20.RequiredItems.Add("Guck", 10);
			item20.RequiredItems.Add("TrophyWraith", 1);
			item20.RequiredUpgradeItems.Add("Iron", 10);
			item20.RequiredUpgradeItems.Add("Chain", 3);
			item20.CraftAmount = 1;
			Item item21 = new Item("swamphelm", "swamphelm");
			item21.Name.English("Abomination Helm");
			item21.Description.English("An iron skullcap adorned by huge horns and bone. Teeth chatter... but are they yours?");
			item21.Crafting.Add(CraftingTable.Forge, 3);
			item21.MaximumRequiredStationLevel = 7;
			item21.RequiredItems.Add("Iron", 20);
			item21.RequiredItems.Add("WitheredBone", 10);
			item21.RequiredItems.Add("TrophyBonemass", 1);
			item21.RequiredUpgradeItems.Add("Iron", 10);
			item21.RequiredUpgradeItems.Add("WitheredBone", 5);
			item21.CraftAmount = 1;
			Item item22 = new Item("swampchest", "swampchest");
			item22.Name.English("Draugr Wraps");
			item22.Description.English("Thick, mouldy linen with rusted iron plates. Very heavy, with good protection. You may be mistaken for a draugr. ");
			item22.Crafting.Add(CraftingTable.Forge, 3);
			item22.MaximumRequiredStationLevel = 7;
			item22.RequiredItems.Add("Iron", 25);
			item22.RequiredItems.Add("LeatherScraps", 20);
			item22.RequiredItems.Add("TrophyDraugrElite", 1);
			item22.RequiredUpgradeItems.Add("Iron", 10);
			item22.RequiredUpgradeItems.Add("LeatherScraps", 10);
			item22.CraftAmount = 1;
			Item item23 = new Item("swamplegs", "swamplegs");
			item23.Name.English("Draugr Skullbelt");
			item23.Description.English("Skulls and torn rags. They whisper to you in the depths of the swamp, and you find solace in what they say.");
			item23.Crafting.Add(CraftingTable.Forge, 3);
			item23.MaximumRequiredStationLevel = 7;
			item23.RequiredItems.Add("Iron", 20);
			item23.RequiredItems.Add("WitheredBone", 10);
			item23.RequiredItems.Add("TrophySkeleton", 4);
			item23.RequiredUpgradeItems.Add("Iron", 10);
			item23.RequiredUpgradeItems.Add("WitheredBone", 5);
			item23.CraftAmount = 1;
			Item item24 = new Item("ancientironhelm", "ancientironhelm");
			item24.Name.English("Legionnaire's Helm");
			item24.Description.English("A waving serpent fin crests this soldier's helmet, leading you to battle.");
			item24.Crafting.Add(CraftingTable.Forge, 3);
			item24.MaximumRequiredStationLevel = 7;
			item24.RequiredItems.Add("Iron", 25);
			item24.RequiredItems.Add("Silver", 30);
			item24.RequiredItems.Add("TrophySerpent", 1);
			item24.RequiredItems.Add("ancienthelm", 1);
			item24.RequiredUpgradeItems.Add("Iron", 10);
			item24.RequiredUpgradeItems.Add("Silver", 5);
			item24.CraftAmount = 1;
			Item item25 = new Item("ancientironchest", "ancientironchest");
			item25.Name.English("Legionnaire's breastplate");
			item25.Description.English("An iron breastplate with silver trim and serpent scale-mail. A thick red shawl which protects from the elements.");
			item25.Crafting.Add(CraftingTable.Forge, 3);
			item25.MaximumRequiredStationLevel = 7;
			item25.RequiredItems.Add("Iron", 25);
			item25.RequiredItems.Add("Silver", 30);
			item25.RequiredItems.Add("JuteRed", 10);
			item25.RequiredItems.Add("ancientchest", 1);
			item25.RequiredUpgradeItems.Add("Iron", 10);
			item25.RequiredUpgradeItems.Add("JuteRed", 5);
			item25.CraftAmount = 1;
			Item item26 = new Item("ancientironlegs", "ancientironlegs");
			item26.Name.English("Legionnaire's skirt");
			item26.Description.English("A leather skirt and iron boots, adorned by spiky teeth from a great serpent.");
			item26.Crafting.Add(CraftingTable.Forge, 3);
			item26.MaximumRequiredStationLevel = 7;
			item26.RequiredItems.Add("Iron", 25);
			item26.RequiredItems.Add("Silver", 30);
			item26.RequiredItems.Add("SerpentScale", 20);
			item26.RequiredItems.Add("ancientlegs", 1);
			item26.RequiredUpgradeItems.Add("Iron", 10);
			item26.RequiredUpgradeItems.Add("Silver", 5);
			item26.CraftAmount = 1;
			Item item27 = new Item("heavywolfhelm", "heavywolfhelm");
			item27.Name.English("Helm of Hati");
			item27.Description.English("On moonless nights a great white wolf prowls the mountains.");
			item27.Crafting.Add(CraftingTable.Forge, 3);
			item27.MaximumRequiredStationLevel = 7;
			item27.RequiredItems.Add("Silver", 30);
			item27.RequiredItems.Add("WolfHairBundle", 15);
			item27.RequiredItems.Add("TrophyCultist_Hildir", 1);
			item27.RequiredUpgradeItems.Add("Silver", 10);
			item27.RequiredUpgradeItems.Add("WolfHairBundle", 5);
			item27.CraftAmount = 1;
			Item item28 = new Item("heavywolfchest", "heavywolfchest");
			item28.Name.English("Valdr Breastplate");
			item28.Description.English("A heavy silver breastplate and thick shaggy pelts. This is the armor of a mighty hero.");
			item28.Crafting.Add(CraftingTable.Forge, 3);
			item28.MaximumRequiredStationLevel = 7;
			item28.RequiredItems.Add("Silver", 30);
			item28.RequiredItems.Add("WolfHairBundle", 15);
			item28.RequiredItems.Add("WolfClaw", 6);
			item28.RequiredUpgradeItems.Add("Silver", 10);
			item28.RequiredUpgradeItems.Add("WolfHairBundle", 5);
			item28.CraftAmount = 1;
			Item item29 = new Item("heavywolflegs", "heavywolflegs");
			item29.Name.English("Valdr Legguards");
			item29.Description.English("Silver boots worked to resemble great claws.");
			item29.Crafting.Add(CraftingTable.Forge, 3);
			item29.MaximumRequiredStationLevel = 7;
			item29.RequiredItems.Add("Silver", 30);
			item29.RequiredItems.Add("WolfHairBundle", 15);
			item29.RequiredItems.Add("WolfClaw", 6);
			item29.RequiredUpgradeItems.Add("Silver", 10);
			item29.RequiredUpgradeItems.Add("WolfHairBundle", 5);
			item29.CraftAmount = 1;
			Item item30 = new Item("skoghelm", "skoghelm");
			item30.Name.English("Stone Golem Helm");
			item30.Description.English("It is said that the famed viking, Skogafoss, hid his legendary helmet behind a waterfall in the deep north. This is only a replica.");
			item30.Crafting.Add(CraftingTable.Forge, 3);
			item30.MaximumRequiredStationLevel = 5;
			item30.RequiredItems.Add("Silver", 25);
			item30.RequiredItems.Add("TrophySGolem", 1);
			item30.RequiredItems.Add("TrophyEikthyr", 2);
			item30.RequiredUpgradeItems.Add("Crystal", 5);
			item30.RequiredUpgradeItems.Add("Silver", 10);
			item30.CraftAmount = 1;
			Item item31 = new Item("skogchest", "skogchest");
			item31.Name.English("Stone Golem Chest");
			item31.Description.English("An alloy of silver and enchanted stone, the same magic that animates the golems imbues this cuirass with incredible defence.");
			item31.Crafting.Add(CraftingTable.Forge, 3);
			item31.MaximumRequiredStationLevel = 5;
			item31.RequiredItems.Add("Silver", 25);
			item31.RequiredItems.Add("JuteRed", 15);
			item31.RequiredItems.Add("TrophySGolem", 2);
			item31.RequiredUpgradeItems.Add("Silver", 15);
			item31.RequiredUpgradeItems.Add("Crystal", 10);
			item31.CraftAmount = 1;
			Item item32 = new Item("skoglegs", "skoglegs");
			item32.Name.English("Stone Golem Legs");
			item32.Description.English("Slow and heavy but very protective.");
			item32.Crafting.Add(CraftingTable.Forge, 3);
			item32.MaximumRequiredStationLevel = 5;
			item32.RequiredItems.Add("Silver", 20);
			item32.RequiredItems.Add("JuteRed", 15);
			item32.RequiredItems.Add("WolfHairBundle", 15);
			item32.RequiredUpgradeItems.Add("Silver", 10);
			item32.RequiredUpgradeItems.Add("WolfHairBundle", 5);
			item32.CraftAmount = 1;
			Item item33 = new Item("norahchest", "norahchest");
			item33.Name.English("Shieldmaiden's Surcoat");
			item33.Description.English("Chainmail over thick dyed linen, with tooled leather belt and bracers.");
			item33.Crafting.Add(CraftingTable.Forge, 3);
			item33.MaximumRequiredStationLevel = 7;
			item33.RequiredItems.Add("Iron", 10);
			item33.RequiredItems.Add("LinenThread", 25);
			item33.RequiredItems.Add("Chain", 3);
			item33.RequiredUpgradeItems.Add("Iron", 5);
			item33.RequiredUpgradeItems.Add("Chain", 5);
			item33.CraftAmount = 1;
			Item item34 = new Item("norahlegs", "norahlegs");
			item34.Name.English("Shieldmaiden's Skirt");
			item34.Description.English("Leather boots and multiple layers of hardy linen skirts.");
			item34.Crafting.Add(CraftingTable.Forge, 3);
			item34.MaximumRequiredStationLevel = 7;
			item34.RequiredItems.Add("Iron", 10);
			item34.RequiredItems.Add("LinenThread", 25);
			item34.RequiredItems.Add("JuteRed", 5);
			item34.RequiredUpgradeItems.Add("Iron", 5);
			item34.RequiredUpgradeItems.Add("LeatherScraps", 5);
			item34.CraftAmount = 1;
			Item item35 = new Item("norahhelm", "norahhelm");
			item35.Name.English("Shieldmaiden's Headdress");
			item35.Description.English("There is some mysticism about these earrings and band, protecting the wearer.");
			item35.Crafting.Add(CraftingTable.Forge, 3);
			item35.MaximumRequiredStationLevel = 7;
			item35.RequiredItems.Add("Iron", 10);
			item35.RequiredItems.Add("LinenThread", 25);
			item35.RequiredItems.Add("Coins", 300);
			item35.RequiredUpgradeItems.Add("Iron", 5);
			item35.RequiredUpgradeItems.Add("Coins", 50);
			item35.CraftAmount = 1;
			Item item36 = new Item("norahhelmalt", "norahhelmalt");
			item36.Name.English("Shieldmaiden's Hood");
			item36.Description.English("A warm fur hood, from under which your eyes glow keenly.");
			item36.Crafting.Add(CraftingTable.Forge, 3);
			item36.MaximumRequiredStationLevel = 7;
			item36.RequiredItems.Add("WolfHairBundle", 10);
			item36.RequiredItems.Add("LinenThread", 25);
			item36.RequiredItems.Add("TrophyGreydwarfShaman", 5);
			item36.RequiredUpgradeItems.Add("Iron", 5);
			item36.RequiredUpgradeItems.Add("LinenThread", 5);
			item36.CraftAmount = 1;
			Item item37 = new Item("sven", "sven");
			item37.Name.English("Sven's Helm");
			item37.Description.English("Sven dedicated his life to the betterment of his kin. As a gift, the Dragon Queen looked on him with great favour.");
			item37.Crafting.Add(CraftingTable.Forge, 4);
			item37.MaximumRequiredStationLevel = 7;
			item37.RequiredItems.Add("DragonTear", 5);
			item37.RequiredItems.Add("Silver", 40);
			item37.RequiredItems.Add("Bronze", 30);
			item37.RequiredUpgradeItems.Add("Silver", 20);
			item37.RequiredUpgradeItems.Add("Bronze", 10);
			item37.CraftAmount = 1;
			Item item38 = new Item("svenchest", "svenchest");
			item38.Name.English("Ornate Silver Armor");
			item38.Description.English("It so beautifully made and light that it will not slow its wearer down, and will protect even an old viking from the vicious world.");
			item38.Crafting.Add(CraftingTable.Forge, 4);
			item38.MaximumRequiredStationLevel = 7;
			item38.RequiredItems.Add("LoxPelt", 10);
			item38.RequiredItems.Add("Silver", 40);
			item38.RequiredItems.Add("Bronze", 30);
			item38.RequiredUpgradeItems.Add("Silver", 20);
			item38.RequiredUpgradeItems.Add("Bronze", 10);
			item38.CraftAmount = 1;
			Item item39 = new Item("svenlegs", "svenlegs");
			item39.Name.English("Kilted Silver Armor");
			item39.Description.English("Silver plated leg guards. They were forged much later, in a style meant to compliment the helmet of a mythical hero.");
			item39.Crafting.Add(CraftingTable.Forge, 4);
			item39.MaximumRequiredStationLevel = 7;
			item39.RequiredItems.Add("LinenThread", 40);
			item39.RequiredItems.Add("Silver", 40);
			item39.RequiredItems.Add("Bronze", 30);
			item39.RequiredUpgradeItems.Add("Silver", 15);
			item39.RequiredUpgradeItems.Add("LinenThread", 5);
			item39.CraftAmount = 1;
			Item item40 = new Item("bphelm", "bphelm");
			item40.Name.English("Blackmetal Greathelm");
			item40.Description.English("A heavily visored greathelm adorned by large horns.");
			item40.Crafting.Add(CraftingTable.Forge, 4);
			item40.MaximumRequiredStationLevel = 7;
			item40.RequiredItems.Add("BlackMetal", 20);
			item40.RequiredItems.Add("TrophyGoblinBrute", 1);
			item40.RequiredItems.Add("WitheredBone", 5);
			item40.RequiredUpgradeItems.Add("WitheredBone", 3);
			item40.RequiredUpgradeItems.Add("BlackMetal", 5);
			item40.CraftAmount = 1;
			Item item41 = new Item("bpchest", "bpchest");
			item41.Name.English("Blackmetal Breastplate");
			item41.Description.English("Plate armor made of black metal. Somewhat crude in construction.");
			item41.Crafting.Add(CraftingTable.Forge, 4);
			item41.MaximumRequiredStationLevel = 7;
			item41.RequiredItems.Add("BlackMetal", 20);
			item41.RequiredItems.Add("Silver", 5);
			item41.RequiredItems.Add("JuteRed", 5);
			item41.RequiredUpgradeItems.Add("Silver", 3);
			item41.RequiredUpgradeItems.Add("BlackMetal", 5);
			item41.CraftAmount = 1;
			Item item42 = new Item("bplegs", "bplegs");
			item42.Name.English("Blackmetal Legguards");
			item42.Description.English("Black metal legguards, perfect for chasing down Fuling.");
			item42.Crafting.Add(CraftingTable.Forge, 4);
			item42.MaximumRequiredStationLevel = 7;
			item42.RequiredItems.Add("Iron", 20);
			item42.RequiredItems.Add("Silver", 5);
			item42.RequiredItems.Add("JuteRed", 5);
			item42.RequiredUpgradeItems.Add("Silver", 3);
			item42.RequiredUpgradeItems.Add("BlackMetal", 5);
			item42.CraftAmount = 1;
			Item item43 = new Item("ss_lightwraithhelm", "ss_lightwraithhelm");
			item43.Name.English("Hood of Shadows");
			item43.Description.English("A heavy hood of black material.");
			item43.Crafting.Add(CraftingTable.Workbench, 2);
			item43.MaximumRequiredStationLevel = 7;
			item43.RequiredItems.Add("TrophyWraith", 1);
			item43.RequiredItems.Add("Ectoplasm", 5);
			item43.RequiredItems.Add("BjornHide", 10);
			item43.RequiredItems.Add("Coal", 10);
			item43.RequiredUpgradeItems.Add("TrophyWraith", 1);
			item43.RequiredUpgradeItems.Add("Iron", 5);
			item43.CraftAmount = 1;
			Item item44 = new Item("ss_lightwraith", "ss_lightwraith");
			item44.Name.English("Wraps of Shadows");
			item44.Description.English("Rags which seem to float with a life of their own.");
			item44.Crafting.Add(CraftingTable.Workbench, 2);
			item44.MaximumRequiredStationLevel = 7;
			item44.RequiredItems.Add("TrophyWraith", 1);
			item44.RequiredItems.Add("Ectoplasm", 5);
			item44.RequiredItems.Add("BjornHide", 10);
			item44.RequiredItems.Add("Chain", 10);
			item44.RequiredUpgradeItems.Add("TrophyWraith", 1);
			item44.RequiredUpgradeItems.Add("Chain", 3);
			item44.CraftAmount = 1;
			Item item45 = new Item("ss_lightwraith_legs", "ss_lightwraith_legs");
			item45.Name.English("Skirt of Shadows");
			item45.Description.English("An ethereal black skirt to rule them all.");
			item45.Crafting.Add(CraftingTable.Workbench, 2);
			item45.MaximumRequiredStationLevel = 7;
			item45.RequiredItems.Add("TrophyWraith", 1);
			item45.RequiredItems.Add("Ectoplasm", 5);
			item45.RequiredItems.Add("BjornHide", 10);
			item45.RequiredItems.Add("BarrelRings", 9);
			item45.RequiredUpgradeItems.Add("TrophyWraith", 1);
			item45.RequiredUpgradeItems.Add("BarrelRings", 3);
			item45.CraftAmount = 1;
			Item item46 = new Item("ss_cape_lightwraith", "ss_cape_lightwraith");
			item46.Name.English("Shawl of Shadows");
			item46.Description.English("A heavy black cloak which drifts between your fingers, chilling them as you try in vain to grasp it.");
			item46.Crafting.Add(CraftingTable.Workbench, 2);
			item46.MaximumRequiredStationLevel = 7;
			item46.RequiredItems.Add("TrophyWraith", 1);
			item46.RequiredItems.Add("Ectoplasm", 5);
			item46.RequiredItems.Add("BjornHide", 12);
			item46.RequiredItems.Add("Coal", 20);
			item46.RequiredUpgradeItems.Add("TrophyWraith", 2);
			item46.RequiredUpgradeItems.Add("Ectoplasm", 5);
			item46.CraftAmount = 1;
			Item item47 = new Item("bonetitanhelm", "bonetitanhelm");
			item47.Name.English("Bone-Titan Helm");
			item47.Description.English("Your lifeless eyes glow dimly behind a jagged and horrifying visor of bone.");
			item47.Crafting.Add(CraftingTable.Forge, 2);
			item47.MaximumRequiredStationLevel = 7;
			item47.RequiredItems.Add("Iron", 30);
			item47.RequiredItems.Add("TrophyDraugrElite", 3);
			item47.RequiredItems.Add("WitheredBone", 20);
			item47.RequiredItems.Add("Guck", 10);
			item47.RequiredUpgradeItems.Add("WitheredBone", 3);
			item47.RequiredUpgradeItems.Add("Iron", 5);
			item47.CraftAmount = 1;
			Item item48 = new Item("bonetitanchest", "bonetitanchest");
			item48.Name.English("Bone-Titan Ribcage");
			item48.Description.English("Putrid rags and bone cling to what was once an iron breastplate.");
			item48.Crafting.Add(CraftingTable.Forge, 2);
			item48.MaximumRequiredStationLevel = 7;
			item48.RequiredItems.Add("Iron", 30);
			item48.RequiredItems.Add("TrophyDraugr", 5);
			item48.RequiredItems.Add("WitheredBone", 20);
			item48.RequiredItems.Add("Guck", 10);
			item48.RequiredUpgradeItems.Add("WitheredBone", 3);
			item48.RequiredUpgradeItems.Add("Iron", 5);
			item48.CraftAmount = 1;
			Item item49 = new Item("bonetitanlegs", "bonetitanlegs");
			item49.Name.English("Bone-Titan Rags");
			item49.Description.English("A skirt of dead flesh hangs at your waist.");
			item49.Crafting.Add(CraftingTable.Forge, 2);
			item49.MaximumRequiredStationLevel = 7;
			item49.RequiredItems.Add("Iron", 30);
			item49.RequiredItems.Add("TrophyBlob", 5);
			item49.RequiredItems.Add("WitheredBone", 10);
			item49.RequiredItems.Add("Guck", 10);
			item49.RequiredUpgradeItems.Add("WitheredBone", 3);
			item49.RequiredUpgradeItems.Add("Iron", 5);
			item49.CraftAmount = 1;
			Item item50 = new Item("bearhelm", "bearhelm");
			item50.Name.English("Dwarven Steel Casque");
			item50.Description.English("What this casque lacks in visibility it makes up for by being essentially impenetrable.");
			item50.Crafting.Add(CraftingTable.Forge, 4);
			item50.MaximumRequiredStationLevel = 7;
			item50.RequiredItems.Add("BlackMetal", 30);
			item50.RequiredItems.Add("Copper", 20);
			item50.RequiredItems.Add("JuteRed", 5);
			item50.RequiredUpgradeItems.Add("Copper", 5);
			item50.RequiredUpgradeItems.Add("BlackMetal", 10);
			item50.CraftAmount = 1;
			Item item51 = new Item("bearchest", "bearchest");
			item51.Name.English("Dwarven Steel Armor");
			item51.Description.English("An enormous chainmail surcoat and hammered Dwarven Steel plates. Someone's been eating their veggies.");
			item51.Crafting.Add(CraftingTable.Forge, 4);
			item51.MaximumRequiredStationLevel = 7;
			item51.RequiredItems.Add("BlackMetal", 30);
			item51.RequiredItems.Add("Chain", 20);
			item51.RequiredItems.Add("Copper", 20);
			item51.RequiredUpgradeItems.Add("Copper", 5);
			item51.RequiredUpgradeItems.Add("BlackMetal", 10);
			item51.CraftAmount = 1;
			Item item52 = new Item("bearlegs", "bearlegs");
			item52.Name.English("Dwarven Steel Boots");
			item52.Description.English("The elusive Dwarf-folk somehow alloyed blackmetal and copper, making a metal stronger than most.");
			item52.Crafting.Add(CraftingTable.Forge, 4);
			item52.MaximumRequiredStationLevel = 7;
			item52.RequiredItems.Add("BlackMetal", 30);
			item52.RequiredItems.Add("Copper", 20);
			item52.RequiredItems.Add("JuteRed", 5);
			item52.RequiredUpgradeItems.Add("Copper", 5);
			item52.RequiredUpgradeItems.Add("BlackMetal", 10);
			item52.CraftAmount = 1;
			Item item53 = new Item("loxhunthelm", "loxhunthelm");
			item53.Name.English("Golden Lox Mask");
			item53.Description.English("Some creative liberties have been used here - not least the presence of two tongues - to strike fear into your enemies.");
			item53.Crafting.Add(CraftingTable.Forge, 4);
			item53.MaximumRequiredStationLevel = 7;
			item53.RequiredItems.Add("Coins", 950);
			item53.RequiredItems.Add("BlackMetal", 20);
			item53.RequiredItems.Add("TrophyLox", 2);
			item53.RequiredUpgradeItems.Add("Coins", 100);
			item53.RequiredUpgradeItems.Add("BlackMetal", 10);
			item53.CraftAmount = 1;
			Item item54 = new Item("loxhuntchest", "loxhuntchest");
			item54.Name.English("Loxgol Armor");
			item54.Description.English("Heavy armor embodying the bulk and power of the Lox, with an Eastern flare.");
			item54.Crafting.Add(CraftingTable.Forge, 4);
			item54.MaximumRequiredStationLevel = 7;
			item54.RequiredItems.Add("Coins", 950);
			item54.RequiredItems.Add("BlackMetal", 20);
			item54.RequiredItems.Add("JuteRed", 20);
			item54.RequiredItems.Add("TrophyGoblinShaman", 1);
			item54.RequiredUpgradeItems.Add("Coins", 100);
			item54.RequiredUpgradeItems.Add("BlackMetal", 10);
			item54.CraftAmount = 1;
			Item item55 = new Item("loxhuntlegs", "loxhuntlegs");
			item55.Name.English("Loxgol Leggings");
			item55.Description.English("Ornamental skirts and wicked black scale-mail.");
			item55.Crafting.Add(CraftingTable.Forge, 4);
			item55.MaximumRequiredStationLevel = 7;
			item55.RequiredItems.Add("Coins", 950);
			item55.RequiredItems.Add("BlackMetal", 20);
			item55.RequiredItems.Add("JuteRed", 20);
			item55.RequiredItems.Add("TrophyGoblinShaman", 1);
			item55.RequiredUpgradeItems.Add("Coins", 100);
			item55.RequiredUpgradeItems.Add("BlackMetal", 10);
			item55.CraftAmount = 1;
			Item item56 = new Item("ss_barbhelm", "ss_barbhelm");
			item56.Name.English("Jawbone Casque");
			item56.Description.English("The massive jaws of an enormous ogre stand out as testament to your battle prowess. ");
			item56.Crafting.Add(CraftingTable.Forge, 4);
			item56.MaximumRequiredStationLevel = 7;
			item56.RequiredItems.Add("Silver", 20);
			item56.RequiredItems.Add("BlackMetal", 20);
			item56.RequiredItems.Add("WolfFang", 2);
			item56.RequiredItems.Add("TrophyGoblinBruteBrosBrute", 1);
			item56.RequiredUpgradeItems.Add("Silver", 5);
			item56.RequiredUpgradeItems.Add("BlackMetal", 10);
			item56.CraftAmount = 1;
			Item item57 = new Item("ss_barbchest", "ss_barbchest");
			item57.Name.English("Barbarian Pauldron");
			item57.Description.English("A heavy blue shawl and single ornate pauldron sit lightly on your tattooed muscles. Less is more when the bloodmist descends.");
			item57.Crafting.Add(CraftingTable.Forge, 4);
			item57.MaximumRequiredStationLevel = 7;
			item57.RequiredItems.Add("Silver", 20);
			item57.RequiredItems.Add("BlackMetal", 20);
			item57.RequiredItems.Add("Tar", 15);
			item57.RequiredItems.Add("TrophyGoblinShaman", 1);
			item57.RequiredUpgradeItems.Add("Tar", 10);
			item57.RequiredUpgradeItems.Add("BlackMetal", 10);
			item57.CraftAmount = 1;
			Item item58 = new Item("ss_barblegs", "ss_barblegs");
			item58.Name.English("Barbarian Belt");
			item58.Description.English("A drake scale skirt and heavy metal belt. Light and cheerful boots.");
			item58.Crafting.Add(CraftingTable.Forge, 4);
			item58.MaximumRequiredStationLevel = 7;
			item58.RequiredItems.Add("Silver", 20);
			item58.RequiredItems.Add("BlackMetal", 20);
			item58.RequiredItems.Add("LoxPelt", 20);
			item58.RequiredItems.Add("TrophyHatchling", 5);
			item58.RequiredUpgradeItems.Add("LoxPelt", 100);
			item58.RequiredUpgradeItems.Add("BlackMetal", 10);
			item58.CraftAmount = 1;
			Item item59 = new Item("obswolfhelm", "obswolfhelm");
			item59.Name.English("Heavy Fenrir Helm");
			item59.Description.English("An infused obsidian mask, resembling a great wolf. You are the hunter now.");
			item59.Crafting.Add(CraftingTable.BlackForge, 1);
			item59.MaximumRequiredStationLevel = 7;
			item59.RequiredItems.Add("BlackMetal", 30);
			item59.RequiredItems.Add("Obsidian", 30);
			item59.RequiredItems.Add("TrophyUlv", 5);
			item59.RequiredItems.Add("Ruby", 1);
			item59.RequiredUpgradeItems.Add("BlackMetal", 10);
			item59.RequiredUpgradeItems.Add("Obsidian", 10);
			item59.RequiredUpgradeItems.Add("WolfHairBundle", 5);
			item59.CraftAmount = 1;
			Item item60 = new Item("obswolfchest", "obswolfchest");
			item60.Name.English("Heavy Fenrir Armor");
			item60.Description.English("A beastial set of armor made from blood infused obsidian and thick, shaggy fur.");
			item60.Crafting.Add(CraftingTable.BlackForge, 1);
			item60.MaximumRequiredStationLevel = 7;
			item60.RequiredItems.Add("BlackMetal", 30);
			item60.RequiredItems.Add("Obsidian", 30);
			item60.RequiredItems.Add("WolfHairBundle", 20);
			item60.RequiredItems.Add("SilverNecklace", 1);
			item60.RequiredUpgradeItems.Add("BlackMetal", 10);
			item60.RequiredUpgradeItems.Add("Obsidian", 10);
			item60.RequiredUpgradeItems.Add("WolfHairBundle", 5);
			item60.CraftAmount = 1;
			Item item61 = new Item("obswolflegs", "obswolflegs");
			item61.Name.English("Heavy Fenrir Boots");
			item61.Description.English("The blood of Fulings strengthens obsidian, but also dulls its glow in the moonlight. Sneaky sneak.");
			item61.Crafting.Add(CraftingTable.BlackForge, 1);
			item61.MaximumRequiredStationLevel = 7;
			item61.RequiredItems.Add("BlackMetal", 30);
			item61.RequiredItems.Add("Obsidian", 30);
			item61.RequiredItems.Add("WolfHairBundle", 20);
			item61.RequiredItems.Add("JuteBlue", 10);
			item61.RequiredUpgradeItems.Add("BlackMetal", 10);
			item61.RequiredUpgradeItems.Add("Obsidian", 10);
			item61.CraftAmount = 1;
			Item item62 = new Item("heavycarhelm", "heavycarhelm");
			item62.Name.English("Twelve-eyed Helm");
			item62.Description.English("An insectoid husk which refracts and enhances your vision.");
			item62.Crafting.Add(CraftingTable.BlackForge, 1);
			item62.MaximumRequiredStationLevel = 7;
			item62.RequiredItems.Add("Carapace", 20);
			item62.RequiredItems.Add("Iron", 25);
			item62.RequiredItems.Add("TrophyGjall", 3);
			item62.RequiredItems.Add("Mandible", 4);
			item62.RequiredUpgradeItems.Add("Mandible", 10);
			item62.RequiredUpgradeItems.Add("TrophyGjall", 1);
			item62.CraftAmount = 1;
			Item item63 = new Item("heavycarchest", "heavycarchest");
			item63.Name.English("Gjall-hunter Harness");
			item63.Description.English("Through countless days lost in the mist, you have adorned a simple iron breastplate with all manner of insectoid remains, creating an outlandish, alien armor. Massive mandible spikes give some protection from Gjall and Ticks from above.");
			item63.Crafting.Add(CraftingTable.BlackForge, 1);
			item63.MaximumRequiredStationLevel = 7;
			item63.RequiredItems.Add("Carapace", 20);
			item63.RequiredItems.Add("Iron", 30);
			item63.RequiredItems.Add("TrophySkeleton", 1);
			item63.RequiredItems.Add("Mandible", 15);
			item63.RequiredUpgradeItems.Add("Carapace", 10);
			item63.RequiredUpgradeItems.Add("Mandible", 5);
			item63.CraftAmount = 1;
			Item item64 = new Item("heavycarlegs", "heavycarlegs");
			item64.Name.English("Gjall-hunter Legguards");
			item64.Description.English("Chainmail leggings have been further strengthened with thick carapace shells and mandibles, cut from your many foes.");
			item64.Crafting.Add(CraftingTable.BlackForge, 1);
			item64.MaximumRequiredStationLevel = 7;
			item64.RequiredItems.Add("Carapace", 20);
			item64.RequiredItems.Add("Iron", 20);
			item64.RequiredItems.Add("TrophySkeleton", 1);
			item64.RequiredItems.Add("Mandible", 10);
			item64.RequiredUpgradeItems.Add("Carapace", 10);
			item64.RequiredUpgradeItems.Add("Mandible", 5);
			item64.CraftAmount = 1;
			Item item65 = new Item("frostmagehelm", "frostmagehelm");
			item65.Name.English("Crystalline Mask");
			item65.Description.English("A hooded mask of frozen crystal.");
			item65.Crafting.Add(CraftingTable.MageTable, 1);
			item65.MaximumRequiredStationLevel = 7;
			item65.RequiredItems.Add("Crystal", 30);
			item65.RequiredItems.Add("Eitr", 20);
			item65.RequiredItems.Add("JuteBlue", 20);
			item65.RequiredItems.Add("Feathers", 20);
			item65.RequiredUpgradeItems.Add("Crystal", 10);
			item65.RequiredUpgradeItems.Add("Eitr", 10);
			item65.CraftAmount = 1;
			Item item66 = new Item("frostmagechest", "frostmagechest");
			item66.Name.English("Hrímþurs Robe");
			item66.Description.English("Embroided blue robes and a gem-set necklace. Wonderful stuff, except your right hand has succumbed to frost magic...");
			item66.Crafting.Add(CraftingTable.MageTable, 1);
			item66.MaximumRequiredStationLevel = 7;
			item66.RequiredItems.Add("Crystal", 30);
			item66.RequiredItems.Add("Eitr", 20);
			item66.RequiredItems.Add("JuteBlue", 20);
			item66.RequiredItems.Add("Feathers", 20);
			item66.RequiredUpgradeItems.Add("Crystal", 10);
			item66.RequiredUpgradeItems.Add("Eitr", 10);
			item66.CraftAmount = 1;
			Item item67 = new Item("frostmagelegs", "frostmagelegs");
			item67.Name.English("Hrímþurs Trousers");
			item67.Description.English("Sturdy boots with golden trim.");
			item67.Crafting.Add(CraftingTable.MageTable, 1);
			item67.MaximumRequiredStationLevel = 7;
			item67.RequiredItems.Add("Crystal", 30);
			item67.RequiredItems.Add("Eitr", 20);
			item67.RequiredItems.Add("JuteBlue", 20);
			item67.RequiredItems.Add("Feathers", 20);
			item67.RequiredUpgradeItems.Add("Crystal", 10);
			item67.RequiredUpgradeItems.Add("Eitr", 10);
			item67.CraftAmount = 1;
			Item item68 = new Item("druidhelm", "druidhelm");
			item68.Name.English("Crown of the Forest");
			item68.Description.English("A silver mask adorned by great horns of beast and twigs of Yggdrasil.");
			item68.Crafting.Add(CraftingTable.MageTable, 1);
			item68.MaximumRequiredStationLevel = 7;
			item68.RequiredItems.Add("Silver", 30);
			item68.RequiredItems.Add("WitheredBone", 20);
			item68.RequiredItems.Add("Sap", 20);
			item68.RequiredItems.Add("YggdrasilWood", 20);
			item68.RequiredUpgradeItems.Add("Silver", 10);
			item68.RequiredUpgradeItems.Add("Sap", 5);
			item68.CraftAmount = 1;
			Item item69 = new Item("druidchest", "druidchest");
			item69.Name.English("Druid Furs");
			item69.Description.English("A hulking shawl of lox fur and the skull of a great red wolf on your shoulders, overtop Hare scalemail and a green linen tabard. Carved rune-wood hanging from your belt, as well as inscribed in your buckles.");
			item69.Crafting.Add(CraftingTable.MageTable, 1);
			item69.MaximumRequiredStationLevel = 7;
			item69.RequiredItems.Add("Iron", 30);
			item69.RequiredItems.Add("LoxPelt", 40);
			item69.RequiredItems.Add("ScaleHide", 30);
			item69.RequiredItems.Add("LinenThread", 20);
			item69.RequiredUpgradeItems.Add("Iron", 10);
			item69.RequiredUpgradeItems.Add("LoxPelt", 10);
			item69.CraftAmount = 1;
			Item item70 = new Item("druidlegs", "druidlegs");
			item70.Name.English("Druid Leggings");
			item70.Description.English("Simple but finely crafted leather boots, made warmer by a lox fur lining. A hare scalemail skirt, and the lower part of your feathery-green tabard.");
			item70.Crafting.Add(CraftingTable.MageTable, 1);
			item70.MaximumRequiredStationLevel = 7;
			item70.RequiredItems.Add("LeatherScraps", 40);
			item70.RequiredItems.Add("LoxPelt", 10);
			item70.RequiredItems.Add("ScaleHide", 20);
			item70.RequiredItems.Add("LinenThread", 20);
			item70.RequiredUpgradeItems.Add("ScaleHide", 10);
			item70.RequiredUpgradeItems.Add("LinenThread", 10);
			item70.CraftAmount = 1;
			Item item71 = new Item("runeknighthelm", "runeknighthelm");
			item71.Name.English("Rune Knight Helm");
			item71.Description.English("Blue Eitr flames erupt from the visor and pulse through the metal. Your mortal eyes may have been blinded, but you see more now.");
			item71.Crafting.Add(CraftingTable.BlackForge, 1);
			item71.MaximumRequiredStationLevel = 7;
			item71.RequiredItems.Add("knighthelm", 1);
			item71.RequiredItems.Add("BlackMetal", 30);
			item71.RequiredItems.Add("Eitr", 30);
			item71.RequiredItems.Add("BlackCore", 2);
			item71.RequiredUpgradeItems.Add("BlackMetal", 15);
			item71.RequiredUpgradeItems.Add("Eitr", 10);
			item71.CraftAmount = 1;
			Item item72 = new Item("runeknightchest", "runeknightchest");
			item72.Name.English("Rune Knight Armor");
			item72.Description.English("Fissures of blue Eitr course across this wretched platemail, coalescing in places to form runes of protection.");
			item72.Crafting.Add(CraftingTable.BlackForge, 1);
			item72.MaximumRequiredStationLevel = 7;
			item72.RequiredItems.Add("knightchest", 1);
			item72.RequiredItems.Add("BlackMetal", 30);
			item72.RequiredItems.Add("Eitr", 30);
			item72.RequiredItems.Add("BlackCore", 2);
			item72.RequiredUpgradeItems.Add("BlackMetal", 15);
			item72.RequiredUpgradeItems.Add("Eitr", 10);
			item72.CraftAmount = 1;
			Item item73 = new Item("runeknightlegs", "runeknightlegs");
			item73.Name.English("Rune Knight Legplates");
			item73.Description.English("The plate metal is charred black by Eitr, which still flickers through it.");
			item73.Crafting.Add(CraftingTable.BlackForge, 1);
			item73.MaximumRequiredStationLevel = 7;
			item73.RequiredItems.Add("knightlegs", 1);
			item73.RequiredItems.Add("BlackMetal", 30);
			item73.RequiredItems.Add("Eitr", 30);
			item73.RequiredItems.Add("BlackCore", 2);
			item73.RequiredUpgradeItems.Add("BlackMetal", 15);
			item73.RequiredUpgradeItems.Add("Eitr", 10);
			item73.CraftAmount = 1;
			Item item74 = new Item("bearhelm2", "bearhelm2");
			item74.Name.English("Jötunn-Bone Casque");
			item74.Description.English("A vicious black war-casque, worn by those renowned for their tremendous and overwhelming strength. It denounces you as a harbinger of death.");
			item74.Crafting.Add(CraftingTable.BlackForge, 1);
			item74.MaximumRequiredStationLevel = 7;
			item74.RequiredItems.Add("bearhelm", 1);
			item74.RequiredItems.Add("BlackMarble", 20);
			item74.RequiredItems.Add("JuteBlue", 10);
			item74.RequiredItems.Add("TrophySeekerBrute", 1);
			item74.RequiredUpgradeItems.Add("JuteBlue", 5);
			item74.RequiredUpgradeItems.Add("BlackMarble", 10);
			item74.CraftAmount = 1;
			Item item75 = new Item("bearchest2", "bearchest2");
			item75.Name.English("Jötunn-Bone Armor");
			item75.Description.English("Exceptionally heavy and massive armor. You do not go places quickly, but when you get there your foes sure know about it.");
			item75.Crafting.Add(CraftingTable.BlackForge, 1);
			item75.MaximumRequiredStationLevel = 7;
			item75.RequiredItems.Add("bearchest", 1);
			item75.RequiredItems.Add("BlackMarble", 20);
			item75.RequiredItems.Add("Chain", 20);
			item75.RequiredUpgradeItems.Add("Chain", 5);
			item75.RequiredUpgradeItems.Add("BlackMarble", 10);
			item75.CraftAmount = 1;
			Item item76 = new Item("bearlegs2", "bearlegs2");
			item76.Name.English("Jötunn-Bone Boots");
			item76.Description.English("What is stronger than Dwarven Steel? The bones of the Jötunn, that's what.");
			item76.Crafting.Add(CraftingTable.BlackForge, 1);
			item76.MaximumRequiredStationLevel = 7;
			item76.RequiredItems.Add("bearlegs", 1);
			item76.RequiredItems.Add("BlackMarble", 20);
			item76.RequiredItems.Add("JuteBlue", 10);
			item76.RequiredUpgradeItems.Add("JuteBlue", 5);
			item76.RequiredUpgradeItems.Add("BlackMarble", 10);
			item76.CraftAmount = 1;
			Item item77 = new Item("samuraihelm", "samuraihelm");
			item77.Name.English("Seekurai Mask");
			item77.Description.English("The fanged and horned mask of a blademaster.");
			item77.Crafting.Add(CraftingTable.BlackForge, 2);
			item77.MaximumRequiredStationLevel = 7;
			item77.RequiredItems.Add("Copper", 30);
			item77.RequiredItems.Add("BlackMetal", 30);
			item77.RequiredItems.Add("YggdrasilWood", 30);
			item77.RequiredItems.Add("TrophySeekerBrute", 1);
			item77.RequiredUpgradeItems.Add("BlackMetal", 10);
			item77.RequiredUpgradeItems.Add("TrophySeekerBrute", 1);
			item77.CraftAmount = 1;
			Item item78 = new Item("samuraichest", "samuraichest");
			item78.Name.English("Seekurai Wings");
			item78.Description.English("Flexible and strong armor adorned by imposing Seeker wings.");
			item78.Crafting.Add(CraftingTable.BlackForge, 2);
			item78.MaximumRequiredStationLevel = 7;
			item78.RequiredItems.Add("Copper", 30);
			item78.RequiredItems.Add("BlackMetal", 30);
			item78.RequiredItems.Add("YggdrasilWood", 30);
			item78.RequiredItems.Add("TrophySeeker", 6);
			item78.RequiredUpgradeItems.Add("Blackmetal", 10);
			item78.RequiredUpgradeItems.Add("TrophySeeker", 1);
			item78.CraftAmount = 1;
			Item item79 = new Item("samurailegs", "samurailegs");
			item79.Name.English("Seekurai Claws");
			item79.Description.English("Lightweight and tensile materials aid your movement across difficult terrain.");
			item79.Crafting.Add(CraftingTable.BlackForge, 2);
			item79.MaximumRequiredStationLevel = 7;
			item79.RequiredItems.Add("Copper", 30);
			item79.RequiredItems.Add("BlackMetal", 30);
			item79.RequiredItems.Add("Yggdrasil", 30);
			item79.RequiredItems.Add("JuteBlue", 15);
			item79.RequiredUpgradeItems.Add("Blackmetal", 10);
			item79.RequiredUpgradeItems.Add("JuteBlue", 5);
			item79.CraftAmount = 1;
			Item item80 = new Item("valkhelm", "valkhelm");
			item80.Name.English("Aesir Helm");
			item80.Description.English("A golden crown for the Forsaken slayer. Whose realm is this, again?");
			item80.Crafting.Add(CraftingTable.BlackForge, 1);
			item80.MaximumRequiredStationLevel = 7;
			item80.RequiredItems.Add("BlackMetal", 30);
			item80.RequiredItems.Add("DvergrKeyFragment", 5);
			item80.RequiredItems.Add("Eitr", 30);
			item80.RequiredItems.Add("TrophySeekerQueen", 1);
			item80.RequiredUpgradeItems.Add("BlackMetal", 15);
			item80.RequiredUpgradeItems.Add("Eitr", 10);
			item80.CraftAmount = 1;
			Item item81 = new Item("valkchest", "valkchest");
			item81.Name.English("Aesir Chestplate");
			item81.Description.English("A splendid, winged and golden breastplate, worn by great leaders.");
			item81.Crafting.Add(CraftingTable.BlackForge, 1);
			item81.MaximumRequiredStationLevel = 7;
			item81.RequiredItems.Add("BlackMetal", 30);
			item81.RequiredItems.Add("DvergrKeyFragment", 5);
			item81.RequiredItems.Add("Eitr", 30);
			item81.RequiredItems.Add("TrophyGoblinKing", 1);
			item81.RequiredUpgradeItems.Add("BlackMetal", 15);
			item81.RequiredUpgradeItems.Add("Eitr", 10);
			item81.CraftAmount = 1;
			Item item82 = new Item("valklegs", "valklegs");
			item82.Name.English("Aesir Legplates");
			item82.Description.English("Winged boots and a scaled skirt, fit for those who walk on clouds.");
			item82.Crafting.Add(CraftingTable.BlackForge, 1);
			item82.MaximumRequiredStationLevel = 7;
			item82.RequiredItems.Add("BlackMetal", 30);
			item82.RequiredItems.Add("DvergrKeyFragment", 5);
			item82.RequiredItems.Add("Eitr", 30);
			item82.RequiredItems.Add("ScaleHide", 20);
			item82.RequiredUpgradeItems.Add("BlackMetal", 15);
			item82.RequiredUpgradeItems.Add("Eitr", 10);
			item82.CraftAmount = 1;
			Item item83 = new Item("warlordhelm", "warlordhelm");
			item83.Name.English("Warlord's Greathelm");
			item83.Description.English("A horned greathelm clasps your skull, and your eyes burn.");
			item83.Crafting.Add(CraftingTable.BlackForge, 1);
			item83.MaximumRequiredStationLevel = 7;
			item83.RequiredItems.Add("FlametalNew", 15);
			item83.RequiredItems.Add("BlackMarble", 15);
			item83.RequiredItems.Add("Softtissue", 15);
			item83.RequiredItems.Add("TrophyGreydwarfBrute", 1);
			item83.RequiredUpgradeItems.Add("FlametalNew", 5);
			item83.RequiredUpgradeItems.Add("BlackMarble", 10);
			item83.CraftAmount = 1;
			Item item84 = new Item("warlordchest", "warlordchest");
			item84.Name.English("Warlord's Spaulder");
			item84.Description.English("The blueish metal is wicked and twisted, seething as if alive. Great bone horns adorn the armor.");
			item84.Crafting.Add(CraftingTable.BlackForge, 1);
			item84.MaximumRequiredStationLevel = 7;
			item84.RequiredItems.Add("FlametalNew", 15);
			item84.RequiredItems.Add("BlackMarble", 15);
			item84.RequiredItems.Add("Softtissue", 15);
			item84.RequiredItems.Add("Chain", 15);
			item84.RequiredUpgradeItems.Add("FlametalNew", 5);
			item84.RequiredUpgradeItems.Add("BlackMarble", 10);
			item84.CraftAmount = 1;
			Item item85 = new Item("warlordlegs", "warlordlegs");
			item85.Name.English("Warlord's Battleboots");
			item85.Description.English("Vertebrae and jawbones cling to you, offering a gruesome protection.");
			item85.Crafting.Add(CraftingTable.BlackForge, 1);
			item85.MaximumRequiredStationLevel = 7;
			item85.RequiredItems.Add("FlametalNew", 15);
			item85.RequiredItems.Add("BlackMarble", 15);
			item85.RequiredItems.Add("Softtissue", 15);
			item85.RequiredItems.Add("LoxPelt", 15);
			item85.RequiredUpgradeItems.Add("FlametalNew", 5);
			item85.RequiredUpgradeItems.Add("BlackMarble", 10);
			item85.CraftAmount = 1;
			Item item86 = new Item("ss_wraithhelm", "ss_wraithhelm");
			item86.Name.English("Wraith Mask");
			item86.Description.English("A metal coif and crown with an eerie skull mask.");
			item86.Crafting.Add(CraftingTable.BlackForge, 1);
			item86.MaximumRequiredStationLevel = 7;
			item86.RequiredItems.Add("FlametalNew", 10);
			item86.RequiredItems.Add("BlackMarble", 15);
			item86.RequiredItems.Add("Softtissue", 15);
			item86.RequiredItems.Add("TrophySkeletonHildir", 1);
			item86.RequiredUpgradeItems.Add("FlametalNew", 5);
			item86.RequiredUpgradeItems.Add("BlackMarble", 10);
			item86.CraftAmount = 1;
			Item item87 = new Item("ss_wraithchest", "ss_wraithchest");
			item87.Name.English("Wraith Chest");
			item87.Description.English("Cruel spikes on ornate black plate armor and a red tabard.");
			item87.Crafting.Add(CraftingTable.BlackForge, 1);
			item87.MaximumRequiredStationLevel = 7;
			item87.RequiredItems.Add("FlametalNew", 10);
			item87.RequiredItems.Add("BlackMarble", 15);
			item87.RequiredItems.Add("JuteRed", 15);
			item87.RequiredItems.Add("TrophyGoblinKing", 1);
			item87.RequiredUpgradeItems.Add("FlametalNew", 5);
			item87.RequiredUpgradeItems.Add("BlackMarble", 10);
			item87.CraftAmount = 1;
			Item item88 = new Item("ss_wraithlegs", "ss_wraithlegs");
			item88.Name.English("Wraith Legs");
			item88.Description.English("Spiked dark metal boots. Tamed blackcores hang from your belt, giving your magic a boon.");
			item88.Crafting.Add(CraftingTable.BlackForge, 1);
			item88.MaximumRequiredStationLevel = 7;
			item88.RequiredItems.Add("FlametalNew", 5);
			item88.RequiredItems.Add("BlackMarble", 15);
			item88.RequiredItems.Add("Softtissue", 15);
			item88.RequiredItems.Add("BlackCore", 2);
			item88.RequiredUpgradeItems.Add("FlametalNew", 5);
			item88.RequiredUpgradeItems.Add("BlackMarble", 10);
			item88.CraftAmount = 1;
			Item item89 = new Item("stjudehelm", "stjudehelm");
			item89.Name.English("Finned Greathelm of St. Jude");
			item89.Description.English("Another imposing greathelm, adorned by mighty fins.");
			item89.Crafting.Add(CraftingTable.BlackForge, 1);
			item89.MaximumRequiredStationLevel = 7;
			item89.RequiredItems.Add("bphelm", 1);
			item89.RequiredItems.Add("FlametalNew", 25);
			item89.RequiredItems.Add("Eitr", 15);
			item89.RequiredItems.Add("TrophySerpent", 1);
			item89.RequiredUpgradeItems.Add("FlametalNew", 5);
			item89.RequiredUpgradeItems.Add("Eitr", 5);
			item89.CraftAmount = 1;
			Item item90 = new Item("stjudechest", "stjudechest");
			item90.Name.English("St. Jude Armor");
			item90.Description.English("The smiths of Valheim did not know if their patron saint, Jude, would ever return. This beautiful armor was crafted to celebrate and show thanks.");
			item90.Crafting.Add(CraftingTable.BlackForge, 1);
			item90.MaximumRequiredStationLevel = 7;
			item90.RequiredItems.Add("bpchest", 1);
			item90.RequiredItems.Add("FlametalNew", 25);
			item90.RequiredItems.Add("Eitr", 15);
			item90.RequiredItems.Add("LinenThread", 20);
			item90.RequiredUpgradeItems.Add("FlametalNew", 5);
			item90.RequiredUpgradeItems.Add("Eitr", 5);
			item90.RequiredUpgradeItems.Add("LinenThread", 5);
			item90.CraftAmount = 1;
			Item item91 = new Item("stjudelegs", "stjudelegs");
			item91.Name.English("St. Jude Legguards");
			item91.Description.English("The heat of Flametal has purified the blackmetal, giving it a blue-ish tinge. Its strength is unparalleled.");
			item91.Crafting.Add(CraftingTable.BlackForge, 1);
			item91.MaximumRequiredStationLevel = 7;
			item91.RequiredItems.Add("bplegs", 1);
			item91.RequiredItems.Add("FlametalNew", 25);
			item91.RequiredItems.Add("Eitr", 15);
			item91.RequiredItems.Add("LinenThread", 20);
			item91.RequiredUpgradeItems.Add("FlametalNew", 5);
			item91.RequiredUpgradeItems.Add("Eitr", 5);
			item91.RequiredUpgradeItems.Add("LinenThread", 5);
			item91.CraftAmount = 1;
			Item item92 = new Item("heavybearhelm", "heavybearhelm");
			item92.Name.English("The Unspoken Fear");
			item92.Description.English("A ferocious helmet, styled to represent a massive, terrible beast of fear, power and might.");
			item92.Crafting.Add(CraftingTable.BlackForge, 1);
			item92.MaximumRequiredStationLevel = 7;
			item92.RequiredItems.Add("BlackMetal", 30);
			item92.RequiredItems.Add("FlametalNew", 20);
			item92.RequiredItems.Add("LoxPelt", 15);
			item92.RequiredItems.Add("TrophySeekerBrute", 2);
			item92.RequiredUpgradeItems.Add("Silver", 10);
			item92.RequiredUpgradeItems.Add("FlametalNew", 5);
			item92.CraftAmount = 1;
			Item item93 = new Item("heavybearchest", "heavybearchest");
			item93.Name.English("Ódr Furs");
			item93.Description.English("A hulking shawl of thick furs and heavy plated armor adorned with tusks. The fury emanates from within.");
			item93.Crafting.Add(CraftingTable.BlackForge, 1);
			item93.MaximumRequiredStationLevel = 7;
			item93.RequiredItems.Add("BlackMetal", 30);
			item93.RequiredItems.Add("FlametalNew", 20);
			item93.RequiredItems.Add("LoxPelt", 15);
			item93.RequiredItems.Add("THSwordKrom", 1);
			item93.RequiredUpgradeItems.Add("BlackMetal", 10);
			item93.RequiredUpgradeItems.Add("FlametalNew", 5);
			item93.CraftAmount = 1;
			Item item94 = new Item("heavybearlegs", "heavybearlegs");
			item94.Name.English("Ódr Skirt");
			item94.Description.English("A heavy skirt and belts, with an arsenal of weapons and a great hunting horn hanging from them.");
			item94.Crafting.Add(CraftingTable.BlackForge, 1);
			item94.MaximumRequiredStationLevel = 7;
			item94.RequiredItems.Add("BlackMetal", 30);
			item94.RequiredItems.Add("FlametalNew", 20);
			item94.RequiredItems.Add("LoxPelt", 15);
			item94.RequiredItems.Add("SwordIron", 2);
			item94.RequiredUpgradeItems.Add("BlackMetal", 10);
			item94.RequiredUpgradeItems.Add("FlametalNew", 5);
			item94.CraftAmount = 1;
			Item item95 = new Item("lagihelmalt", "lagihelmalt");
			item95.Name.English("Flame Drake Helm");
			item95.Description.English("You stole this metal from those who worship it, and fashioned it into the visage of a fire wyrm. It will never truly belong to you, though, as the metal itself remembers the Ash.");
			item95.Crafting.Add(CraftingTable.BlackForge, 1);
			item95.MaximumRequiredStationLevel = 7;
			item95.RequiredItems.Add("TrophyDragonQueen", 1);
			item95.RequiredItems.Add("FlametalNew", 30);
			item95.RequiredItems.Add("BlackMetal", 30);
			item95.RequiredUpgradeItems.Add("FlametalNew", 5);
			item95.RequiredUpgradeItems.Add("BlackMetal", 10);
			item95.CraftAmount = 1;
			Item item96 = new Item("lagichest", "lagichest");
			item96.Name.English("Flame Drake Chestpiece");
			item96.Description.English("Thick plates of glowing red metal seem to pulse with a life of their own. Nigh on impenetrable, but only the strongest of warriors can wear it, due to the immense weight.");
			item96.Crafting.Add(CraftingTable.BlackForge, 1);
			item96.MaximumRequiredStationLevel = 7;
			item96.RequiredItems.Add("BlackMetal", 30);
			item96.RequiredItems.Add("FlametalNew", 30);
			item96.RequiredItems.Add("DragonEgg", 5);
			item96.RequiredUpgradeItems.Add("FlametalNew", 5);
			item96.RequiredUpgradeItems.Add("BlackMetal", 10);
			item96.CraftAmount = 1;
			Item item97 = new Item("lagipants", "lagipants");
			item97.Name.English("Flame Drake Leg Armor");
			item97.Description.English("In millennia gone by, folk believed that the world would one day turn to Ash. If they are right, this armor would be useful to have.");
			item97.Crafting.Add(CraftingTable.BlackForge, 1);
			item97.MaximumRequiredStationLevel = 7;
			item97.RequiredItems.Add("BlackMetal", 30);
			item97.RequiredItems.Add("FlametalNew", 30);
			item97.RequiredItems.Add("DragonEgg", 5);
			item97.RequiredUpgradeItems.Add("FlametalNew", 5);
			item97.RequiredUpgradeItems.Add("BlackMetal", 10);
			item97.CraftAmount = 1;
			Item item98 = new Item("ss_korokhelm", "ss_korokhelm");
			item98.Name.English("Onslaught Visor");
			item98.Description.English("Korok the Barbarian was feared for his reckless ferocity. Legend says he fought in an unstoppable frenzy, and if he fell he would simply rise again, wilder and more dangerous than before.");
			item98.Crafting.Add(CraftingTable.BlackForge, 1);
			item98.MaximumRequiredStationLevel = 7;
			item98.RequiredItems.Add("TrophyDragonQueen", 1);
			item98.RequiredItems.Add("FlametalNew", 20);
			item98.RequiredItems.Add("BlackMetal", 20);
			item98.RequiredUpgradeItems.Add("FlametalNew", 5);
			item98.RequiredUpgradeItems.Add("BlackMetal", 10);
			item98.CraftAmount = 1;
			Item item99 = new Item("ss_korokchest", "ss_korokchest");
			item99.Name.English("Onslaught Cuirass");
			item99.Description.English("A colossal set of extremely heavy armor, with thick plates of metal that glide across one another in some places and are rivetted together in others.");
			item99.Crafting.Add(CraftingTable.BlackForge, 1);
			item99.MaximumRequiredStationLevel = 7;
			item99.RequiredItems.Add("BlackMetal", 30);
			item99.RequiredItems.Add("FlametalNew", 30);
			item99.RequiredItems.Add("DragonEgg", 5);
			item99.RequiredUpgradeItems.Add("FlametalNew", 5);
			item99.RequiredUpgradeItems.Add("BlackMetal", 10);
			item99.CraftAmount = 1;
			Item item100 = new Item("ss_koroklegs", "ss_koroklegs");
			item100.Name.English("Onslaught Sabatons");
			item100.Description.English("Heavy waist protection and even heavier metal boots. There is a deep red kilt akin to the mist descending across your vision. Rip and tear.");
			item100.Crafting.Add(CraftingTable.BlackForge, 1);
			item100.MaximumRequiredStationLevel = 7;
			item100.RequiredItems.Add("BlackMetal", 30);
			item100.RequiredItems.Add("FlametalNew", 30);
			item100.RequiredItems.Add("DragonEgg", 5);
			item100.RequiredUpgradeItems.Add("FlametalNew", 5);
			item100.RequiredUpgradeItems.Add("BlackMetal", 10);
			item100.CraftAmount = 1;
			Item item101 = new Item("trueskoghelm", "trueskoghelm");
			item101.Name.English("Deep North Helm");
			item101.Description.English("An ancient, mystical helmet. This is the real deal.");
			item101.Crafting.Add(CraftingTable.BlackForge, 1);
			item101.MaximumRequiredStationLevel = 7;
			item101.RequiredItems.Add("skoghelm", 1);
			item101.RequiredItems.Add("FlametalNew", 20);
			item101.RequiredItems.Add("Eitr", 20);
			item101.RequiredItems.Add("TrophySGolem", 1);
			item101.RequiredUpgradeItems.Add("FlametalNew", 15);
			item101.RequiredUpgradeItems.Add("Eitr", 10);
			item101.CraftAmount = 1;
			Item item102 = new Item("trueskogchest", "trueskogchest");
			item102.Name.English("Deep North Chest");
			item102.Description.English("Moss has grown through the strange, enchanted stone-metal alloy.");
			item102.Crafting.Add(CraftingTable.BlackForge, 1);
			item102.MaximumRequiredStationLevel = 7;
			item102.RequiredItems.Add("skogchest", 1);
			item102.RequiredItems.Add("FlametalNew", 20);
			item102.RequiredItems.Add("Eitr", 20);
			item102.RequiredItems.Add("TrophySGolem", 2);
			item102.RequiredUpgradeItems.Add("FlametalNew", 15);
			item102.RequiredUpgradeItems.Add("Eitr", 10);
			item102.CraftAmount = 1;
			Item item103 = new Item("trueskoglegs", "trueskoglegs");
			item103.Name.English("Deep North Legguards");
			item103.Description.English("The sinewy strength and fevor of the Brute still courses through these leggings, propelling their wearer towards battle.");
			item103.Crafting.Add(CraftingTable.BlackForge, 1);
			item103.MaximumRequiredStationLevel = 7;
			item103.RequiredItems.Add("skoglegs", 1);
			item103.RequiredItems.Add("FlametalNew", 20);
			item103.RequiredItems.Add("Eitr", 20);
			item103.RequiredItems.Add("TrophyGoblinBrute", 1);
			item103.RequiredUpgradeItems.Add("FlametalNew", 15);
			item103.RequiredUpgradeItems.Add("Eitr", 10);
			item103.CraftAmount = 1;
			Item item104 = new Item("sven2", "sven2");
			item104.Name.English("Dragon Champion Greathelm (eyepatch)");
			item104.Description.English("Sven's life was forever entwined in the sea and the mysteries it held. Many believe he rode a mighty serpent over waves as tall as mountains and found the very edge of this world.");
			item104.Crafting.Add(CraftingTable.BlackForge, 1);
			item104.MaximumRequiredStationLevel = 7;
			item104.RequiredItems.Add("sven", 1);
			item104.RequiredItems.Add("FlametalNew", 30);
			item104.RequiredItems.Add("TrophyHatchling", 5);
			item104.RequiredItems.Add("TrophySerpent", 1);
			item104.RequiredUpgradeItems.Add("FlametalNew", 10);
			item104.RequiredUpgradeItems.Add("TrophyHatchling", 1);
			item104.CraftAmount = 1;
			Item item105 = new Item("sven3", "sven3");
			item105.Name.English("Dragon Champion Greathelm");
			item105.Description.English("Sven's life was forever entwined in the sea and the mysteries it held. Many believe he rode a mighty serpent over waves as tall as mountains and found the very edge of this world.");
			item105.Crafting.Add(CraftingTable.BlackForge, 1);
			item105.MaximumRequiredStationLevel = 7;
			item105.RequiredItems.Add("sven", 1);
			item105.RequiredItems.Add("FlametalNew", 30);
			item105.RequiredItems.Add("TrophyHatchling", 5);
			item105.RequiredItems.Add("TrophySerpent", 1);
			item105.RequiredUpgradeItems.Add("FlametalNew", 10);
			item105.RequiredUpgradeItems.Add("TrophyHatchling", 1);
			item105.CraftAmount = 1;
			Item item106 = new Item("sven2chest", "sven2chest");
			item106.Name.English("Ornate Black Platemail");
			item106.Description.English("Redclaw, the greatest of all smiths, took up Sven's silver armor. \"Strong,\" he muttered, \"but it could be stronger still.\" ");
			item106.Crafting.Add(CraftingTable.BlackForge, 1);
			item106.MaximumRequiredStationLevel = 7;
			item106.RequiredItems.Add("svenchest", 1);
			item106.RequiredItems.Add("FlametalNew", 30);
			item106.RequiredItems.Add("WolfPelt", 20);
			item106.RequiredUpgradeItems.Add("FlametalNew", 10);
			item106.RequiredUpgradeItems.Add("WolfPelt", 10);
			item106.CraftAmount = 1;
			Item item107 = new Item("sven2legs", "sven2legs");
			item107.Name.English("Ancestral Kilt");
			item107.Description.English("Blackmetal and serpent scales have empowered these leggaurds with the power of the sea. Warm wolf fur lines the ancestral kilt.");
			item107.Crafting.Add(CraftingTable.BlackForge, 1);
			item107.MaximumRequiredStationLevel = 7;
			item107.RequiredItems.Add("svenlegs", 1);
			item107.RequiredItems.Add("FlametalNew", 30);
			item107.RequiredItems.Add("WolfPelt", 20);
			item107.RequiredItems.Add("SerpentScale", 15);
			item107.RequiredUpgradeItems.Add("FlametalNew", 10);
			item107.RequiredUpgradeItems.Add("SerpentScale", 5);
			item107.CraftAmount = 1;
			Item item108 = new Item("ss_frodehelm", "ss_frodehelm");
			item108.Name.English("Greathelm of Thetis");
			item108.Description.English("An ornate helmet, crested by a winged serpent. Said to have been worn by Frode, son of the Dragon and Champion of the Sea. ");
			item108.Crafting.Add(CraftingTable.BlackForge, 1);
			item108.MaximumRequiredStationLevel = 7;
			item108.RequiredItems.Add("ancientironhelm", 1);
			item108.RequiredItems.Add("sven2", 1);
			item108.RequiredItems.Add("FlametalNew", 10);
			item108.RequiredItems.Add("Eitr", 20);
			item108.RequiredUpgradeItems.Add("FlametalNew", 15);
			item108.RequiredUpgradeItems.Add("Eitr", 10);
			item108.CraftAmount = 1;
			Item item109 = new Item("ss_frodechest", "ss_frodechest");
			item109.Name.English("Armor of Thetis");
			item109.Description.English("Magnificently intricate armor, in places worked to look like mighty scales.");
			item109.Crafting.Add(CraftingTable.BlackForge, 1);
			item109.MaximumRequiredStationLevel = 7;
			item109.RequiredItems.Add("ancientironchest", 1);
			item109.RequiredItems.Add("sven2chest", 1);
			item109.RequiredItems.Add("FlametalNew", 10);
			item109.RequiredItems.Add("Eitr", 20);
			item109.RequiredUpgradeItems.Add("FlametalNew", 15);
			item109.RequiredUpgradeItems.Add("Eitr", 10);
			item109.CraftAmount = 1;
			Item item110 = new Item("ss_frodelegs", "ss_frodelegs");
			item110.Name.English("Legguards of Thetis");
			item110.Description.English("Glorious winged boots and a kilt with leather belts.");
			item110.Crafting.Add(CraftingTable.BlackForge, 1);
			item110.MaximumRequiredStationLevel = 7;
			item110.RequiredItems.Add("ancientironlegs", 1);
			item110.RequiredItems.Add("sven2legs", 1);
			item110.RequiredItems.Add("FlametalNew", 10);
			item110.RequiredItems.Add("Eitr", 20);
			item110.RequiredUpgradeItems.Add("FlametalNew", 15);
			item110.RequiredUpgradeItems.Add("Eitr", 10);
			item110.CraftAmount = 1;
			Item item111 = new Item("ss_storrhelm", "ss_storrhelm");
			item111.Name.English("Last Hero's Helm");
			item111.Description.English("A greathelm fixed with massive horns. Such a thing does not make sense in the age of mortals, but they are not who it was made for.");
			item111.Crafting.Add(CraftingTable.BlackForge, 1);
			item111.MaximumRequiredStationLevel = 7;
			item111.RequiredItems.Add("stjudehelm", 1);
			item111.RequiredItems.Add("bearhelm2", 1);
			item111.RequiredItems.Add("ss_korokhelm", 1);
			item111.RequiredItems.Add("Eitr", 20);
			item111.RequiredUpgradeItems.Add("FlametalNew", 15);
			item111.RequiredUpgradeItems.Add("Eitr", 10);
			item111.CraftAmount = 1;
			Item item112 = new Item("ss_storrchest", "ss_storrchest");
			item112.Name.English("Last Hero's Cuirass");
			item112.Description.English("Storr-Elgr, \"The Big Moose\", famously never used a shield, instead wielding huge and ferocious two-handed weapons. His strength was said to be that of ten men, because his heart was pure.");
			item112.Crafting.Add(CraftingTable.BlackForge, 1);
			item112.MaximumRequiredStationLevel = 7;
			item112.RequiredItems.Add("stjudechest", 1);
			item112.RequiredItems.Add("bearchest2", 1);
			item112.RequiredItems.Add("ss_korokchest", 1);
			item112.RequiredItems.Add("Eitr", 20);
			item112.RequiredUpgradeItems.Add("FlametalNew", 15);
			item112.RequiredUpgradeItems.Add("Eitr", 10);
			item112.CraftAmount = 1;
			Item item113 = new Item("ss_storrlegs", "ss_storrlegs");
			item113.Name.English("Last Hero's Greaves");
			item113.Description.English("Each thunderous footfall paralyzes your foes with fear, for your presence will turn the tide of any battle.");
			item113.Crafting.Add(CraftingTable.BlackForge, 1);
			item113.MaximumRequiredStationLevel = 7;
			item113.RequiredItems.Add("stjudelegs", 1);
			item113.RequiredItems.Add("bearlegs2", 1);
			item113.RequiredItems.Add("ss_koroklegs", 1);
			item113.RequiredItems.Add("Eitr", 20);
			item113.RequiredUpgradeItems.Add("FlametalNew", 15);
			item113.RequiredUpgradeItems.Add("Eitr", 10);
			item113.CraftAmount = 1;
			Item item114 = new Item("wshelm", "wshelm");
			item114.Name.English("World Serpent Casque");
			item114.Description.English("A magnificent casque, both angelic and draconic.");
			item114.Crafting.Add(CraftingTable.BlackForge, 1);
			item114.MaximumRequiredStationLevel = 7;
			item114.RequiredItems.Add("lagihelmalt", 1);
			item114.RequiredItems.Add("valkhelm", 1);
			item114.RequiredItems.Add("sven", 1);
			item114.RequiredItems.Add("Eitr", 20);
			item114.RequiredUpgradeItems.Add("FlametalNew", 15);
			item114.RequiredUpgradeItems.Add("Eitr", 10);
			item114.CraftAmount = 1;
			Item item115 = new Item("wschest", "wschest");
			item115.Name.English("World Serpent Cuirass");
			item115.Description.English("An Aesir and a Dragon walk into a tavern... You are wearing the punchline.");
			item115.Crafting.Add(CraftingTable.BlackForge, 1);
			item115.MaximumRequiredStationLevel = 7;
			item115.RequiredItems.Add("lagichest", 1);
			item115.RequiredItems.Add("valkchest", 1);
			item115.RequiredItems.Add("svenchest", 1);
			item115.RequiredItems.Add("Eitr", 20);
			item115.RequiredUpgradeItems.Add("FlametalNew", 15);
			item115.RequiredUpgradeItems.Add("Eitr", 10);
			item115.CraftAmount = 1;
			Item item116 = new Item("wslegs", "wslegs");
			item116.Name.English("World Serpent Greaves");
			item116.Description.English("Plate mail armor of an other-wordly pearlescent material; metal fused with dragon scale.");
			item116.Crafting.Add(CraftingTable.BlackForge, 1);
			item116.MaximumRequiredStationLevel = 7;
			item116.RequiredItems.Add("lagipants", 1);
			item116.RequiredItems.Add("valklegs", 1);
			item116.RequiredItems.Add("svenlegs", 1);
			item116.RequiredItems.Add("Eitr", 20);
			item116.RequiredUpgradeItems.Add("FlametalNew", 15);
			item116.RequiredUpgradeItems.Add("Eitr", 10);
			item116.CraftAmount = 1;
			Item item117 = new Item("ss_cape_boar", "ss_cape_boar");
			item117.Name.English("Boar Skin Cape");
			item117.Description.English("A heavy cape, worn by mighty warriors.");
			item117.Crafting.Add(CraftingTable.Forge, 1);
			item117.MaximumRequiredStationLevel = 7;
			item117.RequiredItems.Add("LeatherScraps", 20);
			item117.RequiredItems.Add("TrophyBoar", 1);
			item117.RequiredItems.Add("Bronze", 3);
			item117.RequiredUpgradeItems.Add("LeatherScraps", 2);
			item117.CraftAmount = 1;
			Item item118 = new Item("ss_ashcape", "ss_ashcape");
			item118.Name.English("Collarless Ashen Cape");
			item118.Description.English("Thin metal threads are woven into this cape to create an intricate pattern, like a destiny woven by the Norns themselves.");
			item118.Crafting.Add(CraftingTable.BlackForge, 1);
			item118.MaximumRequiredStationLevel = 7;
			item118.RequiredItems.Add("AskHide", 6);
			item118.RequiredItems.Add("MorgenSinew", 2);
			item118.RequiredItems.Add("FlametalNew", 5);
			item118.RequiredUpgradeItems.Add("AskHide", 2);
			item118.CraftAmount = 1;
			Item item119 = new Item("ss_serpentcape", "ss_serpentcape");
			item119.Name.English("Serpent Scale Cloak");
			item119.Description.English("Large, glistening serpent scales protect from flame.");
			item119.Crafting.Add(CraftingTable.BlackForge, 1);
			item119.MaximumRequiredStationLevel = 7;
			item119.RequiredItems.Add("AskHide", 6);
			item119.RequiredItems.Add("Eitr", 30);
			item119.RequiredItems.Add("TrophySerpent", 1);
			item119.RequiredUpgradeItems.Add("AskHide", 2);
			item119.CraftAmount = 1;
			Item item120 = new Item("ss_storrcape", "ss_storrcape");
			item120.Name.English("Heavy Lox Cape");
			item120.Description.English("Extra fur for extra warmth, cutting either a ridiculous or imposing figure, depending on opinion. Smells faintly of blueberries.");
			item120.Crafting.Add(CraftingTable.BlackForge, 1);
			item120.MaximumRequiredStationLevel = 7;
			item120.RequiredItems.Add("AskHide", 6);
			item120.RequiredItems.Add("LoxPelt", 50);
			item120.RequiredItems.Add("FlametalNew", 8);
			item120.RequiredItems.Add("Blueberries", 5);
			item120.RequiredUpgradeItems.Add("AskHide", 2);
			item120.RequiredUpgradeItems.Add("LoxPelt", 10);
			item120.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
			{
				ItemManagerModTemplateLogger.LogDebug((object)"ReadConfigValues called");
				((BaseUnityPlugin)this).Config.Reload();
			}
			catch
			{
				ItemManagerModTemplateLogger.LogError((object)("There was an issue loading your " + ConfigFileName));
				ItemManagerModTemplateLogger.LogError((object)"Please check your config entries for spelling and format!");
			}
		}

		private ConfigEntry<T> config<[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(2)] T>(string group, string name, T value, ConfigDescription description, bool synchronizedSetting = true)
		{
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: 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);
			SyncedConfigEntry<T> syncedConfigEntry = ConfigSync.AddConfigEntry<T>(val2);
			syncedConfigEntry.SynchronizedConfig = synchronizedSetting;
			return val2;
		}

		private ConfigEntry<T> config<[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(2)] T>(string group, string name, T value, string description, bool synchronizedSetting = true)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()), synchronizedSetting);
		}

		static ItemManagerModTemplatePlugin()
		{
			string configPath = Paths.ConfigPath;
			char directorySeparatorChar = Path.DirectorySeparatorChar;
			ConfigFileFullPath = configPath + directorySeparatorChar + ConfigFileName;
			ConnectionError = "";
			ItemManagerModTemplateLogger = Logger.CreateLogSource("SouthsilArmor");
			ConfigSync = new ConfigSync("southsil.SouthsilArmor")
			{
				DisplayName = "SouthsilArmor",
				CurrentVersion = "3.1.8",
				MinimumRequiredVersion = "3.1.8"
			};
			_serverConfigLocked = null;
			_recipeIsActiveConfig = null;
		}
	}
	public static class KeyboardExtensions
	{
		public static bool IsKeyDown(this KeyboardShortcut shortcut)
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			return (int)((KeyboardShortcut)(ref shortcut)).MainKey != 0 && Input.GetKeyDown(((KeyboardShortcut)(ref shortcut)).MainKey) && ((KeyboardShortcut)(ref shortcut)).Modifiers.All((Func<KeyCode, bool>)Input.GetKey);
		}

		public static bool IsKeyHeld(this KeyboardShortcut shortcut)
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			return (int)((KeyboardShortcut)(ref shortcut)).MainKey != 0 && Input.GetKey(((KeyboardShortcut)(ref shortcut)).MainKey) && ((KeyboardShortcut)(ref shortcut)).Modifiers.All((Func<KeyCode, bool>)Input.GetKey);
		}
	}
	[HarmonyPatch(typeof(ZNet), "OnNewConnection")]
	public static class RegisterAndCheckVersion
	{
		[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
		private static void Prefix(ZNetPeer peer, ref ZNet __instance)
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			ItemManagerModTemplatePlugin.ItemManagerModTemplateLogger.LogDebug((object)"Registering version RPC handler");
			peer.m_rpc.Register<ZPackage>("SouthsilArmor_VersionCheck", (Action<ZRpc, ZPackage>)RpcHandlers.RPC_ItemManagerModTemplate_Version);
			ItemManagerModTemplatePlugin.ItemManagerModTemplateLogger.LogInfo((object)"Invoking version check");
			ZPackage val = new ZPackage();
			val.Write("3.1.8");
			peer.m_rpc.Invoke("SouthsilArmor_VersionCheck", new object[1] { val });
		}
	}
	[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
	[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(0)]
	[HarmonyPatch(typeof(ZNet), "RPC_PeerInfo")]
	public static class VerifyClient
	{
		private static bool Prefix(ZRpc rpc, ZPackage pkg, ref ZNet __instance)
		{
			if (!__instance.IsServer() || RpcHandlers.ValidatedPeers.Contains(rpc))
			{
				return true;
			}
			ItemManagerModTemplatePlugin.ItemManagerModTemplateLogger.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_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Expected O, but got Unknown
			ZRoutedRpc.instance.InvokeRoutedRPC(ZRoutedRpc.instance.GetServerPeerID(), "SouthsilArmorRequestAdminSync", new object[1] { (object)new ZPackage() });
		}
	}
	[HarmonyPatch(typeof(FejdStartup), "ShowConnectError")]
	public class ShowConnectionError
	{
		[<3d631749-898d-4ebd-a183-897175eeecc2>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" + ItemManagerModTemplatePlugin.ConnectionError;
			}
		}
	}
	[HarmonyPatch(typeof(ZNet), "Disconnect")]
	public static class RemoveDisconnectedPeerFromVerified
	{
		[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
		private static void Prefix(ZNetPeer peer, ref ZNet __instance)
		{
			if (__instance.IsServer())
			{
				ItemManagerModTemplatePlugin.ItemManagerModTemplateLogger.LogInfo((object)("Peer (" + peer.m_rpc.m_socket.GetHostName() + ") disconnected, removing from validated list"));
				RpcHandlers.ValidatedPeers.Remove(peer.m_rpc);
			}
		}
	}
	[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
	[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(0)]
	public static class RpcHandlers
	{
		public static readonly List<ZRpc> ValidatedPeers = new List<ZRpc>();

		public static void RPC_ItemManagerModTemplate_Version(ZRpc rpc, ZPackage pkg)
		{
			string text = pkg.ReadString();
			ItemManagerModTemplatePlugin.ItemManagerModTemplateLogger.LogInfo((object)("Version check, local: 3.1.8,  remote: " + text));
			if (text != "3.1.8")
			{
				ItemManagerModTemplatePlugin.ConnectionError = "SouthsilArmor Installed: 3.1.8\n Needed: " + text;
				if (ZNet.instance.IsServer())
				{
					ItemManagerModTemplatePlugin.ItemManagerModTemplateLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") has incompatible version, disconnecting..."));
					rpc.Invoke("Error", new object[1] { 3 });
				}
			}
			else if (!ZNet.instance.IsServer())
			{
				ItemManagerModTemplatePlugin.ItemManagerModTemplateLogger.LogInfo((object)"Received same version from server!");
			}
			else
			{
				ItemManagerModTemplatePlugin.ItemManagerModTemplateLogger.LogInfo((object)("Adding peer (" + rpc.m_socket.GetHostName() + ") to validated list"));
				ValidatedPeers.Add(rpc);
			}
		}

		public static string ComputeHashForMod()
		{
			using SHA256 sHA = SHA256.Create();
			byte[] array = sHA.ComputeHash(File.ReadAllBytes(Assembly.GetExecutingAssembly().Location));
			StringBuilder stringBuilder = new StringBuilder();
			byte[] array2 = array;
			foreach (byte b in array2)
			{
				stringBuilder.Append(b.ToString("X2"));
			}
			return stringBuilder.ToString();
		}
	}
}
namespace LocalizationManager
{
	[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
	[PublicAPI]
	[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(0)]
	public class Localizer
	{
		private static readonly Dictionary<string, Dictionary<string, Func<string>>> PlaceholderProcessors;

		private static readonly Dictionary<string, Dictionary<string, string>> loadedTexts;

		private static readonly ConditionalWeakTable<Localization, string> localizationLanguage;

		private static readonly List<WeakReference<Localization>> localizationObjects;

		[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(2)]
		private static BaseUnityPlugin _plugin;

		private static readonly List<string> fileExtensions;

		private static BaseUnityPlugin plugin
		{
			get
			{
				//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b2: 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([<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(0)] (TypeInfo t) => t.IsClass && typeof(BaseUnityPlugin).IsAssignableFrom(t)));
				}
				return _plugin;
			}
		}

		private static void UpdatePlaceholderText(Localization localization, string key)
		{
			localizationLanguage.TryGetValue(localization, out var value);
			string text = loadedTexts[value][key];
			if (PlaceholderProcessors.TryGetValue(key, out var value2))
			{
				text = value2.Aggregate(text, [<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(0)] (string current, KeyValuePair<string, Func<string>> kv) => current.Replace("{" + kv.Key + "}", kv.Value()));
			}
			localization.AddWord(key, text);
		}

		public static void AddPlaceholder<T>(string key, string placeholder, ConfigEntry<T> config, [<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(new byte[] { 2, 1, 1 })] Func<T, string> convertConfigValue = null)
		{
			if (convertConfigValue == null)
			{
				convertConfigValue = [<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(0)] [return: <8802124b-7b79-436c-9abb-8db6a093401c>Nullable(1)] (T val) => val.ToString();
			}
			if (!PlaceholderProcessors.ContainsKey(key))
			{
				PlaceholderProcessors[key] = new Dictionary<string, Func<string>>();
			}
			config.SettingChanged += [<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(0)] (object _, EventArgs _) =>
			{
				UpdatePlaceholder();
			};
			if (loadedTexts.ContainsKey(Localization.instance.GetSelectedLanguage()))
			{
				UpdatePlaceholder();
			}
			void UpdatePlaceholder()
			{
				PlaceholderProcessors[key][placeholder] = () => convertConfigValue(config.Value);
				UpdatePlaceholderText(Localization.instance, key);
			}
		}

		public static void AddText(string key, string text)
		{
			List<WeakReference<Localization>> list = new List<WeakReference<Localization>>();
			foreach (WeakReference<Localization> localizationObject in localizationObjects)
			{
				if (localizationObject.TryGetTarget(out var target))
				{
					Dictionary<string, string> dictionary = loadedTexts[localizationLanguage.GetOrCreateValue(target)];
					if (!target.m_translations.ContainsKey(key))
					{
						dictionary[key] = text;
						target.AddWord(key, text);
					}
				}
				else
				{
					list.Add(localizationObject);
				}
			}
			foreach (WeakReference<Localization> item in list)
			{
				localizationObjects.Remove(item);
			}
		}

		public static void Load()
		{
			LoadLocalization(Localization.instance, Localization.instance.GetSelectedLanguage());
		}

		private static void LoadLocalization(Localization __instance, string language)
		{
			if (!localizationLanguage.Remove(__instance))
			{
				localizationObjects.Add(new WeakReference<Localization>(__instance));
			}
			localizationLanguage.Add(__instance, language);
			Dictionary<string, string> dictionary = new Dictionary<string, string>();
			foreach (string item in from f in Directory.GetFiles(Path.GetDirectoryName(Paths.PluginPath), plugin.Info.Metadata.Name + ".*", SearchOption.AllDirectories)
				where fileExtensions.IndexOf(Path.GetExtension(f)) >= 0
				select f)
			{
				string text = Path.GetFileNameWithoutExtension(item).Split(new char[1] { '.' })[1];
				if (dictionary.ContainsKey(text))
				{
					Debug.LogWarning((object)("Duplicate key " + text + " found for " + plugin.Info.Metadata.Name + ". The duplicate file found at " + item + " will be skipped."));
				}
				else
				{
					dictionary[text] = item;
				}
			}
			byte[] array = LoadTranslationFromAssembly("English");
			if (array == null)
			{
				throw new Exception("Found no English localizations in mod " + plugin.Info.Metadata.Name + ". Expected an embedded resource translations/English.json or translations/English.yml.");
			}
			Dictionary<string, string> dictionary2 = new DeserializerBuilder().IgnoreFields().Build().Deserialize<Dictionary<string, string>>(Encoding.UTF8.GetString(array));
			if (dictionary2 == null)
			{
				throw new Exception("Localization for mod " + plugin.Info.Metadata.Name + " failed: Localization file was empty.");
			}
			string text2 = null;
			if (language != "English")
			{
				if (dictionary.ContainsKey(language))
				{
					text2 = File.ReadAllText(dictionary[language]);
				}
				else
				{
					byte[] array2 = LoadTranslationFromAssembly(language);
					if (array2 != null)
					{
						text2 = Encoding.UTF8.GetString(array2);
					}
				}
			}
			if (text2 == null && dictionary.ContainsKey("English"))
			{
				text2 = File.ReadAllText(dictionary["English"]);
			}
			if (text2 != null)
			{
				foreach (KeyValuePair<string, string> item2 in new DeserializerBuilder().IgnoreFields().Build().Deserialize<Dictionary<string, string>>(text2) ?? new Dictionary<string, string>())
				{
					dictionary2[item2.Key] = item2.Value;
				}
			}
			loadedTexts[language] = dictionary2;
			foreach (KeyValuePair<string, string> item3 in dictionary2)
			{
				UpdatePlaceholderText(__instance, item3.Key);
			}
		}

		static Localizer()
		{
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Expected O, but got Unknown
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Expected O, but got Unknown
			PlaceholderProcessors = new Dictionary<string, Dictionary<string, Func<string>>>();
			loadedTexts = new Dictionary<string, Dictionary<string, string>>();
			localizationLanguage = new ConditionalWeakTable<Localization, string>();
			localizationObjects = new List<WeakReference<Localization>>();
			fileExtensions = new List<string> { ".json", ".yml" };
			Harmony val = new Harmony("org.bepinex.helpers.LocalizationManager");
			val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Localization), "LoadCSV", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Localizer), "LoadLocalization", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
		}

		[return: <8802124b-7b79-436c-9abb-8db6a093401c>Nullable(2)]
		private static byte[] LoadTranslationFromAssembly(string language)
		{
			foreach (string fileExtension in fileExtensions)
			{
				byte[] array = ReadEmbeddedFileBytes("translations." + language + fileExtension);
				if (array != null)
				{
					return array;
				}
			}
			return null;
		}

		[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(2)]
		public static byte[] ReadEmbeddedFileBytes([<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(1)] string resourceFileName, Assembly containingAssembly = null)
		{
			using MemoryStream memoryStream = new MemoryStream();
			if ((object)containingAssembly == null)
			{
				containingAssembly = Assembly.GetCallingAssembly();
			}
			string text = containingAssembly.GetManifestResourceNames().FirstOrDefault([<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(0)] (string str) => str.EndsWith(resourceFileName, StringComparison.Ordinal));
			if (text != null)
			{
				containingAssembly.GetManifestResourceStream(text)?.CopyTo(memoryStream);
			}
			return (memoryStream.Length == 0L) ? null : memoryStream.ToArray();
		}
	}
}
namespace ItemManager
{
	[PublicAPI]
	public enum CraftingTable
	{
		Disabled,
		Inventory,
		[InternalName("piece_workbench")]
		Workbench,
		[InternalName("piece_cauldron")]
		Cauldron,
		[InternalName("piece_MeadCauldron")]
		MeadCauldron,
		[InternalName("forge")]
		Forge,
		[InternalName("piece_artisanstation")]
		ArtisanTable,
		[InternalName("piece_stonecutter")]
		StoneCutter,
		[InternalName("piece_magetable")]
		MageTable,
		[InternalName("piece_preptable")]
		PrepTable,
		[InternalName("blackforge")]
		BlackForge,
		Custom
	}
	[PublicAPI]
	public enum ConversionPiece
	{
		Disabled,
		[InternalName("smelter")]
		Smelter,
		[InternalName("charcoal_kiln")]
		CharcoalKiln,
		[InternalName("blastfurnace")]
		BlastFurnace,
		[InternalName("windmill")]
		Windmill,
		[InternalName("piece_spinningwheel")]
		SpinningWheel,
		[InternalName("eitrrefinery")]
		EitrRefinery,
		Custom
	}
	[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(0)]
	[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
	public class InternalName : Attribute
	{
		public readonly string internalName;

		public InternalName(string internalName)
		{
			this.internalName = internalName;
		}
	}
	[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
	[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(0)]
	[PublicAPI]
	public class RequiredResourceList
	{
		public readonly List<Requirement> Requirements = new List<Requirement>();

		public bool Free = false;

		public void Add(string itemName, int amount, int quality = 0)
		{
			Requirements.Add(new Requirement
			{
				itemName = itemName,
				amount = amount,
				quality = quality
			});
		}

		public void Add(string itemName, ConfigEntry<int> amountConfig, int quality = 0)
		{
			Requirements.Add(new Requirement
			{
				itemName = itemName,
				amountConfig = amountConfig,
				quality = quality
			});
		}
	}
	[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
	[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(0)]
	[PublicAPI]
	public class CraftingStationList
	{
		public readonly List<CraftingStationConfig> Stations = new List<CraftingStationConfig>();

		public void Add(CraftingTable table, int level)
		{
			Stations.Add(new CraftingStationConfig
			{
				Table = table,
				level = level
			});
		}

		public void Add(string customTable, int level)
		{
			Stations.Add(new CraftingStationConfig
			{
				Table = CraftingTable.Custom,
				level = level,
				custom = customTable
			});
		}
	}
	[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
	[PublicAPI]
	[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(0)]
	public class ItemRecipe
	{
		public readonly RequiredResourceList RequiredItems = new RequiredResourceList();

		public readonly RequiredResourceList RequiredUpgradeItems = new RequiredResourceList();

		public readonly CraftingStationList Crafting = new CraftingStationList();

		public int CraftAmount = 1;

		public bool RequireOnlyOneIngredient = false;

		public float QualityResultAmountMultiplier = 1f;

		[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(2)]
		public ConfigEntryBase RecipeIsActive = null;
	}
	[PublicAPI]
	public class Trade
	{
		public Trader Trader = Trader.None;

		public uint Price = 0u;

		public uint Stack = 1u;

		[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(2)]
		public string RequiredGlobalKey = null;
	}
	[PublicAPI]
	[Flags]
	public enum Trader
	{
		None = 0,
		Haldor = 1,
		Hildir = 2
	}
	public struct Requirement
	{
		[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(1)]
		public string itemName;

		public int amount;

		[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(2)]
		public ConfigEntry<int> amountConfig;

		[Description("Set to a non-zero value to apply the requirement only for a specific quality")]
		public int quality;
	}
	public struct CraftingStationConfig
	{
		public CraftingTable Table;

		public int level;

		[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(2)]
		public string custom;
	}
	[Flags]
	public enum Configurability
	{
		Disabled = 0,
		Recipe = 1,
		Stats = 2,
		Drop = 4,
		Trader = 8,
		Full = 0xF
	}
	[PublicAPI]
	[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(0)]
	[<3d631749-898d-4ebd-a183-897175eeecc2>NullableContext(1)]
	public class DropTargets
	{
		public readonly List<DropTarget> Drops = new List<DropTarget>();

		public void Add(string creatureName, float chance, int min = 1, int? max = null, bool levelMultiplier = true)
		{
			Drops.Add(new DropTarget
			{
				creature = creatureName,
				chance = chance,
				min = min,
				max = (max ?? min),
				levelMultiplier = levelMultiplier
			});
		}
	}
	public struct DropTarget
	{
		[<8802124b-7b79-436c-9abb-8db6a093401c>Nullable(1)]
		public string creature;

		public int min;

		public int max;

		public float chance;

		public bool levelMultiplier;
	}
	public enum Toggle
	{
		On = 1,
		Off = 0
	}
	[<8802124b-7b79-436c-9abb-8db6a093401c>Nullabl