Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of balrond arsenal reborn v0.1.6
plugins/BalrondArsenalReborn.dll
Decompiled 8 months 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[169] { "StaffSkeleton_bal", "SwordMythic_bal", "ShieldSilverBuckler_bal", "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", "HelmetFallenKing_bal", "HelmetWolfHead_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", "HelmetDarkHood_bal", "HelmetSerpentLord_bal", "ArmorSerpentLordChest_bal", "ArmorSerpentLordLegs_bal", "ShieldSpiked_bal", "SwordDyrnwyn_bal", "AxeJotunBane_bal", "BattleaxeCrystal_bal", "SledgeAwekenedStagbreaker_bal", "SpearAwakenedElderbark_bal", "MaceAwakenedSilver_bal", "AtgeirAwakenedHimminl_bal", "THSwordKrom_bal", "BowDraugrFang_bal", "ShieldCopper_bal", "ShieldSilverBuckler_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[175] { "ShieldSilverBuckler_bal", "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", "ArmorCultistChest_bal", "ArmorCultistLegs_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", "SwordMythic_bal", "BoneClub_bal", "CapeAshtyrant_bal", "CapeBear_bal", "CapeBloody_bal", "CapeChain_bal", "CapeClaws_bal", "CapeFox_bal", "CapeNorth_bal", "CapeRags_bal", "CapeCultist_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", "HelmetCultist_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", "ShieldSpiked_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", "CursedHand_bal", "BowBone_bal", "SledgeDoom_bal", "SledgeTemplar_bal", "HelmetFallenKing_bal", "HelmetSerpentLord_bal", "ArmorSerpentLordChest_bal", "ArmorSerpentLordLegs_bal", "BowDraugrFang_bal", "THSwordKrom_bal", "SwordDyrnwyn_bal", "AxeJotunBane_bal", "BattleaxeCrystal_bal", "SledgeAwekenedStagbreaker_bal", "SpearAwakenedElderbark_bal", "MaceAwakenedSilver_bal", "AtgeirAwakenedHimminl_bal", "StaffSkeleton_bal", "ShieldCopper_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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; list.Add(createReq("HelmetLeatherNew_bal", 1, 0)); list.Add(createReq("TrophyBear_bal", 1, 1)); list.Add(createReq("StrawThread_bal", 4, 2)); list.Add(createReq("LeatherScraps", 8, 4)); break; case "HelmetWolfHead_bal": newRecipe.m_craftingStation = TableMapper.heavyWorkbench; newRecipe.m_minStationLevel = 1; list.Add(createReq("HelmetLeatherNew_bal", 1, 0)); list.Add(createReq("TrophyWolf", 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; list.Add(createReq("BellMetal_bal", 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 = 1; 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 = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 "ShieldCopper_bal": newRecipe.m_craftingStation = TableMapper.forge; newRecipe.m_minStationLevel = 1; list.Add(createReq("Copper", 4, 2)); list.Add(createReq("Wood", 6, 3)); list.Add(createReq("DeerHide", 2, 1)); list.Add(createReq("BoneFragments", 8, 4)); break; case "BattleaxeButcher_bal": newRecipe.m_craftingStation = TableMapper.ironworks; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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 = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; 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 = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; if (!conditionedItem("BearFur_bal")) { newRecipe.m_enabled = false; } else { 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.shamantable; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; list.Add(createReq("Chitin", 16, 8)); list.Add(createReq("SerpentScale", 2, 1)); list.Add(createReq("LeatherScraps", 16, 8)); list.Add(createReq("BellMetal_bal", 4, 2)); break; case "HelmetSerpentLord_bal": newRecipe.m_craftingStation = TableMapper.ironworks; newRecipe.m_minStationLevel = 1; list.Add(createReq("Chitin", 26, 13)); list.Add(createReq("TrophySerpent", 2, 1)); list.Add(createReq("LoxPelt", 4, 2)); list.Add(createReq("DarkSteel_bal", 12, 6)); break; case "ArmorSerpentLordChest_bal": newRecipe.m_craftingStation = TableMapper.ironworks; newRecipe.m_minStationLevel = 1; list.Add(createReq("Chitin", 26, 13)); list.Add(createReq("SerpentScale", 16, 8)); list.Add(createReq("LoxPelt", 4, 2)); list.Add(createReq("DarkSteel_bal", 12, 6)); break; case "ArmorSerpentLordLegs_bal": newRecipe.m_craftingStation = TableMapper.ironworks; newRecipe.m_minStationLevel = 1; list.Add(createReq("Chitin", 26, 13)); list.Add(createReq("SerpentScale", 14, 7)); list.Add(createReq("LoxPelt", 4, 2)); list.Add(createReq("DarkSteel_bal", 12, 6)); break; case "ArmorChitinChest_bal": newRecipe.m_craftingStation = TableMapper.heavyWorkbench; newRecipe.m_minStationLevel = 1; list.Add(createReq("Chitin", 18, 9)); list.Add(createReq("SerpentScale", 2, 1)); list.Add(createReq("DeerHide", 4, 2)); list.Add(createReq("BellMetal_bal", 6, 3)); break; case "ArmorChitinLegs_bal": newRecipe.m_craftingStation = TableMapper.heavyWorkbench; newRecipe.m_minStationLevel = 1; list.Add(createReq("Chitin", 18, 9)); list.Add(createReq("SerpentScale", 2, 1)); list.Add(createReq("BoarHide_bal", 8, 4)); list.Add(createReq("BellMetal_bal", 4, 2)); break; case "SwordChitin_bal": newRecipe.m_craftingStation = TableMapper.heavyWorkbench; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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.forge; newRecipe.m_minStationLevel = 1; list.Add(createReq("Chitin", 20, 10)); list.Add(createReq("BellMetal_bal", 4, 2)); list.Add(createReq("TrollHide", 2, 1)); list.Add(createReq("FineWood", 10, 5)); break; case "THSwordHeavyDverger_bal": newRecipe.m_craftingStation = TableMapper.blackforge; newRecipe.m_minStationLevel = 1; 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 = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; break; case "BowDraugrFang_bal": list.Add(createReq("BowDraugrFang", 1, 0)); list.Add(createReq("AncientRelic_bal", 16, 8)); list.Add(createReq("FlametalNew", 20, 10)); list.Add(createReq("SilkReinforcedThread_bal", 10, 5)); newRecipe.m_resources = list.ToArray(); newRecipe.m_minStationLevel = 1; newRecipe.m_craftingStation = TableMapper.fletcher; 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.shamantable; newRecipe.m_minStationLevel = 1; 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 = 1; list.Add(createReq("BlackMetal", 8, 4)); list.Add(createReq("FineWood", 8, 4)); list.Add(createReq("IronNails", 10, 5)); list.Add(createReq("LinenThread", 4, 2)); break; case "BowMoltenSteel_bal": newRecipe.m_craftingStation = TableMapper.fletcher; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; list.Add(createReq("Frosteel_bal", 14, 7)); list.Add(createReq("YggdrasilWood", 8, 4)); list.Add(createReq("IronNails", 8, 5)); list.Add(createReq("SilkReinforcedThread_bal", 2, 1)); break; case "AtgeirFlametal_bal": newRecipe.m_craftingStation = TableMapper.blackforge; newRecipe.m_minStationLevel = 1; 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 = 1; 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", 14, 7)); list.Add(createReq("Bloodbag", 6, 3)); break; case "AxeFlametal_bal": newRecipe.m_craftingStation = TableMapper.blackforge; newRecipe.m_minStationLevel = 1; 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.shamantable; 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 = 1; 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 = 1; 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 = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; 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 "ShieldSpiked_bal": newRecipe.m_craftingStation = TableMapper.ironworks; newRecipe.m_minStationLevel = 1; list.Add(createReq("BoneFragments", 30, 15)); list.Add(createReq("HardWood_bal", 6, 3)); list.Add(createReq("IronNails", 66, 33)); list.Add(createReq("DarkSteel_bal", 6, 3)); break; case "ShieldSilverBuckler_bal": newRecipe.m_craftingStation = TableMapper.ironworks; newRecipe.m_minStationLevel = 1; list.Add(createReq("DarkSteel_bal", 4, 2)); list.Add(createReq("Silver", 6, 3)); list.Add(createReq("HardWood_bal", 4, 2)); break; case "ShieldDarkSteel_bal": newRecipe.m_craftingStation = TableMapper.ironworks; newRecipe.m_minStationLevel = 1; list.Add(createReq("DarkSteel_bal", 16, 8)); list.Add(createReq("FineWood", 4, 2)); list.Add(createReq("WolfPelt", 2, 1)); break; case "ShieldDarkSteelTower_bal": newRecipe.m_craftingStation = TableMapper.ironworks; newRecipe.m_minStationLevel = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; list.Add(createReq("Frosteel_bal", 20, 10)); list.Add(createReq("Blackwood", 20, 10)); list.Add(createReq("NorthernFur_bal", 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 = 1; 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 = 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 "ArmorFrosteelLegs_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 "HelmetFrosteel_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 "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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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 = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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.shamantable; newRecipe.m_minStationLevel = 1; 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 "HelmetDarkHood_bal": newRecipe.m_craftingStation = TableMapper.heavyWorkbench; newRecipe.m_minStationLevel = 1; list.Add(createReq("LeatherScraps", 8, 4)); list.Add(createReq("ScaleHide", 4, 2)); list.Add(createReq("BronzeNails", 4, 0));