Decompiled source of balrond arsenal reborn v0.1.0
plugins/BalrondArsenalReborn.dll
Decompiled 2 weeks ago
The result has been truncated due to the large size, download it to view full contents!
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