Decompiled source of Warfare v1.9.4

Warfare.dll

Decompiled a week ago
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using ItemManager;
using JetBrains.Annotations;
using Jewelcrafting;
using KG_Managers;
using LocalizationManager;
using Microsoft.CodeAnalysis;
using PieceManager;
using ServerSync;
using SkillManager;
using SoftReferenceableAssets;
using SoundMixManager;
using TMPro;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;
using Warfare.Util;
using Warfare_StatusEffects;
using Warfare_StatusEffects.StatusEffects;
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: AssemblyTrademark("")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyProduct("Warfare")]
[assembly: AssemblyCompany("Therzie")]
[assembly: AssemblyFileVersion("1.9.4")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("Warfare")]
[assembly: Guid("E0E2F92E-557C-4A05-9D89-AA92A0BD75C4")]
[assembly: AssemblyConfiguration("")]
[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.9.4.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;
		}
	}
}
namespace WarfareColliderFix
{
	[HarmonyPatch(typeof(ZNetScene), "Awake")]
	internal static class ColliderFix
	{
		[HarmonyPriority(0)]
		private static void Postfix(ZNetScene __instance)
		{
			GameObject prefab = __instance.GetPrefab("SledgeFlametal_TW");
			object obj;
			if (prefab == null)
			{
				obj = null;
			}
			else
			{
				Transform obj2 = prefab.transform.Find("attach/SledgeFlametal");
				obj = ((obj2 != null) ? ((Component)obj2).gameObject : null);
			}
			GameObject val = (GameObject)obj;
			if ((Object)(object)val != (Object)null && (Object)(object)val.GetComponent<Collider>() == (Object)null)
			{
				MeshCollider val2 = val.AddComponent<MeshCollider>();
				val2.convex = true;
			}
			FixTerrainOp("PickaxeFader_TW");
			FixTerrainOp("PickaxeSilver_TW");
			void FixTerrainOp(string prefabName)
			{
				GameObject prefab2 = __instance.GetPrefab(prefabName);
				if (!((Object)(object)prefab2 == (Object)null))
				{
					SharedData val3 = prefab2.GetComponent<ItemDrop>()?.m_itemData?.m_shared;
					if (val3 != null)
					{
						GameObject val4 = ((IEnumerable<GameObject>)Resources.FindObjectsOfTypeAll<GameObject>()).FirstOrDefault((Func<GameObject, bool>)((GameObject go) => ((Object)go).name == "digg_v3"));
						if (!((Object)(object)val4 == (Object)null))
						{
							val3.m_spawnOnHitTerrain = val4;
						}
					}
				}
			}
		}
	}
}
namespace Warfare
{
	[HarmonyPatch(typeof(ZNetScene), "Awake")]
	internal static class BowsPatch
	{
		private static void ChangeStation(string name)
		{
			GameObject prefab = ZNetScene.instance.GetPrefab(name);
			if (Object.op_Implicit((Object)(object)prefab))
			{
				Recipe recipe = ObjectDB.instance.GetRecipe(prefab.GetComponent<ItemDrop>().m_itemData);
				if (Object.op_Implicit((Object)(object)recipe))
				{
					recipe.m_craftingStation = WarfarePlugin.FletcherStation;
				}
			}
		}

