Decompiled source of Wizardry v1.2.0

Wizardry.dll

Decompiled 2 days ago
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using CreatureManager;
using HarmonyLib;
using ItemManager;
using JetBrains.Annotations;
using KG_Managers;
using LocalizationManager;
using Microsoft.CodeAnalysis;
using PieceManager;
using ServerSync;
using SoftReferenceableAssets;
using SoundMixManager;
using TMPro;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;
using YamlDotNet.Core;
using YamlDotNet.Core.Events;
using YamlDotNet.Core.ObjectPool;
using YamlDotNet.Core.Tokens;
using YamlDotNet.Helpers;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.BufferedDeserialization;
using YamlDotNet.Serialization.BufferedDeserialization.TypeDiscriminators;
using YamlDotNet.Serialization.Callbacks;
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: ComVisible(false)]
[assembly: Guid("E0E2F92E-557C-4A05-9D89-AA92A0BD75C4")]
[assembly: AssemblyFileVersion("1.2.0")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Therzie")]
[assembly: AssemblyProduct("Wizardry")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyTitle("Wizardry")]
[assembly: AssemblyDescription("")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.2.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
[HarmonyPatch(typeof(TreeLog), "Destroy")]
internal static class EnchantedWood_Destroy_Patch
{
	private struct EnchantedWoodConfig
	{
		public List<string> PREFABS;

		public string prefab;

		public Biome forBiome;

		public int chance;

		public int amount;

		public int weight;

		public EnchantedWoodConfig(List<string> PREFABS, string prefab, Biome forBiome, int chance, int amount = 1, int weight = 1)
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			this.PREFABS = PREFABS;
			this.prefab = prefab;
			this.forBiome = forBiome;
			this.chance = chance;
			this.amount = amount;
			this.weight = weight;
		}
	}

	private static readonly EnchantedWoodConfig[] Configs = new EnchantedWoodConfig[6]
	{
		new EnchantedWoodConfig(new List<string> { "PineTree_log_half" }, "EnchantedWoodBlackForest_TW", (Biome)8, 35),
		new EnchantedWoodConfig(new List<string> { "SwampTree1_log" }, "EnchantedWoodSwamp_TW", (Biome)2, 35),
		new EnchantedWoodConfig(new List<string> { "FirTree_log_half" }, "EnchantedWoodMountain_TW", (Biome)4, 35),
		new EnchantedWoodConfig(new List<string> { "Birch_log_half" }, "EnchantedWoodPlains_TW", (Biome)16, 35),
		new EnchantedWoodConfig(new List<string> { "yggashoot_log_half" }, "EnchantedWoodMistlands_TW", (Biome)512, 50, 3),
		new EnchantedWoodConfig(new List<string> { "YggaShoot_small1", "YggaShoot1", "YggaShoot2", "YggaShoot3" }, "EnchantedWoodMistlands_TW", (Biome)512, 30)
	};

	[UsedImplicitly]
	private static void Postfix(TreeLog __instance)
	{
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0035: Unknown result type (might be due to invalid IL or missing references)
		//IL_003a: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: Invalid comparison between Unknown and I4
		BiomeSector biome = EnvMan.instance.GetBiome();
		string prefabName = Utils.GetPrefabName(((Component)__instance).gameObject);
		EnchantedWoodConfig[] configs = Configs;
		for (int i = 0; i < configs.Length; i++)
		{
			EnchantedWoodConfig config = configs[i];
			if ((biome.Biome & config.forBiome) != 0 && config.PREFABS.Contains(prefabName) && Random.Range(0, 100) <= config.chance)
			{
				AddDrops(__instance, config);
				break;
			}
		}
	}

	private static void AddDrops(TreeLog __instance, EnchantedWoodConfig config)
	{
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_0057: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0093: Unknown result type (might be due to invalid IL or missing references)
		//IL_0096: Unknown result type (might be due to invalid IL or missing references)
		//IL_0097: Unknown result type (might be due to invalid IL or missing references)
		GameObject prefab = ZNetScene.instance.GetPrefab(config.prefab);
		if (!((Object)(object)prefab == (Object)null))
		{
			for (int i = 0; i < config.amount; i++)
			{
				Vector3 val = ((Component)__instance).transform.position + ((Component)__instance).transform.up * Random.Range(0f - __instance.m_spawnDistance, __instance.m_spawnDistance) + Vector3.up * 0.3f * (float)i;
				Quaternion val2 = Quaternion.Euler(0f, (float)Random.Range(0, 360), 0f);
				GameObject val3 = Object.Instantiate<GameObject>(prefab, val, val2);
				val3.GetComponent<ItemDrop>().m_itemData.m_shared.m_weight = config.weight;
				ItemDrop.OnCreateNew(val3, false);
			}
		}
	}
}
namespace Warfare.Util
{
	public class Functions
	{
		internal static Sprite loadSprite(string name, bool isEmbed = true)
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			Texture2D val = loadTexture(name, isEmbed);
			if ((Object)(object)val != (Object)null)
			{
				return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), Vector2.zero);
			}
			return null;
		}

		private static Texture2D loadTexture(string name, bool isEmbed)
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Expected O, but got Unknown
			Texture2D val = new Texture2D(0, 0);
			if (isEmbed)
			{
				ImageConversion.LoadImage(val, ReadEmbeddedFileBytes("assets." + name));
			}
			return val;
		}

		private static byte[] ReadEmbeddedFileBytes(string name)
		{
			using MemoryStream memoryStream = new MemoryStream();
			Assembly.GetExecutingAssembly().GetManifestResourceStream(Assembly.GetExecutingAssembly().GetName().Name + "." + name).CopyTo(memoryStream);
			return memoryStream.ToArray();
		}
	}
}
namespace UpgradeWorld
{
	public class Register
	{
		public string name = "";

		public string description = "";

		public string[] commands = new string[0];

