Decompiled source of balrond arsenal reborn v0.1.0

plugins/BalrondArsenalReborn.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using HarmonyLib;
using LitJson;
using UnityEngine;

[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: Guid("f405ea1c-ac25-47a3-9aa2-a8f56c14bfd6")]
[assembly: ComVisible(false)]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCopyright("Copyright ©  2023")]
[assembly: AssemblyProduct("ProjectAshlands")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("ProjectAshlands")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace BalrondArsenalReborn
{
	public class ArmorTierMapper
	{
		public static Dictionary<string, int> armorTierValue = new Dictionary<string, int>();

		public static string defaultItemTier = "BalrondDefaultItemTier";

		public static string curentItemTier = "BalrondCurrentItemTier";

		public static string itemRuneQuality = "BalrondRuneQuality";

		public static string setBonusRune = "BalrondEnchantSet";

		public static string toolTipPrefix = "<color=orange>";

		public static string toolTipSufix = "</color>";

		public static string tierNotFound = "tier not found for: ";

		public static string cantUpgradeItem = "Cant Upgrade item: ";

		public static string wrongItemType = "Wrong Item Type: ";

		public static string useLesserTierRune = "Use lesser tier rune first: ";

		public static string useStrongerTierRune = "Use stronger tier rune first: ";

		public static string useStrongerRune = "Use stronger rune first: ";

		public static string useLesserRune = "Use lesser rune first: ";

		public static void setup()
		{
			armorTierValue.Clear();
			armorTierValue.Add("SwordBronze", 2);
			armorTierValue.Add("SwordIron", 3);
			armorTierValue.Add("SwordSilver", 4);
			armorTierValue.Add("SwordBlackmetal", 5);
			armorTierValue.Add("SwordMistwalker", 6);
			armorTierValue.Add("SwordNiedhogg", 7);
			armorTierValue.Add("SwordNiedhoggBlood", 7);
			armorTierValue.Add("SwordNiedhoggLightning", 7);
			armorTierValue.Add("SwordNiedhoggNature", 7);
			armorTierValue.Add("SwordDyrnwyn", 7);
			armorTierValue.Add("THSwordSlayer", 7);
			armorTierValue.Add("THSwordSlayerBlood", 7);
			armorTierValue.Add("THSwordSlayerLightning", 7);
			armorTierValue.Add("THSwordSlayerNature", 7);
			armorTierValue.Add("AxeBerzerkr", 7);
			armorTierValue.Add("AxeBerzerkrBlood", 7);
			armorTierValue.Add("AxeBerzerkrLightning", 7);
			armorTierValue.Add("AxeBerzerkrNature", 7);
			armorTierValue.Add("MaceEldner", 7);
			armorTierValue.Add("MaceEldnerBlood", 7);
			armorTierValue.Add("MaceEldnerLightning", 7);
			armorTierValue.Add("MaceEldnerNature", 7);
			armorTierValue.Add("CrossbowRipper", 7);
			armorTierValue.Add("CrossbowRipperBlood", 7);
			armorTierValue.Add("CrossbowRipperLightning", 7);
			armorTierValue.Add("CrossbowRipperNature", 7);
			armorTierValue.Add("BowAshlands", 7);
			armorTierValue.Add("BowAshlandsBlood", 7);
			armorTierValue.Add("BowAshlandsRoot", 7);
			armorTierValue.Add("BowAshlandsStorm", 7);
			armorTierValue.Add("ShieldFlametal", 7);
			armorTierValue.Add("ShieldFlametalTower", 7);
			armorTierValue.Add("Club", 1);
			armorTierValue.Add("MaceBronze", 2);
			armorTierValue.Add("MaceIron", 3);
			armorTierValue.Add("MaceSilver", 4);
			armorTierValue.Add("MaceNeedle", 5);
			armorTierValue.Add("AxeStone", 1);
			armorTierValue.Add("AxeFlint", 1);
			armorTierValue.Add("AxeBronze", 2);
			armorTierValue.Add("AxeIron", 3);
			armorTierValue.Add("AxeBlackmetal", 5);
			armorTierValue.Add("AxeJotunBane", 6);
			armorTierValue.Add("SpearFlint", 1);
			armorTierValue.Add("SpearBronze", 2);
			armorTierValue.Add("SpearElderbark", 3);
			armorTierValue.Add("SpearCarapace", 6);
			armorTierValue.Add("AtgeirBronze", 2);
			armorTierValue.Add("AtgeirIron", 3);
			armorTierValue.Add("AtgeirBlackmetal", 5);
			armorTierValue.Add("AtgeirHimminAfl", 6);
			armorTierValue.Add("KnifeFlint", 1);
			armorTierValue.Add("KnifeCopper", 2);
			armorTierValue.Add("KnifeChitin", 3);
			armorTierValue.Add("KnifeButcher", 3);
			armorTierValue.Add("KnifeSilver", 4);
			armorTierValue.Add("KnifeBlackMetal", 5);
			armorTierValue.Add("KnifeSkollAndHati", 6);
			armorTierValue.Add("Bow", 1);
			armorTierValue.Add("BowFineWood", 2);
			armorTierValue.Add("BowHuntsman", 3);
			armorTierValue.Add("BowDraugrFang", 4);
			armorTierValue.Add("BowSpineSnap", 6);
			armorTierValue.Add("CrossbowArbalest", 5);
			armorTierValue.Add("ShieldWood", 1);
			armorTierValue.Add("ShieldWoodTower", 1);
			armorTierValue.Add("ShieldBronzeBuckler", 2);
			armorTierValue.Add("ShieldBoneTower", 2);
			armorTierValue.Add("ShieldIronBuckler", 3);
			armorTierValue.Add("ShieldBanded", 3);
			armorTierValue.Add("ShieldIronSquare", 3);
			armorTierValue.Add("ShieldIronTower", 3);
			armorTierValue.Add("ShieldSerpentscale", 4);
			armorTierValue.Add("ShieldSilver", 4);
			armorTierValue.Add("ShieldBlackmetal", 5);
			armorTierValue.Add("ShieldBlackmetalTower", 5);
			armorTierValue.Add("ShieldCarapaceBuckler", 6);
			armorTierValue.Add("ShieldCarapace", 6);
			armorTierValue.Add("Battleaxe", 3);
			armorTierValue.Add("BattleaxeCrystal", 4);
			armorTierValue.Add("SledgeStagbreaker", 1);
			armorTierValue.Add("SledgeIron", 3);
			armorTierValue.Add("SledgeDemolisher", 6);
			armorTierValue.Add("THSwordKrom", 5);
			armorTierValue.Add("ArmorRagsChest", 1);
			armorTierValue.Add("ArmorRagsLegs", 1);
			armorTierValue.Add("ArmorLeatherLegs", 1);
			armorTierValue.Add("ArmorLeatherChest", 1);
			armorTierValue.Add("ArmorTrollLeatherLegs", 2);
			armorTierValue.Add("ArmorTrollLeatherChest", 2);
			armorTierValue.Add("ArmorBronzeLegs", 2);
			armorTierValue.Add("ArmorBronzeChest", 2);
			armorTierValue.Add("ArmorRootLegs", 3);
			armorTierValue.Add("ArmorRootChest", 3);
			armorTierValue.Add("ArmorIronLegs", 3);
			armorTierValue.Add("ArmorIronChest", 3);
			armorTierValue.Add("ArmorWolfLegs", 4);
			armorTierValue.Add("ArmorWolfChest", 4);
			armorTierValue.Add("ArmorFenringChest", 4);
			armorTierValue.Add("ArmorFenringLegs", 4);
			armorTierValue.Add("ArmorPaddedGreaves", 5);
			armorTierValue.Add("ArmorPaddedCuirass", 5);
			armorTierValue.Add("ArmorMageLegs", 6);
			armorTierValue.Add("ArmorMageChest", 6);
			armorTierValue.Add("ArmorCarapaceChest", 6);
			armorTierValue.Add("ArmorCarapaceLegs", 6);
			armorTierValue.Add("ArmorMageChest_Ashlands", 7);
			armorTierValue.Add("ArmorMageLegs_Ashlands", 7);
			armorTierValue.Add("HelmetMage_Ashlands", 7);
			armorTierValue.Add("CapeDeerHide", 1);
			armorTierValue.Add("CapeTrollHide", 2);
			armorTierValue.Add("CapeWolf", 4);
			armorTierValue.Add("CapeLox", 5);
			armorTierValue.Add("CapeLinen", 5);
			armorTierValue.Add("CapeFeather", 6);
			armorTierValue.Add("HelmetLeather", 1);
			armorTierValue.Add("HelmetTrollLeather", 2);
			armorTierValue.Add("HelmetBronze", 2);
			armorTierValue.Add("HelmetRoot", 3);
			armorTierValue.Add("HelmetIron", 3);
			armorTierValue.Add("HelmetDrake", 4);
			armorTierValue.Add("HelmetPadded", 5);
			armorTierValue.Add("HelmetMage", 6);
			armorTierValue.Add("HelmetCarapace", 6);
			armorTierValue.Add("KnifeFader_bal", 7);
			armorTierValue.Add("ArmorAncientChest_bal", 6);
			armorTierValue.Add("ArmorAncientLegs_bal", 6);
			armorTierValue.Add("ArmorBearChest_bal", 1);
			armorTierValue.Add("ArmorBearLegs_bal", 1);
			armorTierValue.Add("ArmorBellmetalChest_bal", 2);
			armorTierValue.Add("ArmorBellmetalLegs_bal", 2);
			armorTierValue.Add("ArmorChitinChest_bal", 3);
			armorTierValue.Add("ArmorChitinLegs_bal", 3);
			armorTierValue.Add("ArmorDruidChest_bal", 3);
			armorTierValue.Add("ArmorDruidLegs_bal", 3);
			armorTierValue.Add("ArmorEminenceChest_bal", 7);
			armorTierValue.Add("ArmorEminenceLegs_bal", 7);
			armorTierValue.Add("ArmorFrosteelChest_bal", 8);
			armorTierValue.Add("ArmorFrosteelLegs_bal", 8);
			armorTierValue.Add("ArmorHeavyTrollChest_bal", 2);
			armorTierValue.Add("ArmorHeavyTrollLegs_bal", 2);
			armorTierValue.Add("ArmorLoxChest_bal", 5);
			armorTierValue.Add("ArmorLoxLegs_bal", 5);
			armorTierValue.Add("ArmorMercChest_bal", 3);
			armorTierValue.Add("ArmorMercLegs_bal", 3);
			armorTierValue.Add("ArmorShamanChest_bal", 5);
			armorTierValue.Add("ArmorShamanLegs_bal", 5);
			armorTierValue.Add("ArmorSkaldChest_bal", 8);
			armorTierValue.Add("ArmorSkaldLegs_bal", 8);
			armorTierValue.Add("AtgeirBone_bal", 1);
			armorTierValue.Add("AtgeirChitin_bal", 3);
			armorTierValue.Add("AtgeirFlametal_bal", 7);
			armorTierValue.Add("AtgeirFrosteel_bal", 8);
			armorTierValue.Add("AtgeirGilotine_bal", 3);
			armorTierValue.Add("AtgeirSilver_bal", 4);
			armorTierValue.Add("AtgeirWood_bal", 1);
			armorTierValue.Add("AxeAnguish_bal", 3);
			armorTierValue.Add("AxeChitin_bal", 3);
			armorTierValue.Add("AxeDarkSteel_bal", 3);
			armorTierValue.Add("AxeFlametal_bal", 7);
			armorTierValue.Add("AxeFrosteel_bal", 8);
			armorTierValue.Add("AxeSilver_bal", 4);
			armorTierValue.Add("THSwordBlackmetal_bal", 5);
			armorTierValue.Add("THSwordFrosteel_bal", 8);
			armorTierValue.Add("THSwordMagmite_bal", 7);
			armorTierValue.Add("THSwordSilver_bal", 4);
			armorTierValue.Add("BattleaxeBellmetal_bal", 2);
			armorTierValue.Add("BattleaxeBlackmetal_bal", 5);
			armorTierValue.Add("BattleaxeButcher_bal", 3);
			armorTierValue.Add("BattleaxeDarkSteel_bal", 3);
			armorTierValue.Add("BattleaxeElder_bal", 2);
			armorTierValue.Add("BattleaxeFlametal_bal", 7);
			armorTierValue.Add("BattleaxeFrosteel_bal", 8);
			armorTierValue.Add("BattleaxeHeavyDvergr_bal", 6);
			armorTierValue.Add("BattleaxeQeen_bal", 6);
			armorTierValue.Add("BattleaxeTytaen_bal", 6);
			armorTierValue.Add("BoneClub_bal", 1);
			armorTierValue.Add("CapeAshtyrant_bal", 7);
			armorTierValue.Add("CapeBear_bal", 1);
			armorTierValue.Add("CapeBloody_bal", 3);
			armorTierValue.Add("CapeChain_bal", 4);
			armorTierValue.Add("CapeClaws_bal", 5);
			armorTierValue.Add("CapeFox_bal", 2);
			armorTierValue.Add("CapeNorth_bal", 8);
			armorTierValue.Add("CapeRags_bal", 1);
			armorTierValue.Add("CapeSwamp_bal", 3);
			armorTierValue.Add("Crossbone_bal", 3);
			armorTierValue.Add("EternalTorch_bal", 6);
			armorTierValue.Add("FireLance_bal", 7);
			armorTierValue.Add("BowBlackmetal_bal", 5);
			armorTierValue.Add("BowFerroboron_bal", 6);
			armorTierValue.Add("BowFrosteel_bal", 8);
			armorTierValue.Add("BowModer_bal", 4);
			armorTierValue.Add("HelmetAncient_bal", 6);
			armorTierValue.Add("HelmetBear_bal", 1);
			armorTierValue.Add("HelmetBellMetal_bal", 2);
			armorTierValue.Add("HelmetChitin_bal", 3);
			armorTierValue.Add("HelmetCrown_bal", 3);
			armorTierValue.Add("HelmetDruid_bal", 3);
			armorTierValue.Add("HelmetEminence_bal", 7);
			armorTierValue.Add("HelmetFrosteel_bal", 8);
			armorTierValue.Add("HelmetGoblinSlayer_bal", 5);
			armorTierValue.Add("HelmetHeavyTroll_bal", 2);
			armorTierValue.Add("HelmetIronNew_bal", 3);
			armorTierValue.Add("HelmetLeatherNew_bal", 1);
			armorTierValue.Add("HelmetLox_bal", 5);
			armorTierValue.Add("HelmetMerc_bal", 3);
			armorTierValue.Add("HelmetNorthern_bal", 8);
			armorTierValue.Add("HelmetRags_bal", 1);
			armorTierValue.Add("HelmetShaman_bal", 5);
			armorTierValue.Add("HelmetSilverNew_bal", 4);
			armorTierValue.Add("HelmetSkald_bal", 8);
			armorTierValue.Add("KingMug_bal", 3);
			armorTierValue.Add("KnifeBone_bal", 1);
			armorTierValue.Add("KnifeDarkSteel_bal", 3);
			armorTierValue.Add("KnifeFlametal_bal", 7);
			armorTierValue.Add("KnifeFrosteel_bal", 8);
			armorTierValue.Add("MaceBonemass_bal", 3);
			armorTierValue.Add("MaceDarkSteel_bal", 3);
			armorTierValue.Add("MaceFrosteel_bal", 8);
			armorTierValue.Add("MaceHardWood_bal", 1);
			armorTierValue.Add("MaceHeavyDverger_bal", 6);
			armorTierValue.Add("MaceSkullface_bal", 3);
			armorTierValue.Add("ScepterDragon_bal", 4);
			armorTierValue.Add("BattleaxeJinx_bal", 8);
			armorTierValue.Add("ShieldBellmetalTower_bal", 2);
			armorTierValue.Add("ShieldBlackmetalBuckler_bal", 5);
			armorTierValue.Add("ShieldChitin_bal", 3);
			armorTierValue.Add("ShieldDarkSteelTower_bal", 3);
			armorTierValue.Add("ShieldDarkSteel_bal", 3);
			armorTierValue.Add("ShieldDragonTower_bal", 7);
			armorTierValue.Add("ShieldDvergerTower_bal", 6);
			armorTierValue.Add("ShieldFlametalBuckler_bal", 7);
			armorTierValue.Add("ShieldFrosteelTower_bal", 8);
			armorTierValue.Add("ShieldFrosteel_bal", 8);
			armorTierValue.Add("ShieldSilverTower_bal", 4);
			armorTierValue.Add("SledgeBlackmetal_bal", 5);
			armorTierValue.Add("SledgeDarksteel_bal", 3);
			armorTierValue.Add("SledgeFlametal_bal", 7);
			armorTierValue.Add("SledgeFrosteel_bal", 8);
			armorTierValue.Add("SledgeSilver_bal", 4);
			armorTierValue.Add("SledgeStagbreakerNEW_bal", 1);
			armorTierValue.Add("SledgeStone_bal", 1);
			armorTierValue.Add("SpearFrosteel_bal", 8);
			armorTierValue.Add("SpearSilver_bal", 4);
			armorTierValue.Add("StaffDruid_bal", 3);
			armorTierValue.Add("SwordBetrayer_bal", 3);
			armorTierValue.Add("SwordBonemaw_bal", 7);
			armorTierValue.Add("SwordBone_bal", 1);
			armorTierValue.Add("SwordCarapace_bal", 6);
			armorTierValue.Add("SwordChitin_bal", 3);
			armorTierValue.Add("SwordCrystal_bal", 8);
			armorTierValue.Add("SwordDarkSteel_bal", 3);
			armorTierValue.Add("SwordFader_bal", 7);
			armorTierValue.Add("SwordFrosteel_bal", 8);
			armorTierValue.Add("SwordHeavyDvergr_bal", 6);
			armorTierValue.Add("THSwordBronze_bal", 2);
			armorTierValue.Add("THSwordGoblinKing_bal", 5);
			armorTierValue.Add("THSwordHeavyDverger_bal", 6);
			armorTierValue.Add("THSwordNorger_bal", 6);
			armorTierValue.Add("HelmetWizardHat_bal", 6);
			armorTierValue.Add("KnifeMandible_bal", 6);
		}

		public static int getTierValueForArmor(string name)
		{
			armorTierValue.TryGetValue(name, out var value);
			if (value > 0)
			{
				return value;
			}
			Debug.LogWarning((object)(tierNotFound + name));
			return 0;
		}

		public static void setDefaultTier(ItemData itemData)
		{
			itemData.m_customData.Remove(defaultItemTier);
			int tierValueForArmor = getTierValueForArmor(((Object)itemData.m_dropPrefab).name);
			itemData.m_customData.Add(defaultItemTier, tierValueForArmor.ToString());
		}

		public static void setRuneQuality(ItemData itemData, int quality = 0)
		{
			itemData.m_customData.Remove(itemRuneQuality);
			itemData.m_customData.Add(itemRuneQuality, quality.ToString());
		}

		public static int getRuneQuality(ItemData itemData)
		{
			itemData.m_customData.TryGetValue(itemRuneQuality, out var value);
			return int.Parse(value);
		}

		public static void upgradeItem(ItemData itemData)
		{
			int currentItemTierValue = getCurrentItemTierValue(itemData);
			if (currentItemTierValue == 0)
			{
				Debug.LogWarning((object)(cantUpgradeItem + ((Object)itemData.m_dropPrefab).name));
				return;
			}
			int runeQuality = getRuneQuality(itemData);
			setRuneQuality(itemData, runeQuality + 1);
			Debug.Log((object)("Item: " + ((Object)itemData.m_dropPrefab).name + " upgrade to rune quality: " + runeQuality + 1));
			if (runeQuality == 4)
			{
				setCurrentTier(itemData, currentItemTierValue + 1);
				setRuneQuality(itemData, 1);
				Debug.Log((object)("Item: " + ((Object)itemData.m_dropPrefab).name + " upgrade to tier: " + currentItemTierValue + 1));
			}
			setItemQuality(itemData);
		}

		public static bool canUpgradeItem(ItemData itemData, int runeTier, int runeQuality)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			if (!allowedType(itemData.m_shared.m_itemType))
			{
				Debug.Log((object)(wrongItemType + ((Object)itemData.m_dropPrefab).name));
				return false;
			}
			int currentItemTierValue = getCurrentItemTierValue(itemData);
			int runeQuality2 = getRuneQuality(itemData);
			if (runeTier > currentItemTierValue)
			{
				Debug.Log((object)(useLesserTierRune + ((Object)itemData.m_dropPrefab).name));
				return false;
			}
			if (runeTier < currentItemTierValue)
			{
				Debug.Log((object)(useStrongerTierRune + ((Object)itemData.m_dropPrefab).name));
				return false;
			}
			if (runeQuality > runeQuality2 + 1)
			{
				Debug.Log((object)(useLesserRune + ((Object)itemData.m_dropPrefab).name));
				return false;
			}
			if (runeQuality < runeQuality2 + 1)
			{
				Debug.Log((object)(useStrongerRune + ((Object)itemData.m_dropPrefab).name));
				return false;
			}
			if (getItemQuality(itemData) < 4)
			{
				return false;
			}
			return true;
		}

		public static void addDescriptionExtension(ItemData itemData)
		{
			string description = itemData.m_shared.m_description;
			if (!description.Contains("Tier "))
			{
				SharedData shared = itemData.m_shared;
				shared.m_description += getTooltip(itemData);
			}
		}

		public static string getTooltip(ItemData itemData)
		{
			int tierValueForArmor = getTierValueForArmor(((Object)itemData.m_dropPrefab).name);
			return "\n" + toolTipPrefix + "Tier " + tierValueForArmor + toolTipSufix;
		}

		public static bool allowedType(ItemType itemType)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0003: Invalid comparison between Unknown and I4
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Invalid comparison between Unknown and I4
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Invalid comparison between Unknown and I4
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Invalid comparison between Unknown and I4
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Invalid comparison between Unknown and I4
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Invalid comparison between Unknown and I4
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Invalid comparison between Unknown and I4
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Invalid comparison between Unknown and I4
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Invalid comparison between Unknown and I4
			return (int)itemType == 6 || (int)itemType == 7 || (int)itemType == 11 || (int)itemType == 17 || (int)itemType == 3 || (int)itemType == 14 || (int)itemType == 4 || (int)itemType == 22 || (int)itemType == 5;
		}

		public static int getItemQuality(ItemData itemData)
		{
			return itemData.m_quality;
		}

		public static void setItemQuality(ItemData itemData)
		{
			int currentItemTierValue = getCurrentItemTierValue(itemData);
			int runeQuality = getRuneQuality(itemData);
			int quality = 4 + currentItemTierValue * runeQuality;
			itemData.m_quality = quality;
		}

		public static void setCurrentTier(ItemData itemData, int tier)
		{
			itemData.m_customData.Remove(curentItemTier);
			itemData.m_customData.Add(curentItemTier, tier.ToString());
		}

		public static int getCurrentItemTierValue(ItemData itemData)
		{
			itemData.m_customData.TryGetValue(curentItemTier, out var value);
			if (value == null && value == "")
			{
				itemData.m_customData.TryGetValue(defaultItemTier, out value);
			}
			if (value == null && value == "")
			{
				Debug.LogWarning((object)("tier not found for item: " + ((Object)itemData.m_dropPrefab).name));
				return 0;
			}
			return int.Parse(value);
		}

		public static void setStatusEffectRuneInfo(ItemData itemData, string runePrefabName)
		{
			itemData.m_customData.Remove(setBonusRune);
			itemData.m_customData.Add(setBonusRune, runePrefabName);
		}

		public static string getStatusEffectRuneInfo(ItemData itemData)
		{
			itemData.m_customData.TryGetValue(setBonusRune, out var value);
			return value;
		}

		public static GameObject getRuneByName(string name)
		{
			return ObjectDB.m_instance.m_items.Find((GameObject x) => ((Object)x).name == name);
		}

		public static void setStatusEffectValues(ItemData itemData, ItemData runeItemData)
		{
			itemData.m_shared.m_setName = runeItemData.m_shared.m_setName;
			itemData.m_shared.m_setSize = runeItemData.m_shared.m_setSize;
			itemData.m_shared.m_setStatusEffect = runeItemData.m_shared.m_setStatusEffect;
		}

		public static void addSetBonusEffect(ItemData itemData, ItemData runeItemData)
		{
			setStatusEffectRuneInfo(itemData, ((Object)runeItemData.m_dropPrefab).name);
			setStatusEffectValues(itemData, runeItemData);
		}

		public static void setupItemSet(ItemData itemData)
		{
			string statusEffectRuneInfo = getStatusEffectRuneInfo(itemData);
			if (statusEffectRuneInfo != null && statusEffectRuneInfo != "")
			{
				GameObject runeByName = getRuneByName(statusEffectRuneInfo);
				if ((Object)(object)runeByName != (Object)null)
				{
					addSetBonusEffect(itemData, runeByName.GetComponent<ItemDrop>().m_itemData);
				}
			}
		}
	}
	public class BalrondTranslator
	{
		public static Dictionary<string, Dictionary<string, string>> translations = new Dictionary<string, Dictionary<string, string>>();

		public static Dictionary<string, string> getLanguage(string language)
		{
			Dictionary<string, string> result = null;
			try
			{
				result = translations[language];
			}
			catch (Exception)
			{
			}
			return result;
		}
	}
	public class ConversionChanges
	{
		private enum ConversionType
		{
			smelter,
			fermenter,
			cooking,
			balrondConverter
		}

		private List<GameObject> buildPieces = new List<GameObject>();

		private List<GameObject> items = new List<GameObject>();

		private List<ItemConversion> smelterConversions = new List<ItemConversion>();

		private List<ItemConversion> furnaceConversions = new List<ItemConversion>();

		public void editBuidlPieces(List<GameObject> allprefabs)
		{
			buildPieces = allprefabs;
			items = allprefabs;
		}

		private GameObject FindBuildPiece(string name)
		{
			return buildPieces.Find((GameObject x) => ((Object)x).name == name);
		}

		private Requirement createReq(string name, int amount, int amountPerLevel)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			Requirement val = new Requirement();
			val.m_recover = true;
			ItemDrop component = FindItem(name).GetComponent<ItemDrop>();
			val.m_resItem = component;
			val.m_amount = amount;
			val.m_amountPerLevel = amountPerLevel;
			return val;
		}

		private GameObject FindItem(string name)
		{
			GameObject val = items.Find((GameObject x) => ((Object)x).name == name);
			if ((Object)(object)val == (Object)null)
			{
				return null;
			}
			return val;
		}

		private void editBoiler()
		{
			GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "piece_runeforge_ext3");
			Smelter component = val.GetComponent<Smelter>();
			component.m_maxFuel = 10;
			component.m_maxOre = 10;
			component.m_secPerProduct = 60f;
			component.m_fuelPerProduct = 2;
			component.m_fuelItem = ObjectDB.instance.m_items.Find((GameObject x) => ((Object)x).name == "Wood").GetComponent<ItemDrop>();
			component.m_conversion.Clear();
			addConversion(val, "Sulfur", "AcidVial", ConversionType.smelter);
		}

		public void editSmelter(Smelter smelter = null)
		{
			if (buildPieces != null && (Object)(object)smelter == (Object)null)
			{
				GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "smelter");
				smelter = val.GetComponent<Smelter>();
			}
			smelter.m_maxFuel = 45;
			smelter.m_maxOre = 15;
			smelter.m_secPerProduct = 40f;
			smelter.m_fuelPerProduct = 3;
			smelter.m_conversion.Clear();
			addConversion(((Component)smelter).gameObject, "CopperOre", "Copper", ConversionType.smelter);
			addConversion(((Component)smelter).gameObject, "TinOre", "Tin", ConversionType.smelter);
			addConversion(((Component)smelter).gameObject, "IronOre", "Iron", ConversionType.smelter);
			addConversion(((Component)smelter).gameObject, "SilverOre", "Silver", ConversionType.smelter);
			addConversion(((Component)smelter).gameObject, "GoldOre", "GoldBar", ConversionType.smelter);
			smelterConversions.AddRange(smelter.m_conversion);
		}

		public void editFurnace(Smelter furnace = null)
		{
			if (buildPieces != null && (Object)(object)furnace == (Object)null)
			{
				GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "blastfurnace");
				furnace = val.GetComponent<Smelter>();
			}
			furnace.m_maxFuel = 60;
			furnace.m_maxOre = 30;
			furnace.m_secPerProduct = 20f;
			furnace.m_fuelPerProduct = 2;
			furnace.m_conversion.Clear();
			addConversion(((Component)furnace).gameObject, "CopperOre", "Copper", ConversionType.smelter);
			addConversion(((Component)furnace).gameObject, "TinOre", "Tin", ConversionType.smelter);
			addConversion(((Component)furnace).gameObject, "IronOre", "Iron", ConversionType.smelter);
			addConversion(((Component)furnace).gameObject, "SilverOre", "Silver", ConversionType.smelter);
			addConversion(((Component)furnace).gameObject, "GoldOre", "GoldBar", ConversionType.smelter);
			addConversion(((Component)furnace).gameObject, "BlackMetalOre", "BlackMetal", ConversionType.smelter);
			addConversion(((Component)furnace).gameObject, "DarkIron", "DarkSteel", ConversionType.smelter);
			addConversion(((Component)furnace).gameObject, "CobaltOre", "Cobalt", ConversionType.smelter);
			addConversion(((Component)furnace).gameObject, "FlametalOre", "Flametal", ConversionType.smelter);
			addConversion(((Component)furnace).gameObject, "FlametalOreNew", "FlametalNew", ConversionType.smelter);
			furnaceConversions.AddRange(furnace.m_conversion);
		}

		public void editWHeel()
		{
			GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "piece_spinningwheel");
			Smelter component = val.GetComponent<Smelter>();
			component.m_maxOre = 80;
			component.m_secPerProduct = 25f;
			addConversion(val, "Straw", "StrawThread", ConversionType.smelter);
			addConversion(val, "RawSilk", "SilkReinforcedThread", ConversionType.smelter);
		}

		public void editRefinery(Smelter refinery = null)
		{
			if (buildPieces != null && (Object)(object)refinery == (Object)null)
			{
				GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "eitrrefinery");
				refinery = val.GetComponent<Smelter>();
			}
			refinery.m_maxOre = 60;
			refinery.m_maxFuel = 60;
			refinery.m_spawnStack = true;
			refinery.m_secPerProduct = 40f;
		}

		private void editSap()
		{
			GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "piece_sapcollector");
			SapCollector component = val.GetComponent<SapCollector>();
			component.m_secPerUnit = 45f;
			component.m_maxLevel = 30;
		}

		private void editWIndMIll()
		{
			GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "windmill");
			Smelter component = val.GetComponent<Smelter>();
			component.m_maxOre = 60;
			component.m_secPerProduct = 10f;
		}

		private void editKiln()
		{
			GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "charcoal_kiln");
			Smelter component = val.GetComponent<Smelter>();
			component.m_maxOre = 50;
			component.m_secPerProduct = 10f;
		}

		private void editBeehive()
		{
			GameObject val = buildPieces.Find((GameObject x) => ((Object)x).name == "piece_beehive");
			Beehive component = val.GetComponent<Beehive>();
			component.m_maxHoney = 40;
		}

		private void addConversion(GameObject source, string nameIn, string nameOut, ConversionType type, int time = 30, int amount = 5)
		{
			switch (type)
			{
			case ConversionType.smelter:
				SmelterConversion(source, nameIn, nameOut);
				break;
			case ConversionType.fermenter:
				FermenterConversion(source, nameIn, nameOut, amount);
				break;
			case ConversionType.cooking:
				CookingConversion(source, nameIn, nameOut, time);
				break;
			case ConversionType.balrondConverter:
				break;
			}
		}

		private void SmelterConversion(GameObject source, string nameIn, string nameOut)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			Smelter component = source.GetComponent<Smelter>();
			ItemConversion val = new ItemConversion();
			GameObject val2 = FindItem(nameIn);
			GameObject val3 = FindItem(nameOut);
			if (!((Object)(object)val3 == (Object)null) && !((Object)(object)val2 == (Object)null))
			{
				val.m_from = val2.GetComponent<ItemDrop>();
				val.m_to = val3.GetComponent<ItemDrop>();
				component.m_conversion.Add(val);
			}
		}

		private void FermenterConversion(GameObject source, string nameIn, string nameOut, int amount = 1)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			Fermenter component = source.GetComponent<Fermenter>();
			ItemConversion val = new ItemConversion();
			GameObject val2 = FindItem(nameIn);
			GameObject val3 = FindItem(nameOut);
			if (!((Object)(object)val3 == (Object)null) && !((Object)(object)val2 == (Object)null))
			{
				val.m_from = val2.GetComponent<ItemDrop>();
				val.m_to = val3.GetComponent<ItemDrop>();
				val.m_producedItems = amount;
				component.m_conversion.Add(val);
			}
		}

		private void CookingConversion(GameObject source, string nameIn, string nameOut, int time = 25)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			CookingStation component = source.GetComponent<CookingStation>();
			ItemConversion val = new ItemConversion();
			val.m_from = FindItem(nameIn).GetComponent<ItemDrop>();
			val.m_to = FindItem(nameOut).GetComponent<ItemDrop>();
			val.m_cookTime = time;
			component.m_conversion.Add(val);
		}
	}
	internal class ItemList
	{
		public static string[] items = new string[148]
		{
			"KnifeFader_bal", "HelmetCultist_bal", "ArmorCultistChest_bal", "ArmorCultistLegs_bal", "CapeCultist_bal", "CursedHand_bal", "ArmorAncientChest_bal", "ArmorAncientLegs_bal", "ArmorBearChest_bal", "ArmorBearLegs_bal",
			"ArmorBellmetalChest_bal", "ArmorBellmetalLegs_bal", "ArmorChitinChest_bal", "ArmorChitinLegs_bal", "ArmorDruidChest_bal", "ArmorDruidLegs_bal", "ArmorEminenceChest_bal", "ArmorEminenceLegs_bal", "ArmorFrosteelChest_bal", "ArmorFrosteelLegs_bal",
			"ArmorHeavyTrollChest_bal", "ArmorHeavyTrollLegs_bal", "ArmorLoxChest_bal", "ArmorLoxLegs_bal", "ArmorMercChest_bal", "ArmorMercLegs_bal", "ArmorShamanChest_bal", "ArmorShamanLegs_bal", "ArmorSkaldChest_bal", "ArmorSkaldLegs_bal",
			"AtgeirBone_bal", "AtgeirChitin_bal", "AtgeirFlametal_bal", "AtgeirFrosteel_bal", "AtgeirGilotine_bal", "AtgeirSilver_bal", "AtgeirWood_bal", "AxeAnguish_bal", "AxeChitin_bal", "AxeDarkSteel_bal",
			"AxeFlametal_bal", "AxeFrosteel_bal", "AxeSilver_bal", "THSwordBlackmetal_bal", "THSwordFrosteel_bal", "THSwordMagmite_bal", "THSwordSilver_bal", "BattleaxeBellmetal_bal", "BattleaxeBlackmetal_bal", "BattleaxeButcher_bal",
			"BattleaxeDarkSteel_bal", "BattleaxeElder_bal", "BattleaxeFlametal_bal", "BattleaxeFrosteel_bal", "BattleaxeHeavyDvergr_bal", "BattleaxeQeen_bal", "BattleaxeTytaen_bal", "BoneClub_bal", "CapeAshtyrant_bal", "CapeBear_bal",
			"CapeBloody_bal", "CapeChain_bal", "CapeClaws_bal", "CapeFox_bal", "CapeNorth_bal", "CapeRags_bal", "CapeSwamp_bal", "Crossbone_bal", "EternalTorch_bal", "BowBlackmetal_bal",
			"BowMoltenSteel_bal", "BowFerroboron_bal", "BowFrosteel_bal", "BowModer_bal", "HelmetAncient_bal", "HelmetBear_bal", "HelmetBellMetal_bal", "HelmetChitin_bal", "HelmetDruid_bal", "HelmetEminence_bal",
			"HelmetFrosteel_bal", "HelmetGoblinSlayer_bal", "HelmetHeavyTroll_bal", "HelmetIronNew_bal", "HelmetLeatherNew_bal", "HelmetLox_bal", "HelmetMerc_bal", "HelmetNorthern_bal", "HelmetRags_bal", "HelmetShaman_bal",
			"HelmetSilverNew_bal", "HelmetSkald_bal", "KnifeBone_bal", "KnifeDarkSteel_bal", "KnifeFlametal_bal", "KnifeFrosteel_bal", "MaceBonemass_bal", "MaceDarkSteel_bal", "MaceFrosteel_bal", "MaceHardWood_bal",
			"MaceHeavyDverger_bal", "MaceSkullface_bal", "ScepterDragon_bal", "BattleaxeJinx_bal", "ShieldBellmetalTower_bal", "ShieldBlackmetalBuckler_bal", "ShieldChitin_bal", "ShieldDarkSteelTower_bal", "ShieldDarkSteel_bal", "ShieldDragonTower_bal",
			"ShieldDvergerTower_bal", "ShieldFlametalBuckler_bal", "ShieldFrosteelTower_bal", "ShieldFrosteel_bal", "ShieldSilverTower_bal", "SledgeBlackmetal_bal", "SledgeDarksteel_bal", "SledgeFlametal_bal", "SledgeFrosteel_bal", "SledgeSilver_bal",
			"SledgeStagbreakerNEW_bal", "SledgeStone_bal", "SpearFrosteel_bal", "SpearSilver_bal", "StaffDruid_bal", "SwordBetrayer_bal", "SwordBonemaw_bal", "SwordBone_bal", "SwordCarapace_bal", "KnifeMandible_bal",
			"SwordChitin_bal", "SwordCrystal_bal", "SwordDarkSteel_bal", "SwordFader_bal", "SwordFrosteel_bal", "SwordHeavyDvergr_bal", "THSwordBronze_bal", "THSwordGoblinKing_bal", "THSwordHeavyDverger_bal", "THSwordNorger_bal",
			"HelmetWizardHat_bal", "HelmetMoltenSteel_bal", "THSwordBone_bal", "THSwordChitin_bal", "AxeBone_bal", "ShieldRunecarved_bal", "MaceGore_bal", "BowBone_bal"
		};
	}
	public class JsonLoader
	{
		public string defaultPath = string.Empty;

		public void loadJson()
		{
			LoadTranslations();
			justDefaultPath();
		}

		public void justDefaultPath()
		{
			string configPath = Paths.ConfigPath;
			string text = Path.Combine(configPath, Launch.projectName + "-translation/");
			defaultPath = text;
		}

		public void createDefaultPath()
		{
			string configPath = Paths.ConfigPath;
			string text = Path.Combine(configPath, Launch.projectName + "-translation/");
			if (!Directory.Exists(text))
			{
				CreateFolder(text);
			}
			else
			{
				Debug.Log((object)("ZBalrondArsenalReborn: Folder already exists: " + text));
			}
			defaultPath = text;
		}

		private string[] jsonFilePath(string folderName, string extension)
		{
			string configPath = Paths.ConfigPath;
			string text = Path.Combine(configPath, Launch.projectName + "-translation/");
			if (!Directory.Exists(text))
			{
				CreateFolder(text);
			}
			else
			{
				Debug.Log((object)("ZBalrondArsenalReborn: Folder already exists: " + text));
			}
			string[] files = Directory.GetFiles(text, extension);
			Debug.Log((object)("ZBalrondArsenalReborn:" + folderName + " Json Files Found: " + files.Length));
			return files;
		}

		private static void CreateFolder(string path)
		{
			try
			{
				Directory.CreateDirectory(path);
				Debug.Log((object)"ZBalrondArsenalReborn: Folder created successfully.");
			}
			catch (Exception ex)
			{
				Debug.Log((object)("ZBalrondArsenalReborn: Error creating folder: " + ex.Message));
			}
		}

		private void LoadTranslations()
		{
			int num = 0;
			string[] array = jsonFilePath("Translation", "*.json");
			foreach (string text in array)
			{
				string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(text);
				string json = File.ReadAllText(text);
				JsonData jsonData = JsonMapper.ToObject(json);
				Dictionary<string, string> dictionary = new Dictionary<string, string>();
				foreach (string key in jsonData.Keys)
				{
					dictionary[key] = jsonData[key].ToString();
				}
				if (dictionary != null)
				{
					BalrondTranslator.translations.Add(fileNameWithoutExtension, dictionary);
					Debug.Log((object)("ZBalrondArsenalReborn: Json Files Language: " + fileNameWithoutExtension));
					num++;
				}
				else
				{
					Debug.LogError((object)("ZBalrondArsenalReborn: Loading FAILED file: " + text));
				}
			}
			Debug.Log((object)("ZBalrondArsenalReborn: Translation JsonFiles Loaded: " + num));
		}
	}
	public class FxReplacment
	{
		private List<GameObject> allPrefabs;

		private string projectName = "[BalrondArsenalReborn]";

		public void setInstance(List<GameObject> gameObjects)
		{
			allPrefabs = gameObjects;
		}

		public void ReplaceOnObject(GameObject gameObject)
		{
			if ((Object)(object)gameObject == (Object)null)
			{
				return;
			}
			SpawnArea component = gameObject.GetComponent<SpawnArea>();
			if ((Object)(object)component != (Object)null)
			{
				EffectList spawnEffects = component.m_spawnEffects;
				if (spawnEffects != null)
				{
					findEffectsAndChange(spawnEffects.m_effectPrefabs);
				}
			}
			Destructible component2 = gameObject.GetComponent<Destructible>();
			if ((Object)(object)component2 != (Object)null)
			{
				EffectList hitEffect = component2.m_hitEffect;
				if (hitEffect != null)
				{
					findEffectsAndChange(hitEffect.m_effectPrefabs);
				}
				EffectList destroyedEffect = component2.m_destroyedEffect;
				if (destroyedEffect != null)
				{
					findEffectsAndChange(destroyedEffect.m_effectPrefabs);
				}
			}
			Projectile component3 = gameObject.GetComponent<Projectile>();
			if ((Object)(object)component3 != (Object)null)
			{
				EffectList hitEffects = component3.m_hitEffects;
				if (hitEffects != null)
				{
					findEffectsAndChange(hitEffects.m_effectPrefabs);
				}
				EffectList hitWaterEffects = component3.m_hitWaterEffects;
				if (hitWaterEffects != null)
				{
					findEffectsAndChange(hitWaterEffects.m_effectPrefabs);
				}
				EffectList spawnOnHitEffects = component3.m_spawnOnHitEffects;
				if (spawnOnHitEffects != null)
				{
					findEffectsAndChange(spawnOnHitEffects.m_effectPrefabs);
				}
			}
		}

		public void ReplaceOnVegetation(GameObject gameObject)
		{
			Pickable component = gameObject.GetComponent<Pickable>();
			if ((Object)(object)component != (Object)null)
			{
				fixPlant(component);
			}
			Destructible component2 = gameObject.GetComponent<Destructible>();
			if ((Object)(object)component2 != (Object)null)
			{
				fixPDestructable(component2);
			}
			MineRock5 component3 = gameObject.GetComponent<MineRock5>();
			if ((Object)(object)component3 != (Object)null)
			{
				fixMineRock5(component3);
			}
			MineRock component4 = gameObject.GetComponent<MineRock>();
			if ((Object)(object)component4 != (Object)null)
			{
				fixMineRock(component4);
			}
		}

		private void fixPlant(Pickable pickable)
		{
			EffectList pickEffector = pickable.m_pickEffector;
			if (pickEffector != null)
			{
				findEffectsAndChange(pickEffector.m_effectPrefabs);
			}
		}

		private void fixPDestructable(Destructible minerock5)
		{
			EffectList hitEffect = minerock5.m_hitEffect;
			if (hitEffect != null)
			{
				findEffectsAndChange(hitEffect.m_effectPrefabs);
			}
			EffectList destroyedEffect = minerock5.m_destroyedEffect;
			if (destroyedEffect != null)
			{
				findEffectsAndChange(destroyedEffect.m_effectPrefabs);
			}
		}

		private void fixMineRock5(MineRock5 minerock5)
		{
			EffectList hitEffect = minerock5.m_hitEffect;
			if (hitEffect != null)
			{
				findEffectsAndChange(hitEffect.m_effectPrefabs);
			}
			EffectList destroyedEffect = minerock5.m_destroyedEffect;
			if (destroyedEffect != null)
			{
				findEffectsAndChange(destroyedEffect.m_effectPrefabs);
			}
		}

		private void fixMineRock(MineRock minerock5)
		{
			EffectList hitEffect = minerock5.m_hitEffect;
			if (hitEffect != null)
			{
				findEffectsAndChange(hitEffect.m_effectPrefabs);
			}
			EffectList destroyedEffect = minerock5.m_destroyedEffect;
			if (destroyedEffect != null)
			{
				findEffectsAndChange(destroyedEffect.m_effectPrefabs);
			}
		}

		public void ReplaceOnMonster(GameObject gameObject)
		{
			if ((Object)(object)gameObject == (Object)null)
			{
				Debug.LogWarning((object)(projectName + ":: GameObject not found"));
				return;
			}
			Humanoid component = gameObject.GetComponent<Humanoid>();
			if ((Object)(object)component == (Object)null)
			{
				Debug.LogWarning((object)(projectName + ":: GameObject not found"));
				return;
			}
			EffectList dropEffects = component.m_dropEffects;
			if (dropEffects != null)
			{
				findEffectsAndChange(dropEffects.m_effectPrefabs);
			}
			EffectList backstabHitEffects = ((Character)component).m_backstabHitEffects;
			if (backstabHitEffects != null)
			{
				findEffectsAndChange(backstabHitEffects.m_effectPrefabs);
			}
			EffectList consumeItemEffects = component.m_consumeItemEffects;
			if (consumeItemEffects != null)
			{
				findEffectsAndChange(consumeItemEffects.m_effectPrefabs);
			}
			EffectList critHitEffects = ((Character)component).m_critHitEffects;
			if (critHitEffects != null)
			{
				findEffectsAndChange(critHitEffects.m_effectPrefabs);
			}
			EffectList deathEffects = ((Character)component).m_deathEffects;
			if (deathEffects != null)
			{
				findEffectsAndChange(deathEffects.m_effectPrefabs);
			}
			EffectList hitEffects = ((Character)component).m_hitEffects;
			if (hitEffects != null)
			{
				findEffectsAndChange(hitEffects.m_effectPrefabs);
			}
			EffectList jumpEffects = ((Character)component).m_jumpEffects;
			if (jumpEffects != null)
			{
				findEffectsAndChange(jumpEffects.m_effectPrefabs);
			}
			EffectList perfectBlockEffect = component.m_perfectBlockEffect;
			if (perfectBlockEffect != null)
			{
				findEffectsAndChange(perfectBlockEffect.m_effectPrefabs);
			}
			EffectList pickupEffects = component.m_pickupEffects;
			if (pickupEffects != null)
			{
				findEffectsAndChange(pickupEffects.m_effectPrefabs);
			}
			EffectList slideEffects = ((Character)component).m_slideEffects;
			if (slideEffects != null)
			{
				findEffectsAndChange(slideEffects.m_effectPrefabs);
			}
			EffectList tarEffects = ((Character)component).m_tarEffects;
			if (tarEffects != null)
			{
				findEffectsAndChange(tarEffects.m_effectPrefabs);
			}
			EffectList waterEffects = ((Character)component).m_waterEffects;
			if (waterEffects != null)
			{
				findEffectsAndChange(waterEffects.m_effectPrefabs);
			}
			FootStep component2 = gameObject.GetComponent<FootStep>();
			if (!((Object)(object)component2 != (Object)null))
			{
				return;
			}
			List<StepEffect> effects = component2.m_effects;
			foreach (StepEffect item in effects)
			{
				GameObject[] effectPrefabs = item.m_effectPrefabs;
				List<GameObject> list = new List<GameObject>();
				list.AddRange(effectPrefabs);
				for (int i = 0; i < list.Count; i++)
				{
					if ((Object)(object)list[i] != (Object)null)
					{
						string name = ((Object)list[i]).name;
						GameObject val = allPrefabs.Find((GameObject x) => ((Object)x).name == name);
						if (!((Object)(object)val == (Object)null))
						{
							list[i] = val;
						}
					}
				}
			}
		}

		public void ReplaceOnItem(GameObject gameObject)
		{
			if ((Object)(object)gameObject == (Object)null)
			{
				return;
			}
			ItemDrop component = gameObject.GetComponent<ItemDrop>();
			if (!((Object)(object)component == (Object)null))
			{
				EffectList hitEffect = component.m_itemData.m_shared.m_hitEffect;
				if (hitEffect != null)
				{
					findEffectsAndChange(hitEffect.m_effectPrefabs);
				}
				EffectList hitTerrainEffect = component.m_itemData.m_shared.m_hitTerrainEffect;
				if (hitTerrainEffect != null)
				{
					findEffectsAndChange(hitTerrainEffect.m_effectPrefabs);
				}
				EffectList holdStartEffect = component.m_itemData.m_shared.m_holdStartEffect;
				if (holdStartEffect != null)
				{
					findEffectsAndChange(holdStartEffect.m_effectPrefabs);
				}
				EffectList trailStartEffect = component.m_itemData.m_shared.m_trailStartEffect;
				if (trailStartEffect != null)
				{
					findEffectsAndChange(trailStartEffect.m_effectPrefabs);
				}
				EffectList blockEffect = component.m_itemData.m_shared.m_blockEffect;
				if (blockEffect != null)
				{
					findEffectsAndChange(blockEffect.m_effectPrefabs);
				}
			}
		}

		public void ReplaceFxOnPiece(GameObject gameObject)
		{
			if ((Object)(object)gameObject == (Object)null)
			{
				return;
			}
			Piece component = gameObject.GetComponent<Piece>();
			if ((Object)(object)component != (Object)null)
			{
				EffectList placeEffect = component.m_placeEffect;
				if (placeEffect != null)
				{
					findEffectsAndChange(placeEffect.m_effectPrefabs);
				}
			}
			WearNTear component2 = gameObject.GetComponent<WearNTear>();
			if ((Object)(object)component2 != (Object)null)
			{
				EffectList hitEffect = component2.m_hitEffect;
				if (hitEffect != null)
				{
					findEffectsAndChange(hitEffect.m_effectPrefabs);
				}
			}
		}

		private void findEffectsAndChange(EffectData[] effects)
		{
			if (effects == null || effects.Length == 0)
			{
				return;
			}
			foreach (EffectData val in effects)
			{
				if ((Object)(object)val.m_prefab != (Object)null)
				{
					string name = ((Object)val.m_prefab).name;
					GameObject val2 = allPrefabs.Find((GameObject x) => ((Object)x).name == name);
					if (!((Object)(object)val2 == (Object)null))
					{
						val.m_prefab = val2;
					}
				}
			}
		}
	}
	public class ShaderReplacment
	{
		public static List<GameObject> prefabsToReplaceShader = new List<GameObject>();

		public static List<Material> materialsInPrefabs = new List<Material>();

		public string[] shaderlist = new string[49]
		{
			"Custom/AlphaParticle", "Custom/Blob", "Custom/Bonemass", "Custom/Clouds", "Custom/Creature", "Custom/Decal", "Custom/Distortion", "Custom/Flow", "Custom/FlowOpaque", "Custom/Grass",
			"Custom/GuiScroll", "Custom/Heightmap", "Custom/icon", "Custom/InteriorSide", "Custom/LitGui", "Custom/LitParticles", "Custom/mapshader", "Custom/ParticleDecal", "Custom/Piece", "Custom/Player",
			"Custom/Rug", "Custom/ShadowBlob", "Custom/SkyboxProcedural", "Custom/SkyObject", "Custom/StaticRock", "Custom/Tar", "Custom/Trilinearmap", "Custom/UI/BGBlur", "Custom/Vegetation", "Custom/Water",
			"Custom/WaterBottom", "Custom/WaterMask", "Custom/Yggdrasil", "Custom/Yggdrasil/root", "Hidden/BlitCopyHDRTonemap", "Hidden/Dof/DepthOfFieldHdr", "Hidden/Dof/DX11Dof", "Hidden/Internal-Loading", "Hidden/Internal-UIRDefaultWorld", "Hidden/SimpleClear",
			"Hidden/SunShaftsComposite", "Lux Lit Particles/ Bumped", "Lux Lit Particles/ Tess Bumped", "Particles/Standard Surface2", "Particles/Standard Unlit2", "Standard TwoSided", "ToonDeferredShading2017", "Unlit/DepthWrite", "Unlit/Lighting"
		};

		public static List<Shader> shaders = new List<Shader>();

		private static readonly HashSet<Shader> CachedShaders = new HashSet<Shader>();

		public static bool debug = true;

		public static Shader findShader(string name)
		{
			Shader[] array = Resources.FindObjectsOfTypeAll<Shader>();
			if (array.Length == 0)
			{
				Debug.LogWarning((object)"SHADER LIST IS EMPTY!");
				return null;
			}
			if (debug)
			{
			}
			return shaders.Find((Shader x) => ((Object)x).name == name);
		}

		public static Shader GetShaderByName(string name)
		{
			return shaders.Find((Shader x) => ((Object)x).name == name.Trim());
		}

		public static void debugShaderList(List<Shader> shadersRes)
		{
			foreach (Shader shadersRe in shadersRes)
			{
				Debug.LogWarning((object)("SHADER NAME IS: " + ((Object)shadersRe).name));
			}
			debug = false;
		}

		public static void Replace(GameObject gameObject)
		{
			prefabsToReplaceShader.Add(gameObject);
			GetMaterialsInPrefab(gameObject);
		}

		public static void GetMaterialsInPrefab(GameObject gameObject)
		{
			Renderer[] componentsInChildren = gameObject.GetComponentsInChildren<Renderer>(true);
			Renderer[] array = componentsInChildren;
			foreach (Renderer val in array)
			{
				Material[] sharedMaterials = val.sharedMaterials;
				if (sharedMaterials == null || sharedMaterials.Length == 0)
				{
					continue;
				}
				Material[] array2 = sharedMaterials;
				foreach (Material val2 in array2)
				{
					if ((Object)(object)val2 != (Object)null)
					{
						materialsInPrefabs.Add(val2);
					}
				}
			}
		}

		public static void getMeShaders()
		{
			AssetBundle[] array = Resources.FindObjectsOfTypeAll<AssetBundle>();
			AssetBundle[] array2 = array;
			foreach (AssetBundle val in array2)
			{
				IEnumerable<Shader> enumerable3;
				try
				{
					IEnumerable<Shader> enumerable2;
					if (!val.isStreamedSceneAssetBundle || !Object.op_Implicit((Object)(object)val))
					{
						IEnumerable<Shader> enumerable = val.LoadAllAssets<Shader>();
						enumerable2 = enumerable;
					}
					else
					{
						enumerable2 = from shader in ((IEnumerable<string>)val.GetAllAssetNames()).Select((Func<string, Shader>)val.LoadAsset<Shader>)
							where (Object)(object)shader != (Object)null
							select shader;
					}
					enumerable3 = enumerable2;
				}
				catch (Exception)
				{
					continue;
				}
				if (enumerable3 == null)
				{
					continue;
				}
				foreach (Shader item in enumerable3)
				{
					CachedShaders.Add(item);
				}
			}
		}

		public static void runMaterialFix()
		{
			getMeShaders();
			shaders.AddRange(CachedShaders);
			foreach (Material materialsInPrefab in materialsInPrefabs)
			{
				Shader shader = materialsInPrefab.shader;
				if (!((Object)(object)shader == (Object)null))
				{
					string name = ((Object)shader).name;
					if (!(name == "Standard") && name.Contains("Balrond"))
					{
						setProperValue(materialsInPrefab, name);
					}
				}
			}
		}

		private static void setProperValue(Material material, string shaderName)
		{
			string name = shaderName.Replace("Balrond", "Custom");
			name = checkNaming(name);
			Shader shaderByName = GetShaderByName(name);
			if ((Object)(object)shaderByName == (Object)null)
			{
				Debug.LogWarning((object)("Shader not found " + name));
			}
			else
			{
				material.shader = shaderByName;
			}
		}

		private static string checkNaming(string name)
		{
			string result = name;
			if (name.Contains("Bumped"))
			{
				result = name.Replace("Custom", "Lux Lit Particles");
			}
			if (name.Contains("Tess Bumped"))
			{
				result = name.Replace("Custom", "Lux Lit Particles");
			}
			if (name.Contains("Standard Surface"))
			{
				result = name.Replace("Custom", "Particles");
				result = result.Replace("Standard Surface2", "Standard Surface");
			}
			if (name.Contains("Standard Unlit"))
			{
				result = name.Replace("Custom", "Particles");
				result = result.Replace("Standard Unlit", "Standard Unlit2");
				result = result.Replace("Standard Unlit22", "Standard Unlit2");
			}
			return result;
		}
	}
	public class RecipeFactory
	{
		private List<GameObject> pieces;

		private List<GameObject> items;

		private List<GameObject> newItems;

		public List<Recipe> recipes = new List<Recipe>();

		private string[] toRecipe = new string[150]
		{
			"KnifeFader_bal", "ArmorAncientChest_bal", "ArmorAncientLegs_bal", "ArmorBearChest_bal", "ArmorBearLegs_bal", "ArmorBellmetalChest_bal", "ArmorBellmetalLegs_bal", "ArmorChitinChest_bal", "ArmorChitinLegs_bal", "ArmorDruidChest_bal",
			"ArmorDruidLegs_bal", "ArmorEminenceChest_bal", "ArmorEminenceLegs_bal", "ArmorFrosteelChest_bal", "ArmorFrosteelLegs_bal", "ArmorHeavyTrollChest_bal", "ArmorHeavyTrollLegs_bal", "ArmorLoxChest_bal", "ArmorLoxLegs_bal", "ArmorMercChest_bal",
			"ArmorMercLegs_bal", "ArmorShamanChest_bal", "ArmorShamanLegs_bal", "ArmorSkaldChest_bal", "ArmorSkaldLegs_bal", "ArrowBlizzard_bal", "ArrowBone_bal", "ArrowChitin_bal", "ArrowFlametal_bal", "AtgeirBone_bal",
			"AtgeirChitin_bal", "AtgeirFlametal_bal", "AtgeirFrosteel_bal", "AtgeirGilotine_bal", "AtgeirSilver_bal", "AtgeirWood_bal", "AxeAnguish_bal", "AxeChitin_bal", "AxeDarkSteel_bal", "AxeFlametal_bal",
			"AxeFrosteel_bal", "AxeSilver_bal", "THSwordBlackmetal_bal", "THSwordFrosteel_bal", "THSwordMagmite_bal", "THSwordSilver_bal", "BattleaxeBellmetal_bal", "BattleaxeBlackmetal_bal", "BattleaxeButcher_bal", "BattleaxeDarkSteel_bal",
			"BattleaxeElder_bal", "BattleaxeFlametal_bal", "BattleaxeFrosteel_bal", "BattleaxeHeavyDvergr_bal", "BattleaxeQeen_bal", "BattleaxeTytaen_bal", "BoneClub_bal", "CapeAshtyrant_bal", "CapeBear_bal", "CapeBloody_bal",
			"CapeChain_bal", "CapeClaws_bal", "CapeFox_bal", "CapeNorth_bal", "CapeRags_bal", "CapeSwamp_bal", "Crossbone_bal", "EternalTorch_bal", "FireLance_bal", "BowBlackmetal_bal",
			"BowMoltenSteel_bal", "BowFerroboron_bal", "BowFrosteel_bal", "BowModer_bal", "HelmetAncient_bal", "HelmetMoltenSteel_bal", "HelmetBear_bal", "HelmetBellMetal_bal", "HelmetChitin_bal", "HelmetDruid_bal",
			"HelmetEminence_bal", "HelmetFrosteel_bal", "HelmetGoblinSlayer_bal", "HelmetHeavyTroll_bal", "HelmetIronNew_bal", "HelmetLeatherNew_bal", "HelmetLox_bal", "HelmetMerc_bal", "HelmetNorthern_bal", "HelmetRags_bal",
			"HelmetShaman_bal", "HelmetSilverNew_bal", "HelmetSkald_bal", "KnifeBone_bal", "KnifeDarkSteel_bal", "KnifeFlametal_bal", "KnifeFrosteel_bal", "MaceBonemass_bal", "MaceDarkSteel_bal", "MaceFrosteel_bal",
			"MaceHardWood_bal", "MaceHeavyDverger_bal", "MaceSkullface_bal", "RocketBlunt_bal", "SawBlade_bal", "ScepterDragon_bal", "BattleaxeJinx_bal", "ShieldBellmetalTower_bal", "ShieldBlackmetalBuckler_bal", "ShieldChitin_bal",
			"ShieldDarkSteelTower_bal", "ShieldDarkSteel_bal", "ShieldDragonTower_bal", "ShieldDvergerTower_bal", "ShieldFlametalBuckler_bal", "ShieldFrosteelTower_bal", "ShieldFrosteel_bal", "ShieldSilverTower_bal", "SledgeBlackmetal_bal", "SledgeDarksteel_bal",
			"SledgeFlametal_bal", "SledgeFrosteel_bal", "SledgeSilver_bal", "SledgeStagbreakerNEW_bal", "SledgeStone_bal", "SpearFrosteel_bal", "SpearSilver_bal", "StaffDruid_bal", "SwordBetrayer_bal", "SwordBonemaw_bal",
			"SwordBone_bal", "SwordCarapace_bal", "SwordChitin_bal", "SwordCrystal_bal", "SwordDarkSteel_bal", "SwordFader_bal", "SwordFrosteel_bal", "SwordHeavyDvergr_bal", "THSwordBronze_bal", "THSwordGoblinKing_bal",
			"THSwordHeavyDverger_bal", "THSwordNorger_bal", "HelmetWizardHat_bal", "KnifeMandible_bal", "THSwordBone_bal", "THSwordChitin_bal", "AxeBone_bal", "ShieldRunecarved_bal", "MaceGore_bal", "BowBone_bal"
		};

		public List<Recipe> createRecipes(List<GameObject> items, List<GameObject> newItems)
		{
			this.items = items;
			this.newItems = newItems;
			pieces = items.Find((GameObject x) => ((Object)x).name == "Hammer").GetComponent<ItemDrop>().m_itemData.m_shared.m_buildPieces.m_pieces;
			TableMapper.setupTables(pieces);
			CraftingStation component = pieces.Find((GameObject x) => ((Object)x).name == "forge").GetComponent<CraftingStation>();
			int minStationLevel = 2;
			foreach (GameObject newItem in newItems)
			{
				if (toRecipe.Contains(((Object)newItem).name))
				{
					Recipe val = ScriptableObject.CreateInstance<Recipe>();
					val.m_craftingStation = component;
					val.m_repairStation = component;
					val.m_minStationLevel = minStationLevel;
					val = createResources(newItem, val);
					recipes.Add(val);
				}
			}
			return recipes;
		}

		private Recipe createResources(GameObject item, Recipe newRecipe)
		{
			((Object)newRecipe).name = "Recipe_" + ((Object)item).name;
			newRecipe.m_item = item.GetComponent<ItemDrop>();
			newRecipe.m_enabled = true;
			List<Requirement> list = new List<Requirement>();
			switch (((Object)item).name)
			{
			case "HelmetMoltenSteel_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("MoltenSteel_bal", 6, 3));
				list.Add(createReq("DarkSteel_bal", 6, 3));
				list.Add(createReq("CharredBone", 30, 15));
				break;
			case "ArmorBearChest_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DeerHide", 6, 3));
				list.Add(createReq("BearFur_bal", 2, 1));
				list.Add(createReq("StrawThread_bal", 12, 6));
				list.Add(createReq("ArmorLeatherChest", 1, 0));
				break;
			case "ArmorBearLegs_bal":
				newRecipe.m_craftingStation = TableMapper.workbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BoarHide_bal", 6, 3));
				list.Add(createReq("BearFur_bal", 2, 1));
				list.Add(createReq("StrawThread_bal", 10, 5));
				list.Add(createReq("ArmorLeatherLegs", 1, 0));
				break;
			case "BattleaxeTytaen_bal":
				newRecipe.m_craftingStation = TableMapper.magetable;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Amethysteel_bal", 6, 3));
				list.Add(createReq("BlackCore", 5, 1));
				list.Add(createReq("FineWood", 20, 6));
				list.Add(createReq("GiantBloodSack", 5, 2));
				newRecipe.m_resources = list.ToArray();
				break;
			case "BattleaxeJinx_bal":
				newRecipe.m_craftingStation = TableMapper.magetable;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Amethysteel_bal", 6, 3));
				list.Add(createReq("BlackCore", 8, 4));
				list.Add(createReq("Blackwood", 10, 5));
				list.Add(createReq("Frosteel_bal", 14, 7));
				newRecipe.m_resources = list.ToArray();
				break;
			case "AtgeirBone_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BoneFragments", 6, 3));
				list.Add(createReq("TrophyBoar", 1, 1));
				list.Add(createReq("Wood", 10, 5));
				list.Add(createReq("LeatherScraps", 5, 2));
				break;
			case "AtgeirWood_bal":
				newRecipe.m_craftingStation = TableMapper.workbench;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Wood", 14, 6));
				newRecipe.m_resources = list.ToArray();
				break;
			case "CapeRags_bal":
				newRecipe.m_craftingStation = TableMapper.workbench;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("LeatherScraps", 6, 3));
				list.Add(createReq("BoarHide_bal", 1, 1));
				newRecipe.m_resources = list.ToArray();
				break;
			case "HelmetRags_bal":
				newRecipe.m_craftingStation = TableMapper.workbench;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("LeatherScraps", 2, 2));
				list.Add(createReq("BoarHide_bal", 3, 1));
				newRecipe.m_resources = list.ToArray();
				break;
			case "BoneClub_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("BoneFragments", 10, 5));
				list.Add(createReq("LeatherScraps", 6, 3));
				newRecipe.m_resources = list.ToArray();
				break;
			case "HelmetBear_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("HelmetLeatherNew_bal", 1, 0));
				list.Add(createReq("BearFur_bal", 1, 1));
				list.Add(createReq("StrawThread_bal", 4, 2));
				list.Add(createReq("LeatherScraps", 8, 4));
				break;
			case "KnifeBone_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BoneFragments", 10, 5));
				list.Add(createReq("Wood", 2, 0));
				list.Add(createReq("LeatherScraps", 2, 2));
				break;
			case "KnifeFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 10, 5));
				list.Add(createReq("Blackwood", 2, 0));
				list.Add(createReq("NorthernFur_bal", 2, 2));
				break;
			case "MaceHardWood_bal":
				newRecipe.m_craftingStation = TableMapper.workbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BoneFragments", 6, 2));
				list.Add(createReq("RoundLog", 4, 2));
				list.Add(createReq("Club", 1, 0));
				list.Add(createReq("LeatherScraps", 4, 2));
				break;
			case "SwordBone_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BoneFragments", 10, 5));
				list.Add(createReq("Wood", 10, 5));
				list.Add(createReq("LeatherScraps", 10, 5));
				break;
			case "SledgeStagbreakerNEW_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("TrophyDeer", 4, 2));
				list.Add(createReq("RoundLog", 15, 5));
				list.Add(createReq("HardAntler", 2, 1));
				list.Add(createReq("LeatherScraps", 4, 2));
				break;
			case "SledgeStone_bal":
				newRecipe.m_craftingStation = TableMapper.workbench;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Wood", 12, 6));
				list.Add(createReq("Stone", 6, 3));
				list.Add(createReq("LeatherScraps", 4, 2));
				break;
			case "SpearSilver_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("FineWood", 10, 5));
				list.Add(createReq("Silver", 14, 6));
				list.Add(createReq("WolfPelt", 2, 1));
				break;
			case "THSwordBronze_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Brass", 14, 7));
				list.Add(createReq("RoundLog", 4, 2));
				list.Add(createReq("BoarHide_bal", 2, 1));
				list.Add(createReq("LeatherScraps", 10, 5));
				break;
			case "BattleaxeQeen_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("InfusedCarapace_bal", 1, 1));
				list.Add(createReq("TrophySkeletonPoison", 1, 1));
				list.Add(createReq("Ferroboron_bal", 14, 7));
				list.Add(createReq("Mandible", 6, 3));
				break;
			case "KnifeMandible_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("InfusedCarapace_bal", 1, 1));
				list.Add(createReq("Eitr", 20, 10));
				list.Add(createReq("Ferroboron_bal", 10, 5));
				list.Add(createReq("Mandible", 3, 1));
				break;
			case "THSwordGoblinKing_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("WitheredBone", 10, 2));
				list.Add(createReq("DeadEgo_bal", 1, 1));
				list.Add(createReq("LoxPelt", 2, 1));
				list.Add(createReq("WhiteMetal_bal", 9, 3));
				break;
			case "THSwordNorger_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Ferroboron_bal", 10, 5));
				list.Add(createReq("Eitr", 10, 5));
				list.Add(createReq("Opal_bal", 4, 2));
				list.Add(createReq("WhiteMetal_bal", 4, 2));
				break;
			case "BattleaxeBellmetal_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BellMetal_bal", 20, 10));
				list.Add(createReq("RoundLog", 6, 2));
				list.Add(createReq("DeerHide", 4, 2));
				break;
			case "BattleaxeElder_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Iron", 5, 3));
				list.Add(createReq("Root", 6, 2));
				list.Add(createReq("ThornHeart_bal", 1, 0));
				list.Add(createReq("DeerHide", 4, 2));
				break;
			case "HelmetHeavyTroll_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Bronze", 3, 1));
				list.Add(createReq("TrollHide", 6, 3));
				list.Add(createReq("LeatherScraps", 10, 5));
				list.Add(createReq("BoarHide_bal", 4, 2));
				break;
			case "ArmorHeavyTrollChest_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Bronze", 4, 2));
				list.Add(createReq("ArmorTrollLeatherChest", 1, 0));
				list.Add(createReq("LeatherScraps", 10, 4));
				list.Add(createReq("BoarHide_bal", 2, 2));
				break;
			case "ArmorHeavyTrollLegs_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Bronze", 4, 2));
				list.Add(createReq("ArmorTrollLeatherLegs", 1, 0));
				list.Add(createReq("LeatherScraps", 12, 3));
				list.Add(createReq("BoarHide_bal", 2, 2));
				break;
			case "ShieldBellmetalTower_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BellMetal_bal", 10, 5));
				list.Add(createReq("RoundLog", 10, 5));
				list.Add(createReq("BoarHide_bal", 2, 1));
				list.Add(createReq("LeatherScraps", 8, 4));
				break;
			case "BattleaxeButcher_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 14, 7));
				list.Add(createReq("ElderBark", 14, 7));
				list.Add(createReq("TrophySkeleton", 4, 2));
				list.Add(createReq("TrophyLeech", 4, 2));
				break;
			case "BattleaxeDarkSteel_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 20, 8));
				list.Add(createReq("ElderBark", 10, 4));
				list.Add(createReq("Thunderstone", 2, 1));
				list.Add(createReq("BoarHide_bal", 2, 1));
				break;
			case "KnifeDarkSteel_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 8, 4));
				list.Add(createReq("Thunderstone", 2, 1));
				list.Add(createReq("ElderBark", 4, 2));
				list.Add(createReq("LeatherScraps", 2, 1));
				break;
			case "MaceDarkSteel_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 8, 4));
				list.Add(createReq("ElderBark", 10, 5));
				list.Add(createReq("Thunderstone", 2, 1));
				list.Add(createReq("LeatherScraps", 4, 2));
				break;
			case "SledgeDarksteel_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 16, 8));
				list.Add(createReq("ElderBark", 12, 6));
				list.Add(createReq("Thunderstone", 2, 1));
				list.Add(createReq("BoarHide_bal", 2, 1));
				break;
			case "SwordDarkSteel_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 10, 5));
				list.Add(createReq("ElderBark", 6, 3));
				list.Add(createReq("TrollHide", 2, 1));
				list.Add(createReq("Thunderstone", 2, 1));
				break;
			case "SwordBetrayer_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 10, 5));
				list.Add(createReq("ElderBark", 6, 3));
				list.Add(createReq("Onyx_bal", 4, 2));
				list.Add(createReq("Guck", 6, 3));
				break;
			case "AxeDarkSteel_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 6, 3));
				list.Add(createReq("ElderBark", 12, 6));
				list.Add(createReq("Thunderstone", 2, 1));
				list.Add(createReq("TrollHide", 2, 1));
				break;
			case "MaceSkullface_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 8, 4));
				list.Add(createReq("ElderBark", 20, 10));
				list.Add(createReq("TrophySkeleton", 8, 4));
				list.Add(createReq("SoulCore_bal", 1, 0));
				break;
			case "HelmetGoblinSlayer_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Ruby", 1, 1));
				list.Add(createReq("DeadEgo_bal", 1, 0));
				list.Add(createReq("Iron", 16, 8));
				list.Add(createReq("Feathers", 8, 4));
				break;
			case "SwordShark_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Chitin", 20, 10));
				list.Add(createReq("Iron", 8, 4));
				list.Add(createReq("SharkSkin_bal", 3, 1));
				list.Add(createReq("LeatherScraps", 4, 0));
				break;
			case "BattleaxeBlackmetal_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BlackMetal", 20, 10));
				list.Add(createReq("ElderBark", 8, 4));
				list.Add(createReq("LoxPelt", 2, 1));
				list.Add(createReq("LeatherScraps", 4, 2));
				break;
			case "SledgeBlackmetal_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BlackMetal", 20, 10));
				list.Add(createReq("ElderBark", 8, 4));
				list.Add(createReq("LoxPelt", 4, 2));
				list.Add(createReq("LeatherScraps", 4, 2));
				break;
			case "AxeChitin_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Chitin", 16, 8));
				list.Add(createReq("FineWood", 8, 4));
				list.Add(createReq("TrollHide", 2, 1));
				list.Add(createReq("Iron", 4, 2));
				break;
			case "BattleaxeHeavyDvergr_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Ferroboron_bal", 16, 8));
				list.Add(createReq("LinenThread", 4, 2));
				list.Add(createReq("ScaleHide", 2, 1));
				list.Add(createReq("YggdrasilWood", 10, 5));
				break;
			case "MaceBonemass_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BoneClub_bal", 1, 1));
				list.Add(createReq("TrophyBlob", 1, 1));
				list.Add(createReq("Iron", 8, 4));
				list.Add(createReq("WitheredBone", 4, 2));
				break;
			case "ShieldSilverTower_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Silver", 10, 5));
				list.Add(createReq("Crystal", 2, 1));
				list.Add(createReq("FineWood", 8, 4));
				list.Add(createReq("Obsidian", 6, 3));
				break;
			case "HelmetWizardHat_bal":
				newRecipe.m_craftingStation = TableMapper.magetable;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("JuteBlue", 8, 4));
				list.Add(createReq("Eitr", 12, 6));
				list.Add(createReq("SilkReinforcedThread_bal", 5, 2));
				list.Add(createReq("BoraxCrystal_bal", 4, 2));
				break;
			case "FireLance_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("SurtlingCore", 8, 4));
				list.Add(createReq("Blackwood", 8, 4));
				list.Add(createReq("ProustitePowder", 8, 4));
				break;
			case "AxeAnguish_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				newRecipe.m_amount = 1;
				list.Add(createReq("TrophyWraith", 2, 1));
				list.Add(createReq("Root", 4, 2));
				list.Add(createReq("Iron", 10, 5));
				list.Add(createReq("BoneFragments", 20, 10));
				break;
			case "SwordCarapace_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 1;
				newRecipe.m_amount = 1;
				list.Add(createReq("Carapace", 8, 4));
				list.Add(createReq("YggdrasilWood", 6, 3));
				list.Add(createReq("Mandible", 4, 2));
				list.Add(createReq("LeatherScraps", 8, 4));
				break;
			case "RocketBlunt_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				newRecipe.m_amount = 10;
				list.Add(createReq("SulfurStone", 5, 0));
				list.Add(createReq("SurtlingCore", 1, 0));
				list.Add(createReq("ProustitePowder", 5, 0));
				list.Add(createReq("BoraxCrystal_bal", 3, 0));
				break;
			case "CapeChain_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Chain", 8, 1));
				list.Add(createReq("IronNails", 66, 11));
				list.Add(createReq("WolfPelt", 2, 1));
				list.Add(createReq("TrophyWraith", 1, 0));
				break;
			case "CapeClaws_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Charredskull", 2, 0));
				list.Add(createReq("AskHide", 5, 0));
				list.Add(createReq("SilkReinforcedThread_bal", 5, 0));
				list.Add(createReq("SurtlingCore", 5, 0));
				break;
			case "CapeFox_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				if (!conditionedItem("FoxFur_bal"))
				{
					newRecipe.m_enabled = false;
				}
				list.Add(createReq("FoxFur_bal", 2, 1));
				list.Add(createReq("Chain", 2, 1));
				list.Add(createReq("SilkReinforcedThread_bal", 10, 2));
				list.Add(createReq("Emerald_bal", 2, 1));
				break;
			case "CapeBear_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				if (!conditionedItem("BearFur_bal"))
				{
					newRecipe.m_enabled = false;
				}
				list.Add(createReq("BearFur_bal", 2, 1));
				list.Add(createReq("StrawThread_bal", 6, 3));
				list.Add(createReq("LeatherScraps", 10, 2));
				list.Add(createReq("BoneFragments", 10, 5));
				break;
			case "CapeBloody_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("SpiritShard_bal", 10, 5));
				list.Add(createReq("StrawThread_bal", 44, 14));
				list.Add(createReq("BoarHide_bal", 14, 7));
				list.Add(createReq("Bloodbag", 20, 10));
				break;
			case "CapeAshtyrant_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Charredskull", 2, 0));
				list.Add(createReq("AskHide", 5, 0));
				list.Add(createReq("SilkReinforcedThread_bal", 5, 0));
				list.Add(createReq("SurtlingCore", 5, 0));
				break;
			case "HelmetChitin_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Chitin", 24, 12));
				list.Add(createReq("SerpentScale", 4, 2));
				list.Add(createReq("LeatherScraps", 14, 7));
				list.Add(createReq("BellMetal_bal", 6, 3));
				break;
			case "ArmorChitinChest_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Chitin", 26, 13));
				list.Add(createReq("SerpentScale", 10, 5));
				list.Add(createReq("DeerHide", 4, 2));
				list.Add(createReq("BellMetal_bal", 12, 6));
				break;
			case "ArmorChitinLegs_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Chitin", 26, 13));
				list.Add(createReq("SerpentScale", 6, 3));
				list.Add(createReq("BoarHide_bal", 6, 3));
				list.Add(createReq("BellMetal_bal", 10, 5));
				break;
			case "SwordChitin_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Chitin", 30, 15));
				list.Add(createReq("LeatherScraps", 4, 2));
				list.Add(createReq("BellMetal_bal", 4, 2));
				list.Add(createReq("FineWood", 4, 2));
				break;
			case "ShieldChitin_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BellMetal_bal", 4, 2));
				list.Add(createReq("TrollHide", 4, 2));
				list.Add(createReq("Chitin", 30, 15));
				list.Add(createReq("FineWood", 10, 5));
				break;
			case "BattleaxeFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 16, 8));
				list.Add(createReq("Blackwood", 16, 8));
				list.Add(createReq("NorthernFur_bal", 4, 2));
				list.Add(createReq("FreezeGland", 4, 2));
				break;
			case "MaceHeavyDverger_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Ferroboron_bal", 20, 10));
				list.Add(createReq("BoraxCrystal_bal", 8, 4));
				list.Add(createReq("ScaleHide", 3, 1));
				list.Add(createReq("YggdrasilWood", 10, 0));
				break;
			case "SwordHeavyDvergr_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Ferroboron_bal", 20, 10));
				list.Add(createReq("BoraxCrystal_bal", 8, 4));
				list.Add(createReq("ScaleHide", 3, 1));
				list.Add(createReq("YggdrasilWood", 10, 0));
				break;
			case "SwordFader_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("FlametalNew", 20, 10));
				list.Add(createReq("CarvedCarcass_bal", 1, 0));
				list.Add(createReq("Emerald_bal", 4, 2));
				list.Add(createReq("YggdrasilWood", 10, 5));
				break;
			case "KnifeFader_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("FlametalNew", 10, 10));
				list.Add(createReq("CarvedCarcass_bal", 1, 0));
				list.Add(createReq("SurtlingCore", 6, 3));
				list.Add(createReq("Flametal", 10, 5));
				break;
			case "SwordFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 20, 10));
				list.Add(createReq("Blackwood", 10, 5));
				list.Add(createReq("Sapphire_bal", 3, 1));
				list.Add(createReq("NorthernFur_bal", 2, 1));
				break;
			case "THSwordChitin_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Chitin", 20, 10));
				list.Add(createReq("BellMetal_bal", 8, 4));
				list.Add(createReq("TrollHide", 2, 1));
				list.Add(createReq("FineWood", 10, 5));
				break;
			case "THSwordHeavyDverger_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Ferroboron_bal", 20, 10));
				list.Add(createReq("BoraxCrystal_bal", 8, 4));
				list.Add(createReq("ScaleHide", 3, 1));
				list.Add(createReq("YggdrasilWood", 10, 0));
				break;
			case "ArmorCultistChest_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("JuteRed", 4, 2));
				list.Add(createReq("WolfPelt", 3, 2));
				list.Add(createReq("FenringInsygnia_bal", 5, 3));
				list.Add(createReq("LeatherScraps", 20, 10));
				break;
			case "ArmorCultistLegs_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("JuteRed", 4, 2));
				list.Add(createReq("FenringInsygnia_bal", 5, 1));
				list.Add(createReq("WolfPelt", 5, 2));
				list.Add(createReq("LeatherScraps", 20, 10));
				break;
			case "CapeCultist_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("JuteRed", 3, 3));
				list.Add(createReq("WolfPelt", 5, 2));
				list.Add(createReq("LeatherScraps", 0, 12));
				list.Add(createReq("FenringInsygnia_bal", 2, 1));
				break;
			case "CursedHand_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("CorruptedEitr_bal", 4, 2));
				list.Add(createReq("FenringInsygnia_bal", 2, 1));
				list.Add(createReq("TrophyFenring", 1, 1));
				list.Add(createReq("TrophyUlv", 2, 1));
				break;
			case "HelmetCultist_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("TrophyCultist", 1, 1));
				list.Add(createReq("JuteRed", 3, 2));
				list.Add(createReq("FenringInsygnia_bal", 2, 1));
				list.Add(createReq("CorruptedEitr_bal", 4, 2));
				break;
			case "ArmorEminenceChest_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				newRecipe.m_amount = 1;
				list.Add(createReq("FlametalNew", 10, 5));
				list.Add(createReq("BlackSkin_bal", 6, 3));
				list.Add(createReq("SulfurStone", 6, 3));
				list.Add(createReq("SilkReinforcedThread_bal", 6, 3));
				break;
			case "ArmorEminenceLegs_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				newRecipe.m_amount = 1;
				list.Add(createReq("FlametalNew", 10, 5));
				list.Add(createReq("BlackSkin_bal", 6, 3));
				list.Add(createReq("SulfurStone", 6, 3));
				list.Add(createReq("SilkReinforcedThread_bal", 6, 3));
				break;
			case "HelmetEminence_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				newRecipe.m_amount = 1;
				list.Add(createReq("FlametalNew", 4, 2));
				list.Add(createReq("BlackSkin_bal", 6, 3));
				list.Add(createReq("SulfurStone", 6, 3));
				list.Add(createReq("SilkReinforcedThread_bal", 6, 3));
				break;
			case "HelmetFullPlate_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				break;
			case "BowBone_bal":
				list.Add(createReq("Wood", 16, 8));
				list.Add(createReq("BoneFragments", 8, 4));
				list.Add(createReq("LeatherScraps", 6, 3));
				list.Add(createReq("StrawThread_bal", 6, 3));
				newRecipe.m_resources = list.ToArray();
				newRecipe.m_minStationLevel = 1;
				newRecipe.m_craftingStation = TableMapper.fletcher;
				break;
			case "BowModer_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Silver", 10, 4));
				list.Add(createReq("FineWood", 8, 4));
				list.Add(createReq("Crystal", 8, 5));
				list.Add(createReq("DragonTear", 1, 1));
				break;
			case "BowBlackmetal_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BlackMetal", 10, 4));
				list.Add(createReq("FineWood", 8, 4));
				list.Add(createReq("IronNails", 8, 5));
				list.Add(createReq("LinenThread", 1, 3));
				break;
			case "BowMoltenSteel_bal":
				newRecipe.m_craftingStation = TableMapper.fletcher;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("MoltenSteel_bal", 10, 5));
				list.Add(createReq("Blackwood", 8, 4));
				list.Add(createReq("CharcoalResin", 8, 4));
				list.Add(createReq("SilkReinforcedThread_bal", 4, 2));
				break;
			case "BowFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 10, 4));
				list.Add(createReq("Blackwood", 10, 5));
				list.Add(createReq("LeatherScraps", 14, 7));
				list.Add(createReq("SilkReinforcedThread_bal", 4, 2));
				break;
			case "MaceFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 14, 7));
				list.Add(createReq("YggdrasilWood", 8, 4));
				list.Add(createReq("IronNails", 8, 5));
				list.Add(createReq("LinenThread", 1, 3));
				break;
			case "AtgeirFlametal_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("FlametalNew", 10, 5));
				list.Add(createReq("BlackSkin_bal", 2, 1));
				list.Add(createReq("EmberWood_bal", 6, 3));
				list.Add(createReq("SilkReinforcedThread_bal", 4, 2));
				break;
			case "AtgeirFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 10, 5));
				list.Add(createReq("NorthernFur_bal", 2, 1));
				list.Add(createReq("Blackwood", 6, 3));
				list.Add(createReq("SilkReinforcedThread_bal", 4, 2));
				break;
			case "AtgeirGilotine_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("DarkSteel_bal", 10, 5));
				list.Add(createReq("WolfPelt", 4, 2));
				list.Add(createReq("FineWood", 15, 7));
				list.Add(createReq("Bloodbag", 6, 3));
				break;
			case "AxeFlametal_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("MoltenSteel_bal", 12, 6));
				list.Add(createReq("CharredBone", 20, 10));
				list.Add(createReq("EmberWood_bal", 4, 2));
				list.Add(createReq("BlackSkin_bal", 4, 2));
				break;
			case "MaceGore_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("RottenMeat", 4, 2));
				list.Add(createReq("DarkSteel_bal", 4, 2));
				list.Add(createReq("HardWood_bal", 4, 2));
				list.Add(createReq("MaceBonemass_bal", 1, 0));
				break;
			case "AxeBone_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("BoneFragments", 14, 7));
				list.Add(createReq("LeatherScraps", 4, 2));
				list.Add(createReq("Wood", 4, 2));
				list.Add(createReq("StrawThread_bal", 4, 2));
				break;
			case "THSwordMagmite_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("MoltenSteel_bal", 20, 10));
				list.Add(createReq("AskHide", 4, 2));
				list.Add(createReq("Blackwood", 8, 4));
				list.Add(createReq("SurtlingCore", 20, 10));
				break;
			case "THSwordBone_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("BoneFragments", 20, 10));
				list.Add(createReq("LeatherScraps", 8, 4));
				list.Add(createReq("TrophySkeleton", 1, 1));
				list.Add(createReq("StrawThread_bal", 8, 4));
				break;
			case "THSwordSilver_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Silver", 20, 10));
				list.Add(createReq("WolfPelt", 4, 2));
				list.Add(createReq("HardWood_bal", 8, 4));
				list.Add(createReq("StrawThread_bal", 6, 3));
				break;
			case "SpearFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Frosteel_bal", 6, 3));
				list.Add(createReq("JotunFinger_bal", 6, 3));
				list.Add(createReq("Blackwood", 8, 4));
				list.Add(createReq("NorthernFur_bal", 2, 1));
				break;
			case "EternalTorch_bal":
				newRecipe.m_craftingStation = TableMapper.magetable;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("MoltenSteel_bal", 4, 2));
				list.Add(createReq("MagmaStone_bal", 4, 4));
				list.Add(createReq("EmberWood_bal", 8, 4));
				list.Add(createReq("SulfurStone", 2, 1));
				break;
			case "KnifeFlametal_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("GoldBar_bal", 2, 1));
				list.Add(createReq("MagmaStone_bal", 8, 4));
				list.Add(createReq("FlametalNew", 8, 4));
				list.Add(createReq("Ruby", 4, 2));
				break;
			case "ScepterDragon_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("WhiteMetal_bal", 6, 3));
				list.Add(createReq("DragonTear", 1, 0));
				list.Add(createReq("ElderBark", 10, 5));
				list.Add(createReq("Sapphire_bal", 4, 2));
				break;
			case "ShieldRunecarved_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 10, 5));
				list.Add(createReq("Silver", 10, 5));
				list.Add(createReq("HardWood_bal", 6, 3));
				list.Add(createReq("WolfPelt", 2, 1));
				break;
			case "ShieldDragonTower_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("MoltenSteel_bal", 16, 4));
				list.Add(createReq("SurtlingCore", 14, 3));
				list.Add(createReq("Blackwood", 14, 7));
				list.Add(createReq("AskHide", 4, 2));
				break;
			case "ShieldDarkSteel_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 12, 6));
				list.Add(createReq("BoneFragments", 20, 10));
				list.Add(createReq("FineWood", 4, 2));
				list.Add(createReq("WolfPelt", 2, 1));
				break;
			case "ShieldDarkSteelTower_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("DarkSteel_bal", 12, 6));
				list.Add(createReq("Bloodbag", 4, 2));
				list.Add(createReq("FineWood", 14, 7));
				list.Add(createReq("WolfPelt", 2, 1));
				break;
			case "ShieldDvergerTower_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Ferroboron_bal", 10, 5));
				list.Add(createReq("Bloodbag", 4, 2));
				list.Add(createReq("HardWood_bal", 14, 7));
				list.Add(createReq("WolfPelt", 2, 1));
				break;
			case "ShieldFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 10, 5));
				list.Add(createReq("Crystal", 14, 7));
				list.Add(createReq("Blackwood", 4, 2));
				list.Add(createReq("NorthernFur_bal", 2, 1));
				break;
			case "ShieldFlametalBuckler_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("FlametalNew", 12, 6));
				list.Add(createReq("MagmaStone_bal", 14, 7));
				list.Add(createReq("Blackwood", 4, 2));
				list.Add(createReq("AskHide", 2, 1));
				break;
			case "SledgeFlametal_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("FlametalNew", 20, 10));
				list.Add(createReq("SurtlingCore", 6, 3));
				list.Add(createReq("EmberWood_bal", 6, 3));
				list.Add(createReq("SulfurStone", 4, 2));
				break;
			case "BattleaxeFlametal_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("FlametalNew", 20, 10));
				list.Add(createReq("MagmaStone_bal", 6, 3));
				list.Add(createReq("Blackwood", 8, 4));
				list.Add(createReq("SulfurStone", 4, 2));
				break;
			case "SledgeFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Frosteel_bal", 20, 10));
				list.Add(createReq("Crystal", 10, 5));
				list.Add(createReq("LeatherScraps", 8, 4));
				list.Add(createReq("Blackwood", 10, 5));
				break;
			case "AxeFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Cobalt_bal", 22, 11));
				list.Add(createReq("Blackwood", 10, 5));
				list.Add(createReq("LoxPelt", 2, 1));
				list.Add(createReq("IceShard_bal", 10, 5));
				break;
			case "THSwordBlackmetal_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BlackMetal", 15, 5));
				list.Add(createReq("FineWood", 15, 5));
				list.Add(createReq("LoxPelt", 2, 1));
				list.Add(createReq("LinenThread", 8, 4));
				break;
			case "THSwordFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Cobalt_bal", 50, 25));
				list.Add(createReq("Blackwood", 10, 5));
				list.Add(createReq("NorthernFur_bal", 2, 1));
				list.Add(createReq("SharpeningStone", 10, 5));
				break;
			case "AtgeirChitin_bal":
				newRecipe.m_craftingStation = TableMapper.heavyWorkbench;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Chitin", 10, 5));
				list.Add(createReq("BoarHide_bal", 4, 2));
				list.Add(createReq("Wood", 16, 8));
				list.Add(createReq("StrawThread_bal", 4, 2));
				break;
			case "ShieldBlackmetalBuckler_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BlackMetal", 14, 7));
				list.Add(createReq("ElderBark", 10, 5));
				list.Add(createReq("LoxPelt", 2, 1));
				list.Add(createReq("BoneFragments", 12, 6));
				break;
			case "ShieldFrosteelTower_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 20, 10));
				list.Add(createReq("Blackwood", 20, 10));
				list.Add(createReq("WolfPelt", 4, 2));
				list.Add(createReq("JotunFinger_bal", 6, 3));
				break;
			case "AtgeirSilver_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Silver", 12, 6));
				list.Add(createReq("FineWood", 20, 10));
				list.Add(createReq("WolfPelt", 2, 1));
				list.Add(createReq("LeatherScraps", 6, 3));
				break;
			case "CapeNorth_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("NorthernFur_bal", 5, 3));
				list.Add(createReq("LeatherScraps", 4, 2));
				list.Add(createReq("Cobalt_bal", 3, 1));
				list.Add(createReq("Chain", 2, 1));
				break;
			case "CapeSwamp_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("TrollHide", 6, 3));
				list.Add(createReq("BoarHide_bal", 6, 2));
				list.Add(createReq("Guck", 6, 2));
				list.Add(createReq("DeerHide", 6, 4));
				break;
			case "HelmetLeatherNew_bal":
				newRecipe.m_craftingStation = TableMapper.workbench;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("LeatherScraps", 6, 2));
				list.Add(createReq("DeerHide", 3, 3));
				list.Add(createReq("BoarHide_bal", 4, 2));
				list.Add(createReq("BoneFragments", 3, 0));
				newRecipe.m_resources = list.ToArray();
				break;
			case "ArmorFrosteelChest_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 6, 3));
				list.Add(createReq("LoxPelt", 6, 2));
				list.Add(createReq("TrophyDeer", 6, 2));
				list.Add(createReq("LinenThread", 6, 2));
				break;
			case "ArmorFrosteelLegs_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 6, 3));
				list.Add(createReq("LoxPelt", 6, 2));
				list.Add(createReq("TrophyDeer", 6, 2));
				list.Add(createReq("LinenThread", 6, 2));
				break;
			case "HelmetFrosteel_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Frosteel_bal", 6, 3));
				list.Add(createReq("LoxPelt", 6, 2));
				list.Add(createReq("TrophyDeer", 6, 2));
				list.Add(createReq("LinenThread", 6, 2));
				break;
			case "HelmetNorthern_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Frosteel_bal", 6, 3));
				list.Add(createReq("LoxPelt", 6, 2));
				list.Add(createReq("TrophyDeer", 6, 2));
				list.Add(createReq("LinenThread", 6, 2));
				break;
			case "ArmorLoxLegs_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BlackMetal", 6, 3));
				list.Add(createReq("LoxPelt", 6, 2));
				list.Add(createReq("JuteRed", 6, 2));
				list.Add(createReq("LinenThread", 6, 2));
				break;
			case "ArmorLoxChest_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BlackMetal", 6, 3));
				list.Add(createReq("LoxPelt", 6, 2));
				list.Add(createReq("JuteRed", 6, 2));
				list.Add(createReq("LinenThread", 6, 2));
				break;
			case "ArmorBellmetalChest_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BellMetal_bal", 5, 3));
				list.Add(createReq("ArmorBronzeChest", 1, 0));
				list.Add(createReq("Tin", 10, 0));
				list.Add(createReq("RoundLog", 4, 2));
				break;
			case "ArmorBellmetalLegs_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BellMetal_bal", 5, 3));
				list.Add(createReq("ArmorBronzeLegs", 1, 0));
				list.Add(createReq("Tin", 10, 0));
				list.Add(createReq("BoarHide_bal", 2, 1));
				break;
			case "HelmetBellMetal_bal":
				newRecipe.m_craftingStation = TableMapper.forge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BellMetal_bal", 3, 2));
				list.Add(createReq("HelmetBronze", 1, 0));
				list.Add(createReq("Tin", 8, 0));
				list.Add(createReq("DeerHide", 2, 1));
				break;
			case "HelmetLox_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BlackMetal", 20, 5));
				list.Add(createReq("LoxPelt", 1, 1));
				list.Add(createReq("JuteRed", 1, 1));
				list.Add(createReq("LinenThread", 6, 2));
				break;
			case "ArmorSkaldChest_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Cobalt_bal", 20, 10));
				list.Add(createReq("Ferroboron_bal", 6, 3));
				list.Add(createReq("LeatherScraps", 16, 8));
				list.Add(createReq("LinenThread", 6, 3));
				break;
			case "ArmorSkaldLegs_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Cobalt_bal", 20, 10));
				list.Add(createReq("LoxPelt", 10, 5));
				list.Add(createReq("BearFur_bal", 6, 3));
				list.Add(createReq("LinenThread", 6, 2));
				break;
			case "HelmetSkald_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Cobalt_bal", 10, 5));
				list.Add(createReq("NorthernFur_bal", 4, 2));
				list.Add(createReq("TrophyDeer", 6, 3));
				list.Add(createReq("LinenThread", 10, 5));
				break;
			case "ArmorShamanChest_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BoneFragments", 6, 3));
				list.Add(createReq("LoxPelt", 6, 2));
				list.Add(createReq("TrophyGoblinShaman", 6, 2));
				list.Add(createReq("CorruptedEitr_bal", 6, 2));
				break;
			case "ArmorShamanLegs_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BoneFragments", 6, 3));
				list.Add(createReq("LoxPelt", 6, 2));
				list.Add(createReq("TrophyGoblinShaman", 6, 2));
				list.Add(createReq("CorruptedEitr_bal", 6, 2));
				break;
			case "HelmetShaman_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("BoneFragments", 6, 3));
				list.Add(createReq("LoxPelt", 4, 2));
				list.Add(createReq("TrophyGoblinShaman", 4, 2));
				list.Add(createReq("CorruptedEitr_bal", 6, 3));
				break;
			case "HelmetAncient_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Ferroboron_bal", 6, 3));
				list.Add(createReq("LeatherScraps", 8, 4));
				list.Add(createReq("ScaleHide", 4, 2));
				list.Add(createReq("SilkReinforcedThread_bal", 2, 1));
				break;
			case "ArmorAncientChest_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Ferroboron_bal", 10, 5));
				list.Add(createReq("LeatherScraps", 4, 2));
				list.Add(createReq("ScaleHide", 4, 2));
				list.Add(createReq("SilkReinforcedThread_bal", 4, 2));
				break;
			case "ArmorAncientLegs_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("Ferroboron_bal", 8, 4));
				list.Add(createReq("LeatherScraps", 8, 4));
				list.Add(createReq("ScaleHide", 4, 2));
				list.Add(createReq("SilkReinforcedThread_bal", 6, 3));
				break;
			case "ArmorMercChest_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("DarkSteel_bal", 10, 5));
				list.Add(createReq("LeatherScraps", 6, 3));
				list.Add(createReq("TrollHide", 6, 3));
				list.Add(createReq("BoneFragments", 22, 11));
				break;
			case "ArmorMercLegs_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("DarkSteel_bal", 8, 4));
				list.Add(createReq("LeatherScraps", 6, 3));
				list.Add(createReq("TrollHide", 6, 3));
				list.Add(createReq("BoneFragments", 22, 11));
				break;
			case "HelmetMerc_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("DarkSteel_bal", 6, 3));
				list.Add(createReq("BoarHide_bal", 6, 3));
				list.Add(createReq("LeatherScraps", 8, 4));
				list.Add(createReq("TrophySkeletonPoison", 2, 1));
				break;
			case "Crossbone_bal":
				newRecipe.m_craftingStation = TableMapper.fletcher;
				newRecipe.m_minStationLevel = 1;
				list.Add(createReq("BoneClub_bal", 2, 1));
				list.Add(createReq("TrollHide", 8, 4));
				list.Add(createReq("WitheredBone", 10, 5));
				list.Add(createReq("StrawThread_bal", 10, 5));
				break;
			case "SwordCrystal_bal":
				newRecipe.m_craftingStation = TableMapper.runeforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Blackwood", 4, 2));
				list.Add(createReq("Frosteel_bal", 10, 5));
				list.Add(createReq("LeatherScraps", 8, 4));
				list.Add(createReq("Sapphire_bal", 4, 2));
				break;
			case "SwordBonemaw_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Blackwood", 6, 3));
				list.Add(createReq("BonemawSerpentTooth", 2, 1));
				list.Add(createReq("MoltenSteel_bal", 6, 3));
				list.Add(createReq("CharredBone", 10, 5));
				break;
			case "BowFerroboron_bal":
				newRecipe.m_craftingStation = TableMapper.blackforge;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Ferroboron_bal", 14, 7));
				list.Add(createReq("YggdrasilWood", 20, 10));
				list.Add(createReq("SilkReinforcedThread_bal", 8, 4));
				list.Add(createReq("Feathers", 20, 10));
				break;
			case "SledgeSilver_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Silver", 16, 8));
				list.Add(createReq("HardWood_bal", 10, 5));
				list.Add(createReq("WolfPelt", 4, 2));
				list.Add(createReq("TrophySGolem", 2, 1));
				break;
			case "AxeSilver_bal":
				newRecipe.m_craftingStation = TableMapper.ironworks;
				newRecipe.m_minStationLevel = 2;
				list.Add(createReq("Silver", 16, 8));
				list.Add(createReq("ElderBark", 12, 6));
				list.Add(createReq("WolfPelt", 2, 1));
				list.Add(createReq("SpiritShard_bal", 6, 3));
				break;
			case "HelmetIronNew_bal":
				newRecipe.m_craftingSta