		private static void Postfix(ZNetScene __instance)
		{
			ChangeStation("BowHuntsman");
			ChangeStation("BowDraugrFang");
			ChangeStation("BowSpineSnap");
			ChangeStation("ArrowBronze");
			ChangeStation("ArrowIron");
			ChangeStation("ArrowObsidian");
			ChangeStation("ArrowSilver");
			ChangeStation("ArrowPoison");
			ChangeStation("ArrowFrost");
			ChangeStation("ArrowNeedle");
			ChangeStation("ArrowCarapace");
			ChangeStation("BoltCarapace");
			ChangeStation("BoltBone");
			ChangeStation("BoltIron");
			ChangeStation("BoltBlackmetal");
		}
	}
	public class MonstrumItemSwap
	{
		[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("Fox_TW", "SwordFlint_TW", "LeatherScraps", "FoxPelt_TW", 1, 0);
					ReplaceItem("Fox_TW", "AtgeirFlint_TW", "LeatherScraps", "FoxPelt_TW", 3, 0);
					ReplaceItem("Fox_TW", "MaceFlint_TW", "LeatherScraps", "FoxPelt_TW", 0, 1);
					ReplaceItem("BossAsmodeus_TW", "KnifeViper_TW", "TrophyGreydwarfShaman", "TrophyAsmodeus_TW", 1, 1);
					ReplaceItem("BossSvalt_TW", "DualAxeDemonic_TW", "TrophyDraugrElite", "TrophySvalt_TW", 1, 1);
					ReplaceItem("BossVrykolathas_TW", "DualScytheBloodthirst_TW", "TrophyBonemass", "TrophyVrykolathas_TW", 1, 1);
					ReplaceItem("BossVrykolathas_TW", "ScytheVampiric_TW", "TrophyBonemass", "TrophyVrykolathas_TW", 1, 1);
					ReplaceItem("Razorback_TW", "BattleaxeBronze_TW", "TrophyGreydwarfBrute", "TrophyRazorback_TW", 1, 0);
					ReplaceItem("Crawler_TW", "CapeRotten_TW", "TrophyBlob", "TrophyCrawler_TW", 1, 0);
					ReplaceItem("GrizzlyBear_TW", "ClaymoreSilver_TW", "TrophyCultist", "TrophyGrizzlyBear_TW", 1, 0);
					ReplaceItem("ObsidianGolem_TW", "AtgeirSilver_TW", "TrophyCultist", "TrophyObsidianGolem_TW", 1, 0);
					ReplaceItem("ArcticSerpent_TW", "BombFire_TW", "TyraniumOre_TW", "FlameCore_TW", 1, 1);
					ReplaceItem("ArcticSerpent_TW", "BombIce_TW", "TyraniumOre_TW", "FrostCore_TW", 1, 1);
					ReplaceItem("Razorback_TW", "BowTrollBone_TW", "BoneFragments", "RazorbackTusk_TW", 6, 3);
					ReplaceItem("Prowler_TW", "FistBlackmetal_TW", "TrophyDeathsquito_TW", "TrophyProwler_TW", 1, 1);
					ReplaceItem("Prowler_TW", "FistBlackmetal_TW", "Needle", "ProwlerFang_TW", 8, 4);
					ReplaceItem("Razorback_TW", "KnifeBronze_TW", "BoneFragments", "RazorbackTusk_TW", 5, 2);
					ReplaceItem("Prowler_TW", "WarpikeBlackmetal_TW", "LoxBone_TW", "ProwlerFang_TW", 10, 5);
					ReplaceItem("Prowler_TW", "BastardBlackmetal_TW", "LoxBone_TW", "ProwlerFang_TW", 10, 5);
					ReplaceItem("Prowler_TW", "SwordScimitar_TW", "TrophyGoblin", "TrophyProwler_TW", 1, 0);
					ReplaceItem("Prowler_TW", "LanceBlackmetal_TW", "LoxBone_TW", "ProwlerFang_TW", 10, 5);
				}
			}
		}
	}
	[HarmonyPatch(typeof(Projectile), "OnHit")]
	internal static class ProjectileSetup2Patch
	{
		private static void Postfix(Projectile __instance)
		{
			Spin spin = default(Spin);
			if (((Component)__instance).gameObject.TryGetComponent<Spin>(ref spin))
			{
				Object.DestroyImmediate((Object)(object)spin);
			}
		}
	}
	[HarmonyPatch(typeof(Attack), "FireProjectileBurst")]
	internal static class ProjectileSetupPatchX
	{
		private static void Postfix(Attack __instance)
		{
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			if (!WarfarePlugin.projectilePrefabsX.Contains(__instance.m_attackProjectile))
			{
				return;
			}
			MeshRenderer[] componentsInChildren = __instance.m_weapon.m_lastProjectile.GetComponentsInChildren<MeshRenderer>();
			foreach (MeshRenderer val in componentsInChildren)
			{
				if (((Component)val).gameObject.activeInHierarchy)
				{
					Spin spin = ((Component)val).gameObject.AddComponent<Spin>();
					spin.spinDirection = new Vector3(1500f, 0f, 0f);
				}
			}
		}
	}
	[HarmonyPatch(typeof(Attack), "FireProjectileBurst")]
	internal static class ProjectileSetupPatchY
	{
		private static void Postfix(Attack __instance)
		{
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			if (!WarfarePlugin.projectilePrefabsY.Contains(__instance.m_attackProjectile))
			{
				return;
			}
			MeshRenderer[] componentsInChildren = __instance.m_weapon.m_lastProjectile.GetComponentsInChildren<MeshRenderer>();
			foreach (MeshRenderer val in componentsInChildren)
			{
				if (((Component)val).gameObject.activeInHierarchy)
				{
					Spin spin = ((Component)val).gameObject.AddComponent<Spin>();
					spin.spinDirection = new Vector3(0f, 1500f, 0f);
				}
			}
		}
	}
	[HarmonyPatch(typeof(Attack), "FireProjectileBurst")]
	internal static class ProjectileSetupPatchZ
	{
		private static void Postfix(Attack __instance)
		{
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			if (!WarfarePlugin.projectilePrefabsZ.Contains(__instance.m_attackProjectile))
			{
				return;
			}
			MeshRenderer[] componentsInChildren = __instance.m_weapon.m_lastProjectile.GetComponentsInChildren<MeshRenderer>();
			foreach (MeshRenderer val in componentsInChildren)
			{
				if (((Component)val).gameObject.activeInHierarchy)
				{
					Spin spin = ((Component)val).gameObject.AddComponent<Spin>();
					spin.spinDirection = new Vector3(0f, 0f, 1500f);
				}
			}
		}
	}
	[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
			WarfarePlugin.WarfareLogger.LogDebug((object)"Registering version RPC handler");
			peer.m_rpc.Register<ZPackage>("Warfare_VersionCheck", (Action<ZRpc, ZPackage>)RpcHandlers.RPC_Warfare_Version);
			WarfarePlugin.WarfareLogger.LogDebug((object)"Invoking version check");
			ZPackage val = new ZPackage();
			val.Write("1.9.4");
			peer.m_rpc.Invoke("Warfare_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())
			{
				WarfarePlugin.WarfareLogger.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_Warfare_Version(ZRpc rpc, ZPackage pkg)
		{
			string text = pkg.ReadString();
			WarfarePlugin.WarfareLogger.LogInfo((object)("Version check, local: 1.9.4,  remote: " + text));
			if (text != "1.9.4")
			{
				WarfarePlugin.ConnectionError = "Warfare Installed: 1.9.4\n Needed: " + text;
				if (ZNet.instance.IsServer())
				{
					WarfarePlugin.WarfareLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") has incompatible version, disconnecting"));
					rpc.Invoke("Error", new object[1] { 3 });
				}
			}
			else if (!ZNet.instance.IsServer())
			{
				WarfarePlugin.WarfareLogger.LogInfo((object)"Received same version from server!");
			}
			else
			{
				WarfarePlugin.WarfareLogger.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" + WarfarePlugin.ConnectionError;
			}
		}
	}
	public class Spin : MonoBehaviour
	{
		[SerializeField]
		internal Vector3 spinDirection;

		private void Update()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			((Component)this).transform.Rotate(spinDirection * Time.deltaTime);
		}
	}
	public static class StLocIndex_patch
	{
		public static bool StlocIndex(this object obj, int index)
		{
			return obj is LocalBuilder localBuilder && localBuilder.LocalIndex == index;
		}
	}
	public class VanillaDropTweaks
	{
		[HarmonyPatch(typeof(ZNetScene), "Awake")]
		public static class VanillaDropTweaks_MonstrumPatch
		{
			public static void Postfix(ZNetScene __instance)
			{
				if (Object.op_Implicit((Object)(object)__instance))
				{
					ModifyDropChance(__instance, "Neck", 1, 0.2f);
					ModifyDropChance(__instance, "Wraith", 0, 0.25f);
					ModifyDropChance(__instance, "Draugr_Elite", 1, 0.25f);
					ModifyDropChance(__instance, "StoneGolem", 1, 0.15f);
					ModifyDropChance(__instance, "Fenring_Cultist", 1, 0.18f);
					ModifyDropChance(__instance, "GoblinShaman", 3, 0.15f);
					ModifyDropChance(__instance, "GoblinBrute", 3, 0.2f);
					ModifyDropChance(__instance, "Lox", 1, 0.18f);
					ModifyDropChance(__instance, "SeekerBrute", 2, 0.15f);
					ModifyDropChance(__instance, "Seeker", 2, 0.2f);
				}
			}

			private static void ModifyDropChance(ZNetScene scene, string prefabName, int index, float chance)
			{
				GameObject prefab = scene.GetPrefab(prefabName);
				if (Object.op_Implicit((Object)(object)prefab))
				{
					CharacterDrop component = prefab.GetComponent<CharacterDrop>();
					if (Object.op_Implicit((Object)(object)component) && index >= 0 && index < component.m_drops.Count)
					{
						component.m_drops[index].m_chance = chance;
					}
				}
			}
		}
	}
	[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;
			}
			WarfarePlugin.WarfareLogger.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() });
		}
	}
	[HarmonyPatch(typeof(ZNetScene), "Awake")]
	internal static class WarfareCookingFermentingZNetScene_AwakePost_Patch
	{
		private static void Postfix(ZNetScene __instance)
		{
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Expected O, but got Unknown
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: Expected O, but got Unknown
			if ((Object)(object)__instance == (Object)null)
			{
				return;
			}
			List<GameObject> prefabs = __instance.m_prefabs;
			if (prefabs == null || prefabs.Count <= 0)
			{
				return;
			}
			Fermenter component = __instance.GetPrefab("fermenter").GetComponent<Fermenter>();
			foreach (KeyValuePair<GameObject, GameObject> fermenter in WarfarePlugin.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 = 10
				});
			}
			Fermenter component2 = __instance.GetPrefab("fermenter").GetComponent<Fermenter>();
			foreach (KeyValuePair<GameObject, GameObject> item in WarfarePlugin.fermentersless)
			{
				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 = 3
				});
			}
		}
	}
	public class WeaponSkillPatch
	{
		[HarmonyPatch(typeof(Attack), "FireProjectileBurst")]
		public static class Attack_FireProjectileBurst_Patch
		{
			[HarmonyPatch(typeof(Attack), "GetAttackStamina")]
			private static class Attack_GetAttackStamina_Patch_Throwing
			{
				private static void Postfix(Attack __instance, ref float __result)
				{
					if (ThrowableWeapons.Contains(__instance.m_weapon.m_shared.m_name))
					{
						float skillFactor = ((Character)(object)Player.m_localPlayer).GetSkillFactor("Throwing");
						__result *= 1f - skillFactor;
					}
				}
			}

			[HarmonyPatch(typeof(Attack), "GetAttackStamina")]
			private static class Attack_GetAttackStamina_Patch_Scythes
			{
				private static void Postfix(Attack __instance, ref float __result)
				{
					if (ScytheWeapons.Contains(__instance.m_weapon.m_shared.m_name))
					{
						float skillFactor = ((Character)(object)Player.m_localPlayer).GetSkillFactor("Scythes");
						__result *= 1f - skillFactor;
					}
				}
			}

			private static List<string> ThrowableWeapons = new List<string> { "$throw_axe_flint_TW", "$throw_axe_bronze_TW", "$throw_axe_iron_TW", "$throw_axe_silver_TW", "$throw_axe_blackmetal_TW", "$throw_axe_dvergr_TW", "$throw_axe_njord_TW", "$throw_axe_surtr_TW" };

			private static List<string> ScytheWeapons = new List<string> { "$dual_scythebloodthirst_TW", "$scythe_vampiric_TW" };

			private static void Modify(Attack a, HitData hit, ref float projVelocity, ref float projectileAccuracy)
			{
				//IL_0048: 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)
				if (!((Object)(object)a.m_character != (Object)(object)Player.m_localPlayer) && ThrowableWeapons.Contains(a.m_weapon.m_shared.m_name))
				{
					hit.m_skill = fromName("Throwing");
					float skillFactor = ((Character)(object)Player.m_localPlayer).GetSkillFactor("Throwing");
					projVelocity *= 1f + skillFactor;
					projectileAccuracy *= 1f + skillFactor;
				}
			}

			[UsedImplicitly]
			public 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_0036: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Expected O, but got Unknown
				//IL_0081: Unknown result type (might be due to invalid IL or missing references)
				//IL_0087: Expected O, but got Unknown
				//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a8: Expected O, but got Unknown
				//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c9: Expected O, but got Unknown
				//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ea: Expected O, but got Unknown
				//IL_0114: Unknown result type (might be due to invalid IL or missing references)
				//IL_011a: Expected O, but got Unknown
				CodeMatcher val = new CodeMatcher(code, (ILGenerator)null);
				CodeMatcher val2 = val;
				bool flag = false;
				val2.MatchForward(flag, (CodeMatch[])(object)new CodeMatch[1]
				{
					new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction ins) => ins.opcode == OpCodes.Stloc_S && ins.operand.StlocIndex(22)), (string)null)
				});
				if (val.IsInvalid)
				{
					return code;
				}
				byte b = 21;
				byte b2 = 3;
				byte b3 = 4;
				val.Advance(1);
				val.InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[1]
				{
					new CodeInstruction(OpCodes.Ldarg_0, (object)null)
				});
				val.InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[1]
				{
					new CodeInstruction(OpCodes.Ldloc_S, (object)b)
				});
				val.InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[1]
				{
					new CodeInstruction(OpCodes.Ldloca_S, (object)b2)
				});
				val.InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[1]
				{
					new CodeInstruction(OpCodes.Ldloca_S, (object)b3)
				});
				val.InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[1]
				{
					new CodeInstruction(OpCodes.Call, (object)AccessTools.Method(typeof(Attack_FireProjectileBurst_Patch), "Modify", (Type[])null, (Type[])null))
				});
				return val.Instructions();
			}
		}

		public static SkillType fromName(string englishName)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return (SkillType)Math.Abs(StringExtensionMethods.GetStableHashCode(englishName));
		}
	}
	[BepInPlugin("Therzie.Warfare", "Warfare", "1.9.4")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class WarfarePlugin : 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(ObjectDB), "Awake")]
		private static class DisableRecipesWarfare
		{
			private static readonly List<string> disabledRecipes = new List<string> { "Battleaxe", "BattleaxeCrystal", "FistFenrirClaw", "SledgeIron", "SledgeStagbreaker", "SledgeDemolisher" };

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

		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 = "Warfare";

		internal const string ModVersion = "1.9.4";

		internal const string Author = "Therzie";

		private const string ModGUID = "Therzie.Warfare";

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

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

		internal static string ConnectionError = "";

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

		public static CraftingStation FletcherStation;

		public static readonly ManualLogSource WarfareLogger = Logger.CreateLogSource("Warfare");

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

		internal static List<GameObject> projectilePrefabsX = new List<GameObject>();

		internal static List<GameObject> projectilePrefabsY = new List<GameObject>();

		internal static List<GameObject> projectilePrefabsZ = new List<GameObject>();

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

		internal static Dictionary<GameObject, GameObject> fermentersless = 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()
		{
			Localizer.Load();
			AudioMixerFix.Init(WarfareLogger);
			_serverConfigLocked = config("1 - General", "Lock Configuration", Toggle.On, "If on, the configuration is locked and can be changed by server admins only.");
			ConfigSync.AddLockingConfigEntry<Toggle>(_serverConfigLocked);
			BuildPiece buildPiece = new BuildPiece("warfare", "FletcherTable_TW");
			buildPiece.Category.Set("Warfare");
			buildPiece.Crafting.Set(PieceManager.CraftingTable.Workbench);
			buildPiece.RequiredItems.Add("Bronze", 6, recover: true);
			buildPiece.RequiredItems.Add("RoundLog", 10, recover: true);
			buildPiece.RequiredItems.Add("LeatherScraps", 6, recover: true);
			buildPiece.RequiredItems.Add("DeerHide", 4, recover: true);
			FletcherStation = buildPiece.Prefab.GetComponent<CraftingStation>();
			BuildPiece buildPiece2 = new BuildPiece("warfare", "FletcherTable_ext1_TW");
			buildPiece2.Category.Set("Warfare");
			buildPiece2.Crafting.Set("FletcherTable_TW");
			buildPiece2.RequiredItems.Add("Bronze", 4, recover: true);
			buildPiece2.RequiredItems.Add("FineWood", 12, recover: true);
			buildPiece2.RequiredItems.Add("BronzeNails", 20, recover: true);
			buildPiece2.RequiredItems.Add("DeerHide", 4, recover: true);
			BuildPiece buildPiece3 = new BuildPiece("warfare", "FletcherTable_ext2_TW");
			buildPiece3.Category.Set("Warfare");
			buildPiece3.Crafting.Set("FletcherTable_TW");
			buildPiece3.RequiredItems.Add("BronzeNails", 20, recover: true);
			buildPiece3.RequiredItems.Add("RoundLog", 8, recover: true);
			buildPiece3.RequiredItems.Add("TrollHide", 10, recover: true);
			buildPiece3.RequiredItems.Add("TrollBone_TW", 2, recover: true);
			BuildPiece buildPiece4 = new BuildPiece("warfare", "FletcherTable_ext3_TW");
			buildPiece4.Category.Set("Warfare");
			buildPiece4.Crafting.Set("FletcherTable_TW");
			buildPiece4.RequiredItems.Add("Iron", 10, recover: true);
			buildPiece4.RequiredItems.Add("ElderBark", 10, recover: true);
			buildPiece4.RequiredItems.Add("IronNails", 40, recover: true);
			buildPiece4.RequiredItems.Add("RottenPelt_TW", 4, recover: true);
			BuildPiece buildPiece5 = new BuildPiece("warfare", "FletcherTable_ext4_TW");
			buildPiece5.Category.Set("Warfare");
			buildPiece5.Crafting.Set("FletcherTable_TW");
			buildPiece5.RequiredItems.Add("Silver", 14, recover: true);
			buildPiece5.RequiredItems.Add("FineWood", 10, recover: true);
			buildPiece5.RequiredItems.Add("Obsidian", 8, recover: true);
			buildPiece5.RequiredItems.Add("WolfPelt", 4, recover: true);
			BuildPiece buildPiece6 = new BuildPiece("warfare", "BlackForge_ext3_TW");
			buildPiece6.Category.Set(BuildPieceCategory.Crafting);
			buildPiece6.Crafting.Set(PieceManager.CraftingTable.BlackForge);
			buildPiece6.RequiredItems.Add("Eitr", 10, recover: true);
			buildPiece6.RequiredItems.Add("FlametalNew", 16, recover: true);
			buildPiece6.RequiredItems.Add("Grausten", 12, recover: true);
			buildPiece6.RequiredItems.Add("BlackMarble", 12, recover: true);
			BuildPiece buildPiece7 = new BuildPiece("warfare", "BlackForge_ext4_TW");
			buildPiece7.Category.Set(BuildPieceCategory.Crafting);
			buildPiece7.Crafting.Set(PieceManager.CraftingTable.BlackForge);
			buildPiece7.RequiredItems.Add("Iron", 20, recover: true);
			buildPiece7.RequiredItems.Add("BlackMarble", 25, recover: true);
			buildPiece7.RequiredItems.Add("YggdrasilWood", 10, recover: true);
			buildPiece7.RequiredItems.Add("BlackCore", 5, recover: true);
			Sprite val = Functions.loadSprite("HacknSlash.png");
			Sprite icon = Functions.loadSprite("BleedIcon.png");
			Sprite icon2 = Functions.loadSprite("GhostIcon.png");
			Sprite icon3 = Functions.loadSprite("BuckshotIcon.png");
			GameObject val2 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "Ravens_TW");
			GameObject val3 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "digg_v3_TW");
			GameObject val4 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "digg_pickaxearrow_TW");
			GameObject val5 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "digg_pickaxebolt_TW");
			GameObject val6 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "VFX_pickaxearrowaoe_TW");
			GameObject val7 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "DemonicAxe_fireburn_AOE_TW");
			GameObject val8 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_Potion_stamina_medium_TW");
			GameObject val9 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "ChainLightningMistlands_TW");
			GameObject val10 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_chainlightning_spread_TW");
			GameObject val11 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_arrowhitTW");
			GameObject val12 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_blockedTW");
			GameObject val13 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_bow_fireTW");
			GameObject val14 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_clubhitTW");
			GameObject val15 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_firearrow_hitTW");
			GameObject val16 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_frostarrow_hitTW");
			GameObject val17 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_HitSparksFistTW");
			GameObject val18 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_Place_diggTW");
			GameObject val19 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_sledge_hitTW");
			GameObject val20 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_sledge_iron_hitTW");
			GameObject val21 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_surtr_sledge_hitTW");
			GameObject val22 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_njord_sledge_hitTW");
			GameObject val23 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_arbalest_fire_TW");
			GameObject vfx = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_HitSparksTW");
			GameObject val24 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_sledgebonemass_hitTW");
			GameObject val25 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_warpikejumpAOE_hitTW");
			GameObject val26 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_warpikeanimationAOE_TW");
			GameObject val27 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_warpikeDvergrjump_TW");
			GameObject val28 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_troll_rock_destroyed_improved_TW");
			GameObject val29 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_FistNjordAOE_hitTW");
			GameObject val30 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_FistDvergr_secondary_TW");
			GameObject val31 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_YagluthBlade_meteorstart_TW");
			GameObject val32 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_demonicaxe_jump_hitTW");
			GameObject val33 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_dualblade_fire_jump_hitTW");
			GameObject val34 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_dualblade_ice_hitTW");
			GameObject val35 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_dragonslayer_hitTW");
			GameObject val36 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_kromaxe_jump_hitTW");
			GameObject vfx2 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_dummy_SE_TW");
			GameObject val37 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_GlacierRockDestroyed_small_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "VFX_lightning_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_Place_stone_wall_2x1TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_SawDustTW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_ExtensionConnectionTW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_build_lowfog_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_Place_workbench_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_Place_wood_beam_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_Place_wood_wall_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_Place_wood_pole_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_logdestroyed_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_RockDestroyed_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_RockHit_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_pickable_pick_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_bush_leaf_puff_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_bush_destroyed_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_tree_fall_hit_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "fx_WaterImpact_Big_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "vfx_turnip_grow_TW");
			GameObject val38 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_block_camshakeTW");
			GameObject val39 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_hit_camshake_knifeTW");
			GameObject val40 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_hit_camshakeTW");
			GameObject val41 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_swing_camshakeTW");
			GameObject val42 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_spinlightning_aoe_TW");
			GameObject val43 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_axelightning_aoe_TW");
			GameObject val44 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_lancelightning_aoe_TW");
			GameObject val45 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_sledge_demolisher_TW");
			GameObject val46 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_claymorelightning_aoe_TW");
			GameObject val47 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_bastardlightning_aoe_TW");
			GameObject val48 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_raven_despawn_TW");
			GameObject val49 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_lightningcasting_TW");
			GameObject val50 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_warpikelightning_aoe_TW");
			GameObject val51 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_YagluthBlade_meteor_explosion_TW");
			GameObject val52 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_eikthyrcrossbow");
			GameObject val53 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_meteor_explosion_TW");
			GameObject val54 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_BastardSecondary_conewave_TW");
			GameObject val55 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_BastardSecondary_hit_TW");
			GameObject val56 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "fx_BastardDwarvenSecondary_conewave_TW");
			GameObject vfx3 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "adrenaline_effect_TW");
			GameObject vfx4 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "haste_effect_TW");
			GameObject vfx5 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vampirism_effect_TW");
			GameObject vfx6 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "bash_effect_TW");
			GameObject vfx7 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "bleed_effect_TW");
			GameObject val57 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "burning_effect_TW");
			GameObject val58 = PrefabManager.RegisterPrefab("warfare", "greatbowmoder_explosion_TW");
			GameObject val59 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_axethrow_TW");
			GameObject val60 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_throwaxesecondary_TW");
			GameObject val61 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_arrow_hitTW");
			GameObject val62 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_atgeir_attack_secondaryTW");
			GameObject val63 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_atgeir_attackTW");
			GameObject val64 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_axe_hitTW");
			GameObject val65 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_axe_swingTW");
			GameObject val66 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_battleaxe_hitTW");
			GameObject val67 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_battleaxe_swing_woshTW");
			GameObject val68 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_bow_drawTW");
			GameObject val69 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_claw_swingTW");
			GameObject val70 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_firearrow_hitTW");
			GameObject val71 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_fist_hitTW");
			GameObject val72 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_claymore_swing_TW");
			GameObject val73 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_fist_metal_blockedTW");
			GameObject val74 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_fist_swingTW");
			GameObject val75 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_frostarrow_hitTW");
			GameObject val76 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_knife_swingTW");
			GameObject val77 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_lightningarrow_hitTW");
			GameObject val78 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_metal_blockedTW");
			GameObject val79 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_pickaxe_hitTW");
			GameObject val80 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_pickaxe_swingTW");
			GameObject val81 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_rock_destroyedTW");
			GameObject val82 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_sledge_hitTW");
			GameObject val83 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_sledge_iron_hit_TW");
			GameObject val84 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_spear_hitTW");
			GameObject val85 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_spear_pokeTW");
			GameObject val86 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_spear_throwTW");
			GameObject val87 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_sword_hitTW");
			GameObject val88 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_sword_swingTW");
			GameObject val89 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_torch_swingTW");
			GameObject val90 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_unarmed_hitTW");
			GameObject val91 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_unarmed_swingTW");
			GameObject val92 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_wolf_attackTW");
			GameObject val93 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_wood_blockedTW");
			GameObject val94 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_wood_destroyedTW");
			GameObject val95 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_oozebomb_explode_TW");
			GameObject val96 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_club_hitTW");
			GameObject val97 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_club_swingTW");
			GameObject val98 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_metal_shield_blocked_TW");
			GameObject val99 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_battlehammer_hitTW");
			GameObject val100 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_dualhammer_hit_TW");
			GameObject val101 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_arbalest_fire_TW");
			GameObject val102 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_bomb_throw_TW");
			GameObject val103 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_spiritbomb_throw_TW");
			GameObject val104 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_overhead_hitTW");
			GameObject val105 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_overhead_swingTW");
			GameObject val106 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_blob_attack_TW");
			GameObject val107 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_bow_fire_TW");
			GameObject val108 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_insect_attackTW");
			GameObject val109 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_fistblackmetal_TW");
			GameObject val110 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_meteorhit_TW");
			GameObject val111 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_meteorstart_TW");
			GameObject val112 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_fireattack_TW");
			GameObject val113 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_sledge_lowervolhitTW");
			GameObject val114 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_knuckleduster_swingTW");
			GameObject val115 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_knuckles_slamhitTW");
			GameObject val116 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_sledge_swingTW");
			GameObject val117 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_iceball_TW");
			GameObject val118 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_iceblast_TW");
			GameObject val119 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_ice_destroyed_TW");
			GameObject val120 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_minerock_destroyedTW");
			GameObject val121 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_dualblade_jump_hit_TW");
			GameObject val122 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_warpike_secondaryTW");
			GameObject val123 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_greydwarf_attack_hit_TW");
			GameObject val124 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_YagluthBladeSecondary_TW");
			GameObject val125 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "sfx_kromaxe_secondaryhit_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_gui_repairitem_forgeTW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_gui_craftitem_forgeTW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_gui_craftitem_forge_endTW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_build_forgottenforge_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_build_hammer_metalTW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_build_hammer_woodTW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_build_ymirforge_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_gui_craftitem_workbench_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_gui_craftitem_workbench_end_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_gui_repairitem_workbench_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_build_hammer_default_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_tree_hit_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_wood_break_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_rock_hit_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_pickable_pick_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_bush_hit_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_tree_fall_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_tree_fall_hit_TW");
			PiecePrefabManager.RegisterPrefab("warfare", "sfx_build_cultivator_TW");
			GameObject val126 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_VolcanicRockDestroyed_large_TW");
			GameObject val127 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_GlacierRockDestroyed_large_TW");
			GameObject val128 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_VolcanicPillarDestroyed_large_TW");
			GameObject val129 = PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("warfare"), "vfx_IceBlockDestroyed_large_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "OverheadSlashBattleaxe");
			AnimationReplaceManager.AddAnimationSet("warfare", "ChargedSlashTwoHanded");
			AnimationReplaceManager.AddAnimationSet("warfare", "SpinAttackNonSpear");
			AnimationReplaceManager.AddAnimationSet("warfare", "DualBladeMain0", "DualBladeMain1", "DualBladeMain2");
			AnimationReplaceManager.AddAnimationSet("warfare", "CultistStaffMain0", "CultistStaffMain1", "CultistStaffMain2");
			AnimationReplaceManager.AddAnimationSet("warfare", "SkrymirSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "StaffStormSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "DualAxeMain0", "DualAxeMain1", "DualAxeMain2");
			AnimationReplaceManager.AddAnimationSet("warfare", "DualAxeSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "DualSwordsMain0", "DualSwordsMain1", "DualSwordsMain2");
			AnimationReplaceManager.AddAnimationSet("warfare", "DualSwordsSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "DualHammerMain0", "DualHammerMain1", "DualHammerMain2");
			AnimationReplaceManager.AddAnimationSet("warfare", "DualHammerSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "DualSpearMain0", "DualSpearMain1", "DualSpearMain2");
			AnimationReplaceManager.AddAnimationSet("warfare", "DualSpearSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "JumpSecondaryAttack_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "WarpikeMain0", "WarpikeMain1", "WarpikeMain2");
			AnimationReplaceManager.AddAnimationSet("warfare", "WarpikeSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "FistSlamJumpAnimation_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "FistLeftRightComboAnimation_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "FistAttackSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "FistDoubleHit_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "RightPowerUppercut_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "ThrowAttackMain0", "ThrowAttackMain1", "ThrowAttackMain2");
			AnimationReplaceManager.AddAnimationSet("warfare", "ThrowAttackSecondary_TW");
			AnimationReplaceManager.AddAnimationSet("warfare", "YagluthBlade_Secondary_TW");
			BleedingSecondaryAttack.AddToItem("FistQueen_TW", 2);
			BleedingSecondaryAttack.AddToItem("FistChitin_TW", 1);
			BleedingSecondaryAttack.UseVFX(vfx7);
			Haste.AddToItem("KnifeViper_TW");
			Haste.AddToItem("FistBlackmetal_TW");
			Haste.UseVFX(vfx4);
			Haste.UseIcon(icon2);
			Ghost.UseIcon(icon2);
			PiercingGreatbowModer.UseVFX(vfx);
			PiercingGreatbowPlains.UseVFX(vfx);
			PiercingGreatbowMistlands.UseVFX(vfx);
			PiercingGreatbowModer.AddToItem("GreatbowModer_TW", 100);
			PiercingGreatbowPlains.AddToItem("GreatbowBlackmetal_TW", 100);
			PiercingGreatbowMistlands.AddToItem("GreatbowDvergr_TW", 100);
			Adrenaline.UseVFX(vfx3);
			Adrenaline.AddToItem("KnifeViper_TW", 10);
			Adrenaline.AddToItem("FistBlackmetal_TW", 14);
			Adrenaline.AddToItem("FistDvergr_TW", 16);
			Smasher.AddToItem("BattlehammerDvergr_TW", 100);
			Smasher.AddToItem("BattlehammerElder_TW", 100);
			Smasher.UseVFX(vfx);
			Bleeding.AddToItem("FistSilver_TW", 1);
			Bleeding.UseVFX(vfx7);
			Juggernaut.UseVFX(vfx);
			Juggernaut.AddToItem("WarpikeBone_TW", 100);
			Juggernaut.AddToItem("WarpikeElder_TW", 100);
			Juggernaut.AddToItem("WarpikeChitin_TW", 100);
			Juggernaut.AddToItem("WarpikeObsidian_TW", 100);
			Juggernaut.AddToItem("WarpikeBlackmetal_TW", 100);
			Juggernaut.AddToItem("WarpikeDvergr_TW", 100);
			Juggernaut.AddToItem("WarpikeFlametal_TW", 100);
			Decapitator4.UseVFX(vfx);
			Decapitator5.UseVFX(vfx);
			Decapitator4.AddToItem("BastardDvergr_TW", 100);
			Decapitator4.AddToItem("BastardFlametal_TW", 100);
			Decapitator4.AddToItem("BattleaxeDvergr_TW", 100);
			Decapitator4.AddToItem("BattleaxeFlametal_TW", 100);
			Decapitator4.AddToItem("DualSwordScimitar_TW", 100);
			Decapitator5.AddToItem("FistFlametal_TW", 100);
			Decapitator5.AddToItem("ThrowAxeDvergr_TW", 100);
			Executioner.UseVFX(vfx);
			Executioner.AddToItem("ClaymoreDvergr_TW", 15);
			Impale.UseVFX(vfx7);
			Impale.AddToItem("LanceBlackmetal_TW", 1);
			Impale.AddToItem("LanceDvergr_TW", 2);
			Bash.UseVFX(vfx6);
			Bash.AddToItem("SledgeBonemass_TW", 3);
			Bash.AddToItem("SledgeSilver_TW", 2);
			Bash.AddToItem("SledgeBlackmetal_TW", 3);
			Bash.AddToItem("SledgeDemolisher_TW", 4);
			Bash.AddToItem("SledgeFlametal_TW", 5);
			Vampirism.AddToItem("ScytheVampiric_TW", 6);
			Vampirism.UseIcon(icon);
			Vampirism.UseVFX(vfx5);
			HacknSlash.AddToItem("FistQueen_TW", 100);
			HacknSlash.UseVFX(vfx);
			Item item = new Item("warfare", "AncientArtifact_TW");
			item.Configurable = Configurability.Recipe;
			Item item2 = new Item("warfare", "AncientScroll_TW");
			item2.Configurable = Configurability.Recipe;
			item2.CraftAmount = 1;
			Item item3 = new Item("warfare", "RuneBer_TW");
			item3.Configurable = Configurability.Recipe;
			Item item4 = new Item("warfare", "RuneAlgiz_TW");
			item4.Configurable = Configurability.Recipe;
			Item item5 = new Item("warfare", "RuneDagaz_TW");
			item5.Configurable = Configurability.Recipe;
			Item item6 = new Item("warfare", "RuneEihwaz_TW");
			item6.Configurable = Configurability.Recipe;
			Item item7 = new Item("warfare", "RuneFehu_TW");
			item7.Configurable = Configurability.Recipe;
			Item item8 = new Item("warfare", "RuneJara_TW");
			item8.Configurable = Configurability.Recipe;
			Item item9 = new Item("warfare", "RuneMannaz_TW");
			item9.Configurable = Configurability.Recipe;
			Item item10 = new Item("warfare", "RuneOthala_TW");
			item10.Configurable = Configurability.Recipe;
			Item item11 = new Item("warfare", "RunePerth_TW");
			item11.Configurable = Configurability.Recipe;
			Item item12 = new Item("warfare", "RuneRaidho_TW");
			item12.Configurable = Configurability.Recipe;
			Item item13 = new Item("warfare", "RuneThurisaz_TW");
			item13.Configurable = Configurability.Recipe;
			Item item14 = new Item("warfare", "FreyjaEssence_TW");
			item14.Configurable = Configurability.Recipe;
			Item item15 = new Item("warfare", "VenomousFang_TW");
			item15.Configurable = Configurability.Recipe;
			item15.DropsFrom.Add("Tick", 0.08f, 1, 1);
			item15.DropsFrom.Add("SeekerBrute", 0.25f, 1, 2);
			item15.DropsFrom.Add("Seeker", 0.15f, 1, 1);
			item15.DropsFrom.Add("Gjall", 0.5f, 1, 2);
			Item item16 = new Item("warfare", "DyeBlack_TW");
			item16.Configurable = Configurability.Recipe;
			item16.Crafting.Add(ItemManager.CraftingTable.Workbench, 1);
			item16.RequiredItems.Add("Blueberries", 2);
			item16.RequiredItems.Add("Coal", 2);
			item16.CraftAmount = 1;
			Item item17 = new Item("warfare", "DarkCrystal_TW");
			item17.Configurable = Configurability.Recipe;
			item17.DropsFrom.Add("Dverger", 0.15f, 1, 1);
			item17.DropsFrom.Add("DvergerMage", 0.25f, 1, 1);
			item17.DropsFrom.Add("SeekerBrute", 0.2f, 1, 1);
			item17.DropsFrom.Add("Seeker", 0.15f, 1, 1);
			item17.DropsFrom.Add("Gjall", 0.35f, 1, 1);
			Item item18 = new Item("warfare", "JuteBlack_TW");
			item18.Configurable = Configurability.Recipe;
			item18.Crafting.Add(ItemManager.CraftingTable.MageTable, 1);
			item18.RequiredItems.Add("JuteBlue", 1);
			item18.RequiredItems.Add("DyeBlack_TW", 3);
			item18.DropsFrom.Add("DvergerMage", 0.35f, 1, 1);
			item18.DropsFrom.Add("Dverger", 0.25f, 1, 1);
			Item item19 = new Item("warfare", "GoblinScraps_TW");
			item19.Configurable = Configurability.Recipe;
			Item item20 = new Item("warfare", "ProwlerFang_TW");
			item20.Configurable = Configurability.Recipe;
			Item item21 = new Item("warfare", "LoxBone_TW");
			item21.Configurable = Configurability.Recipe;
			item21.DropsFrom.Add("Lox", 0.75f, 1, 2);
			Item item22 = new Item("warfare", "GrizzlyBearPelt_TW");
			item22.Configurable = Configurability.Recipe;
			Item item23 = new Item("warfare", "RottenPelt_TW");
			item23.Configurable = Configurability.Recipe;
			item23.DropsFrom.Add("Draugr", 0.12f, 1, 1);
			item23.DropsFrom.Add("Draugr_Ranged", 0.12f, 1, 1);
			item23.DropsFrom.Add("Draugr_Elite", 0.35f, 1, 1);
			Item item24 = new Item("warfare", "TrollBone_TW");
			item24.Configurable = Configurability.Recipe;
			item24.DropsFrom.Add("Troll", 0.85f, 1, 2);
			Item item25 = new Item("warfare", "RazorbackLeather_TW");
			item25.Configurable = Configurability.Recipe;
			Item item26 = new Item("warfare", "RazorbackTusk_TW");
			item26.Configurable = Configurability.Recipe;
			Item item27 = new Item("warfare", "Emerald_TW");
			item27.Configurable = Configurability.Recipe;
			item27.DropsFrom.Add("GoblinBrute", 0.03f, 1, 1);
			item27.DropsFrom.Add("GoblinShaman", 0.08f, 1, 1);
			item27.DropsFrom.Add("GoblinKing", 1f, 1, 1);
			Item item28 = new Item("warfare", "Amethyst_TW");
			item28.Configurable = Configurability.Recipe;
			item28.DropsFrom.Add("SeekerBrute", 0.03f, 1, 1);
			item28.DropsFrom.Add("Gjall", 0.08f, 1, 1);
			item28.DropsFrom.Add("SeekerQueen", 1f, 1, 1);
			Item item29 = new Item("warfare", "Onyx_TW");
			item29.Configurable = Configurability.Recipe;
			item29.DropsFrom.Add("Draugr_Elite", 0.03f, 1, 1);
			item29.DropsFrom.Add("Abomination", 0.08f, 1, 1);
			item29.DropsFrom.Add("Bonemass", 0.5f, 1, 1);
			Item item30 = new Item("warfare", "Diamond_TW");
			item30.Configurable = Configurability.Recipe;
			item30.DropsFrom.Add("StoneGolem", 0.03f, 1, 1);
			item30.DropsFrom.Add("Fenring_Cultist", 0.08f, 1, 1);
			item30.DropsFrom.Add("Dragon", 0.8f, 1, 1);
			Item item31 = new Item("warfare", "Topaz_TW");
			item31.Configurable = Configurability.Recipe;
			Item item32 = new Item("warfare", "Sapphire_TW");
			item32.Configurable = Configurability.Recipe;
			Item item33 = new Item("warfare", "MeadBaseLingeringStaminaMinor_TW");
			item33.Configurable = Configurability.Recipe;
			item33.Crafting.Add(ItemManager.CraftingTable.MeadCauldron, 1);
			item33.RequiredItems.Add("MeadTasty", 3);
			item33.RequiredItems.Add("MushroomYellow", 5);
			item33.RequiredItems.Add("Honey", 10);
			Item item34 = new Item("warfare", "MeadStaminaLingeringMinor_TW");
			item34.Configurable = Configurability.Recipe;
			fermentersless.Add(item33.Prefab, item34.Prefab);
			Item item35 = new Item("warfare", "MeadBaseLingeringStaminaMedium_TW");
			item35.Configurable = Configurability.Recipe;
			item35.Crafting.Add(ItemManager.CraftingTable.MeadCauldron, 1);
			item35.RequiredItems.Add("MeadTasty", 3);
			item35.RequiredItems.Add("Cloudberry", 5);
			item35.RequiredItems.Add("Honey", 10);
			Item item36 = new Item("warfare", "MeadStaminaLingeringMedium_TW");
			item36.Configurable = Configurability.Recipe;
			fermentersless.Add(item35.Prefab, item36.Prefab);
			Item item37 = new Item("warfare", "MeadBaseLightningResist_TW");
			item37.Configurable = Configurability.Recipe;
			item37.Crafting.Add(ItemManager.CraftingTable.MeadCauldron, 1);
			item37.RequiredItems.Add("Honey", 12);
			item37.RequiredItems.Add("Barley", 5);
			item37.RequiredItems.Add("Flax", 7);
			Item item38 = new Item("warfare", "MeadLightningResist_TW");
			item38.Configurable = Configurability.Recipe;
			fermenters.Add(item37.Prefab, item38.Prefab);
			Item item39 = new Item("warfare", "CapeRotten_TW");
			item39.Configurable = Configurability.Recipe;
			item39.Crafting.Add(ItemManager.CraftingTable.Workbench, 2);
			item39.RequiredItems.Add("RottenPelt_TW", 6);
			item39.RequiredItems.Add("Guck", 8);
			item39.RequiredItems.Add("Ooze", 4);
			item39.RequiredItems.Add("TrophyBlob", 1);
			item39.RequiredUpgradeItems.Add("RottenPelt_TW", 3);
			item39.RequiredUpgradeItems.Add("Guck", 4);
			item39.RequiredUpgradeItems.Add("Ooze", 2);
			item39.RequiredUpgradeItems.Add("Upgrader2Armor", 1, 0, upgraderResource: true);
			item39.CraftAmount = 1;
			item39.QualityResultAmountMultiplier = 0f;
			Item item40 = new Item("warfare", "ArrowBone_TW");
			item40.Configurable = Configurability.Recipe;
			item40.Crafting.Add("FletcherTable_TW", 1);
			item40.RequiredItems.Add("Wood", 8);
			item40.RequiredItems.Add("BoneFragments", 4);
			item40.RequiredItems.Add("Feathers", 2);
			item40.CraftAmount = 20;
			GameObject val130 = PrefabManager.RegisterPrefab("warfare", "arrowbone_projectile_TW");
			Item item41 = new Item("warfare", "ArrowPickaxe_TW");
			item41.Configurable = Configurability.Recipe;
			item41.Crafting.Add("FletcherTable_TW", 1);
			item41.RequiredItems.Add("ElderBark", 8);
			item41.RequiredItems.Add("Resin", 1);
			item41.RequiredItems.Add("SurtlingCore", 1);
			item41.RequiredItems.Add("Feathers", 2);
			item41.CraftAmount = 20;
			GameObject val131 = PrefabManager.RegisterPrefab("warfare", "arrowpickaxe_projectile_TW");
			Item item42 = new Item("warfare", "ArrowExplosiveLightning_TW");
			item42.Configurable = Configurability.Recipe;
			item42.Crafting.Add("FletcherTable_TW", 1);
			item42.RequiredItems.Add("YggdrasilWood", 8);
			item42.RequiredItems.Add("Carapace", 4);
			item42.RequiredItems.Add("Eitr", 1);
			item42.CraftAmount = 20;
			GameObject val132 = PrefabManager.RegisterPrefab("warfare", "bow_projectile_explosivelightning_TW");
			GameObject val133 = PrefabManager.RegisterPrefab("warfare", "arrowlightning_explosion_TW");
			Item item43 = new Item("warfare", "ArrowExplosivePoison_TW");
			item43.Configurable = Configurability.Recipe;
			item43.Crafting.Add("FletcherTable_TW", 1);
			item43.RequiredItems.Add("Wood", 8);
			item43.RequiredItems.Add("BlackMetal", 2);
			item43.RequiredItems.Add("Ooze", 2);
			item43.CraftAmount = 20;
			GameObject val134 = PrefabManager.RegisterPrefab("warfare", "bow_projectile_explosivepoison_TW");
			GameObject val135 = PrefabManager.RegisterPrefab("warfare", "arrowpoison_explosion_TW");
			Item item44 = new Item("warfare", "BombSpirit_TW");
			item44.Configurable = Configurability.Recipe;
			item44.Crafting.Add(ItemManager.CraftingTable.Cauldron, 4);
			item44.RequiredItems.Add("SilverOre", 2);
			item44.RequiredItems.Add("WolfHairBundle", 2);
			item44.RequiredItems.Add("Cloudberry", 2);
			item44.CraftAmount = 10;
			GameObject val136 = PrefabManager.RegisterPrefab("warfare", "bombspirit_projectile_TW");
			GameObject val137 = PrefabManager.RegisterPrefab("warfare", "bombspirit_explosion_TW");
			Item item45 = new Item("warfare", "BoltWood_TW");
			item45.Configurable = Configurability.Recipe;
			item45.Crafting.Add(ItemManager.CraftingTable.Workbench, 1);
			item45.RequiredItems.Add("Wood", 8);
			item45.CraftAmount = 20;
			GameObject val138 = PrefabManager.RegisterPrefab("warfare", "woodbolt_projectile_TW");
			Item item46 = new Item("warfare", "BoltAntler_TW");
			item46.Configurable = Configurability.Recipe;
			item46.Crafting.Add(ItemManager.CraftingTable.Workbench, 2);
			item46.RequiredItems.Add("Wood", 8);
			item46.RequiredItems.Add("HardAntler", 1);
			item46.CraftAmount = 20;
			GameObject val139 = PrefabManager.RegisterPrefab("warfare", "boltantler_projectile_TW");
			Item item47 = new Item("warfare", "BoltBronze_TW");
			item47.Configurable = Configurability.Recipe;
			item47.Crafting.Add("FletcherTable_TW", 1);
			item47.RequiredItems.Add("Wood", 8);
			item47.RequiredItems.Add("Bronze", 1);
			item47.RequiredItems.Add("Feathers", 2);
			item47.CraftAmount = 20;
			GameObject val140 = PrefabManager.RegisterPrefab("warfare", "bronzebolt_projectile_TW");
			Item item48 = new Item("warfare", "BoltFire_TW");
			item48.Configurable = Configurability.Recipe;
			item48.Crafting.Add("FletcherTable_TW", 1);
			item48.RequiredItems.Add("Wood", 8);
			item48.RequiredItems.Add("Resin", 6);
			item48.RequiredItems.Add("Feathers", 2);
			item48.CraftAmount = 20;
			GameObject val141 = PrefabManager.RegisterPrefab("warfare", "firebolt_projectile_TW");
			Item item49 = new Item("warfare", "BoltFrost_TW");
			item49.Configurable = Configurability.Recipe;
			item49.Crafting.Add("FletcherTable_TW", 1);
			item49.RequiredItems.Add("Wood", 8);
			item49.RequiredItems.Add("Obsidian", 3);
			item49.RequiredItems.Add("Feathers", 2);
			item49.RequiredItems.Add("FreezeGland", 1);
			item49.CraftAmount = 20;
			GameObject val142 = PrefabManager.RegisterPrefab("warfare", "frostbolt_projectile_TW");
			Item item50 = new Item("warfare", "BoltPoison_TW");
			item50.Configurable = Configurability.Recipe;
			item50.Crafting.Add("FletcherTable_TW", 1);
			item50.RequiredItems.Add("Wood", 8);
			item50.RequiredItems.Add("Obsidian", 4);
			item50.RequiredItems.Add("Feathers", 2);
			item50.RequiredItems.Add("Guck", 1);
			item50.CraftAmount = 20;
			GameObject val143 = PrefabManager.RegisterPrefab("warfare", "poisonbolt_projectile_TW");
			Item item51 = new Item("warfare", "BoltSilver_TW");
			item51.Configurable = Configurability.Recipe;
			item51.Crafting.Add("FletcherTable_TW", 1);
			item51.RequiredItems.Add("Wood", 8);
			item51.RequiredItems.Add("Silver", 1);
			item51.RequiredItems.Add("Feathers", 2);
			item51.CraftAmount = 20;
			GameObject val144 = PrefabManager.RegisterPrefab("warfare", "silverbolt_projectile_TW");
			Item item52 = new Item("warfare", "BoltBlunt_TW");
			item52.Configurable = Configurability.Recipe;
			item52.Crafting.Add("FletcherTable_TW", 1);
			item52.RequiredItems.Add("Wood", 8);
			item52.RequiredItems.Add("Obsidian", 1);
			item52.RequiredItems.Add("Iron", 1);
			item52.RequiredItems.Add("Feathers", 2);
			item52.CraftAmount = 20;
			GameObject val145 = PrefabManager.RegisterPrefab("warfare", "bluntbolt_projectile_TW");
			Item item53 = new Item("warfare", "BoltPickaxe_TW");
			item53.Configurable = Configurability.Recipe;
			item53.Crafting.Add("FletcherTable_TW", 1);
			item53.RequiredItems.Add("ElderBark", 8);
			item53.RequiredItems.Add("Resin", 1);
			item53.RequiredItems.Add("SurtlingCore", 1);
			item53.RequiredItems.Add("Feathers", 2);
			item53.CraftAmount = 20;
			GameObject val146 = PrefabManager.RegisterPrefab("warfare", "pickaxebolt_projectile_TW");
			Item item54 = new Item("warfare", "BoltExplosiveLightning_TW");
			item54.Configurable = Configurability.Recipe;
			item54.Crafting.Add("FletcherTable_TW", 1);
			item54.RequiredItems.Add("YggdrasilWood", 8);
			item54.RequiredItems.Add("Carapace", 2);
			item54.RequiredItems.Add("Eitr", 1);
			item54.CraftAmount = 20;
			GameObject val147 = PrefabManager.RegisterPrefab("warfare", "explosivelightningbolt_projectile_TW");
			GameObject val148 = PrefabManager.RegisterPrefab("warfare", "boltlightning_explosion_TW");
			Item item55 = new Item("warfare", "BoltExplosivePoison_TW");
			item55.Configurable = Configurability.Recipe;
			item55.Crafting.Add("FletcherTable_TW", 1);
			item55.RequiredItems.Add("Wood", 8);
			item55.RequiredItems.Add("BlackMetal", 2);
			item55.RequiredItems.Add("Tar", 2);
			item55.CraftAmount = 20;
			GameObject val149 = PrefabManager.RegisterPrefab("warfare", "explosivepoisonbolt_projectile_TW");
			GameObject val150 = PrefabManager.RegisterPrefab("warfare", "boltpoison_explosion_TW");
			Item item56 = new Item("warfare", "AxeSilver_TW");
			item56.Configurable = Configurability.Recipe;
			item56.Crafting.Add(ItemManager.CraftingTable.Forge, 3);
			item56.RequiredItems.Add("ElderBark", 12);
			item56.RequiredItems.Add("Silver", 25);
			item56.RequiredItems.Add("WolfFang", 6);
			item56.RequiredItems.Add("TrophyWolf", 1);
			item56.RequiredUpgradeItems.Add("ElderBark", 6);
			item56.RequiredUpgradeItems.Add("Silver", 12);
			item56.RequiredUpgradeItems.Add("WolfFang", 3);
			item56.RequiredUpgradeItems.Add("Upgrader3Weapon", 1, 0, upgraderResource: true);
			item56.CraftAmount = 1;
			item56.QualityResultAmountMultiplier = 0f;
			Item item57 = new Item("warfare", "AxeDvergr_TW");
			item57.Configurable = Configurability.Recipe;
			item57.Crafting.Add(ItemManager.CraftingTable.BlackForge, 1);
			item57.RequiredItems.Add("YggdrasilWood", 20);
			item57.RequiredItems.Add("Eitr", 12);
			item57.RequiredItems.Add("VenomousFang_TW", 10);
			item57.RequiredItems.Add("TrophyTick", 1);
			item57.RequiredUpgradeItems.Add("YggdrasilWood", 10);
			item57.RequiredUpgradeItems.Add("Eitr", 4);
			item57.RequiredUpgradeItems.Add("VenomousFang_TW", 5);
			item57.RequiredUpgradeItems.Add("Upgrader5Weapon", 1, 0, upgraderResource: true);
			item57.CraftAmount = 1;
			item57.QualityResultAmountMultiplier = 0f;
			Item item58 = new Item("warfare", "AxeFlametal_TW");
			item58.Configurable = Configurability.Recipe;
			item58.Crafting.Add(ItemManager.CraftingTable.BlackForge, 1);
			item58.RequiredItems.Add("Blackwood", 16);
			item58.RequiredItems.Add("FlametalNew", 14);
			item58.RequiredItems.Add("BonemawSerpentTooth", 4);
			item58.RequiredItems.Add("TrophyBonemawSerpent", 1);
			item58.RequiredUpgradeItems.Add("Blackwood", 8);
			item58.RequiredUpgradeItems.Add("FlametalNew", 7);
			item58.RequiredUpgradeItems.Add("BonemawSerpentTooth", 2);
			item58.RequiredUpgradeItems.Add("TrophyBonemawSerpent", 1);
			item58.RequiredUpgradeItems.Add("Upgrader6Weapon", 1, 0, upgraderResource: true);
			item58.CraftAmount = 1;
			item58.QualityResultAmountMultiplier = 0f;
			Item item59 = AddThrowingAxe("warfare", "ThrowAxeFlint_TW");
			AttachWeaponToSkill(item59, "Throwing");
			item59.Configurable = Configurability.Recipe;
			item59.Crafting.Add(ItemManager.CraftingTable.Workbench, 2);
			item59.RequiredItems.Add("Wood", 8);
			item59.RequiredItems.Add("Flint", 2);
			item59.CraftAmount = 10;
			projectilePrefabsY.Add(PrefabManager.RegisterPrefab("warfare", "ThrowAxeFlint_projectile_TW"));
			Item item60 = AddThrowingAxe("warfare", "ThrowAxeBronze_TW");
			AttachWeaponToSkill(item60, "Throwing");
			item60.Configurable = Configurability.Recipe;
			item60.Crafting.Add(ItemManager.CraftingTable.Forge, 1);
			item60.RequiredItems.Add("RoundLog", 8);
			item60.RequiredItems.Add("Bronze", 2);
			item60.CraftAmount = 10;
			projectilePrefabsZ.Add(PrefabManager.RegisterPrefab("warfare", "ThrowAxeBronze_projectile_TW"));
			Item item61 = AddThrowingAxe("warfare", "ThrowAxeIron_TW");
			AttachWeaponToSkill(item61, "Throwing");
			item61.Configurable = Configurability.Recipe;
			item61.Crafting.Add(ItemManager.CraftingTable.Forge, 2);
			item61.RequiredItems.Add("ElderBark", 8);
			item61.RequiredItems.Add("Iron", 3);
			item61.CraftAmount = 10;
			projectilePrefabsX.Add(PrefabManager.RegisterPrefab("warfare", "ThrowAxeIron_projectile_TW"));
			Item item62 = AddThrowingAxe("warfare", "ThrowAxeSilver_TW");
			AttachWeaponToSkill(item62, "Throwing");
			item62.Configurable = Configurability.Recipe;
			item62.Crafting.Add(ItemManager.CraftingTable.Forge, 3);
			item62.RequiredItems.Add("FineWood", 8);
			item62.RequiredItems.Add("Silver", 3);
			item62.CraftAmount = 10;
			projectilePrefabsX.Add(PrefabManager.RegisterPrefab("warfare", "ThrowAxeSilver_projectile_TW"));
			Item item63 = AddThrowingAxe("warfare", "ThrowAxeBlackmetal_TW");
			MaterialReplacer.RegisterGameObjectForShaderSwap(item63.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			AttachWeaponToSkill(item63, "Throwing");
			item63.Configurable = Configurability.Recipe;
			item63.Crafting.Add(ItemManager.CraftingTable.Forge, 4);
			item63.RequiredItems.Add("FineWood", 10);
			item63.RequiredItems.Add("LinenThread", 1);
			item63.RequiredItems.Add("BlackMetal", 3);
			item63.CraftAmount = 10;
			projectilePrefabsZ.Add(PrefabManager.RegisterPrefab("warfare", "ThrowAxeBlackmetal_projectile_TW"));
			Item item64 = AddThrowingAxe("warfare", "ThrowAxeDvergr_TW");
			AttachWeaponToSkill(item64, "Throwing");
			item64.Configurable = Configurability.Recipe;
			item64.Crafting.Add(ItemManager.CraftingTable.BlackForge, 1);
			item64.RequiredItems.Add("YggdrasilWood", 10);
			item64.RequiredItems.Add("Carapace", 4);
			item64.RequiredItems.Add("Eitr", 2);
			item64.CraftAmount = 10;
			projectilePrefabsY.Add(PrefabManager.RegisterPrefab("warfare", "ThrowAxeDvergr_projectile_TW"));
			Item item65 = new Item("warfare", "DualScytheBloodthirst_TW");
			AttachWeaponToSkill(item65, "Scythes");
			item65.Configurable = Configurability.Recipe;
			item65.Crafting.Add(ItemManager.CraftingTable.Forge, 4);
			item65.RequiredItems.Add("Iron", 40);
			item65.RequiredItems.Add("RottenPelt_TW", 20);
			item65.RequiredItems.Add("Bloodbag", 20);
			item65.RequiredItems.Add("TrophyBonemass", 1);
			item65.RequiredUpgradeItems.Add("Iron", 20);
			item65.RequiredUpgradeItems.Add("RottenPelt_TW", 10);
			item65.RequiredUpgradeItems.Add("Bloodbag", 10);
			item65.RequiredUpgradeItems.Add("TrophyBonemass", 1);
			item65.RequiredUpgradeItems.Add("Upgrader2Weapon", 1, 0, upgraderResource: true);
			item65.CraftAmount = 1;
			item65.QualityResultAmountMultiplier = 0f;
			Item item66 = new Item("warfare", "ScytheVampiric_TW");
			AttachWeaponToSkill(item66, "Scythes");
			item66.Configurable = Configurability.Recipe;
			item66.Crafting.Add(ItemManager.CraftingTable.Forge, 4);
			item66.RequiredItems.Add("Iron", 40);
			item66.RequiredItems.Add("WitheredBone", 18);
			item66.RequiredItems.Add("Bloodbag", 16);
			item66.RequiredItems.Add("TrophyBonemass", 1);
			item66.RequiredUpgradeItems.Add("Iron", 20);
			item66.RequiredUpgradeItems.Add("WitheredBone", 9);
			item66.RequiredUpgradeItems.Add("Bloodbag", 8);
			item66.RequiredUpgradeItems.Add("TrophyBonemass", 1);
			item66.RequiredUpgradeItems.Add("Upgrader2Weapon", 1, 0, upgraderResource: true);
			item66.CraftAmount = 1;
			item66.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item66.Prefab, 1.1f);
			Item item67 = new Item("warfare", "AtgeirFlint_TW");
			item67.Configurable = Configurability.Recipe;
			item67.Crafting.Add(ItemManager.CraftingTable.Workbench, 2);
			item67.RequiredItems.Add("Flint", 8);
			item67.RequiredItems.Add("Wood", 10);
			item67.RequiredItems.Add("LeatherScraps", 4);
			item67.RequiredUpgradeItems.Add("Flint", 4);
			item67.RequiredUpgradeItems.Add("Wood", 5);
			item67.RequiredUpgradeItems.Add("Upgrader0Weapon", 1, 0, upgraderResource: true);
			item67.CraftAmount = 1;
			item67.QualityResultAmountMultiplier = 0f;
			Item item68 = new Item("warfare", "AtgeirSilver_TW");
			item68.Configurable = Configurability.Recipe;
			item68.Crafting.Add(ItemManager.CraftingTable.Forge, 3);
			item68.RequiredItems.Add("ElderBark", 25);
			item68.RequiredItems.Add("Silver", 25);
			item68.RequiredItems.Add("WolfClaw", 8);
			item68.RequiredItems.Add("TrophyCultist", 1);
			item68.RequiredUpgradeItems.Add("ElderBark", 12);
			item68.RequiredUpgradeItems.Add("Silver", 12);
			item68.RequiredUpgradeItems.Add("WolfClaw", 4);
			item68.RequiredUpgradeItems.Add("Upgrader3Weapon", 1, 0, upgraderResource: true);
			item68.CraftAmount = 1;
			item68.QualityResultAmountMultiplier = 0f;
			Item item69 = new Item("warfare", "TridentBlackmetal_TW");
			MaterialReplacer.RegisterGameObjectForShaderSwap(item69.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			item69.Configurable = Configurability.Recipe;
			item69.Crafting.Add(ItemManager.CraftingTable.Forge, 4);
			item69.RequiredItems.Add("FineWood", 25);
			item69.RequiredItems.Add("BlackMetal", 25);
			item69.RequiredItems.Add("Chitin", 30);
			item69.RequiredItems.Add("TrophyLox", 1);
			item69.RequiredUpgradeItems.Add("FineWood", 12);
			item69.RequiredUpgradeItems.Add("BlackMetal", 12);
			item69.RequiredUpgradeItems.Add("Chitin", 15);
			item69.RequiredUpgradeItems.Add("Upgrader4Weapon", 1, 0, upgraderResource: true);
			item69.CraftAmount = 1;
			item69.QualityResultAmountMultiplier = 0f;
			GameObject val151 = PrefabManager.RegisterPrefab("warfare", "projectile_tridentblackmetal_TW");
			Item item70 = new Item("warfare", "BastardFlint_TW");
			item70.Configurable = Configurability.Recipe;
			item70.Crafting.Add(ItemManager.CraftingTable.Workbench, 2);
			item70.RequiredItems.Add("Flint", 12);
			item70.RequiredItems.Add("RoundLog", 6);
			item70.RequiredItems.Add("GreydwarfEye", 1);
			item70.RequiredUpgradeItems.Add("Flint", 6);
			item70.RequiredUpgradeItems.Add("RoundLog", 3);
			item70.RequiredItems.Add("LeatherScraps", 2);
			item70.RequiredUpgradeItems.Add("Upgrader0Weapon", 1, 0, upgraderResource: true);
			item70.CraftAmount = 1;
			item70.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item70.Prefab, 1.4f);
			Item item71 = new Item("warfare", "BastardBone_TW");
			item71.Configurable = Configurability.Recipe;
			item71.Crafting.Add(ItemManager.CraftingTable.Forge, 1);
			item71.RequiredItems.Add("BoneFragments", 14);
			item71.RequiredItems.Add("Copper", 8);
			item71.RequiredItems.Add("TrophySkeleton", 1);
			item71.RequiredUpgradeItems.Add("BoneFragments", 7);
			item71.RequiredUpgradeItems.Add("Copper", 4);
			item71.RequiredUpgradeItems.Add("Upgrader1Weapon", 1, 0, upgraderResource: true);
			item71.CraftAmount = 1;
			item71.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item71.Prefab, 1.4f);
			Item item72 = new Item("warfare", "BastardChitin_TW");
			item72.Configurable = Configurability.Recipe;
			item72.Crafting.Add(ItemManager.CraftingTable.Forge, 2);
			item72.RequiredItems.Add("ElderBark", 14);
			item72.RequiredItems.Add("Chitin", 30);
			item72.RequiredItems.Add("Bronze", 12);
			item72.RequiredUpgradeItems.Add("ElderBark", 7);
			item72.RequiredUpgradeItems.Add("Chitin", 15);
			item72.RequiredUpgradeItems.Add("Bronze", 6);
			item72.RequiredUpgradeItems.Add("Upgrader2Weapon", 1, 0, upgraderResource: true);
			item72.CraftAmount = 1;
			item72.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item72.Prefab, 1.4f);
			Item item73 = new Item("warfare", "BastardSilver_TW");
			item73.Configurable = Configurability.Recipe;
			item73.Crafting.Add(ItemManager.CraftingTable.Forge, 3);
			item73.RequiredItems.Add("Silver", 25);
			item73.RequiredItems.Add("ElderBark", 25);
			item73.RequiredItems.Add("WolfFang", 10);
			item73.RequiredItems.Add("TrophyFenring", 1);
			item73.RequiredUpgradeItems.Add("Silver", 12);
			item73.RequiredUpgradeItems.Add("ElderBark", 12);
			item73.RequiredUpgradeItems.Add("WolfFang", 5);
			item73.RequiredUpgradeItems.Add("Upgrader3Weapon", 1, 0, upgraderResource: true);
			item73.CraftAmount = 1;
			item73.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item73.Prefab, 1.4f);
			Item item74 = new Item("warfare", "BastardBlackmetal_TW");
			MaterialReplacer.RegisterGameObjectForShaderSwap(item74.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			item74.Configurable = Configurability.Recipe;
			item74.Crafting.Add(ItemManager.CraftingTable.Forge, 4);
			item74.RequiredItems.Add("BlackMetal", 30);
			item74.RequiredItems.Add("Tar", 16);
			item74.RequiredItems.Add("LoxBone_TW", 6);
			item74.RequiredItems.Add("TrophyGoblinBrute", 1);
			item74.RequiredUpgradeItems.Add("BlackMetal", 15);
			item74.RequiredUpgradeItems.Add("Tar", 8);
			item74.RequiredUpgradeItems.Add("LoxBone_TW", 3);
			item74.RequiredUpgradeItems.Add("Upgrader4Weapon", 1, 0, upgraderResource: true);
			item74.CraftAmount = 1;
			item74.QualityResultAmountMultiplier = 0f;
			Item item75 = new Item("warfare", "BastardDvergr_TW");
			item75.Configurable = Configurability.Recipe;
			item75.Crafting.Add(ItemManager.CraftingTable.BlackForge, 1);
			item75.RequiredItems.Add("Carapace", 25);
			item75.RequiredItems.Add("Eitr", 15);
			item75.RequiredItems.Add("VenomousFang_TW", 10);
			item75.RequiredItems.Add("TrophyGjall", 1);
			item75.RequiredUpgradeItems.Add("Carapace", 10);
			item75.RequiredUpgradeItems.Add("Eitr", 5);
			item75.RequiredUpgradeItems.Add("VenomousFang_TW", 5);
			item75.RequiredUpgradeItems.Add("Upgrader5Weapon", 1, 0, upgraderResource: true);
			item75.CraftAmount = 1;
			item75.QualityResultAmountMultiplier = 0f;
			Item item76 = new Item("warfare", "BastardFlametal_TW");
			item76.Configurable = Configurability.Recipe;
			item76.Crafting.Add(ItemManager.CraftingTable.BlackForge, 1);
			item76.RequiredItems.Add("FlametalNew", 30);
			item76.RequiredItems.Add("CharredBone", 12);
			item76.RequiredItems.Add("AskHide", 10);
			item76.RequiredItems.Add("TrophyBonemawSerpent", 1);
			item76.RequiredUpgradeItems.Add("FlametalNew", 15);
			item76.RequiredUpgradeItems.Add("CharredBone", 6);
			item76.RequiredUpgradeItems.Add("AskHide", 5);
			item76.RequiredUpgradeItems.Add("TrophyBonemawSerpent", 1);
			item76.RequiredUpgradeItems.Add("Upgrader6Weapon", 1, 0, upgraderResource: true);
			item76.CraftAmount = 1;
			item76.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item76.Prefab, 1.4f);
			Item item77 = new Item("warfare", "BattleaxeFlint_TW");
			item77.Configurable = Configurability.Recipe;
			item77.Crafting.Add(ItemManager.CraftingTable.Workbench, 2);
			item77.RequiredItems.Add("Flint", 10);
			item77.RequiredItems.Add("Wood", 15);
			item77.RequiredItems.Add("LeatherScraps", 2);
			item77.RequiredUpgradeItems.Add("Flint", 6);
			item77.RequiredUpgradeItems.Add("Wood", 8);
			item77.RequiredUpgradeItems.Add("LeatherScraps", 2);
			item77.RequiredUpgradeItems.Add("Upgrader0Weapon", 1, 0, upgraderResource: true);
			item77.CraftAmount = 1;
			item77.QualityResultAmountMultiplier = 0f;
			Item item78 = new Item("warfare", "BattleaxeBronze_TW");
			item78.Configurable = Configurability.Recipe;
			item78.Crafting.Add(ItemManager.CraftingTable.Forge, 1);
			item78.RequiredItems.Add("RoundLog", 16);
			item78.RequiredItems.Add("Bronze", 12);
			item78.RequiredItems.Add("TrophyGreydwarfBrute", 1);
			item78.RequiredUpgradeItems.Add("RoundLog", 8);
			item78.RequiredUpgradeItems.Add("Bronze", 6);
			item78.RequiredUpgradeItems.Add("Upgrader1Weapon", 1, 0, upgraderResource: true);
			item78.CraftAmount = 1;
			item78.QualityResultAmountMultiplier = 0f;
			Item item79 = new Item("warfare", "BattleaxeIron_TW");
			item79.Configurable = Configurability.Recipe;
			item79.Crafting.Add(ItemManager.CraftingTable.Forge, 2);
			item79.RequiredItems.Add("ElderBark", 15);
			item79.RequiredItems.Add("Iron", 25);
			item79.RequiredItems.Add("TrophyDraugrElite", 1);
			item79.RequiredUpgradeItems.Add("ElderBark", 8);
			item79.RequiredUpgradeItems.Add("Iron", 12);
			item79.RequiredUpgradeItems.Add("Upgrader2Weapon", 1, 0, upgraderResource: true);
			item79.CraftAmount = 1;
			item79.QualityResultAmountMultiplier = 0f;
			Item item80 = new Item("warfare", "BattleaxeSilver_TW");
			item80.Configurable = Configurability.Recipe;
			item80.Crafting.Add(ItemManager.CraftingTable.Forge, 3);
			item80.RequiredItems.Add("ElderBark", 25);
			item80.RequiredItems.Add("Silver", 30);
			item80.RequiredItems.Add("WolfFang", 8);
			item80.RequiredItems.Add("TrophyFenring", 1);
			item80.RequiredUpgradeItems.Add("ElderBark", 12);
			item80.RequiredUpgradeItems.Add("Silver", 15);
			item80.RequiredUpgradeItems.Add("WolfFang", 4);
			item80.RequiredUpgradeItems.Add("Upgrader3Weapon", 1, 0, upgraderResource: true);
			item80.CraftAmount = 1;
			item80.QualityResultAmountMultiplier = 0f;
			Item item81 = new Item("warfare", "BattleaxeBlackmetal_TW");
			MaterialReplacer.RegisterGameObjectForShaderSwap(item81.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			item81.Configurable = Configurability.Recipe;
			item81.Crafting.Add(ItemManager.CraftingTable.Forge, 4);
			item81.RequiredItems.Add("FineWood", 30);
			item81.RequiredItems.Add("BlackMetal", 30);
			item81.RequiredItems.Add("LinenThread", 14);
			item81.RequiredItems.Add("TrophyLox", 1);
			item81.RequiredUpgradeItems.Add("FineWood", 12);
			item81.RequiredUpgradeItems.Add("BlackMetal", 15);
			item81.RequiredUpgradeItems.Add("LinenThread", 7);
			item81.RequiredUpgradeItems.Add("Upgrader4Weapon", 1, 0, upgraderResource: true);
			item81.CraftAmount = 1;
			item81.QualityResultAmountMultiplier = 0f;
			Item item82 = new Item("warfare", "BattleaxeDvergr_TW");
			item82.Configurable = Configurability.Recipe;
			item82.Crafting.Add(ItemManager.CraftingTable.BlackForge, 1);
			item82.RequiredItems.Add("Softtissue", 25);
			item82.RequiredItems.Add("Eitr", 15);
			item82.RequiredItems.Add("DarkCrystal_TW", 8);
			item82.RequiredItems.Add("TrophyGjall", 1);
			item82.RequiredUpgradeItems.Add("Softtissue", 12);
			item82.RequiredUpgradeItems.Add("Eitr", 8);
			item82.RequiredUpgradeItems.Add("DarkCrystal_TW", 4);
			item82.RequiredUpgradeItems.Add("Upgrader5Weapon", 1, 0, upgraderResource: true);
			item82.CraftAmount = 1;
			item82.QualityResultAmountMultiplier = 0f;
			Item item83 = new Item("warfare", "BattleaxeFlametal_TW");
			item83.Configurable = Configurability.Recipe;
			item83.Crafting.Add(ItemManager.CraftingTable.BlackForge, 1);
			item83.RequiredItems.Add("FlametalNew", 30);
			item83.RequiredItems.Add("CharredBone", 12);
			item83.RequiredItems.Add("BonemawSerpentTooth", 10);
			item83.RequiredItems.Add("TrophyFallenValkyrie", 1);
			item83.RequiredUpgradeItems.Add("FlametalNew", 15);
			item83.RequiredUpgradeItems.Add("CharredBone", 6);
			item83.RequiredUpgradeItems.Add("BonemawSerpentTooth", 5);
			item83.RequiredUpgradeItems.Add("TrophyFallenValkyrie", 1);
			item83.RequiredUpgradeItems.Add("Upgrader6Weapon", 1, 0, upgraderResource: true);
			item83.CraftAmount = 1;
			item83.QualityResultAmountMultiplier = 0f;
			Item item84 = new Item("warfare", "BattleaxeCrystal_TW");
			item84.Configurable = Configurability.Recipe;
			item84.Crafting.Add(ItemManager.CraftingTable.Forge, 4);
			item84.RequiredItems.Add("ElderBark", 40);
			item84.RequiredItems.Add("Silver", 30);
			item84.RequiredItems.Add("Crystal", 10);
			item84.RequiredUpgradeItems.Add("ElderBark", 5);
			item84.RequiredUpgradeItems.Add("Silver", 15);
			item84.RequiredUpgradeItems.Add("Crystal", 3);
			item84.RequiredUpgradeItems.Add("Upgrader3Weapon", 1, 0, upgraderResource: true);
			item84.CraftAmount = 1;
			item84.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item84.Prefab, 1.4f);
			Item item85 = new Item("warfare", "BattleaxeCrystalEmerald_TW");
			item85.Configurable = Configurability.Recipe;
			item85.Crafting.Add(ItemManager.CraftingTable.Forge, 4);
			item85.RequiredItems.Add("FineWood", 30);
			item85.RequiredItems.Add("BlackMetal", 30);
			item85.RequiredItems.Add("LoxBone_TW", 8);
			item85.RequiredItems.Add("Emerald_TW", 3);
			item85.RequiredUpgradeItems.Add("FineWood", 15);
			item85.RequiredUpgradeItems.Add("BlackMetal", 15);
			item85.RequiredUpgradeItems.Add("LoxBone_TW", 4);
			item85.RequiredUpgradeItems.Add("Upgrader4Weapon", 1, 0, upgraderResource: true);
			item85.CraftAmount = 1;
			item85.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item85.Prefab, 1.4f);
			Item item86 = new Item("warfare", "BattleaxeCrystalAmethyst_TW");
			item86.Configurable = Configurability.Recipe;
			item86.Crafting.Add(ItemManager.CraftingTable.Forge, 4);
			item86.RequiredItems.Add("YggdrasilWood", 25);
			item86.RequiredItems.Add("Eitr", 15);
			item86.RequiredItems.Add("DarkCrystal_TW", 8);
			item86.RequiredItems.Add("Amethyst_TW", 3);
			item86.RequiredUpgradeItems.Add("YggdrasilWood", 12);
			item86.RequiredUpgradeItems.Add("Eitr", 5);
			item86.RequiredUpgradeItems.Add("DarkCrystal_TW", 4);
			item86.RequiredUpgradeItems.Add("Upgrader5Weapon", 1, 0, upgraderResource: true);
			item86.CraftAmount = 1;
			item86.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item86.Prefab, 1.4f);
			Item item87 = new Item("warfare", "BattlehammerTrollbone_TW");
			item87.Configurable = Configurability.Recipe;
			item87.Crafting.Add(ItemManager.CraftingTable.Forge, 1);
			item87.RequiredItems.Add("TrollBone_TW", 6);
			item87.RequiredItems.Add("Bronze", 10);
			item87.RequiredItems.Add("TrophyFrostTroll", 1);
			item87.RequiredUpgradeItems.Add("TrollBone_TW", 3);
			item87.RequiredUpgradeItems.Add("Bronze", 5);
			item87.RequiredUpgradeItems.Add("Upgrader1Weapon", 1, 0, upgraderResource: true);
			item87.CraftAmount = 1;
			item87.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item87.Prefab, 1.4f);
			Item item88 = new Item("warfare", "BattlehammerElder_TW");
			item88.Configurable = Configurability.Recipe;
			item88.DropsFrom.Add("gd_king", 0.04f, 1, 1);
			item88.Crafting.Add(ItemManager.CraftingTable.Forge, 2);
			item88.RequiredItems.Add("ElderBark", 30);
			item88.RequiredItems.Add("Stone", 40);
			item88.RequiredItems.Add("GreydwarfEye", 20);
			item88.RequiredItems.Add("TrophyTheElder", 1);
			item88.RequiredUpgradeItems.Add("ElderBark", 15);
			item88.RequiredUpgradeItems.Add("Stone", 20);
			item88.RequiredUpgradeItems.Add("GreydwarfEye", 10);
			item88.RequiredUpgradeItems.Add("TrophyTheElder", 1);
			item88.RequiredUpgradeItems.Add("Upgrader2Weapon", 1, 0, upgraderResource: true);
			item88.CraftAmount = 1;
			item88.QualityResultAmountMultiplier = 0f;
			Item item89 = new Item("warfare", "BattlehammerIron_TW");
			item89.Configurable = Configurability.Recipe;
			item89.Crafting.Add(ItemManager.CraftingTable.Forge, 2);
			item89.RequiredItems.Add("ElderBark", 15);
			item89.RequiredItems.Add("Iron", 30);
			item89.RequiredItems.Add("TrophyDraugrElite", 1);
			item89.RequiredUpgradeItems.Add("ElderBark", 8);
			item89.RequiredUpgradeItems.Add("Iron", 15);
			item89.RequiredUpgradeItems.Add("Upgrader2Weapon", 1, 0, upgraderResource: true);
			item89.CraftAmount = 1;
			item89.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item89.Prefab, 1.1f);
			Item item90 = new Item("warfare", "BattlehammerSilver_TW");
			item90.Configurable = Configurability.Recipe;
			item90.Crafting.Add(ItemManager.CraftingTable.Forge, 3);
			item90.RequiredItems.Add("ElderBark", 25);
			item90.RequiredItems.Add("Silver", 30);
			item90.RequiredItems.Add("Crystal", 10);
			item90.RequiredItems.Add("TrophySGolem", 1);
			item90.RequiredUpgradeItems.Add("ElderBark", 12);
			item90.RequiredUpgradeItems.Add("Silver", 15);
			item90.RequiredUpgradeItems.Add("Crystal", 5);
			item90.RequiredUpgradeItems.Add("Upgrader3Weapon", 1, 0, upgraderResource: true);
			item90.CraftAmount = 1;
			item90.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item90.Prefab, 1.1f);
			Item item91 = new Item("warfare", "BattlehammerBlackmetal_TW");
			MaterialReplacer.RegisterGameObjectForShaderSwap(item91.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			item91.Configurable = Configurability.Recipe;
			item91.Crafting.Add(ItemManager.CraftingTable.Forge, 4);
			item91.RequiredItems.Add("FineWood", 20);
			item91.RequiredItems.Add("BlackMetal", 30);
			item91.RequiredItems.Add("LoxBone_TW", 8);
			item91.RequiredItems.Add("TrophyGoblinBrute", 1);
			item91.RequiredUpgradeItems.Add("FineWood", 10);
			item91.RequiredUpgradeItems.Add("BlackMetal", 15);
			item91.RequiredUpgradeItems.Add("LoxBone_TW", 4);
			item91.RequiredUpgradeItems.Add("Upgrader4Weapon", 1, 0, upgraderResource: true);
			item91.CraftAmount = 1;
			item91.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item91.Prefab, 1.1f);
			Item item92 = new Item("warfare", "BattlehammerDvergr_TW");
			item92.Configurable = Configurability.Recipe;
			item92.Crafting.Add(ItemManager.CraftingTable.BlackForge, 1);
			item92.RequiredItems.Add("Carapace", 25);
			item92.RequiredItems.Add("Eitr", 15);
			item92.RequiredItems.Add("DarkCrystal_TW", 8);
			item92.RequiredItems.Add("TrophySeekerBrute", 1);
			item92.RequiredUpgradeItems.Add("Carapace", 12);
			item92.RequiredUpgradeItems.Add("Eitr", 5);
			item92.RequiredUpgradeItems.Add("DarkCrystal_TW", 4);
			item92.RequiredUpgradeItems.Add("Upgrader5Weapon", 1, 0, upgraderResource: true);
			item92.CraftAmount = 1;
			item92.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item92.Prefab, 1.05f);
			Item item93 = new Item("warfare", "BowTrollBone_TW");
			item93.Configurable = Configurability.Recipe;
			item93.Crafting.Add("FletcherTable_TW", 1);
			item93.RequiredItems.Add("TrollBone_TW", 5);
			item93.RequiredItems.Add("BoneFragments", 6);
			item93.RequiredItems.Add("Bronze", 6);
			item93.RequiredUpgradeItems.Add("TrollBone_TW", 2);
			item93.RequiredUpgradeItems.Add("BoneFragments", 3);
			item93.RequiredUpgradeItems.Add("Upgrader1Weapon", 1, 0, upgraderResource: true);
			item93.CraftAmount = 1;
			item93.QualityResultAmountMultiplier = 0f;
			Item item94 = new Item("warfare", "BowBlackmetal_TW");
			MaterialReplacer.RegisterGameObjectForShaderSwap(item94.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			item94.Configurable = Configurability.Recipe;
			item94.Crafting.Add("FletcherTable_TW", 1);
			item94.RequiredItems.Add("FineWood", 30);
			item94.RequiredItems.Add("BlackMetal", 25);
			item94.RequiredItems.Add("Needle", 20);
			item94.RequiredItems.Add("TrophyDeathsquito", 1);
			item94.RequiredUpgradeItems.Add("FineWood", 15);
			item94.RequiredUpgradeItems.Add("BlackMetal", 12);
			item94.RequiredUpgradeItems.Add("Needle", 10);
			item94.RequiredUpgradeItems.Add("Upgrader4Weapon", 1, 0, upgraderResource: true);
			item94.CraftAmount = 1;
			item94.QualityResultAmountMultiplier = 0f;
			Item item95 = new Item("warfare", "GreatbowModer_TW");
			item95.Configurable = Configurability.Recipe;
			item95.DropsFrom.Add("Dragon", 0.06f, 1, 1);
			item95.Crafting.Add("FletcherTable_TW", 1);
			item95.RequiredItems.Add("Silver", 50);
			item95.RequiredItems.Add("Crystal", 30);
			item95.RequiredItems.Add("FreezeGland", 20);
			item95.RequiredItems.Add("TrophyDragonQueen", 1);
			item95.RequiredUpgradeItems.Add("Silver", 25);
			item95.RequiredUpgradeItems.Add("Crystal", 15);
			item95.RequiredUpgradeItems.Add("FreezeGland", 10);
			item95.RequiredUpgradeItems.Add("TrophyDragonQueen", 1);
			item95.RequiredUpgradeItems.Add("Upgrader3Weapon", 1, 0, upgraderResource: true);
			item95.CraftAmount = 1;
			item95.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item95.Prefab, 2.2f);
			Item item96 = new Item("warfare", "GreatbowBlackmetal_TW");
			MaterialReplacer.RegisterGameObjectForShaderSwap(item96.Prefab, MaterialReplacer.ShaderType.CustomCreature);
			item96.Configurable = Configurability.Recipe;
			item96.Crafting.Add("FletcherTable_TW", 1);
			item96.RequiredItems.Add("FineWood", 40);
			item96.RequiredItems.Add("BlackMetal", 30);
			item96.RequiredItems.Add("LoxBone_TW", 10);
			item96.RequiredItems.Add("TrophyGoblinBrute", 1);
			item96.RequiredUpgradeItems.Add("FineWood", 20);
			item96.RequiredUpgradeItems.Add("BlackMetal", 15);
			item96.RequiredUpgradeItems.Add("LoxBone_TW", 5);
			item96.RequiredUpgradeItems.Add("Upgrader4Weapon", 1, 0, upgraderResource: true);
			item96.CraftAmount = 1;
			item96.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item96.Prefab, 2.2f);
			Item item97 = new Item("warfare", "GreatbowDvergr_TW");
			item97.Configurable = Configurability.Recipe;
			item97.Crafting.Add(ItemManager.CraftingTable.BlackForge, 1);
			item97.RequiredItems.Add("YggdrasilWood", 40);
			item97.RequiredItems.Add("Eitr", 15);
			item97.RequiredItems.Add("VenomousFang_TW", 10);
			item97.RequiredItems.Add("TrophyGjall", 1);
			item97.RequiredUpgradeItems.Add("YggdrasilWood", 20);
			item97.RequiredUpgradeItems.Add("Eitr", 5);
			item97.RequiredUpgradeItems.Add("VenomousFang_TW", 5);
			item97.RequiredUpgradeItems.Add("Upgrader5Weapon", 1, 0, upgraderResource: true);
			item97.CraftAmount = 1;
			item97.QualityResultAmountMultiplier = 0f;
			AttackSpeedSystem.RegisterMainAttacks(item97.Prefab, 2.2f);
			Item item98 = new Item("warfare", "CrossbowWood_TW");
			item98.Configurable = Configurability.Recipe;
			item98.Crafting.Add(ItemManager.CraftingTable.Workbench, 1);
			item98.RequiredItems.Add("Wood", 12);
			item98.RequiredItems.Add("DeerHide", 6);
			item98.RequiredUpgradeItems.Add("Wood", 6);
			item98.RequiredUpgradeItems.Add("DeerHide", 3);
			item98.RequiredUpgradeItems.Add("LeatherScraps", 2);
			item98.RequiredUpgradeItems.Add("Upgrader0Weapon", 1, 0, upgraderResource: true);
			item98.CraftAmount = 1;
			item98.QualityResultAmountMultiplier = 0f;
			Item item99 = new Item("warfare", "CrossbowEikthyr_TW");
			LightningBurstStacking.UseVFX(vfx2);
			LightningBurstStacking.UseIcon(icon3);
			LightningBurstStacking.AddToWeapon(item99.Prefab);
			item99.Configurable = Configurability.Recipe;
			item99.DropsFrom.Add("Eikthyr", 0.04f, 1, 1);
			item99.Crafting.Add("FletcherTable_TW", 1);
			item99.RequiredItems.Add("RoundLog", 30);
			item99.RequiredItems.Add("HardAntler", 16);
			item99.RequiredItems.Add("DeerHide", 16);
			item99.RequiredItems.Add("TrophyEikthyr", 1);
			item99.RequiredUpgradeItems.Add("RoundLog", 15);
			item99.RequiredUpgradeItems.Add("HardAntler", 8);
			item99.RequiredUpgradeItems.Add("DeerHide", 8);
			item99.RequiredUpgradeItems.Add("TrophyEikthyr", 1);
			item99.RequiredUpgradeItems.Add("Upgrader1Weapon", 1, 0, upgraderResource: true);
			item99.CraftAmount = 1;
			item99.QualityResultAmountMultiplier = 0f;
			Item item100 = new Item("warfare", "CrossbowBronze_TW");
			item100.Configurable = Configurability.Recipe;
			item100.Crafting.Add("FletcherTable_TW", 1);
			item100.RequiredItems.Add("RoundLog", 12);
			item100.RequiredItems.Add("Bronze", 12);
			item100.RequiredItems.Add("TrophyGreydwarfShaman", 1);
			item100.RequiredUpgradeItems.Add("RoundLog", 6);
			item100.RequiredUpgradeItems.Add("Bronze", 6);
			item100.RequiredUpgradeItems.Add("Upgrader1