		public void AddCommand()
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			new ConsoleCommand(name, description, (ConsoleEvent)delegate(ConsoleEventArgs args)
			{
				string[] array = commands;
				foreach (string text in array)
				{
					args.Context.TryRunCommand(text, false, false);
				}
			}, false, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false);
		}
	}
	[HarmonyPatch(typeof(Terminal), "InitTerminal")]
	public static class Upgrade
	{
		private static List<Register> registers = new List<Register>();

		public const string GUID = "upgrade_world";

		private static void Postfix()
		{
			foreach (Register register in registers)
			{
				register.AddCommand();
			}
		}

		public static void Register(string name, string description, params string[] commands)
		{
			if (Chainloader.PluginInfos.ContainsKey("upgrade_world"))
			{
				registers.Add(new Register
				{
					name = name,
					description = description,
					commands = commands
				});
			}
		}
	}
}
namespace WarfareWizardry
{
	[HarmonyPatch(typeof(ZNet), "OnNewConnection")]
	public static class RegisterAndCheckVersion
	{
		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
			WizardryPlugin.WizardryLogger.LogDebug((object)"Registering version RPC handler");
			peer.m_rpc.Register<ZPackage>("Wizardry_VersionCheck", (Action<ZRpc, ZPackage>)RpcHandlers.RPC_WarfareWizardry_Version);
			WizardryPlugin.WizardryLogger.LogDebug((object)"Invoking version check");
			ZPackage val = new ZPackage();
			val.Write("1.2.0");
			peer.m_rpc.Invoke("Wizardry_VersionCheck", new object[1] { val });
		}
	}
	[HarmonyPatch(typeof(ZNet), "Disconnect")]
	public static class RemoveDisconnectedPeerFromVerified
	{
		private static void Prefix(ZNetPeer peer, ref ZNet __instance)
		{
			if (__instance.IsServer())
			{
				WizardryPlugin.WizardryLogger.LogInfo((object)("Peer (" + peer.m_rpc.m_socket.GetHostName() + ") disconnected, removing from validated list"));
				RpcHandlers.ValidatedPeers.Remove(peer.m_rpc);
			}
		}
	}
	public static class RpcHandlers
	{
		public static readonly List<ZRpc> ValidatedPeers = new List<ZRpc>();

		public static void RPC_WarfareWizardry_Version(ZRpc rpc, ZPackage pkg)
		{
			string text = pkg.ReadString();
			WizardryPlugin.WizardryLogger.LogInfo((object)("Version check, local: 1.2.0,  remote: " + text));
			if (text != "1.2.0")
			{
				WizardryPlugin.ConnectionError = "Wizardry Installed: 1.2.0\n Needed: " + text;
				if (ZNet.instance.IsServer())
				{
					WizardryPlugin.WizardryLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") has incompatible version, disconnecting"));
					rpc.Invoke("Error", new object[1] { 3 });
				}
			}
			else if (!ZNet.instance.IsServer())
			{
				WizardryPlugin.WizardryLogger.LogInfo((object)"Received same version from server!");
			}
			else
			{
				WizardryPlugin.WizardryLogger.LogInfo((object)("Adding peer (" + rpc.m_socket.GetHostName() + ") to validated list"));
				ValidatedPeers.Add(rpc);
			}
		}
	}
	[HarmonyPatch(typeof(FejdStartup), "ShowConnectError")]
	public class ShowConnectionError
	{
		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" + WizardryPlugin.ConnectionError;
			}
		}
	}
	public class Vegetation
	{
		[HarmonyPatch(typeof(ZoneSystem), "Start")]
		public class ZoneSystemStartPatch
		{
			public static void Prefix(ZoneSystem __instance)
			{
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				//IL_0029: Unknown result type (might be due to invalid IL or missing references)
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				//IL_003b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0042: Unknown result type (might be due to invalid IL or missing references)
				//IL_004d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0058: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_0077: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0083: Unknown result type (might be due to invalid IL or missing references)
				//IL_008e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0099: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00af: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00db: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0106: Unknown result type (might be due to invalid IL or missing references)
				//IL_0111: Unknown result type (might be due to invalid IL or missing references)
				//IL_0118: Unknown result type (might be due to invalid IL or missing references)
				//IL_0123: Unknown result type (might be due to invalid IL or missing references)
				//IL_012e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0136: Expected O, but got Unknown
				//IL_0146: Unknown result type (might be due to invalid IL or missing references)
				//IL_014b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0157: Unknown result type (might be due to invalid IL or missing references)
				//IL_015e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0165: Unknown result type (might be due to invalid IL or missing references)
				//IL_0170: Unknown result type (might be due to invalid IL or missing references)
				//IL_0177: Unknown result type (might be due to invalid IL or missing references)
				//IL_0182: Unknown result type (might be due to invalid IL or missing references)
				//IL_018d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0198: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
				//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
				//IL_0205: Unknown result type (might be due to invalid IL or missing references)
				//IL_0210: Unknown result type (might be due to invalid IL or missing references)
				//IL_021b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0222: Unknown result type (might be due to invalid IL or missing references)
				//IL_022d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0234: Unknown result type (might be due to invalid IL or missing references)
				//IL_023b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0246: Unknown result type (might be due to invalid IL or missing references)
				//IL_024d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0258: Unknown result type (might be due to invalid IL or missing references)
				//IL_0263: Unknown result type (might be due to invalid IL or missing references)
				//IL_026b: Expected O, but got Unknown
				//IL_027c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0281: Unknown result type (might be due to invalid IL or missing references)
				//IL_028e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0296: Unknown result type (might be due to invalid IL or missing references)
				//IL_029d: Unknown result type (might be due to invalid IL or missing references)
				//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
				//IL_02af: Unknown result type (might be due to invalid IL or missing references)
				//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
				//IL_02db: Unknown result type (might be due to invalid IL or missing references)
				//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
				//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
				//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0306: Unknown result type (might be due to invalid IL or missing references)
				//IL_0311: Unknown result type (might be due to invalid IL or missing references)
				//IL_031c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0327: Unknown result type (might be due to invalid IL or missing references)
				//IL_0332: Unknown result type (might be due to invalid IL or missing references)
				//IL_033d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0348: Unknown result type (might be due to invalid IL or missing references)
				//IL_0353: Unknown result type (might be due to invalid IL or missing references)
				//IL_035a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0365: Unknown result type (might be due to invalid IL or missing references)
				//IL_036c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0373: Unknown result type (might be due to invalid IL or missing references)
				//IL_037e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0385: Unknown result type (might be due to invalid IL or missing references)
				//IL_0390: Unknown result type (might be due to invalid IL or missing references)
				//IL_039b: Unknown result type (might be due to invalid IL or missing references)
				//IL_03a4: Expected O, but got Unknown
				//IL_03b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_03ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_03c7: Unknown result type (might be due to invalid IL or missing references)
				//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
				//IL_03d6: Unknown result type (might be due to invalid IL or missing references)
				//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
				//IL_03f3: Unknown result type (might be due to invalid IL or missing references)
				//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
				//IL_0409: Unknown result type (might be due to invalid IL or missing references)
				//IL_0414: Unknown result type (might be due to invalid IL or missing references)
				//IL_0417: Unknown result type (might be due to invalid IL or missing references)
				//IL_041c: Unknown result type (might be due to invalid IL or missing references)
				//IL_041e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0423: Unknown result type (might be due to invalid IL or missing references)
				//IL_042a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0435: Unknown result type (might be due to invalid IL or missing references)
				//IL_0440: Unknown result type (might be due to invalid IL or missing references)
				//IL_044b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0456: Unknown result type (might be due to invalid IL or missing references)
				//IL_0461: Unknown result type (might be due to invalid IL or missing references)
				//IL_046c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0477: Unknown result type (might be due to invalid IL or missing references)
				//IL_0482: Unknown result type (might be due to invalid IL or missing references)
				//IL_048d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0494: Unknown result type (might be due to invalid IL or missing references)
				//IL_049f: Unknown result type (might be due to invalid IL or missing references)
				//IL_04a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_04ad: Unknown result type (might be due to invalid IL or missing references)
				//IL_04b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_04bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_04ca: Unknown result type (might be due to invalid IL or missing references)
				//IL_04d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_04de: Expected O, but got Unknown
				GameObject prefab = ZNetScene.instance.GetPrefab("Pickable_Mushroom_Witcheye_TW");
				ZoneVegetation item = new ZoneVegetation
				{
					m_name = ((Object)prefab).name,
					m_prefab = prefab,
					m_enable = true,
					m_max = 0.8f,
					m_forcePlacement = false,
					m_scaleMin = 1f,
					m_scaleMax = 1.2f,
					m_randTilt = 5f,
					m_chanceToUseGroundTilt = 1f,
					m_biome = (Biome)8,
					m_biomeArea = (BiomeArea)3,
					m_blockCheck = true,
					m_minAltitude = 0f,
					m_maxAltitude = 1000f,
					m_minOceanDepth = 0f,
					m_maxOceanDepth = 0f,
					m_minTilt = 0f,
					m_maxTilt = 90f,
					m_terrainDeltaRadius = 0f,
					m_maxTerrainDelta = 2f,
					m_minTerrainDelta = 0f,
					m_snapToWater = false,
					m_groundOffset = 0f,
					m_groupSizeMin = 1,
					m_groupSizeMax = 1,
					m_groupRadius = 32f,
					m_inForest = false,
					m_forestTresholdMin = 0f,
					m_forestTresholdMax = 1f,
					m_foldout = false
				};
				GameObject prefab2 = ZNetScene.instance.GetPrefab("Pickable_Mushroom_Deathcap_TW");
				ZoneVegetation item2 = new ZoneVegetation
				{
					m_name = ((Object)prefab2).name,
					m_prefab = prefab2,
					m_enable = true,
					m_max = 0.8f,
					m_forcePlacement = false,
					m_scaleMin = 1f,
					m_scaleMax = 1.2f,
					m_randTilt = 5f,
					m_chanceToUseGroundTilt = 100f,
					m_biome = (Biome)2,
					m_biomeArea = (BiomeArea)3,
					m_blockCheck = true,
					m_minAltitude = -100f,
					m_maxAltitude = 1000f,
					m_minOceanDepth = 0f,
					m_maxOceanDepth = 0f,
					m_minTilt = 0f,
					m_maxTilt = 90f,
					m_terrainDeltaRadius = 0f,
					m_maxTerrainDelta = 2f,
					m_minTerrainDelta = 0f,
					m_snapToWater = false,
					m_groundOffset = 0f,
					m_groupSizeMin = 1,
					m_groupSizeMax = 1,
					m_groupRadius = 16f,
					m_inForest = false,
					m_forestTresholdMin = 0f,
					m_forestTresholdMax = 1f,
					m_foldout = false
				};
				GameObject prefab3 = ZNetScene.instance.GetPrefab("Pickable_Mushroom_Wizardbutter_TW");
				ZoneVegetation item3 = new ZoneVegetation
				{
					m_name = ((Object)prefab3).name,
					m_prefab = prefab3,
					m_enable = true,
					m_max = 0.8f,
					m_forcePlacement = false,
					m_scaleMin = 1f,
					m_scaleMax = 1.1f,
					m_randTilt = 5f,
					m_chanceToUseGroundTilt = 100f,
					m_biome = (Biome)4,
					m_biomeArea = (BiomeArea)3,
					m_blockCheck = true,
					m_minAltitude = 0f,
					m_maxAltitude = 1000f,
					m_minOceanDepth = 0f,
					m_maxOceanDepth = 0f,
					m_minTilt = 0f,
					m_maxTilt = 90f,
					m_terrainDeltaRadius = 0f,
					m_maxTerrainDelta = 2f,
					m_minTerrainDelta = 0f,
					m_snapToWater = false,
					m_groundOffset = 0f,
					m_groupSizeMin = 1,
					m_groupSizeMax = 1,
					m_groupRadius = 32f,
					m_inForest = false,
					m_forestTresholdMin = 0f,
					m_forestTresholdMax = 1f,
					m_foldout = false
				};
				GameObject prefab4 = ZNetScene.instance.GetPrefab("Pickable_Mushroom_Devilstongue_TW");
				ZoneVegetation item4 = new ZoneVegetation
				{
					m_name = ((Object)prefab4).name,
					m_prefab = prefab4,
					m_enable = true,
					m_max = 0.8f,
					m_forcePlacement = false,
					m_scaleMin = 1f,
					m_scaleMax = 1f,
					m_randTilt = 5f,
					m_chanceToUseGroundTilt = 100f,
					m_biome = (Biome)16,
					m_biomeArea = (BiomeArea)3,
					m_blockCheck = true,
					m_minAltitude = 0f,
					m_maxAltitude = 1000f,
					m_minOceanDepth = 0f,
					m_maxOceanDepth = 0f,
					m_minTilt = 0f,
					m_maxTilt = 90f,
					m_terrainDeltaRadius = 0f,
					m_maxTerrainDelta = 2f,
					m_minTerrainDelta = 0f,
					m_snapToWater = false,
					m_groundOffset = 0f,
					m_groupSizeMin = 1,
					m_groupSizeMax = 1,
					m_groupRadius = 32f,
					m_inForest = false,
					m_forestTresholdMin = 0f,
					m_forestTresholdMax = 1f,
					m_foldout = false
				};
				List<ZoneVegetation> source = new List<ZoneVegetation> { item, item2, item3, item4 };
				foreach (ZoneVegetation item5 in source.Distinct())
				{
					if (!__instance.m_vegetation.Contains(item5))
					{
						__instance.m_vegetation.Add(item5);
					}
				}
			}
		}
	}
	[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;
			}
			WizardryPlugin.WizardryLogger.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(), "RequestAdminSync", new object[1] { (object)new ZPackage() });
		}
	}
	public class WackyDatabase_API
	{
		private static readonly bool _IsInstalled;

		private static MethodInfo eAddBlacklistClone;

		public static bool IsInstalled()
		{
			return _IsInstalled;
		}

		public static void AddBlacklistClone(string value)
		{
			MethodInfo methodInfo = eAddBlacklistClone;
			if (methodInfo != null)
			{
				methodInfo.Invoke(null, new object[1] { value });
			}
		}

		static WackyDatabase_API()
		{
			if (Type.GetType("API.WackyAPI, WackysDatabase") == null)
			{
				_IsInstalled = false;
				return;
			}
			Type type = Type.GetType("API.WackyAPI, WackysDatabase");
			_IsInstalled = true;
			eAddBlacklistClone = type.GetMethod("AddBlacklistClone", BindingFlags.Static | BindingFlags.Public);
		}
	}
	[HarmonyPatch(typeof(ZNetScene), "Awake")]
	internal static class WarfareWizardryCookingFermentingZNetScene_AwakePost_Patch
	{
		private static void Postfix(ZNetScene __instance)
		{
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Expected O, but got Unknown
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Expected O, but got Unknown
			//IL_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: Expected O, but got Unknown
			bool flag;
			if (!((Object)(object)__instance == (Object)null))
			{
				List<GameObject> prefabs = __instance.m_prefabs;
				flag = prefabs == null || prefabs.Count <= 0;
			}
			else
			{
				flag = true;
			}
			if (flag)
			{
				return;
			}
			Fermenter component = __instance.GetPrefab("fermenter").GetComponent<Fermenter>();
			CookingStation component2 = __instance.GetPrefab("piece_oven").GetComponent<CookingStation>();
			foreach (KeyValuePair<GameObject, GameObject> fermenter in WizardryPlugin.fermenters)
			{
				component.m_conversion.Add(new ItemConversion
				{
					m_from = __instance.GetPrefab(((Object)fermenter.Key).name).GetComponent<ItemDrop>(),
					m_to = __instance.GetPrefab(((Object)fermenter.Value).name).GetComponent<ItemDrop>(),
					m_producedItems = 6
				});
			}
			foreach (KeyValuePair<GameObject, GameObject> item in WizardryPlugin.fermenterssmall)
			{
				component.m_conversion.Add(new ItemConversion
				{
					m_from = __instance.GetPrefab(((Object)item.Key).name).GetComponent<ItemDrop>(),
					m_to = __instance.GetPrefab(((Object)item.Value).name).GetComponent<ItemDrop>(),
					m_producedItems = 4
				});
			}
			foreach (KeyValuePair<GameObject, GameObject> oven in WizardryPlugin.ovens)
			{
				component2.m_conversion.Add(new ItemConversion
				{
					m_cookTime = 60f,
					m_from = __instance.GetPrefab(((Object)oven.Key).name).GetComponent<ItemDrop>(),
					m_to = __instance.GetPrefab(((Object)oven.Value).name).GetComponent<ItemDrop>()
				});
			}
		}
	}
	[HarmonyPatch(typeof(ZNetScene), "Awake")]
	public static class WarfareWizardryDrops_Patch
	{
		public static void Postfix(ZNetScene __instance)
		{
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: Expected O, but got Unknown
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Expected O, but got Unknown
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Unknown result type (might be due to invalid IL or missing references)
			//IL_020f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Unknown result type (might be due to invalid IL or missing references)
			//IL_0222: Expected O, but got Unknown
			//IL_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_0264: Unknown result type (might be due to invalid IL or missing references)
			//IL_026b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0272: Unknown result type (might be due to invalid IL or missing references)
			//IL_027d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0284: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: Expected O, but got Unknown
			//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02be: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fb: Expected O, but got Unknown
			if (!Object.op_Implicit((Object)(object)__instance))
			{
				return;
			}
			GameObject prefab = __instance.GetPrefab("gd_king");
			GameObject prefab2 = __instance.GetPrefab("Bonemass");
			GameObject prefab3 = __instance.GetPrefab("Dragon");
			GameObject prefab4 = __instance.GetPrefab("GoblinKing");
			GameObject prefab5 = __instance.GetPrefab("SeekerQueen");
			if (!Object.op_Implicit((Object)(object)prefab) || !Object.op_Implicit((Object)(object)prefab2) || !Object.op_Implicit((Object)(object)prefab3) || !Object.op_Implicit((Object)(object)prefab4) || !Object.op_Implicit((Object)(object)prefab5))
			{
				return;
			}
			CharacterDrop component = prefab.GetComponent<CharacterDrop>();
			if (!Object.op_Implicit((Object)(object)component))
			{
				return;
			}
			component.m_drops.Add(new Drop
			{
				m_prefab = __instance.GetPrefab("ShardElder_TW"),
				m_amountMin = 1,
				m_amountMax = 3,
				m_chance = 1f,
				m_onePerPlayer = false,
				m_levelMultiplier = true
			});
			CharacterDrop component2 = prefab2.GetComponent<CharacterDrop>();
			if (!Object.op_Implicit((Object)(object)component2))
			{
				return;
			}
			component2.m_drops.Add(new Drop
			{
				m_prefab = __instance.GetPrefab("ShardBonemass_TW"),
				m_amountMin = 1,
				m_amountMax = 4,
				m_chance = 1f,
				m_onePerPlayer = false,
				m_levelMultiplier = true
			});
			CharacterDrop component3 = prefab3.GetComponent<CharacterDrop>();
			if (!Object.op_Implicit((Object)(object)component3))
			{
				return;
			}
			component3.m_drops.Add(new Drop
			{
				m_prefab = __instance.GetPrefab("ShardModer_TW"),
				m_amountMin = 1,
				m_amountMax = 4,
				m_chance = 1f,
				m_onePerPlayer = false,
				m_levelMultiplier = true
			});
			CharacterDrop component4 = prefab4.GetComponent<CharacterDrop>();
			if (Object.op_Implicit((Object)(object)component4))
			{
				component4.m_drops.Add(new Drop
				{
					m_prefab = __instance.GetPrefab("ShardYagluth_TW"),
					m_amountMin = 1,
					m_amountMax = 5,
					m_chance = 1f,
					m_onePerPlayer = false,
					m_levelMultiplier = true
				});
				CharacterDrop component5 = prefab5.GetComponent<CharacterDrop>();
				if (Object.op_Implicit((Object)(object)component5))
				{
					component5.m_drops.Add(new Drop
					{
						m_prefab = __instance.GetPrefab("ShardQueen_TW"),
						m_amountMin = 1,
						m_amountMax = 6,
						m_chance = 1f,
						m_onePerPlayer = false,
						m_levelMultiplier = true
					});
				}
			}
		}
	}
	public class WarfareWizardryMonstrumItemSwap
	{
		[HarmonyPatch(typeof(Player), "OnSpawned")]
		[HarmonyPriority(0)]
		private static class ZNetScene_Awake_Patch_Monsters
		{
			[HarmonyPatch(typeof(FejdStartup), "Awake")]
			private static class FejdStartup_Awake_Patch
			{
				private static void Postfix(FejdStartup __instance)
				{
					FirstInit = false;
				}
			}

			public static bool FirstInit;

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

			[HarmonyPriority(0)]
			private static void Postfix(ZNetScene __instance)
			{
				if (!FirstInit)
				{
					FirstInit = true;
					ReplaceItem("BlackBear_TW", "RingSwamp_TW", "WitheredBone", "Onyx_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "RingMountain_TW", "WolfClaw", "Diamond_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "RingPlains_TW", "GoblinTotem", "Emerald_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "RingMistlands_TW", "Softtissue", "Amethyst_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletBronze_Hunter_TW", "BoneFragments", "TrollBone_TW", 2, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletBronze_Sneak_TW", "TrollHide", "RazorbackLeather_TW", 5, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletIron_Stamina_TW", "WitheredBone", "Onyx_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletIron_Elemental_TW", "WitheredBone", "Onyx_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletIron_Hunter_TW", "WitheredBone", "Onyx_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletIron_Sneak_TW", "WitheredBone", "Onyx_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletSilver_Stamina_TW", "FreezeGland", "Diamond_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletSilver_Elemental_TW", "WolfFang", "Diamond_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletSilver_Hunter_TW", "WolfFang", "Diamond_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletSilver_Sneak_TW", "Obsidian", "Diamond_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletBM_Stamina_TW", "Needle", "Emerald_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletBM_Elemental_TW", "GoblinTotem", "Emerald_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletBM_Hunter_TW", "Tar", "Emerald_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletBM_Sneak_TW", "LoxPelt", "Emerald_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletCarapace_Stamina_TW", "Eitr", "Amethyst_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletCarapace_Elemental_TW", "Eitr", "Amethyst_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletCarapace_Hunter_TW", "Eitr", "Amethyst_TW", 1, 1);
					ReplaceItem("BlackBear_TW", "HelmetCircletCarapace_Sneak_TW", "Eitr", "Amethyst_TW", 1, 1);
				}
			}
		}
	}
	[BepInPlugin("Therzie.Wizardry", "Wizardry", "1.2.0")]
	public class WizardryPlugin : BaseUnityPlugin
	{
		public enum Toggle
		{
			On = 1,
			Off = 0
		}

		[HarmonyPatch(typeof(CharacterAnimEvent), "CustomFixedUpdate")]
		private static class AttackSpeedSystem
		{
			private static readonly Dictionary<string, float> _data_Main = new Dictionary<string, float>();

			private static readonly Dictionary<string, float> _data_Secondary = new Dictionary<string, float>();

			public static void RegisterMainAttacks(GameObject item, float speed)
			{
				_data_Main[((Object)item).name] = speed;
			}

			public static void RegisterSecondaryAttacks(GameObject item, float speed)
			{
				_data_Secondary[((Object)item).name] = speed;
			}

			private static void Prefix(CharacterAnimEvent __instance)
			{
				Player localPlayer = Player.m_localPlayer;
				if (!((Object)(object)localPlayer != (Object)(object)__instance.m_character) && ((Character)localPlayer).InAttack())
				{
					GameObject val = ((Humanoid)localPlayer).GetCurrentWeapon()?.m_dropPrefab;
					if (Object.op_Implicit((Object)(object)val) && _data_Main.TryGetValue(((Object)val).name, out var value) && !((Humanoid)localPlayer).m_currentAttackIsSecondary)
					{
						__instance.m_animator.speed = value;
					}
					else if (Object.op_Implicit((Object)(object)val) && _data_Secondary.TryGetValue(((Object)val).name, out value) && ((Humanoid)localPlayer).m_currentAttackIsSecondary)
					{
						__instance.m_animator.speed = value;
					}
				}
			}
		}

		[HarmonyPatch(typeof(Tameable), "UnsummonMaxInstances")]
		private static class WarfareWizardry_Tameable_UnsummonMaxInstances_Patch
		{
			private static string Replacer(Tameable tame)
			{
				if (!Object.op_Implicit((Object)(object)tame))
				{
					return "";
				}
				string prefabName = Utils.GetPrefabName(((Component)tame).gameObject);
				bool flag = false;
				string result = ((prefabName == "SummonedSurtling_TW") ? Localization.instance.Localize("$staffsurtling_maxsummon") : ((prefabName == "SummonedGolem_TW") ? Localization.instance.Localize("$staffgolem_maxsummon") : Localization.instance.Localize("$hud_maxsummonsreached", new string[1] { tame.m_character.m_name })));
				bool flag2 = false;
				return result;
			}

			[UsedImplicitly]
			private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> code)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0009: Expected O, but got Unknown
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				//IL_0029: Expected O, but got Unknown
				//IL_007b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0081: Expected O, but got Unknown
				CodeMatcher val = new CodeMatcher(code, (ILGenerator)null);
				val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
				{
					new CodeMatch((OpCode?)OpCodes.Ldstr, (object)"$hud_maxsummonsreached", (string)null)
				});
				if (!val.IsValid)
				{
					return val.InstructionEnumeration();
				}
				val.SetAndAdvance(OpCodes.Ldarg_0, (object)null);
				val.Insert((CodeInstruction[])(object)new CodeInstruction[1]
				{
					new CodeInstruction(OpCodes.Call, (object)AccessTools.Method(typeof(WarfareWizardry_Tameable_UnsummonMaxInstances_Patch), "Replacer", (Type[])null, (Type[])null))
				});
				return val.InstructionEnumeration();
			}
		}

		[HarmonyPatch(typeof(Player), "CanConsumeItem")]
		private static class PlayerConsumeItemPatchWizardry
		{
			private static HashSet<string> prefabNamesToCheck = new HashSet<string>
			{
				"MushroomWitcheye_TW", "MushroomDeathcap_TW", "MushroomWizardbutter_TW", "MushroomDevilstongue_TW", "ShroomSoupBlackForest_TW", "ShroomSoupSwamp_TW", "ShroomSoupMountain_TW", "ShroomSoupPlains_TW", "EitrPlateBlackForest_TW", "EitrPlateSwamp_TW",
				"EitrPlateMountain_TW", "EitrPlatePlains_TW", "BerryCandyBlackForest_TW", "IceHornMountain_TW", "JellyCakeSwamp_TW", "BerryCakePlains_TW"
			};

			private static void Postfix(Player __instance, ItemData item, ref bool __result)
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0042: Invalid comparison between Unknown and I4
				if (item == null || item.m_shared == null || (Object)(object)item.m_dropPrefab == (Object)null || (int)item.m_shared.m_itemType != 2 || ((double)item.m_shared.m_food > 0.0 && !__instance.CanEat(item, true)))
				{
					return;
				}
				string prefabName = Utils.GetPrefabName(item.m_dropPrefab);
				if (Object.op_Implicit((Object)(object)item.m_shared.m_consumeStatusEffect))
				{
					StatusEffect consumeStatusEffect = item.m_shared.m_consumeStatusEffect;
					if ((((Character)__instance).m_seman.HaveStatusEffect(StringExtensionMethods.GetStableHashCode(((Object)item.m_shared.m_consumeStatusEffect).name)) || ((Character)__instance).m_seman.HaveStatusEffectCategory(consumeStatusEffect.m_category)) && prefabNamesToCheck.Contains(prefabName))
					{
						((Character)__instance).m_seman.RemoveStatusEffect(consumeStatusEffect, true);
						__result = true;
					}
				}
			}
		}

		private class ConfigurationManagerAttributes
		{
			public bool? Browsable = false;
		}

		private class AcceptableShortcuts : AcceptableValueBase
		{
			public AcceptableShortcuts()
				: base(typeof(KeyboardShortcut))
			{
			}

			public override object Clamp(object value)
			{
				return value;
			}

			public override bool IsValid(object value)
			{
				return true;
			}

			public override string ToDescriptionString()
			{
				return "# Acceptable values: " + string.Join(", ", KeyboardShortcut.AllKeyCodes);
			}
		}

		internal const string ModName = "Wizardry";

		internal const string ModVersion = "1.2.0";

		internal const string Author = "Therzie";

		private const string ModGUID = "Therzie.Wizardry";

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

		private static string ConfigFileFullPath = Paths.ConfigPath + Path.DirectorySeparatorChar + ConfigFileName;

		internal static string ConnectionError = "";

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

		public static CraftingStation WizardTable;

		public static CraftingStation ArcaneForge;

		public static CraftingStation WeavingLoom;

		public static CraftingStation PotionCauldron;

		public static readonly ManualLogSource WizardryLogger = Logger.CreateLogSource("Wizardry");

		private static readonly ConfigSync ConfigSync = new ConfigSync("Therzie.Wizardry")
		{
			DisplayName = "Wizardry",
			CurrentVersion = "1.2.0",
			MinimumRequiredVersion = "1.2.0",
			ModRequired = true
		};

		internal static Dictionary<GameObject, GameObject> fermenters = new Dictionary<GameObject, GameObject>();

		internal static Dictionary<GameObject, GameObject> fermenterssmall = new Dictionary<GameObject, GameObject>();

		internal static Dictionary<GameObject, GameObject> ovens = new Dictionary<GameObject, GameObject>();

		public Texture2D tex;

		private Sprite mySprite;

		private SpriteRenderer sr;

		private DateTime _lastReloadTime;

		private const long RELOAD_DELAY = 10000000L;

		private static ConfigEntry<Toggle> _serverConfigLocked = null;

		public void Awake()
		{
			//IL_7312: Unknown result type (might be due to invalid IL or missing references)
			//IL_73a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_77e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_7875: Unknown result type (might be due to invalid IL or missing references)
			//IL_7cb4: Unknown result type (might be due to invalid IL or missing references)
			//IL_7d49: Unknown result type (might be due to invalid IL or missing references)
			//IL_81e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_828a: Unknown result type (might be due to invalid IL or missing references)
			//IL_873a: Unknown result type (might be due to invalid IL or missing references)
			//IL_87b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_8a04: Unknown result type (might be due to invalid IL or missing references)
			//IL_8a83: Unknown result type (might be due to invalid IL or missing references)
			Localizer.Load();
			SoundMixMan.PatchAssetBundle("warfarewizard");
			_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);
			GameObject val = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_water_surface_WarfareWizardry_TW");
			GameObject val2 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_RockHit_WarfareWizardry_TW");
			GameObject val3 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_blocked_WafareWizardry_TW");
			GameObject val4 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_ExtensionConnection_WarfareWizardry_TW");
			GameObject val5 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_HitSparks_WarfareWizardry_TW");
			GameObject val6 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Place_workbench_WarfareWizardry_TW");
			GameObject val7 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_SawDust_WarfareWizardry_TW");
			GameObject val8 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_pickable_pick_WarfareWizardry_TW");
			GameObject val9 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Potion_eitr_TW");
			GameObject val10 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_corpse_destruction_small_WarfareWizardry_TW");
			GameObject val11 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_clubhit_WarfareWizardry_TW");
			GameObject val12 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Potion_lumberjack_TW");
			GameObject val13 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_ExtensionConnection_Dummy_WarfareWizardry_TW");
			GameObject val14 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Potion_ox_TW");
			GameObject val15 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Potion_miner_TW");
			GameObject val16 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Potion_Aquatic_TW");
			GameObject val17 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Potion_sneak_TW");
			GameObject val18 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Potion_skills_TW");
			GameObject val19 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Potion_speed_TW");
			GameObject val20 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Potion_stoneskin_TW");
			GameObject val21 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_creature_soothed_WarfareWizardry_TW");
			GameObject val22 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Place_wood_pole_WarfareWizardry_TW");
			GameObject val23 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_mushroom_grow_TW");
			GameObject val24 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_bush_destroyed_WarfareWizardry_TW");
			GameObject val25 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_bush_leaf_puff_WarfareWizardry_TW");
			GameObject val26 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_lightningimpactexplode_WarfareWizardry_TW");
			GameObject val27 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_lightning_explosion_effect_WarfareWizardry_TW");
			GameObject val28 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_FireballYellowHit_WarfareWizardry_TW");
			GameObject val29 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_PoisonSpellHit_WarfareWizardry_TW");
			GameObject val30 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "vfx_Tared_WarfareWizardry_TW");
			GameObject val31 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_backstab_WarfareWizardry_TW");
			GameObject val32 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_crit_WarfareWizardry_TW");
			GameObject val33 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_block_camshake_WarfareWizardry_TW");
			GameObject val34 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_hit_camshake_WarfareWizardry_TW");
			GameObject val35 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_swing_camshake_WafareWizardry_TW");
			GameObject val36 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_meteor_explosion_WarfareWizardry_TW");
			GameObject val37 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_frozenhands_WarfareWizardry_TW");
			GameObject val38 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_boar_footstep_walk_WarfareWizardry_TW");
			GameObject val39 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_creature_tamed_WarfareWizardry_TW");
			GameObject val40 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_seeker_hurt_WarfareWizardry_TW");
			GameObject val41 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_icespell_impact_WarfareWizardry_TW");
			GameObject val42 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_StaffMountain_IceCone_StartCast_TW");
			GameObject val43 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_greydwarf_attack_hit_WarfareWizardry_TW");
			GameObject val44 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_bomb_throw_WarfareWizardry_TW");
			GameObject val45 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_basestaff_swing_WarfareWizardry_TW");
			GameObject val46 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_blob_attack_WarfareWizardry_TW");
			GameObject val47 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_build_hammer_wood_WarfareWizardry_TW");
			GameObject val48 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_basestaff_hit_WafareWizardry_TW");
			GameObject val49 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_gui_repairitem_workbench_WarfareWizardry_TW");
			GameObject val50 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_wood_blocked_WarfareWizardry_TW");
			GameObject val51 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_wood_destroyed_WarfareWizardry_TW");
			GameObject val52 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_root_trail_WarfareWizardry_TW");
			GameObject val53 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_gui_craftitem_workbench_WarfareWizardry_TW");
			GameObject val54 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_gui_craftitem_workbench_end_WarfareWizardry_TW");
			GameObject val55 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_pickable_pick_WarfareWizardry_TW");
			GameObject val56 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_explosion_WarfareWizardry_TW");
			GameObject val57 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_meteorhit_WarfareWizardry_TW");
			GameObject val58 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_club_hit_WarfareWizardry_TW");
			GameObject val59 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_LightningExplosion_TW");
			GameObject val60 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_rock_destroyed_WarfareWizardry_TW");
			GameObject val61 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_summon_prespawn_WarfareWizardry_TW");
			GameObject val62 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_summon_spawn_WarfareWizardry_TW");
			GameObject val63 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_summon_cast_WarfareWizardry_TW");
			GameObject val64 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_build_hammer_metal_WarfareWizardry_TW");
			GameObject val65 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_gui_craftitem_cauldron_TW");
			GameObject val66 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_gui_craftitem_cauldron_end_TW");
			GameObject val67 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_build_hammer_stone_WarfareWizardry_TW");
			GameObject val68 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_Potion_eitr_minor_TW");
			GameObject val69 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_creature_consume_WarfareWizardry_TW");
			GameObject val70 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_build_cultivator_WarfareWizardry_TW");
			GameObject val71 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_bush_hit_WarfareWizardry_TW");
			GameObject val72 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_Spellbook_TW");
			GameObject val73 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_Spellbook_build_TW");
			GameObject val74 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_build_hammer_default_WarfareWizardry_TW");
			GameObject val75 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_lightning_impact_WarfareWizardry_TW");
			GameObject val76 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_LightningStrike_WarfareWizardry_TW");
			GameObject val77 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_club_swing_WarfareWizardry_TW");
			GameObject val78 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_lightningexplosion_WarfareWizardry_TW");
			GameObject val79 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_seeker_attack_start_WarfareWizardry_TW");
			GameObject val80 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_firespell_release_WarfareWizardry_TW");
			GameObject val81 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_footstep_sneak_WarfareWizardry_TW");
			GameObject val82 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_footstep_swim_WarfareWizardry_TW");
			GameObject val83 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "sfx_icespell_release_WarfareWizardry_TW");
			GameObject val84 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_footstep_climb_WarfareWizardry_TW");
			GameObject val85 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_footstep_jog_WarfareWizardry_TW");
			GameObject val86 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_footstep_mud_jog_WarfareWizardry_TW");
			GameObject val87 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_footstep_mud_run_WarfareWizardry_TW");
			GameObject val88 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_footstep_run_WarfareWizardry_TW");
			GameObject val89 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_footstep_snow_jog_WarfareWizardry_TW");
			GameObject val90 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_footstep_snow_run_WafareWizardry_TW");
			GameObject val91 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("warfarewizard"), "fx_footstep_water_WafareWizardry_TW");
			AnimationReplaceManager.AddAnimationSet("warfarewizard", "StaffPlains_Secondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfarewizard", "StaffMountainSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfarewizard", "StaffSwampSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfarewizard", "StaffMistlandsSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfarewizard", "CastScroll_TW");
			GameObject val92 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "Pickable_Mushroom_Witcheye_TW");
			GameObject val93 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "MushroomWitcheye_TW", addToObjectDb: true);
			GameObject val94 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "Pickable_Mushroom_Deathcap_TW");
			GameObject val95 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "MushroomDeathcap_TW", addToObjectDb: true);
			GameObject val96 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "Pickable_Mushroom_Wizardbutter_TW");
			GameObject val97 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "MushroomWizardbutter_TW", addToObjectDb: true);
			GameObject val98 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "Pickable_Mushroom_Devilstongue_TW");
			GameObject val99 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "MushroomDevilstongue_TW", addToObjectDb: true);
			BuildPiece buildPiece = new BuildPiece("vegetation", "Sapling_MushroomWitcheye_TW");
			buildPiece.Tool.Add("Cultivator");
			buildPiece.RequiredItems.Add("MushroomWitcheye_TW", 1, recover: false);
			buildPiece.SpecialProperties.NoConfig = true;
			GameObject val100 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "Pickable_GrownMushroomWitcheye_TW");
			BuildPiece buildPiece2 = new BuildPiece("vegetation", "Sapling_MushroomDeathcap_TW");
			buildPiece2.Tool.Add("Cultivator");
			buildPiece2.RequiredItems.Add("MushroomDeathcap_TW", 1, recover: false);
			buildPiece2.SpecialProperties.NoConfig = true;
			GameObject val101 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "Pickable_GrownMushroomDeathcap_TW");
			BuildPiece buildPiece3 = new BuildPiece("vegetation", "Sapling_MushroomWizardbutter_TW");
			buildPiece3.Tool.Add("Cultivator");
			buildPiece3.RequiredItems.Add("MushroomWizardbutter_TW", 1, recover: false);
			buildPiece3.SpecialProperties.NoConfig = true;
			GameObject val102 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "Pickable_GrownMushroomWizardbutter_TW");
			BuildPiece buildPiece4 = new BuildPiece("vegetation", "Sapling_MushroomDevilstongue_TW");
			buildPiece4.Tool.Add("Cultivator");
			buildPiece4.RequiredItems.Add("MushroomDevilstongue_TW", 1, recover: false);
			buildPiece4.SpecialProperties.NoConfig = true;
			GameObject val103 = ItemManager.PrefabManager.RegisterPrefab(ItemManager.PrefabManager.RegisterAssetBundle("vegetation"), "Pickable_GrownMushroomDevilstongue_TW");
			Item item = new Item("warfarewizard", "ShardElder_TW");
			item.Configurable = Configurability.Recipe;
			item.Crafting.Add("ArcaneAnvil_TW", 1);
			item.RequiredItems.Add("Bronze", 5);
			item.RequiredItems.Add("AncientSeed", 2);
			item.RequiredItems.Add("TrophyGreydwarfShaman", 1);
			item.CraftAmount = 1;
			Item item2 = new Item("warfarewizard", "ShardBonemass_TW");
			item2.Configurable = Configurability.Recipe;
			item2["Base recipe"].Crafting.Add("ArcaneAnvil_TW", 1);
			item2["Base recipe"].RequiredItems.Add("Iron", 5);
			item2["Base recipe"].RequiredItems.Add("WitheredBone", 2);
			item2["Base recipe"].RequiredItems.Add("TrophySkeletonPoison", 1);
			item2["Base recipe"].CraftAmount = 1;
			item2["Alternative recipe"].Crafting.Add("ArcaneAnvil_TW", 1);
			item2["Alternative recipe"].RequiredItems.Add("ShardElder_TW", 3);
			item2["Alternative recipe"].RequiredItems.Add("Iron", 1);
			item2["Alternative recipe"].CraftAmount = 1;
			Item item3 = new Item("warfarewizard", "ShardModer_TW");
			item3["Base recipe"].Crafting.Add("ArcaneAnvil_TW", 1);
			item3["Base recipe"].RequiredItems.Add("Silver", 5);
			item3["Base recipe"].RequiredItems.Add("WolfClaw", 2);
			item3["Base recipe"].RequiredItems.Add("TrophyCultist", 1);
			item3["Base recipe"].CraftAmount = 1;
			item3["Alternative recipe"].Crafting.Add("ArcaneAnvil_TW", 1);
			item3["Alternative recipe"].RequiredItems.Add("ShardBonemass_TW", 3);
			item3["Alternative recipe"].RequiredItems.Add("Silver", 1);
			item3["Alternative recipe"].CraftAmount = 1;
			Item item4 = new Item("warfarewizard", "ShardYagluth_TW");
			item4["Base recipe"].Crafting.Add("ArcaneAnvil_TW", 1);
			item4["Base recipe"].RequiredItems.Add("BlackMetal", 5);
			item4["Base recipe"].RequiredItems.Add("Needle", 2);
			item4["Base recipe"].RequiredItems.Add("TrophyGoblinShaman", 1);
			item4["Base recipe"].CraftAmount = 1;
			item4["Alternative recipe"].Crafting.Add("ArcaneAnvil_TW", 1);
			item4["Alternative recipe"].RequiredItems.Add("ShardModer_TW", 3);
			item4["Alternative recipe"].RequiredItems.Add("BlackMetal", 1);
			item4["Alternative recipe"].CraftAmount = 1;
			Item item5 = new Item("warfarewizard", "ShardQueen_TW");
			item5["Base recipe"].Crafting.Add("ArcaneAnvil_TW", 1);
			item5["Base recipe"].RequiredItems.Add("Eitr", 5);
			item5["Base recipe"].RequiredItems.Add("Softtissue", 2);
			item5["Base recipe"].RequiredItems.Add("TrophyDvergr", 1);
			item5["Base recipe"].CraftAmount = 1;
			item5["Alternative recipe"].Crafting.Add("ArcaneAnvil_TW", 1);
			item5["Alternative recipe"].RequiredItems.Add("ShardYagluth_TW", 3);
			item5["Alternative recipe"].RequiredItems.Add("Eitr", 1);
			item5["Alternative recipe"].CraftAmount = 1;
			item5.DropsFrom.Add("DvergerMage", 0.1f, 1, 1);
			item5.DropsFrom.Add("DvergerMageFire", 0.1f, 1, 1);
			item5.DropsFrom.Add("DvergerMageIce", 0.1f, 1, 1);
			item5.DropsFrom.Add("DvergerMageSupport", 0.1f, 1, 1);
			Item item6 = new Item("warfarewizard", "EnchantedWoodBlackForest_TW");
			item6["Base recipe"].Crafting.Add("ArcaneAnvil_TW", 1);
			item6["Base recipe"].RequiredItems.Add("RoundLog", 5);
			item6["Base recipe"].RequiredItems.Add("GreydwarfEye", 2);
			item6["Base recipe"].RequiredItems.Add("ShardElder_TW", 1);
			item6["Base recipe"].CraftAmount = 5;
			Item item7 = new Item("warfarewizard", "EnchantedWoodSwamp_TW");
			item7["Base recipe"].Crafting.Add("ArcaneAnvil_TW", 2);
			item7["Base recipe"].RequiredItems.Add("ElderBark", 5);
			item7["Base recipe"].RequiredItems.Add("Ooze", 1);
			item7["Base recipe"].RequiredItems.Add("ShardBonemass_TW", 1);
			item7["Base recipe"].CraftAmount = 5;
			Item item8 = new Item("warfarewizard", "EnchantedWoodMountain_TW");
			item8["Base recipe"].Crafting.Add("ArcaneAnvil_TW", 3);
			item8["Base recipe"].RequiredItems.Add("Wood", 25);
			item8["Base recipe"].RequiredItems.Add("FreezeGland", 1);
			item8["Base recipe"].RequiredItems.Add("ShardModer_TW", 1);
			item8["Base recipe"].CraftAmount = 5;
			Item item9 = new Item("warfarewizard", "EnchantedWoodPlains_TW");
			item9["Base recipe"].Crafting.Add("ArcaneAnvil_TW", 4);
			item9["Base recipe"].RequiredItems.Add("FineWood", 5);
			item9["Base recipe"].RequiredItems.Add("LinenThread", 2);
			item9["Base recipe"].RequiredItems.Add("ShardYagluth_TW", 1);
			Item item10 = new Item("warfarewizard", "EnchantedWoodMistlands_TW");
			item10["Base recipe"].Crafting.Add("ArcaneAnvil_TW", 5);
			item10["Base recipe"].RequiredItems.Add("YggdrasilWood", 5);
			item10["Base recipe"].RequiredItems.Add("Eitr", 1);
			item10["Base recipe"].RequiredItems.Add("ShardQueen_TW", 1);
			Item item11 = new Item("warfarewizard", "TrophySheep_TW");
			Item item12 = new Item("warfarewizard", "WoolScraps_TW");
			Item item13 = new Item("warfarewizard", "WoolYarn_Black_TW");
			item13.Configurable = Configurability.Recipe;
			item13.Crafting.Add("WeavingLoom_TW", 1);
			item13.RequiredItems.Add("WoolScraps_TW", 4);
			item13.RequiredItems.Add("Tar", 2);
			item13.CraftAmount = 4;
			Item item14 = new Item("warfarewizard", "WoolYarn_Teal_TW");
			item14.Configurable = Configurability.Recipe;
			item14.Crafting.Add("WeavingLoom_TW", 1);
			item14.RequiredItems.Add("WoolScraps_TW", 4);
			item14.RequiredItems.Add("Eitr", 2);
			item14.CraftAmount = 4;
			Item item15 = new Item("warfarewizard", "WoolYarn_Blue_TW");
			item15.Configurable = Configurability.Recipe;
			item15.Crafting.Add("WeavingLoom_TW", 1);
			item15.RequiredItems.Add("WoolScraps_TW", 4);
			item15.RequiredItems.Add("FreezeGland", 2);
			item15.CraftAmount = 4;
			Item item16 = new Item("warfarewizard", "WoolYarn_Green_TW");
			item16.Configurable = Configurability.Recipe;
			item16.Crafting.Add("WeavingLoom_TW", 1);
			item16.RequiredItems.Add("WoolScraps_TW", 4);
			item16.RequiredItems.Add("Ooze", 2);
			item16.CraftAmount = 4;
			Item item17 = new Item("warfarewizard", "WoolYarn_Brown_TW");
			item17.Configurable = Configurability.Recipe;
			item17.Crafting.Add("WeavingLoom_TW", 1);
			item17.RequiredItems.Add("WoolScraps_TW", 4);
			item17.CraftAmount = 4;
			Item item18 = new Item("warfarewizard", "WoolYarn_Red_TW");
			item18.Configurable = Configurability.Recipe;
			item18.Crafting.Add("WeavingLoom_TW", 1);
			item18.RequiredItems.Add("WoolScraps_TW", 4);
			item18.RequiredItems.Add("Bloodbag", 2);
			item18.CraftAmount = 4;
			Item item19 = new Item("warfarewizard", "WoolYarn_White_TW");
			item19.Configurable = Configurability.Recipe;
			item19.Crafting.Add("WeavingLoom_TW", 1);
			item19.RequiredItems.Add("WoolScraps_TW", 4);
			item19.RequiredItems.Add("Crystal", 1);
			item19.CraftAmount = 4;
			Item item20 = new Item("warfarewizard", "WoolYarn_Yellow_TW");
			item20.Configurable = Configurability.Recipe;
			item20.Crafting.Add("WeavingLoom_TW", 1);
			item20.RequiredItems.Add("WoolScraps_TW", 4);
			item20.RequiredItems.Add("Dandelion", 4);
			item20.CraftAmount = 4;
			Item item21 = new Item("warfarewizard", "FabricBundle_Blackforest_TW");
			item21.Configurable = Configurability.Recipe;
			item21["Base recipe"].Crafting.Add("WeavingLoom_TW", 1);
			item21["Base recipe"].RequiredItems.Add("WoolYarn_Brown_TW", 2);
			item21["Base recipe"].RequiredItems.Add("WoolYarn_Yellow_TW", 2);
			item21["Base recipe"].CraftAmount = 4;
			item21["Alternative recipe"].Crafting.Add("WeavingLoom_TW", 1);
			item21["Alternative recipe"].RequiredItems.Add("DeerHide", 4);
			item21["Alternative recipe"].RequiredItems.Add("Resin", 6);
			item21["Alternative recipe"].RequiredItems.Add("ShardElder_TW", 2);
			item21["Alternative recipe"].CraftAmount = 4;
			Item item22 = new Item("warfarewizard", "FabricBundle_Swamp_TW");
			item22.Configurable = Configurability.Recipe;
			item22["Base recipe"].Crafting.Add("WeavingLoom_TW", 1);
			item22["Base recipe"].RequiredItems.Add("WoolYarn_Brown_TW", 2);
			item22["Base recipe"].RequiredItems.Add("WoolYarn_Green_TW", 2);
			item22["Base recipe"].CraftAmount = 4;
			item22["Alternative recipe"].Crafting.Add("WeavingLoom_TW", 1);
			item22["Alternative recipe"].RequiredItems.Add("Ooze", 8);
			item22["Alternative recipe"].RequiredItems.Add("Guck", 8);
			item22["Alternative recipe"].RequiredItems.Add("ShardBonemass_TW", 2);
			item22["Alternative recipe"].CraftAmount = 4;
			Item item23 = new Item("warfarewizard", "FabricBundle_Mountain_TW");
			item23.Configurable = Configurability.Recipe;
			item23["Base recipe"].Crafting.Add("WeavingLoom_TW", 1);
			item23["Base recipe"].RequiredItems.Add("WoolYarn_White_TW", 2);
			item23["Base recipe"].RequiredItems.Add("WoolYarn_Blue_TW", 2);
			item23["Base recipe"].CraftAmount = 4;
			item23["Alternative recipe"].Crafting.Add("WeavingLoom_TW", 1);
			item23["Alternative recipe"].RequiredItems.Add("WolfPelt", 4);
			item23["Alternative recipe"].RequiredItems.Add("WolfHairBundle", 4);
			item23["Alternative recipe"].RequiredItems.Add("ShardModer_TW", 2);
			item23["Alternative recipe"].CraftAmount = 4;
			Item item24 = new Item("warfarewizard", "FabricBundle_Plains_TW");
			item24.Configurable = Configurability.Recipe;
			item24["Base recipe"].Crafting.Add("WeavingLoom_TW", 1);
			item24["Base recipe"].RequiredItems.Add("WoolYarn_Black_TW", 2);
			item24["Base recipe"].RequiredItems.Add("WoolYarn_Red_TW", 2);
			item24["Base recipe"].CraftAmount = 4;
			item24["Alternative recipe"].Crafting.Add("WeavingLoom_TW", 1);
			item24["Alternative recipe"].RequiredItems.Add("LoxPelt", 4);
			item24["Alternative recipe"].RequiredItems.Add("Needle", 4);
			item24["Alternative recipe"].RequiredItems.Add("ShardYagluth_TW", 2);
			item24["Alternative recipe"].CraftAmount = 4;
			Item item25 = new Item("warfarewizard", "FabricBundle_Mistlands_TW");
			item25.Configurable = Configurability.Recipe;
			item25["Base recipe"].Crafting.Add("WeavingLoom_TW", 1);
			item25["Base recipe"].RequiredItems.Add("WoolYarn_Black_TW", 2);
			item25["Base recipe"].RequiredItems.Add("WoolYarn_Teal_TW", 2);
			item25["Base recipe"].CraftAmount = 4;
			item25["Alternative recipe"].Crafting.Add("WeavingLoom_TW", 1);
			item25["Alternative recipe"].RequiredItems.Add("Carapace", 2);
			item25["Alternative recipe"].RequiredItems.Add("Softtissue", 2);
			item25["Alternative recipe"].RequiredItems.Add("ShardQueen_TW", 2);
			item25["Alternative recipe"].CraftAmount = 4;
			Item item26 = new Item("warfarewizard", "ArcaneScroll_BlackForest_TW");
			item26.Configurable = Configurability.Recipe;
			item26.Crafting.Add("ArcaneAnvil_TW", 1);
			item26.RequiredItems.Add("ShardElder_TW", 2);
			item26.RequiredItems.Add("SurtlingCore", 3);
			item26.RequiredItems.Add("AncientSeed", 1);
			item26.CraftAmount = 1;
			Item item27 = new Item("warfarewizard", "ArcaneScroll_Swamp_TW");
			item27.Configurable = Configurability.Recipe;
			item27["ArcaneScroll Swamp base recipe"].Crafting.Add("ArcaneAnvil_TW", 2);
			item27["ArcaneScroll Swamp base recipe"].RequiredItems.Add("ShardBonemass_TW", 3);
			item27["ArcaneScroll Swamp base recipe"].RequiredItems.Add("Guck", 8);
			item27["ArcaneScroll Swamp base recipe"].RequiredItems.Add("Bloodbag", 3);
			item27["ArcaneScroll Swamp base recipe"].CraftAmount = 1;
			item27["ArcaneScroll Swamp-BF upgrade recipe"].Crafting.Add("ArcaneAnvil_TW", 2);
			item27["ArcaneScroll Swamp-BF upgrade recipe"].RequiredItems.Add("ArcaneScroll_BlackForest_TW", 4);
			item27["ArcaneScroll Swamp-BF upgrade recipe"].CraftAmount = 1;
			Item item28 = new Item("warfarewizard", "ArcaneScroll_Mountain_TW");
			item28.Configurable = Configurability.Recipe;
			item28["ArcaneScroll Mountain base recipe"].Crafting.Add("ArcaneAnvil_TW", 3);
			item28["ArcaneScroll Mountain base recipe"].RequiredItems.Add("ShardModer_TW", 4);
			item28["ArcaneScroll Mountain base recipe"].RequiredItems.Add("Crystal", 6);
			item28["ArcaneScroll Mountain base recipe"].RequiredItems.Add("FreezeGland", 2);
			item28["ArcaneScroll Mountain base recipe"].CraftAmount = 1;
			item28["ArcaneScroll Mountain-Swamp upgrade recipe"].Crafting.Add("ArcaneAnvil_TW", 3);
			item28["ArcaneScroll Mountain-Swamp upgrade recipe"].RequiredItems.Add("ArcaneScroll_Swamp_TW", 3);
			item28["ArcaneScroll Mountain-Swamp upgrade recipe"].CraftAmount = 1;
			Item item29 = new Item("warfarewizard", "ArcaneScroll_Plains_TW");
			item29.Configurable = Configurability.Recipe;
			item29["ArcaneScroll Plains base recipe"].Crafting.Add("ArcaneAnvil_TW", 4);
			item29["ArcaneScroll Plains base recipe"].RequiredItems.Add("ShardYagluth_TW", 4);
			item29["ArcaneScroll Plains base recipe"].RequiredItems.Add("GoblinTotem", 2);
			item29["ArcaneScroll Plains base recipe"].RequiredItems.Add("Tar", 6);
			item29["ArcaneScroll Plains base recipe"].CraftAmount = 1;
			item29["ArcaneScroll Plains-Mountain upgrade recipe"].Crafting.Add("ArcaneAnvil_TW", 4);
			item29["ArcaneScroll Plains-Mountain upgrade recipe"].RequiredItems.Add("ArcaneScroll_Mountain_TW", 3);
			item29["ArcaneScroll Plains-Mountain upgrade recipe"].CraftAmount = 1;
			Item item30 = new Item("warfarewizard", "ArcaneScroll_Mistlands_TW");
			item30.Configurable = Configurability.Recipe;
			item30["ArcaneScroll Mistlands base recipe"].Crafting.Add("ArcaneAnvil_TW", 4);
			item30["ArcaneScroll Mistlands base recipe"].RequiredItems.Add("ShardQueen_TW", 4);
			item30["ArcaneScroll Mistlands base recipe"].RequiredItems.Add("Eitr", 4);
			item30["ArcaneScroll Mistlands base recipe"].RequiredItems.Add("Carapace", 4);
			item30["ArcaneScroll Mistlands-Plains upgrade recipe"].Crafting.Add("ArcaneAnvil_TW", 4);
			item30["ArcaneScroll Mistlands-Plains upgrade recipe"].RequiredItems.Add("ArcaneScroll_Plains_TW", 3);
			item30["ArcaneScroll Mistlands-Plains upgrade recipe"].CraftAmount = 1;
			Item item31 = new Item("warfarewizard", "ArcaneScroll_DamageBuff_TW");
			item31.Configurable = Configurability.Recipe;
			item31.Crafting.Add("ArcaneAnvil_TW", 4);
			item31.RequiredItems.Add("ArcaneScroll_Swamp_TW", 1);
			item31.RequiredItems.Add("ArcaneScroll_Plains_TW", 1);
			item31.CraftAmount = 2;
			Item item32 = new Item("warfarewizard", "ArcaneScroll_SpeedBuff_TW");
			item32.Configurable = Configurability.Recipe;
			item32.Crafting.Add("ArcaneAnvil_TW", 3);
			item32.RequiredItems.Add("ArcaneScroll_BlackForest_TW", 1);
			item32.RequiredItems.Add("ArcaneScroll_Mountain_TW", 1);
			item32.CraftAmount = 2;
			Item item33 = new Item("warfarewizard", "ArcaneScroll_JumpBuff_TW");
			item33.Configurable = Configurability.Recipe;
			item33.Crafting.Add("ArcaneAnvil_TW", 2);
			item33.RequiredItems.Add("ArcaneScroll_Swamp_TW", 1);
			item33.RequiredItems.Add("Ooze", 6);
			item33.CraftAmount = 1;
			Item item34 = new Item("warfarewizard", "ArcaneScroll_SlowfallBuff_TW");
			item34.Configurable = Configurability.Recipe;
			item34.Crafting.Add("ArcaneAnvil_TW", 3);
			item34.RequiredItems.Add("ArcaneScroll_Mountain_TW", 1);
			item34.RequiredItems.Add("WolfClaw", 2);
			item34.RequiredItems.Add("SurtlingCore", 2);
			item34.CraftAmount = 1;
			BuildPiece buildPiece5 = new BuildPiece("warfarewizard", "WizardTable_TW");
			buildPiece5.Category.Set("Warfare");
			buildPiece5.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece5.RequiredItems.Add("SurtlingCore", 5, recover: true);
			buildPiece5.RequiredItems.Add("Bronze", 10, recover: true);
			buildPiece5.RequiredItems.Add("RoundLog", 8, recover: true);
			buildPiece5.RequiredItems.Add("TrollHide", 4, recover: true);
			buildPiece5.RequiredItems.Add("BoneFragments", 6, recover: true);
			WizardTable = buildPiece5.Prefab.GetComponent<CraftingStation>();
			BuildPiece buildPiece6 = new BuildPiece("warfarewizard", "ArcaneAnvil_TW");
			buildPiece6.Category.Set("Warfare");
			buildPiece6.Crafting.Set("WizardTable_TW");
			buildPiece6.RequiredItems.Add("Stone", 12, recover: true);
			buildPiece6.RequiredItems.Add("SurtlingCore", 4, recover: true);
			buildPiece6.RequiredItems.Add("ShardElder_TW", 2, recover: true);
			WizardTable = buildPiece6.Prefab.GetComponent<CraftingStation>();
			BuildPiece buildPiece7 = new BuildPiece("warfarewizard", "WeavingLoom_TW");
			buildPiece7.Category.Set("Warfare");
			buildPiece7.Crafting.Set("WizardTable_TW");
			buildPiece7.RequiredItems.Add("RoundLog", 12, recover: true);
			buildPiece7.RequiredItems.Add("HardAntler", 2, recover: true);
			buildPiece7.RequiredItems.Add("Thistle", 6, recover: true);
			buildPiece7.RequiredItems.Add("BoneFragments", 3, recover: true);
			WizardTable = buildPiece7.Prefab.GetComponent<CraftingStation>();
			BuildPiece buildPiece8 = new BuildPiece("warfarewizard", "PotionCauldron_TW");
			buildPiece8.Category.Set("Warfare");
			buildPiece8.Crafting.Set("WizardTable_TW");
			buildPiece8.RequiredItems.Add("Iron", 8, recover: true);
			buildPiece8.RequiredItems.Add("Bronze", 4, recover: true);
			buildPiece8.RequiredItems.Add("Guck", 8, recover: true);
			buildPiece8.RequiredItems.Add("ShardBonemass_TW", 2, recover: true);
			WizardTable = buildPiece8.Prefab.GetComponent<CraftingStation>();
			BuildPiece buildPiece9 = new BuildPiece("warfarewizard", "WizardTable_ext2_TW");
			buildPiece9.Category.Set("Warfare");
			buildPiece9.Crafting.Set("WizardTable_TW");
			buildPiece9.RequiredItems.Add("WitheredBone", 4, recover: true);
			buildPiece9.RequiredItems.Add("ElderBark", 10, recover: true);
			buildPiece9.RequiredItems.Add("Ooze", 3, recover: true);
			buildPiece9.RequiredItems.Add("ShardBonemass_TW", 2, recover: true);
			BuildPiece buildPiece10 = new BuildPiece("warfarewizard", "WizardTable_ext3_TW");
			buildPiece10.Category.Set("Warfare");
			buildPiece10.Crafting.Set("WizardTable_TW");
			buildPiece10.RequiredItems.Add("Crystal", 7, recover: true);
			buildPiece10.RequiredItems.Add("FineWood", 12, recover: true);
			buildPiece10.RequiredItems.Add("Obsidian", 5, recover: true);
			buildPiece10.RequiredItems.Add("ShardModer_TW", 2, recover: true);
			BuildPiece buildPiece11 = new BuildPiece("warfarewizard", "WizardTable_ext4_TW");
			buildPiece11.Category.Set("Warfare");
			buildPiece11.Crafting.Set("WizardTable_TW");
			buildPiece11.RequiredItems.Add("Tar", 12, recover: true);
			buildPiece11.RequiredItems.Add("GoblinTotem", 3, recover: true);
			buildPiece11.RequiredItems.Add("TrophySkeleton", 3, recover: true);
			buildPiece11.RequiredItems.Add("ShardYagluth_TW", 4, recover: true);
			Item item35 = new Item("warfarewizard", "ShroomSoupBlackForest_TW");
			item35.Configurable = Configurability.Recipe;
			item35.Crafting.Add(ItemManager.CraftingTable.Cauldron, 1);
			item35.RequiredItems.Add("MushroomWitcheye_TW", 3);
			item35.RequiredItems.Add("Mushroom", 4);
			item35.RequiredItems.Add("RawMeat", 2);
			item35.CraftAmount = 1;
			Item item36 = new Item("warfarewizard", "EitrPlateBlackForest_TW");
			item36.Configurable = Configurability.Recipe;
			item36.Crafting.Add(ItemManager.CraftingTable.Cauldron, 1);
			item36.RequiredItems.Add("MushroomWitcheye_TW", 3);
			item36.RequiredItems.Add("DeerMeat", 2);
			item36.RequiredItems.Add("Blueberries", 2);
			item36.RequiredItems.Add("Thistle", 1);
			item36.CraftAmount = 1;
			Item item37 = new Item("warfarewizard", "BerryCandyBlackForest_TW");
			item37.Configurable = Configurability.Recipe;
			item37.Crafting.Add(ItemManager.CraftingTable.Cauldron, 1);
			item37.RequiredItems.Add("MushroomWitcheye_TW", 2);
			item37.RequiredItems.Add("Blueberries", 4);
			item37.RequiredItems.Add("Honey", 6);
			item37.CraftAmount = 1;
			Item item38 = new Item("warfarewizard", "ShroomSoupSwamp_TW");
			item38.Configurable = Configurability.Recipe;
			item38.Crafting.Add(ItemManager.CraftingTable.Cauldron, 2);
			item38.RequiredItems.Add("MushroomDeathcap_TW", 2);
			item38.RequiredItems.Add("Carrot", 2);
			item38.RequiredItems.Add("Entrails", 3);
			item38.CraftAmount = 1;
			Item item39 = new Item("warfarewizard", "EitrPlateSwamp_TW");
			item39.Configurable = Configurability.Recipe;
			item39.Crafting.Add(ItemManager.CraftingTable.Cauldron, 2);
			item39.RequiredItems.Add("MushroomDeathcap_TW", 3);
			item39.RequiredItems.Add("Entrails", 3);
			item39.RequiredItems.Add("Turnip", 2);
			item39.RequiredItems.Add("Bloodbag", 2);
			item39.CraftAmount = 1;
			Item item40 = new Item("warfarewizard", "JellyCakeSwamp_TW");
			item40.Configurable = Configurability.Recipe;
			item40.Crafting.Add(ItemManager.CraftingTable.Cauldron, 2);
			item40.RequiredItems.Add("MushroomDeathcap_TW", 3);
			item40.RequiredItems.Add("Ooze", 2);
			item40.RequiredItems.Add("Honey", 3);
			item40.CraftAmount = 1;
			Item item41 = new Item("warfarewizard", "ShroomSoupMountain_TW");
			item41.Configurable = Configurability.Recipe;
			item41.Crafting.Add(ItemManager.CraftingTable.Cauldron, 3);
			item41.RequiredItems.Add("MushroomWizardbutter_TW", 2);
			item41.RequiredItems.Add("Onion", 2);
			item41.RequiredItems.Add("WolfMeat", 2);
			item41.CraftAmount = 1;
			Item item42 = new Item("warfarewizard", "EitrPlateMountain_TW");
			item42.Configurable = Configurability.Recipe;
			item42.Crafting.Add(ItemManager.CraftingTable.Cauldron, 3);
			item42.RequiredItems.Add("MushroomWizardbutter_TW", 3);
			item42.RequiredItems.Add("WolfMeat", 3);
			item42.RequiredItems.Add("Onion", 2);
			item42.RequiredItems.Add("SerpentMeat", 1);
			item42.CraftAmount = 1;
			Item item43 = new Item("warfarewizard", "IceHornMountain_TW");
			item43.Configurable = Configurability.Recipe;
			item43.Crafting.Add(ItemManager.CraftingTable.Cauldron, 3);
			item43.RequiredItems.Add("MushroomWizardbutter_TW", 3);
			item43.RequiredItems.Add("FreezeGland", 1);
			item43.RequiredItems.Add("Honey", 4);
			item43.CraftAmount = 1;
			Item item44 = new Item("warfarewizard", "ShroomSoupPlains_TW");
			item44.Configurable = Configurability.Recipe;
			item44.Crafting.Add(ItemManager.CraftingTable.Cauldron, 4);
			item44.RequiredItems.Add("MushroomDevilstongue_TW", 3);
			item44.RequiredItems.Add("Barley", 2);
			item44.RequiredItems.Add("LoxMeat", 2);
			item44.CraftAmount = 1;
			Item item45 = new Item("warfarewizard", "EitrPlatePlains_TW");
			item45.Configurable = Configurability.Recipe;
			item45.Crafting.Add(ItemManager.CraftingTable.Cauldron, 3);
			item45.RequiredItems.Add("MushroomDevilstongue_TW", 3);
			item45.RequiredItems.Add("LoxMeat", 3);
			item45.RequiredItems.Add("Cloudberry", 2);
			item45.RequiredItems.Add("BarleyFlour", 1);
			item45.CraftAmount = 1;
			Item item46 = new Item("warfarewizard", "UncookedBerryCakePlains_TW");
			item46.Crafting.Add(ItemManager.CraftingTable.PrepTable, 1);
			item46.RequiredItems.Add("Cloudberry", 8);
			item46.RequiredItems.Add("MushroomDevilstongue_TW", 4);
			item46.RequiredItems.Add("Honey", 8);
			item46.RequiredItems.Add("BarleyFlour", 4);
			item46.CraftAmount = 2;
			Item item47 = new Item("warfarewizard", "BerryCakePlains_TW");
			ovens.Add(item46.Prefab, item47.Prefab);
			Item item48 = new Item("warfarewizard", "MeadBaseEitrBlackForest_TW");
			item48.Configurable = Configurability.Recipe;
			item48.Crafting.Add(ItemManager.CraftingTable.MeadCauldron, 1);
			item48.RequiredItems.Add("MeadTasty", 3);
			item48.RequiredItems.Add("MushroomWitcheye_TW", 5);
			item48.RequiredItems.Add("Honey", 10);
			Item item49 = new Item("warfarewizard", "MeadEitrBlackForest_TW");
			fermenters.Add(item48.Prefab, item49.Prefab);
			Item item50 = new Item("warfarewizard", "MeadBaseEitrMountain_TW");
			item50.Configurable = Configurability.Recipe;
			item50.Crafting.Add(ItemManager.CraftingTable.MeadCauldron, 1);
			item50.RequiredItems.Add("MeadTasty", 3);
			item50.RequiredItems.Add("MushroomWizardbutter_TW", 5);
			item50.RequiredItems.Add("Honey", 10);
			Item item51 = new Item("warfarewizard", "MeadEitrMountain_TW");
			fermenters.Add(item50.Prefab, item51.Prefab);
			Item item52 = new Item("warfarewizard", "PotionLumberjack_TW");
			item52.Configurable = Configurability.Recipe;
			item52.Crafting.Add("PotionCauldron_TW", 1);
			item52.RequiredItems.Add("ShardElder_TW", 2);
			item52.RequiredItems.Add("MushroomWitcheye_TW", 4);
			item52.RequiredItems.Add("AncientSeed", 1);
			item52.RequiredItems.Add("Thistle", 2);
			item52.CraftAmount = 3;
			Item item53 = new Item("warfarewizard", "PotionMiner_TW");
			item53.Configurable = Configurability.Recipe;
			item53.Crafting.Add("PotionCauldron_TW", 1);
			item53.RequiredItems.Add("ShardBonemass_TW", 2);
			item53.RequiredItems.Add("MushroomDeathcap_TW", 4);
			item53.RequiredItems.Add("BoneFragments", 6);
			item53.RequiredItems.Add("Blueberries", 6);
			item53.CraftAmount = 3;
			Item item54 = new Item("warfarewizard", "PotionAquatic_TW");
			item54.Configurable = Configurability.Recipe;
			item54.Crafting.Add("PotionCauldron_TW", 1);
			item54.RequiredItems.Add("ShardModer_TW", 2);
			item54.RequiredItems.Add("MushroomWizardbutter_TW", 3);
			item54.RequiredItems.Add("FishRaw", 6);
			item54.RequiredItems.Add("Chitin", 2);
			item54.CraftAmount = 3;
			Item item55 = new Item("warfarewizard", "PotionSneak_TW");
			item55.Configurable = Configurability.Recipe;
			item55.Crafting.Add("PotionCauldron_TW", 1);
			item55.RequiredItems.Add("ShardBonemass_TW", 2);
			item55.RequiredItems.Add("MushroomWitcheye_TW", 3);
			item55.RequiredItems.Add("MushroomDeathcap_TW", 3);
			item55.RequiredItems.Add("Carrot", 3);
			item55.CraftAmount = 3;
			Item item56 = new Item("warfarewizard", "PotionOx_TW");
			item56.Configurable = Configurability.Recipe;
			item56.Crafting.Add("PotionCauldron_TW", 1);
			item56.RequiredItems.Add("ShardElder_TW", 2);
			item56.RequiredItems.Add("MushroomWitcheye_TW", 3);
			item56.RequiredItems.Add("Bloodbag", 6);
			item56.RequiredItems.Add("Carrot", 4);
			item56.CraftAmount = 3;
			Item item57 = new Item("warfarewizard", "PotionSkills_TW");
			item57.Configurable = Configurability.Recipe;
			item57.Crafting.Add("PotionCauldron_TW", 1);
			item57.RequiredItems.Add("ShardModer_TW", 3);
			item57.RequiredItems.Add("MushroomWizardbutter_TW", 3);
			item57.RequiredItems.Add("MushroomDevilstongue_TW", 3);
			item57.RequiredItems.Add("Cloudberry", 4);
			item57.CraftAmount = 3;
			Item item58 = new Item("warfarewizard", "PotionSpeed_TW");
			item58.Configurable = Configurability.Recipe;
			item58.Crafting.Add("PotionCauldron_TW", 1);
			item58.RequiredItems.Add("ShardYagluth_TW", 2);
			item58.RequiredItems.Add("MushroomDevilstongue_TW", 4);
			item58.RequiredItems.Add("Cloudberry", 4);
			item58.RequiredItems.Add("Guck", 8);
			item58.CraftAmount = 2;
			Item item59 = new Item("warfarewizard", "PotionStoneskin_TW");
			item59.Configurable = Configurability.Recipe;
			item59.Crafting.Add("PotionCauldron_TW", 1);
			item59.RequiredItems.Add("ShardYagluth_TW", 4);
			item59.RequiredItems.Add("MushroomDevilstongue_TW", 6);
			item59.RequiredItems.Add("Stone", 14);
			item59.RequiredItems.Add("Obsidian", 8);
			item59.CraftAmount = 2;
			Item item60 = new Item("warfarewizard", "PotionRejuvenationMinor_TW");
			item60.Configurable = Configurability.Recipe;
			item60.Crafting.Add("PotionCauldron_TW", 1);
			item60.RequiredItems.Add("ShardBonemass_TW", 2);
			item60.RequiredItems.Add("MeadHealthMinor", 2);
			item60.RequiredItems.Add("MeadStaminaMinor", 2);
			item60.RequiredItems.Add("MeadEitrBlackForest_TW", 2);
			item60.CraftAmount = 3;
			Item item61 = new Item("warfarewizard", "PotionRejuvenationMedium_TW");
			item61.Configurable = Configurability.Recipe;
			item61.Crafting.Add("PotionCauldron_TW", 1);
			item61.RequiredItems.Add("ShardYagluth_TW", 2);
			item61.RequiredItems.Add("MeadHealthMedium", 2);
			item61.RequiredItems.Add("MeadStaminaMedium", 2);
			item61.RequiredItems.Add("MeadEitrMountain_TW", 2);
			item61.CraftAmount = 3;
			Item item62 = new Item("warfarewizard", "RingBlackForest_TW");
			item62.Configurable = Configurability.Recipe;
			item62.Crafting.Add("ArcaneAnvil_TW", 1);
			item62.RequiredItems.Add("ShardElder_TW", 4);
			item62.RequiredItems.Add("Bronze", 4);
			item62.RequiredItems.Add("Ruby", 2);
			item62.CraftAmount = 1;
			Item item63 = new Item("warfarewizard", "RingSwamp_TW");
			item63.Configurable = Configurability.Recipe;
			item63.Crafting.Add("ArcaneAnvil_TW", 2);
			item63.RequiredItems.Add("ShardBonemass_TW", 4);
			item63.RequiredItems.Add("Iron", 4);
			item63.RequiredItems.Add("WitheredBone", 2);
			item63.CraftAmount = 1;
			Item item64 = new Item("warfarewizard", "RingMountain_TW");
			item64.Configurable = Configurability.Recipe;
			item64.Crafting.Add("ArcaneAnvil_TW", 3);
			item64.RequiredItems.Add("ShardModer_TW", 4);
			item64.RequiredItems.Add("Silver", 4);
			item64.RequiredItems.Add("WolfClaw", 2);
			item64.CraftAmount = 1;
			Item item65 = new Item("warfarewizard", "RingPlains_TW");
			item65.Configurable = Configurability.Recipe;
			item65.Crafting.Add("ArcaneAnvil_TW", 4);
			item65.RequiredItems.Add("ShardYagluth_TW", 4);
			item65.RequiredItems.Add("BlackMetal", 4);
			item65.RequiredItems.Add("GoblinTotem", 2);
			item65.RequiredItems.Add("TrophyGrowth", 1);
			item65.CraftAmount = 1;
			Item item66 = new Item("warfarewizard", "RingMistlands_TW");
			item66.Configurable = Configurability.Recipe;
			item66.Crafting.Add("ArcaneAnvil_TW", 4);
			item66.RequiredItems.Add("Carapace", 4);
			item66.RequiredItems.Add("Bilebag", 1);
			item66.RequiredItems.Add("Softtissue", 4);
			item66.RequiredItems.Add("TrophyTick", 1);
			item66.CraftAmount = 1;
			Item item67 = new Item("warfarewizard", "HelmetCircletBronze_TW");
			item67.Configurable = Configurability.Recipe;
			item67.Crafting.Add("WizardTable_TW", 3);
			item67.RequiredItems.Add("Bronze", 6);
			item67.CraftAmount = 1;
			Item item68 = new Item("warfarewizard", "HelmetCircletBronze_Stamina_TW");
			item68.Configurable = Configurability.Recipe;
			item68.Crafting.Add("ArcaneAnvil_TW", 2);
			item68.RequiredItems.Add("HelmetCircletBronze_TW", 1);
			item68.RequiredItems.Add("Ruby", 1);
			item68.RequiredItems.Add("ShardElder_TW", 4);
			item68.RequiredItems.Add("Thistle", 4);
			item68.RequiredUpgradeItems.Add("Bronze", 4);
			item68.RequiredUpgradeItems.Add("ShardElder_TW", 1);
			item68.CraftAmount = 1;
			Item item69 = new Item("warfarewizard", "HelmetCircletBronze_Elemental_TW");
			item69.Configurable = Configurability.Recipe;
			item69.Crafting.Add("ArcaneAnvil_TW", 2);
			item69.RequiredItems.Add("HelmetCircletBronze_TW", 1);
			item69.RequiredItems.Add("Ruby", 1);
			item69.RequiredItems.Add("ShardElder_TW", 3);
			item69.RequiredItems.Add("SurtlingCore", 2);
			item69.RequiredUpgradeItems.Add("Bronze", 4);
			item69.RequiredUpgradeItems.Add("ShardElder_TW", 1);
			item69.CraftAmount = 1;
			Item item70 = new Item("warfarewizard", "HelmetCircletBronze_Hunter_TW");
			item70.Configurable = Configurability.Recipe;
			item70.Crafting.Add("ArcaneAnvil_TW", 2);
			item70.RequiredItems.Add("HelmetCircletBronze_TW", 1);
			item70.RequiredItems.Add("Ruby", 1);
			item70.RequiredItems.Add("ShardElder_TW", 3);
			item70.RequiredItems.Add("BoneFragments", 6);
			item70.RequiredUpgradeItems.Add("Bronze", 4);
			item70.RequiredUpgradeItems.Add("ShardElder_TW", 1);
			item70.CraftAmount = 1;
			Item item71 = new Item("warfarewizard", "HelmetCircletBronze_Sneak_TW");
			item71.Configurable = Configurability.Recipe;
			item71.Crafting.Add("ArcaneAnvil_TW", 2);
			item71.RequiredItems.Add("HelmetCircletBronze_TW", 1);
			item71.RequiredItems.Add("Ruby", 1);
			item71.RequiredItems.Add("ShardElder_TW", 3);
			item71.RequiredItems.Add("TrollHide", 3);
			item71.RequiredUpgradeItems.Add("Bronze", 4);
			item71.RequiredUpgradeItems.Add("ShardElder_TW", 1);