Decompiled source of Armory v1.1.9
Armory.dll
Decompiled 2 weeks ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Threading; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using ItemManager; using JetBrains.Annotations; using Jewelcrafting; using LocalizationManager; using Microsoft.CodeAnalysis; using PieceManager; using ServerSync; using TMPro; using UnityEngine; using YamlDotNet.Core; using YamlDotNet.Core.Events; using YamlDotNet.Core.Tokens; using YamlDotNet.Helpers; using YamlDotNet.Serialization; using YamlDotNet.Serialization.Converters; using YamlDotNet.Serialization.EventEmitters; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.NodeDeserializers; using YamlDotNet.Serialization.NodeTypeResolvers; using YamlDotNet.Serialization.ObjectFactories; using YamlDotNet.Serialization.ObjectGraphTraversalStrategies; using YamlDotNet.Serialization.ObjectGraphVisitors; using YamlDotNet.Serialization.Schemas; using YamlDotNet.Serialization.TypeInspectors; using YamlDotNet.Serialization.TypeResolvers; using YamlDotNet.Serialization.Utilities; using YamlDotNet.Serialization.ValueDeserializers; [assembly: ComVisible(false)] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Guid("E0E2F92E-557C-4A05-9D89-AA92A0BD75C4")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyFileVersion("1.1.9")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Therzie")] [assembly: AssemblyProduct("Armory")] [assembly: AssemblyCopyright("Copyright © 2022")] [assembly: AssemblyTrademark("")] [assembly: AssemblyTitle("Armory")] [assembly: AssemblyDescription("")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.9.0")] [module: <2e3ad713-eabe-4dfc-b4a9-bbe5d355b777>RefSafetyRules(11)] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [<f74c6127-4f5b-4db3-a4df-caecbbd0da93>Embedded] internal sealed class <f74c6127-4f5b-4db3-a4df-caecbbd0da93>EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [<f74c6127-4f5b-4db3-a4df-caecbbd0da93>Embedded] [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class <75b0ea3e-2c06-4e53-958f-4d89854efa6b>NullableAttribute : Attribute { public readonly byte[] NullableFlags; public <75b0ea3e-2c06-4e53-958f-4d89854efa6b>NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public <75b0ea3e-2c06-4e53-958f-4d89854efa6b>NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [<f74c6127-4f5b-4db3-a4df-caecbbd0da93>Embedded] [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class <76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContextAttribute : Attribute { public readonly byte Flag; public <76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContextAttribute(byte P_0) { Flag = P_0; } } [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] [<f74c6127-4f5b-4db3-a4df-caecbbd0da93>Embedded] [CompilerGenerated] internal sealed class <2e3ad713-eabe-4dfc-b4a9-bbe5d355b777>RefSafetyRulesAttribute : Attribute { public readonly int Version; public <2e3ad713-eabe-4dfc-b4a9-bbe5d355b777>RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Armory { public class ArmoryMaterialSwap { [HarmonyPatch(typeof(Player), "OnSpawned")] [HarmonyPriority(0)] private static class ZNetScene_Awake_Patch_ArmoryMaterialSwap { [HarmonyPatch(typeof(FejdStartup), "Awake")] private static class FejdStartup_Awake_Patch { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] private static void Postfix(FejdStartup __instance) { FirstInit = false; } } public static bool FirstInit; [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] private static void ReplaceItem(string monsterName, string itemName, string itemIWantToReplace, string itemIWillReplaceTo, int quantityForCreation, int quantityForUpgrade) { if (!Object.op_Implicit((Object)(object)ZNetScene.instance.GetPrefab(monsterName))) { return; } GameObject itemPrefab = ObjectDB.instance.GetItemPrefab(itemName); if (!Object.op_Implicit((Object)(object)itemPrefab)) { return; } Recipe recipe = ObjectDB.instance.GetRecipe(itemPrefab.GetComponent<ItemDrop>().m_itemData); if (!Object.op_Implicit((Object)(object)recipe)) { return; } Requirement[] resources = recipe.m_resources; foreach (Requirement val in resources) { if (((Object)val.m_resItem).name == itemIWantToReplace) { val.m_resItem = ObjectDB.instance.GetItemPrefab(itemIWillReplaceTo).GetComponent<ItemDrop>(); val.m_amount = quantityForCreation; val.m_amountPerLevel = quantityForUpgrade; } } } [HarmonyPriority(0)] [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] private static void Postfix(ZNetScene __instance) { if (!FirstInit) { FirstInit = true; ReplaceItem("Fox_TW", "ArmorLeatherLegs_TW", "DeerHide", "FoxPelt_TW", 3, 2); ReplaceItem("Fox_TW", "ArmorLeatherChest_TW", "LeatherScraps", "FoxPelt_TW", 3, 2); ReplaceItem("GrizzlyBear_TW", "ArmorVidarChest_TW", "WolfPelt", "GrizzlyBearPelt_TW", 4, 2); ReplaceItem("BlackBear_TW", "HelmetBlackBear_TW", "TrollBone_TW", "TrophyBlackBear_TW", 1, 0); ReplaceItem("BlackBear_TW", "HelmetBlackBear_TW", "DeerHide", "BlackBearPelt_TW", 6, 3); ReplaceItem("GrizzlyBear_TW", "HelmetGrizzlyBear_TW", "Obsidian", "TrophyGrizzlyBear_TW", 1, 0); ReplaceItem("GrizzlyBear_TW", "HelmetGrizzlyBear_TW", "WolfPelt", "GrizzlyBearPelt_TW", 10, 5); ReplaceItem("ArcticBear_TW", "HelmetArcticBear_TW", "FrozenClaw_TW", "TrophyArcticBear_TW", 1, 1); ReplaceItem("Razorback_TW", "HelmetRazorback_TW", "TrophyBoar", "TrophyRazorback_TW", 1, 0); ReplaceItem("SummonedImp_TW", "BeltYmir_TW", "DemonicEssence_TW", "ReginEssence_TW", 6, 0); ReplaceItem("SummonedImp_TW", "HelmetUllr_TW", "DemonicEssence_TW", "ReginEssence_TW", 8, 4); ReplaceItem("SummonedImp_TW", "ArmorUllrChest_TW", "DemonicEssence_TW", "ReginEssence_TW", 10, 5); ReplaceItem("SummonedImp_TW", "ArmorUllrLegs_TW", "DemonicEssence_TW", "ReginEssence_TW", 8, 4); } } } } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] [BepInDependency(/*Could not decode attribute arguments.*/)] [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)] [BepInPlugin("Therzie.Armory", "Armory", "1.1.9")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class ArmoryPlugin : BaseUnityPlugin { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] public enum Toggle { On = 1, Off = 0 } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] [HarmonyPatch(typeof(StationExtension), "FindExtensions")] private static class StationExtension_FindExtensionsArmory_Patch { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] private static bool Prefix(StationExtension __instance, CraftingStation station, Vector3 pos, ref List<StationExtension> extensions) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) if (((Object)((Component)station).gameObject).name == "Armory_TW(Clone)") { foreach (StationExtension allExtension in StationExtension.m_allExtensions) { if (Vector3.Distance(((Component)allExtension).transform.position, pos) < 30f && allExtension.m_craftingStation.m_name == "$piece_forge" && (allExtension.m_stack || !StationExtension.ExtensionInList(extensions, allExtension))) { extensions.Add(allExtension); } } return false; } return true; } } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] [HarmonyPatch(typeof(StationExtension), "FindClosestStationInRange", new Type[] { typeof(Vector3) })] private static class StationExtension_FindClosestStationInRangeArmory_Patch { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] private static bool Prefix(StationExtension __instance, ref CraftingStation __result, Vector3 center) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if (__instance.m_craftingStation.m_name == "$piece_forge") { __result = CraftingStation.FindClosestStationInRange(__instance.m_craftingStation.m_name, center, 30f); if (!Object.op_Implicit((Object)(object)__result)) { __result = CraftingStation.FindClosestStationInRange("$piece_armory_TW", center, 30f); } return false; } return true; } } [HarmonyPatch(typeof(ObjectDB), "Awake")] [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)] private static class DisableRecipesArmory { private static readonly List<string> disabledRecipes = new List<string>(); private static void Postfix(ObjectDB __instance) { foreach (Recipe recipe in __instance.m_recipes) { if (!((Object)(object)recipe.m_item == (Object)null) && disabledRecipes.Contains(((Object)recipe.m_item).name)) { ArmoryLogger.LogInfo((object)("ODB Disabling recipe for " + ((Object)recipe.m_item).name)); recipe.m_enabled = false; } } } } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] [HarmonyPatch(typeof(InventoryGui), "DoCrafting")] private static class KeepSocketsWhileUpgrading { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] private static void Prefix(InventoryGui __instance, [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] out ItemData __state) { if (API.IsLoaded() && __instance.m_craftRecipe.m_resources.Length != 0) { ItemData item = ((Humanoid)Player.m_localPlayer).GetInventory().GetItem(__instance.m_craftRecipe.m_resources[0].m_resItem.m_itemData.m_shared.m_name, __instance.m_craftRecipe.m_resources[0].m_resItem.m_itemData.m_quality, false); if (item != null) { List<API.GemInfo> gems = API.GetGems(item); if (gems != null && gems.Count > 0) { __state = __instance.m_craftRecipe.m_item.m_itemData; __instance.m_craftRecipe.m_item.m_itemData.m_dropPrefab = ((Component)__instance.m_craftRecipe.m_item).gameObject; API.SetGems(__state, gems); return; } } } __state = null; } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(2)] private static void Finalizer(ItemData __state) { if (__state != null) { API.SetGems(__state, new List<API.GemInfo>()); } } } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] private class ConfigurationManagerAttributes { [UsedImplicitly] public int? Order; [UsedImplicitly] public bool? Browsable; [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] [UsedImplicitly] public string Category; [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(new byte[] { 2, 1 })] [UsedImplicitly] public Action<ConfigEntryBase> CustomDrawer; } internal const string ModName = "Armory"; internal const string ModVersion = "1.1.9"; internal const string Author = "Therzie"; private const string ModGUID = "Therzie.Armory"; private static string ConfigFileName = "Therzie.Armory.cfg"; private static string ConfigFileFullPath; internal static string ConnectionError; private readonly Harmony _harmony = new Harmony("Therzie.Armory"); public static readonly ManualLogSource ArmoryLogger; private static readonly ConfigSync ConfigSync; private static ConfigEntry<Toggle> _serverConfigLocked; private static ConfigEntry<Toggle> _recipeIsActiveConfig; public void Awake() { Localizer.Load(); _serverConfigLocked = config("1 - General", "Lock Configuration", Toggle.On, "If on, the configuration is locked and can be changed by server admins only."); ConfigSync.AddLockingConfigEntry<Toggle>(_serverConfigLocked); BuildPiece.ConfigurationEnabled = true; BuildPiece buildPiece = new BuildPiece("armorystation", "Armory_TW"); buildPiece.Category.Set("Warfare"); buildPiece.Crafting.Set(PieceManager.CraftingTable.Forge); buildPiece.RequiredItems.Add("Stone", 20, recover: true); buildPiece.RequiredItems.Add("BronzeNails", 40, recover: true); buildPiece.RequiredItems.Add("Bronze", 10, recover: true); buildPiece.RequiredItems.Add("SurtlingCore", 5, recover: true); buildPiece.RequiredItems.Add("TrophyEikthyr", 1, recover: true); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "vfx_smelter_addfuel_TW"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "vfx_smelter_addore_TW"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "vfx_smelter_produce_TW"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "sfx_smelter_add_TW"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "sfx_smelter_produce_TW"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "sfx_chest_open_TW"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "sfx_chest_close_TW"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("armory"), "CargoCrate_TW"); Item item = new Item("armory", "HelmetRazorback_TW"); item.Configurable = Configurability.Recipe; item.Crafting.Add("Armory_TW", 1); item.RequiredItems.Add("RazorbackLeather_TW", 8); item.RequiredItems.Add("RazorbackTusk_TW", 6); item.RequiredItems.Add("TrophyBoar", 2); item.RequiredUpgradeItems.Add("RazorbackLeather_TW", 4); item.RequiredUpgradeItems.Add("RazorbackTusk_TW", 3); item.CraftAmount = 1; Item item2 = new Item("armory", "ArmorRazorbackChest_TW"); item2.Configurable = Configurability.Recipe; item2.Crafting.Add("Armory_TW", 1); item2.RequiredItems.Add("RazorbackLeather_TW", 12); item2.RequiredItems.Add("Bronze", 6); item2.RequiredItems.Add("RazorbackTusk_TW", 2); item2.RequiredUpgradeItems.Add("RazorbackLeather_TW", 6); item2.RequiredUpgradeItems.Add("Bronze", 3); item2.CraftAmount = 1; Item item3 = new Item("armory", "ArmorRazorbackLegs_TW"); item3.Configurable = Configurability.Recipe; item3.Crafting.Add("Armory_TW", 1); item3.RequiredItems.Add("RazorbackLeather_TW", 8); item3.RequiredItems.Add("Bronze", 6); item3.RequiredItems.Add("RazorbackTusk_TW", 2); item3.RequiredUpgradeItems.Add("RazorbackLeather_TW", 4); item3.RequiredUpgradeItems.Add("Bronze", 3); item3.CraftAmount = 1; Item item4 = new Item("armory", "HelmetBlackBear_TW"); item4.Configurable = Configurability.Recipe; item4.Crafting.Add("Armory_TW", 2); item4.RequiredItems.Add("DeerHide", 6); item4.RequiredItems.Add("Bronze", 12); item4.RequiredItems.Add("TrollBone_TW", 4); item4.RequiredUpgradeItems.Add("DeerHide", 3); item4.RequiredUpgradeItems.Add("Bronze", 6); item4.CraftAmount = 1; Item item5 = new Item("armory", "HelmetGrizzlyBear_TW"); item5.Configurable = Configurability.Recipe; item5.Crafting.Add("Armory_TW", 4); item5.RequiredItems.Add("WolfPelt", 8); item5.RequiredItems.Add("Silver", 18); item5.RequiredItems.Add("WolfFang", 6); item5.RequiredItems.Add("Obsidian", 12); item5.RequiredUpgradeItems.Add("WolfPelt", 4); item5.RequiredUpgradeItems.Add("Silver", 9); item5.RequiredUpgradeItems.Add("WolfFang", 3); item5.CraftAmount = 1; Item item6 = new Item("armory", "HelmetArcticBear_TW"); item6.Configurable = Configurability.Recipe; item6.Crafting.Add("Armory_TW", 4); item6.RequiredItems.Add("ArcticBearPelt_TW", 12); item6.RequiredItems.Add("TyraniumBar_TW", 15); item6.RequiredItems.Add("FrozenFang_TW", 12); item6.RequiredItems.Add("FrozenClaw_TW", 15); item6.RequiredUpgradeItems.Add("ArcticBearPelt_TW", 6); item6.RequiredUpgradeItems.Add("TyraniumBar_TW", 8); item6.RequiredUpgradeItems.Add("FrozenFang_TW", 6); item6.RequiredUpgradeItems.Add("FrozenClaw_TW", 8); item6.CraftAmount = 1; Item item7 = new Item("armory", "HelmetUllr_TW"); item7.Configurable = Configurability.Recipe; item7.Crafting.Add("Armory_TW", 4); item7.RequiredItems.Add("DemonicEssence_TW", 8); item7.RequiredItems.Add("ArcticMammothTusk_TW", 20); item7.RequiredItems.Add("MinotaurHorn_TW", 20); item7.RequiredItems.Add("BlackIce_TW", 20); item7.RequiredUpgradeItems.Add("DemonicEssence_TW", 6); item7.RequiredUpgradeItems.Add("ArcticMammothTusk_TW", 8); item7.RequiredUpgradeItems.Add("MinotaurHorn_TW", 6); item7.RequiredUpgradeItems.Add("BlackIce_TW", 8); item7.CraftAmount = 1; Item item8 = new Item("armory", "ArmorUllrChest_TW"); item8.Configurable = Configurability.Recipe; item8.Crafting.Add("Armory_TW", 4); item8.RequiredItems.Add("DemonicEssence_TW", 10); item8.RequiredItems.Add("AshenScale_TW", 30); item8.RequiredItems.Add("AshenFang_TW", 30); item8.RequiredItems.Add("ArcticBearPelt_TW", 20); item8.RequiredUpgradeItems.Add("DemonicEssence_TW", 6); item8.RequiredUpgradeItems.Add("AshenScale_TW", 8); item8.RequiredUpgradeItems.Add("AshenFang_TW", 6); item8.RequiredUpgradeItems.Add("ArcticBearPelt_TW", 8); item8.CraftAmount = 1; Item item9 = new Item("armory", "ArmorUllrLegs_TW"); item9.Configurable = Configurability.Recipe; item9.Crafting.Add("Armory_TW", 4); item9.RequiredItems.Add("DemonicEssence_TW", 8); item9.RequiredItems.Add("FrozenClaw_TW", 30); item9.RequiredItems.Add("ArcticWolfPelt_TW", 30); item9.RequiredItems.Add("AshenFur_TW", 20); item9.RequiredUpgradeItems.Add("DemonicEssence_TW", 6); item9.RequiredUpgradeItems.Add("FrozenClaw_TW", 8); item9.RequiredUpgradeItems.Add("ArcticWolfPelt_TW", 6); item9.RequiredUpgradeItems.Add("AshenFur_TW", 8); item9.CraftAmount = 1; Item item10 = new Item("armory", "BeltYmir_TW"); item10.Configurable = Configurability.Recipe; item10.Crafting.Add(ItemManager.CraftingTable.MageTable, 2); item10.RequiredItems.Add("BeltStrength", 1); item10.RequiredItems.Add("DemonicEssence_TW", 20); item10.RequiredItems.Add("YmirRemains", 10); item10.CraftAmount = 1; Item item11 = new Item("armory", "CapeTrollBlack_TW"); item11.Configurable = Configurability.Recipe; item11.Crafting.Add(ItemManager.CraftingTable.Workbench, 2); item11.RequiredItems.Add("TrollHide", 8); item11.RequiredItems.Add("Coal", 8); item11.RequiredItems.Add("CapeTrollHide", 1); item11.RequiredUpgradeItems.Add("TrollHide", 3); item11.RequiredUpgradeItems.Add("Coal", 3); item11.RequiredUpgradeItems.Add("BoneFragments", 2); item11.CraftAmount = 1; Item item12 = new Item("armory", "HelmetLeather_TW"); item12.Configurable = Configurability.Recipe; item12.Crafting.Add(ItemManager.CraftingTable.Workbench, 2); item12.RequiredItems.Add("HelmetLeather", 1); item12.RequiredItems.Add("TrophyDeer", 1); item12.RequiredItems.Add("DeerHide", 4); item12.RequiredUpgradeItems.Add("LeatherScraps", 2); item12.RequiredUpgradeItems.Add("DeerHide", 2); item12.CraftAmount = 1; Item item13 = new Item("armory", "ArmorLeatherChest_TW"); item13.Configurable = Configurability.Recipe; item13.Crafting.Add(ItemManager.CraftingTable.Workbench, 2); item13.RequiredItems.Add("ArmorLeatherChest", 1); item13.RequiredItems.Add("DeerHide", 6); item13.RequiredItems.Add("LeatherScraps", 3); item13.RequiredUpgradeItems.Add("LeatherScraps", 2); item13.RequiredUpgradeItems.Add("DeerHide", 3); item13.CraftAmount = 1; Item item14 = new Item("armory", "ArmorLeatherLegs_TW"); item14.Configurable = Configurability.Recipe; item14.Crafting.Add(ItemManager.CraftingTable.Workbench, 2); item14.RequiredItems.Add("ArmorLeatherLegs", 1); item14.RequiredItems.Add("LeatherScraps", 6); item14.RequiredItems.Add("DeerHide", 3); item14.RequiredUpgradeItems.Add("LeatherScraps", 3); item14.RequiredUpgradeItems.Add("DeerHide", 2); item14.CraftAmount = 1; Item item15 = new Item("armory", "HelmetRogue_TW"); item15.Configurable = Configurability.Recipe; item15.Crafting.Add("Armory_TW", 1); item15.RequiredItems.Add("HelmetTrollLeather", 1); item15.RequiredItems.Add("TrollHide", 8); item15.RequiredItems.Add("GreydwarfEye", 8); item15.RequiredUpgradeItems.Add("TrollHide", 4); item15.RequiredUpgradeItems.Add("GreydwarfEye", 4); item15.RequiredUpgradeItems.Add("Coal", 3); item15.CraftAmount = 1; Item item16 = new Item("armory", "ArmorRogueChest_TW"); item16.Configurable = Configurability.Recipe; item16.Crafting.Add("Armory_TW", 1); item16.RequiredItems.Add("ArmorTrollLeatherChest", 1); item16.RequiredItems.Add("BoneFragments", 10); item16.RequiredItems.Add("TrollBone_TW", 2); item16.RequiredUpgradeItems.Add("TrollHide", 3); item16.RequiredUpgradeItems.Add("BoneFragments", 4); item16.RequiredUpgradeItems.Add("TrollBone_TW", 1); item16.CraftAmount = 1; Item item17 = new Item("armory", "ArmorRogueLegs_TW"); item17.Configurable = Configurability.Recipe; item17.Crafting.Add("Armory_TW", 1); item17.RequiredItems.Add("ArmorTrollLeatherLegs", 1); item17.RequiredItems.Add("TrollHide", 8); item17.RequiredItems.Add("DeerHide", 6); item17.RequiredUpgradeItems.Add("TrollHide", 4); item17.RequiredUpgradeItems.Add("BoneFragments", 3); item17.RequiredUpgradeItems.Add("DeerHide", 3); item17.CraftAmount = 1; Item item18 = new Item("armory", "HelmetRogueIron_TW"); item18.Configurable = Configurability.Recipe; item18.Crafting.Add("Armory_TW", 2); item18.RequiredItems.Add("HelmetRogue_TW", 1); item18.RequiredItems.Add("Iron", 12); item18.RequiredItems.Add("RottenPelt_TW", 4); item18.RequiredUpgradeItems.Add("Iron", 6); item18.RequiredUpgradeItems.Add("RottenPelt_TW", 2); item18.RequiredUpgradeItems.Add("Ooze", 3); item18.CraftAmount = 1; Item item19 = new Item("armory", "ArmorRogueIronChest_TW"); item19.Configurable = Configurability.Recipe; item19.Crafting.Add("Armory_TW", 2); item19.RequiredItems.Add("ArmorRogueChest_TW", 1); item19.RequiredItems.Add("Iron", 12); item19.RequiredItems.Add("RottenPelt_TW", 6); item19.RequiredUpgradeItems.Add("Iron", 6); item19.RequiredUpgradeItems.Add("RottenPelt_TW", 3); item19.RequiredUpgradeItems.Add("WitheredBone", 2); item19.CraftAmount = 1; Item item20 = new Item("armory", "ArmorRogueIronLegs_TW"); item20.Configurable = Configurability.Recipe; item20.Crafting.Add("Armory_TW", 2); item20.RequiredItems.Add("ArmorRogueLegs_TW", 1); item20.RequiredItems.Add("Iron", 12); item20.RequiredItems.Add("RottenPelt_TW", 4); item20.RequiredUpgradeItems.Add("Iron", 6); item20.RequiredUpgradeItems.Add("RottenPelt_TW", 2); item20.RequiredUpgradeItems.Add("Entrails", 4); item20.CraftAmount = 1; Item item21 = new Item("armory", "HelmetRogueSilver_TW"); item21.Configurable = Configurability.Recipe; item21.Crafting.Add("Armory_TW", 3); item21.RequiredItems.Add("HelmetRogueIron_TW", 1); item21.RequiredItems.Add("Silver", 14); item21.RequiredItems.Add("WolfFang", 4); item21.RequiredItems.Add("JuteRed", 2); item21.RequiredUpgradeItems.Add("Silver", 7); item21.RequiredUpgradeItems.Add("WolfFang", 2); item21.RequiredUpgradeItems.Add("JuteRed", 1); item21.CraftAmount = 1; Item item22 = new Item("armory", "ArmorRogueSilverChest_TW"); item22.Configurable = Configurability.Recipe; item22.Crafting.Add("Armory_TW", 3); item22.RequiredItems.Add("ArmorRogueIronChest_TW", 1); item22.RequiredItems.Add("Silver", 14); item22.RequiredItems.Add("JuteRed", 6); item22.RequiredItems.Add("WolfPelt", 4); item22.RequiredUpgradeItems.Add("Silver", 7); item22.RequiredUpgradeItems.Add("JuteRed", 3); item22.RequiredUpgradeItems.Add("WolfPelt", 2); item22.CraftAmount = 1; Item item23 = new Item("armory", "ArmorRogueSilverLegs_TW"); item23.Configurable = Configurability.Recipe; item23.Crafting.Add("Armory_TW", 3); item23.RequiredItems.Add("ArmorRogueIronLegs_TW", 1); item23.RequiredItems.Add("Silver", 14); item23.RequiredItems.Add("Obsidian", 8); item23.RequiredItems.Add("JuteRed", 4); item23.RequiredUpgradeItems.Add("Silver", 7); item23.RequiredUpgradeItems.Add("Obsidian", 4); item23.RequiredUpgradeItems.Add("JuteRed", 2); item23.CraftAmount = 1; Item item24 = new Item("armory", "HelmetRogueBM_TW"); item24.Configurable = Configurability.Recipe; item24.Crafting.Add("Armory_TW", 4); item24.RequiredItems.Add("HelmetRogueSilver_TW", 1); item24.RequiredItems.Add("BlackMetal", 16); item24.RequiredItems.Add("LinenThread", 8); item24.RequiredItems.Add("LoxPelt", 4); item24.RequiredUpgradeItems.Add("BlackMetal", 8); item24.RequiredUpgradeItems.Add("LinenThread", 4); item24.RequiredUpgradeItems.Add("LoxPelt", 2); item24.CraftAmount = 1; Item item25 = new Item("armory", "ArmorRogueBMChest_TW"); item25.Configurable = Configurability.Recipe; item25.Crafting.Add("Armory_TW", 4); item25.RequiredItems.Add("ArmorRogueSilverChest_TW", 1); item25.RequiredItems.Add("BlackMetal", 16); item25.RequiredItems.Add("LoxPelt", 6); item25.RequiredItems.Add("LoxBone_TW", 4); item25.RequiredUpgradeItems.Add("BlackMetal", 8); item25.RequiredUpgradeItems.Add("LoxPelt", 3); item25.RequiredUpgradeItems.Add("LoxBone_TW", 2); item25.CraftAmount = 1; Item item26 = new Item("armory", "ArmorRogueBMLegs_TW"); item26.Configurable = Configurability.Recipe; item26.Crafting.Add("Armory_TW", 4); item26.RequiredItems.Add("ArmorRogueSilverLegs_TW", 1); item26.RequiredItems.Add("BlackMetal", 16); item26.RequiredItems.Add("LinenThread", 6); item26.RequiredItems.Add("Needle", 6); item26.RequiredUpgradeItems.Add("BlackMetal", 8); item26.RequiredUpgradeItems.Add("LinenThread", 3); item26.RequiredUpgradeItems.Add("Needle", 3); item26.CraftAmount = 1; Item item27 = new Item("armory", "HelmetRogueCarapace_TW"); item27.Configurable = Configurability.Recipe; item27.Crafting.Add("Armory_TW", 4); item27.RequiredItems.Add("HelmetRogueBM_TW", 1); item27.RequiredItems.Add("Softtissue", 18); item27.RequiredItems.Add("Eitr", 6); item27.RequiredItems.Add("VenomousFang_TW", 6); item27.RequiredUpgradeItems.Add("Softtissue", 9); item27.RequiredUpgradeItems.Add("Eitr", 3); item27.RequiredUpgradeItems.Add("VenomousFang_TW", 3); item27.CraftAmount = 1; Item item28 = new Item("armory", "ArmorRogueCarapaceChest_TW"); item28.Configurable = Configurability.Recipe; item28.Crafting.Add("Armory_TW", 4); item28.RequiredItems.Add("ArmorRogueBMChest_TW", 1); item28.RequiredItems.Add("Softtissue", 18); item28.RequiredItems.Add("Carapace", 10); item28.RequiredItems.Add("Eitr", 8); item28.RequiredUpgradeItems.Add("Softtissue", 9); item28.RequiredUpgradeItems.Add("Carapace", 5); item28.RequiredUpgradeItems.Add("Eitr", 4); item28.CraftAmount = 1; Item item29 = new Item("armory", "ArmorRogueCarapaceLegs_TW"); item29.Configurable = Configurability.Recipe; item29.Crafting.Add("Armory_TW", 4); item29.RequiredItems.Add("ArmorRogueBMLegs_TW", 1); item29.RequiredItems.Add("Softtissue", 18); item29.RequiredItems.Add("Eitr", 6); item29.RequiredItems.Add("DarkCrystal_TW", 6); item29.RequiredUpgradeItems.Add("Softtissue", 9); item29.RequiredUpgradeItems.Add("Eitr", 3); item29.RequiredUpgradeItems.Add("DarkCrystal_TW", 3); item29.CraftAmount = 1; Item item30 = new Item("armory", "HelmetRogueTyranium_TW"); item30.Configurable = Configurability.Recipe; item30.Crafting.Add("Armory_TW", 4); item30.RequiredItems.Add("HelmetRogueCarapace_TW", 1); item30.RequiredItems.Add("TyraniumBar_TW", 25); item30.RequiredItems.Add("GlacierCrystal_TW", 12); item30.RequiredItems.Add("FrozenFang_TW", 8); item30.RequiredUpgradeItems.Add("TyraniumBar_TW", 12); item30.RequiredUpgradeItems.Add("GlacierCrystal_TW", 6); item30.RequiredUpgradeItems.Add("FrozenFang_TW", 4); item30.CraftAmount = 1; Item item31 = new Item("armory", "ArmorRogueTyraniumChest_TW"); item31.Configurable = Configurability.Recipe; item31.Crafting.Add("Armory_TW", 4); item31.RequiredItems.Add("ArmorRogueCarapaceChest_TW", 1); item31.RequiredItems.Add("TyraniumBar_TW", 25); item31.RequiredItems.Add("ArcticMammothPelt_TW", 12); item31.RequiredItems.Add("ArcticBearPelt_TW", 8); item31.RequiredUpgradeItems.Add("TyraniumBar_TW", 5); item31.RequiredUpgradeItems.Add("ArcticMammothPelt_TW", 6); item31.RequiredUpgradeItems.Add("ArcticBearPelt_TW", 4); item31.CraftAmount = 1; Item item32 = new Item("armory", "ArmorRogueTyraniumLegs_TW"); item32.Configurable = Configurability.Recipe; item32.Crafting.Add("Armory_TW", 4); item32.RequiredItems.Add("ArmorRogueCarapaceLegs_TW", 1); item32.RequiredItems.Add("TyraniumBar_TW", 25); item32.RequiredItems.Add("ArcticWolfPelt_TW", 12); item32.RequiredItems.Add("ArcticSerpentScale_TW", 8); item32.RequiredUpgradeItems.Add("TyraniumBar_TW", 12); item32.RequiredUpgradeItems.Add("ArcticWolfPelt_TW", 6); item32.RequiredUpgradeItems.Add("ArcticSerpentScale_TW", 4); item32.CraftAmount = 1; Item item33 = new Item("armory", "HelmetVigorous_TW"); item33.Configurable = Configurability.Recipe; item33.Crafting.Add("Armory_TW", 1); item33.RequiredItems.Add("HelmetBronze", 1); item33.RequiredItems.Add("Bronze", 6); item33.RequiredItems.Add("BoneFragments", 4); item33.RequiredUpgradeItems.Add("Bronze", 3); item33.RequiredUpgradeItems.Add("DeerHide", 1); item33.RequiredUpgradeItems.Add("BoneFragments", 2); item33.CraftAmount = 1; Item item34 = new Item("armory", "ArmorVigorousChest_TW"); item34.Configurable = Configurability.Recipe; item34.Crafting.Add("Armory_TW", 1); item34.RequiredItems.Add("ArmorBronzeChest", 1); item34.RequiredItems.Add("Bronze", 8); item34.RequiredItems.Add("TrollBone_TW", 4); item34.RequiredUpgradeItems.Add("Bronze", 4); item34.RequiredUpgradeItems.Add("DeerHide", 2); item34.RequiredUpgradeItems.Add("TrollBone_TW", 2); item34.CraftAmount = 1; Item item35 = new Item("armory", "ArmorVigorousLegs_TW"); item35.Configurable = Configurability.Recipe; item35.Crafting.Add("Armory_TW", 1); item35.RequiredItems.Add("ArmorBronzeLegs", 1); item35.RequiredItems.Add("Bronze", 6); item35.RequiredItems.Add("DeerHide", 4); item35.RequiredUpgradeItems.Add("Bronze", 3); item35.RequiredUpgradeItems.Add("LeatherScraps", 4); item35.RequiredUpgradeItems.Add("DeerHide", 2); item35.CraftAmount = 1; Item item36 = new Item("armory", "HelmetVigorousIron_TW"); item36.Configurable = Configurability.Recipe; item36.Crafting.Add("Armory_TW", 2); item36.RequiredItems.Add("HelmetVigorous_TW", 1); item36.RequiredItems.Add("Iron", 12); item36.RequiredItems.Add("RottenPelt_TW", 4); item36.RequiredItems.Add("Ooze", 4); item36.RequiredUpgradeItems.Add("Iron", 6); item36.RequiredUpgradeItems.Add("RottenPelt_TW", 2); item36.RequiredUpgradeItems.Add("Ooze", 2); item36.CraftAmount = 1; Item item37 = new Item("armory", "ArmorVigorousIronChest_TW"); item37.Configurable = Configurability.Recipe; item37.Crafting.Add("Armory_TW", 2); item37.RequiredItems.Add("ArmorVigorousChest_TW", 1); item37.RequiredItems.Add("Iron", 12); item37.RequiredItems.Add("Entrails", 6); item37.RequiredItems.Add("WitheredBone", 4); item37.RequiredUpgradeItems.Add("Iron", 6); item37.RequiredUpgradeItems.Add("Entrails", 3); item37.RequiredUpgradeItems.Add("WitheredBone", 2); item37.CraftAmount = 1; Item item38 = new Item("armory", "ArmorVigorousIronLegs_TW"); item38.Configurable = Configurability.Recipe; item38.Crafting.Add("Armory_TW", 2); item38.RequiredItems.Add("ArmorVigorousLegs_TW", 1); item38.RequiredItems.Add("Iron", 12); item38.RequiredItems.Add("RottenPelt_TW", 4); item38.RequiredItems.Add("Guck", 6); item38.RequiredUpgradeItems.Add("Iron", 12); item38.RequiredUpgradeItems.Add("RottenPelt_TW", 3); item38.RequiredUpgradeItems.Add("Guck", 3); item38.CraftAmount = 1; Item item39 = new Item("armory", "HelmetVigorousSilver_TW"); item39.Configurable = Configurability.Recipe; item39.Crafting.Add("Armory_TW", 3); item39.RequiredItems.Add("HelmetVigorousIron_TW", 1); item39.RequiredItems.Add("Silver", 25); item39.RequiredItems.Add("Obsidian", 12); item39.RequiredItems.Add("WolfFang", 6); item39.RequiredUpgradeItems.Add("Silver", 12); item39.RequiredUpgradeItems.Add("Obsidian", 6); item39.RequiredUpgradeItems.Add("WolfFang", 3); item39.CraftAmount = 1; Item item40 = new Item("armory", "ArmorVigorousSilverChest_TW"); item40.Configurable = Configurability.Recipe; item40.Crafting.Add("Armory_TW", 3); item40.RequiredItems.Add("ArmorVigorousIronChest_TW", 1); item40.RequiredItems.Add("Silver", 25); item40.RequiredItems.Add("WolfPelt", 6); item40.RequiredItems.Add("Crystal", 6); item40.RequiredUpgradeItems.Add("Silver", 12); item40.RequiredUpgradeItems.Add("WolfPelt", 3); item40.RequiredUpgradeItems.Add("Crystal", 3); item40.CraftAmount = 1; Item item41 = new Item("armory", "ArmorVigorousSilverLegs_TW"); item41.Configurable = Configurability.Recipe; item41.Crafting.Add("Armory_TW", 3); item41.RequiredItems.Add("ArmorVigorousIronLegs_TW", 1); item41.RequiredItems.Add("Silver", 25); item41.RequiredItems.Add("WolfHairBundle", 15); item41.RequiredItems.Add("WolfPelt", 8); item41.RequiredUpgradeItems.Add("Silver", 12); item41.RequiredUpgradeItems.Add("WolfHairBundle", 8); item41.RequiredUpgradeItems.Add("WolfPelt", 4); item41.CraftAmount = 1; Item item42 = new Item("armory", "HelmetVigorousBM_TW"); item42.Configurable = Configurability.Recipe; item42.Crafting.Add("Armory_TW", 4); item42.RequiredItems.Add("HelmetVigorousSilver_TW", 1); item42.RequiredItems.Add("BlackMetal", 25); item42.RequiredItems.Add("LinenThread", 12); item42.RequiredItems.Add("Tar", 8); item42.RequiredUpgradeItems.Add("BlackMetal", 25); item42.RequiredUpgradeItems.Add("LinenThread", 6); item42.RequiredUpgradeItems.Add("Tar", 4); item42.CraftAmount = 1; Item item43 = new Item("armory", "ArmorVigorousBMChest_TW"); item43.Configurable = Configurability.Recipe; item43.Crafting.Add("Armory_TW", 4); item43.RequiredItems.Add("ArmorVigorousSilverChest_TW", 1); item43.RequiredItems.Add("BlackMetal", 25); item43.RequiredItems.Add("LoxPelt", 8); item43.RequiredItems.Add("LoxBone_TW", 6); item43.RequiredUpgradeItems.Add("BlackMetal", 12); item43.RequiredUpgradeItems.Add("LoxPelt", 4); item43.RequiredUpgradeItems.Add("LoxBone_TW", 3); item43.CraftAmount = 1; Item item44 = new Item("armory", "ArmorVigorousBMLegs_TW"); item44.Configurable = Configurability.Recipe; item44.Crafting.Add("Armory_TW", 4); item44.RequiredItems.Add("ArmorVigorousSilverLegs_TW", 1); item44.RequiredItems.Add("BlackMetal", 25); item44.RequiredItems.Add("Tar", 10); item44.RequiredItems.Add("Needle", 8); item44.RequiredUpgradeItems.Add("BlackMetal", 12); item44.RequiredUpgradeItems.Add("Tar", 5); item44.RequiredUpgradeItems.Add("Needle", 4); item44.CraftAmount = 1; Item item45 = new Item("armory", "HelmetVigorousCarapace_TW"); item45.Configurable = Configurability.Recipe; item45.Crafting.Add("Armory_TW", 4); item45.RequiredItems.Add("HelmetVigorousBM_TW", 1); item45.RequiredItems.Add("Carapace", 25); item45.RequiredItems.Add("Eitr", 8); item45.RequiredItems.Add("Mandible", 6); item45.RequiredUpgradeItems.Add("Carapace", 12); item45.RequiredUpgradeItems.Add("Eitr", 4); item45.RequiredUpgradeItems.Add("Mandible", 3); item45.CraftAmount = 1; Item item46 = new Item("armory", "ArmorVigorousCarapaceChest_TW"); item46.Configurable = Configurability.Recipe; item46.Crafting.Add("Armory_TW", 4); item46.RequiredItems.Add("ArmorVigorousBMChest_TW", 1); item46.RequiredItems.Add("Carapace", 25); item46.RequiredItems.Add("Eitr", 8); item46.RequiredItems.Add("ScaleHide", 10); item46.RequiredUpgradeItems.Add("Carapace", 12); item46.RequiredUpgradeItems.Add("Eitr", 4); item46.RequiredUpgradeItems.Add("ScaleHide", 5); item46.CraftAmount = 1; Item item47 = new Item("armory", "ArmorVigorousCarapaceLegs_TW"); item47.Configurable = Configurability.Recipe; item47.Crafting.Add("Armory_TW", 4); item47.RequiredItems.Add("ArmorVigorousBMLegs_TW", 1); item47.RequiredItems.Add("Carapace", 25); item47.RequiredItems.Add("Eitr", 8); item47.RequiredItems.Add("Softtissue", 10); item47.RequiredUpgradeItems.Add("Carapace", 12); item47.RequiredUpgradeItems.Add("Eitr", 4); item47.RequiredUpgradeItems.Add("Softtissue", 5); item47.CraftAmount = 1; Item item48 = new Item("armory", "HelmetVigorousTyranium_TW"); item48.Configurable = Configurability.Recipe; item48.Crafting.Add("Armory_TW", 4); item48.RequiredItems.Add("HelmetVigorousCarapace_TW", 1); item48.RequiredItems.Add("TyraniumBar_TW", 30); item48.RequiredItems.Add("GlacierCrystal_TW", 15); item48.RequiredItems.Add("ArcticMammothTusk_TW", 8); item48.RequiredUpgradeItems.Add("TyraniumBar_TW", 15); item48.RequiredUpgradeItems.Add("GlacierCrystal_TW", 12); item48.RequiredUpgradeItems.Add("ArcticMammothTusk_TW", 4); item48.CraftAmount = 1; Item item49 = new Item("armory", "ArmorVigorousTyraniumChest_TW"); item49.Configurable = Configurability.Recipe; item49.Crafting.Add("Armory_TW", 4); item49.RequiredItems.Add("ArmorVigorousCarapaceChest_TW", 1); item49.RequiredItems.Add("TyraniumBar_TW", 30); item49.RequiredItems.Add("ArcticWolfPelt_TW", 8); item49.RequiredItems.Add("FrozenClaw_TW", 8); item49.RequiredUpgradeItems.Add("TyraniumBar_TW", 15); item49.RequiredUpgradeItems.Add("ArcticWolfPelt_TW", 4); item49.RequiredUpgradeItems.Add("FrozenClaw_TW", 4); item49.CraftAmount = 1; Item item50 = new Item("armory", "ArmorVigorousTyraniumLegs_TW"); item50.Configurable = Configurability.Recipe; item50.Crafting.Add("Armory_TW", 4); item50.RequiredItems.Add("ArmorVigorousCarapaceLegs_TW", 1); item50.RequiredItems.Add("TyraniumBar_TW", 30); item50.RequiredItems.Add("ArcticBearPelt_TW", 8); item50.RequiredItems.Add("FrozenFang_TW", 8); item50.RequiredUpgradeItems.Add("TyraniumBar_TW", 15); item50.RequiredUpgradeItems.Add("ArcticBearPelt_TW", 4); item50.RequiredUpgradeItems.Add("FrozenFang_TW", 4); item50.CraftAmount = 1; Item item51 = new Item("armory", "HelmetWarrior_TW"); item51.Configurable = Configurability.Recipe; item51.Crafting.Add("Armory_TW", 2); item51.RequiredItems.Add("HelmetIron", 1); item51.RequiredItems.Add("Iron", 12); item51.RequiredItems.Add("RottenPelt_TW", 6); item51.RequiredItems.Add("WitheredBone", 3); item51.RequiredUpgradeItems.Add("Iron", 12); item51.RequiredUpgradeItems.Add("RottenPelt_TW", 3); item51.RequiredUpgradeItems.Add("WitheredBone", 2); item51.CraftAmount = 1; Item item52 = new Item("armory", "ArmorWarriorChest_TW"); item52.Configurable = Configurability.Recipe; item52.Crafting.Add("Armory_TW", 2); item52.RequiredItems.Add("ArmorIronChest", 1); item52.RequiredItems.Add("Iron", 12); item52.RequiredItems.Add("RottenPelt_TW", 6); item52.RequiredItems.Add("Guck", 6); item52.RequiredUpgradeItems.Add("Iron", 12); item52.RequiredUpgradeItems.Add("RottenPelt_TW", 3); item52.RequiredUpgradeItems.Add("Guck", 4); item52.CraftAmount = 1; Item item53 = new Item("armory", "ArmorWarriorLegs_TW"); item53.Configurable = Configurability.Recipe; item53.Crafting.Add("Armory_TW", 2); item53.RequiredItems.Add("ArmorIronLegs", 1); item53.RequiredItems.Add("Iron", 12); item53.RequiredItems.Add("Ooze", 5); item53.RequiredItems.Add("Entrails", 6); item53.RequiredUpgradeItems.Add("Iron", 12); item53.RequiredUpgradeItems.Add("Ooze", 4); item53.RequiredUpgradeItems.Add("Entrails", 4); item53.CraftAmount = 1; Item item54 = new Item("armory", "HelmetWarriorSilver_TW"); item54.Configurable = Configurability.Recipe; item54.Crafting.Add("Armory_TW", 3); item54.RequiredItems.Add("HelmetWarrior_TW", 1); item54.RequiredItems.Add("Silver", 25); item54.RequiredItems.Add("Obsidian", 12); item54.RequiredItems.Add("WolfFang", 6); item54.RequiredUpgradeItems.Add("Silver", 12); item54.RequiredUpgradeItems.Add("Obsidian", 6); item54.RequiredUpgradeItems.Add("WolfFang", 3); item54.CraftAmount = 1; Item item55 = new Item("armory", "ArmorWarriorSilverChest_TW"); item55.Configurable = Configurability.Recipe; item55.Crafting.Add("Armory_TW", 3); item55.RequiredItems.Add("ArmorWarriorChest_TW", 1); item55.RequiredItems.Add("Silver", 25); item55.RequiredItems.Add("Crystal", 10); item55.RequiredItems.Add("FreezeGland", 6); item55.RequiredUpgradeItems.Add("Silver", 12); item55.RequiredUpgradeItems.Add("Crystal", 5); item55.RequiredUpgradeItems.Add("FreezeGland", 3); item55.CraftAmount = 1; Item item56 = new Item("armory", "ArmorWarriorSilverLegs_TW"); item56.Configurable = Configurability.Recipe; item56.Crafting.Add("Armory_TW", 3); item56.RequiredItems.Add("ArmorWarriorLegs_TW", 1); item56.RequiredItems.Add("Silver", 20); item56.RequiredItems.Add("WolfHairBundle", 15); item56.RequiredItems.Add("WolfPelt", 8); item56.RequiredUpgradeItems.Add("Silver", 10); item56.RequiredUpgradeItems.Add("WolfHairBundle", 8); item56.RequiredUpgradeItems.Add("WolfPelt", 4); item56.CraftAmount = 1; Item item57 = new Item("armory", "HelmetWarriorBM_TW"); item57.Configurable = Configurability.Recipe; item57.Crafting.Add("Armory_TW", 4); item57.RequiredItems.Add("HelmetWarriorSilver_TW", 1); item57.RequiredItems.Add("BlackMetal", 25); item57.RequiredItems.Add("Tar", 10); item57.RequiredItems.Add("LoxBone_TW", 6); item57.RequiredUpgradeItems.Add("BlackMetal", 12); item57.RequiredUpgradeItems.Add("Tar", 5); item57.RequiredUpgradeItems.Add("LoxBone_TW", 3); item57.CraftAmount = 1; Item item58 = new Item("armory", "ArmorWarriorBMChest_TW"); item58.Configurable = Configurability.Recipe; item58.Crafting.Add("Armory_TW", 4); item58.RequiredItems.Add("ArmorWarriorSilverChest_TW", 1); item58.RequiredItems.Add("BlackMetal", 25); item58.RequiredItems.Add("Tar", 12); item58.RequiredItems.Add("Needle", 10); item58.RequiredUpgradeItems.Add("BlackMetal", 12); item58.RequiredUpgradeItems.Add("Tar", 6); item58.RequiredUpgradeItems.Add("Needle", 5); item58.CraftAmount = 1; Item item59 = new Item("armory", "ArmorWarriorBMLegs_TW"); item59.Configurable = Configurability.Recipe; item59.Crafting.Add("Armory_TW", 4); item59.RequiredItems.Add("ArmorWarriorSilverLegs_TW", 1); item59.RequiredItems.Add("BlackMetal", 25); item59.RequiredItems.Add("LinenThread", 12); item59.RequiredItems.Add("LoxPelt", 8); item59.RequiredUpgradeItems.Add("LinenThread", 6); item59.RequiredUpgradeItems.Add("BlackMetal", 12); item59.RequiredUpgradeItems.Add("LoxPelt", 4); item59.CraftAmount = 1; Item item60 = new Item("armory", "HelmetWarriorCarapace_TW"); item60.Configurable = Configurability.Recipe; item60.Crafting.Add("Armory_TW", 4); item60.RequiredItems.Add("HelmetWarriorBM_TW", 1); item60.RequiredItems.Add("Carapace", 25); item60.RequiredItems.Add("Eitr", 8); item60.RequiredItems.Add("VenomousFang_TW", 6); item60.RequiredUpgradeItems.Add("Carapace", 12); item60.RequiredUpgradeItems.Add("Eitr", 4); item60.RequiredUpgradeItems.Add("VenomousFang_TW", 3); item60.CraftAmount = 1; Item item61 = new Item("armory", "ArmorWarriorCarapaceChest_TW"); item61.Configurable = Configurability.Recipe; item61.Crafting.Add("Armory_TW", 4); item61.RequiredItems.Add("ArmorWarriorBMChest_TW", 1); item61.RequiredItems.Add("Carapace", 25); item61.RequiredItems.Add("Eitr", 8); item61.RequiredItems.Add("Bilebag", 6); item61.RequiredUpgradeItems.Add("Carapace", 12); item61.RequiredUpgradeItems.Add("Eitr", 4); item61.RequiredUpgradeItems.Add("Bilebag", 3); item61.CraftAmount = 1; Item item62 = new Item("armory", "ArmorWarriorCarapaceLegs_TW"); item62.Configurable = Configurability.Recipe; item62.Crafting.Add("Armory_TW", 4); item62.RequiredItems.Add("ArmorWarriorBMLegs_TW", 1); item62.RequiredItems.Add("Softtissue", 25); item62.RequiredItems.Add("Eitr", 8); item62.RequiredItems.Add("ScaleHide", 12); item62.RequiredUpgradeItems.Add("Softtissue", 12); item62.RequiredUpgradeItems.Add("Eitr", 4); item62.RequiredUpgradeItems.Add("ScaleHide", 6); item62.CraftAmount = 1; Item item63 = new Item("armory", "HelmetWarriorFlametal_TW"); item63.Configurable = Configurability.Recipe; item63.Crafting.Add("Armory_TW", 4); item63.RequiredItems.Add("HelmetWarriorCarapace_TW", 1); item63.RequiredItems.Add("Flametal", 30); item63.RequiredItems.Add("MinotaurHorn_TW", 8); item63.RequiredItems.Add("AshenClaw_TW", 8); item63.RequiredUpgradeItems.Add("Flametal", 15); item63.RequiredUpgradeItems.Add("MinotaurHorn_TW", 4); item63.RequiredUpgradeItems.Add("AshenClaw_TW", 4); item63.CraftAmount = 1; Item item64 = new Item("armory", "ArmorWarriorFlametalChest_TW"); item64.Configurable = Configurability.Recipe; item64.Crafting.Add("Armory_TW", 4); item64.RequiredItems.Add("ArmorWarriorCarapaceChest_TW", 1); item64.RequiredItems.Add("Flametal", 30); item64.RequiredItems.Add("VolcanicCrystal_TW", 15); item64.RequiredItems.Add("AshenScale_TW", 8); item64.RequiredUpgradeItems.Add("Flametal", 15); item64.RequiredUpgradeItems.Add("VolcanicCrystal_TW", 8); item64.RequiredUpgradeItems.Add("AshenScale_TW", 4); item64.CraftAmount = 1; Item item65 = new Item("armory", "ArmorWarriorFlametalLegs_TW"); item65.Configurable = Configurability.Recipe; item65.Crafting.Add("Armory_TW", 4); item65.RequiredItems.Add("ArmorWarriorCarapaceLegs_TW", 1); item65.RequiredItems.Add("Flametal", 30); item65.RequiredItems.Add("AshenFur_TW", 10); item65.RequiredItems.Add("AshenChitin_TW", 10); item65.RequiredUpgradeItems.Add("Flametal", 15); item65.RequiredUpgradeItems.Add("AshenFur_TW", 5); item65.RequiredUpgradeItems.Add("AshenChitin_TW", 5); item65.CraftAmount = 1; Item item66 = new Item("armory", "HelmetVidar_TW"); item66.Configurable = Configurability.Recipe; item66.Crafting.Add("Armory_TW", 3); item66.RequiredItems.Add("HelmetDrake", 1); item66.RequiredItems.Add("Silver", 12); item66.RequiredItems.Add("Bronze", 10); item66.RequiredItems.Add("WolfFang", 4); item66.RequiredUpgradeItems.Add("Silver", 12); item66.RequiredUpgradeItems.Add("Bronze", 6); item66.RequiredUpgradeItems.Add("WolfFang", 3); item66.CraftAmount = 1; Item item67 = new Item("armory", "ArmorVidarChest_TW"); item67.Configurable = Configurability.Recipe; item67.Crafting.Add("Armory_TW", 3); item67.RequiredItems.Add("ArmorWolfChest", 1); item67.RequiredItems.Add("Silver", 12); item67.RequiredItems.Add("Bronze", 10); item67.RequiredItems.Add("WolfPelt", 4); item67.RequiredUpgradeItems.Add("Silver", 12); item67.RequiredUpgradeItems.Add("Bronze", 6); item67.RequiredUpgradeItems.Add("WolfPelt", 3); item67.CraftAmount = 1; Item item68 = new Item("armory", "ArmorVidarLegs_TW"); item68.Configurable = Configurability.Recipe; item68.Crafting.Add("Armory_TW", 3); item68.RequiredItems.Add("ArmorWolfLegs", 1); item68.RequiredItems.Add("Silver", 12); item68.RequiredItems.Add("Bronze", 10); item68.RequiredItems.Add("WolfHairBundle", 10); item68.RequiredUpgradeItems.Add("Silver", 12); item68.RequiredUpgradeItems.Add("Bronze", 6); item68.RequiredUpgradeItems.Add("WolfHairBundle", 8); item68.CraftAmount = 1; Item item69 = new Item("armory", "HelmetVidarBM_TW"); item69.Configurable = Configurability.Recipe; item69.Crafting.Add("Armory_TW", 4); item69.RequiredItems.Add("HelmetVidar_TW", 1); item69.RequiredItems.Add("BlackMetal", 25); item69.RequiredItems.Add("Tar", 12); item69.RequiredItems.Add("LoxBone_TW", 6); item69.RequiredUpgradeItems.Add("BlackMetal", 12); item69.RequiredUpgradeItems.Add("Tar", 6); item69.RequiredUpgradeItems.Add("LoxBone_TW", 3); item69.CraftAmount = 1; Item item70 = new Item("armory", "ArmorVidarBMChest_TW"); item70.Configurable = Configurability.Recipe; item70.Crafting.Add("Armory_TW", 4); item70.RequiredItems.Add("ArmorVidarChest_TW", 1); item70.RequiredItems.Add("BlackMetal", 25); item70.RequiredItems.Add("LinenThread", 12); item70.RequiredItems.Add("LoxPelt", 8); item70.RequiredUpgradeItems.Add("BlackMetal", 12); item70.RequiredUpgradeItems.Add("LinenThread", 6); item70.RequiredUpgradeItems.Add("LoxPelt", 4); item70.CraftAmount = 1; Item item71 = new Item("armory", "ArmorVidarBMLegs_TW"); item71.Configurable = Configurability.Recipe; item71.Crafting.Add("Armory_TW", 4); item71.RequiredItems.Add("ArmorVidarLegs_TW", 1); item71.RequiredItems.Add("BlackMetal", 25); item71.RequiredItems.Add("LoxPelt", 8); item71.RequiredItems.Add("Needle", 8); item71.RequiredUpgradeItems.Add("BlackMetal", 12); item71.RequiredUpgradeItems.Add("LoxPelt", 4); item71.RequiredUpgradeItems.Add("Needle", 4); item71.CraftAmount = 1; Item item72 = new Item("armory", "HelmetVidarCarapace_TW"); item72.Configurable = Configurability.Recipe; item72.Crafting.Add("Armory_TW", 4); item72.RequiredItems.Add("HelmetVidarBM_TW", 1); item72.RequiredItems.Add("Carapace", 25); item72.RequiredItems.Add("Eitr", 8); item72.RequiredItems.Add("DarkCrystal_TW", 6); item72.RequiredUpgradeItems.Add("Carapace", 12); item72.RequiredUpgradeItems.Add("Eitr", 4); item72.RequiredUpgradeItems.Add("DarkCrystal_TW", 4); item72.CraftAmount = 1; Item item73 = new Item("armory", "ArmorVidarCarapaceChest_TW"); item73.Configurable = Configurability.Recipe; item73.Crafting.Add("Armory_TW", 4); item73.RequiredItems.Add("ArmorVidarBMChest_TW", 1); item73.RequiredItems.Add("Carapace", 25); item73.RequiredItems.Add("Eitr", 8); item73.RequiredItems.Add("ScaleHide", 12); item73.RequiredUpgradeItems.Add("Carapace", 12); item73.RequiredUpgradeItems.Add("Eitr", 4); item73.RequiredUpgradeItems.Add("ScaleHide", 6); item73.CraftAmount = 1; Item item74 = new Item("armory", "ArmorVidarCarapaceLegs_TW"); item74.Configurable = Configurability.Recipe; item74.Crafting.Add("Armory_TW", 4); item74.RequiredItems.Add("ArmorVidarBMLegs_TW", 1); item74.RequiredItems.Add("Softtissue", 25); item74.RequiredItems.Add("Eitr", 8); item74.RequiredItems.Add("JuteBlack_TW", 10); item74.RequiredUpgradeItems.Add("Softtissue", 12); item74.RequiredUpgradeItems.Add("Eitr", 4); item74.RequiredUpgradeItems.Add("JuteBlack_TW", 5); item74.CraftAmount = 1; Item item75 = new Item("armory", "HelmetVidarFlametal_TW"); item75.Configurable = Configurability.Recipe; item75.Crafting.Add("Armory_TW", 4); item75.RequiredItems.Add("HelmetVidarCarapace_TW", 1); item75.RequiredItems.Add("Flametal", 30); item75.RequiredItems.Add("VolcanicCrystal_TW", 15); item75.RequiredItems.Add("AshenFang_TW", 8); item75.RequiredUpgradeItems.Add("Flametal", 15); item75.RequiredUpgradeItems.Add("VolcanicCrystal_TW", 8); item75.RequiredUpgradeItems.Add("AshenFang_TW", 4); item75.CraftAmount = 1; Item item76 = new Item("armory", "ArmorVidarFlametalChest_TW"); item76.Configurable = Configurability.Recipe; item76.Crafting.Add("Armory_TW", 4); item76.RequiredItems.Add("ArmorVidarCarapaceChest_TW", 1); item76.RequiredItems.Add("Flametal", 30); item76.RequiredItems.Add("AshenScale_TW", 12); item76.RequiredItems.Add("LavaGland_TW", 8); item76.RequiredUpgradeItems.Add("Flametal", 15); item76.RequiredUpgradeItems.Add("AshenScale_TW", 6); item76.RequiredUpgradeItems.Add("LavaGland_TW", 4); item76.CraftAmount = 1; Item item77 = new Item("armory", "ArmorVidarFlametalLegs_TW"); item77.Configurable = Configurability.Recipe; item77.Crafting.Add("Armory_TW", 4); item77.RequiredItems.Add("ArmorVidarCarapaceLegs_TW", 1); item77.RequiredItems.Add("Flametal", 30); item77.RequiredItems.Add("AshenFur_TW", 12); item77.RequiredItems.Add("AshenChitin_TW", 8); item77.RequiredUpgradeItems.Add("Flametal", 12); item77.RequiredUpgradeItems.Add("AshenFur_TW", 6); item77.RequiredUpgradeItems.Add("AshenChitin_TW", 4); item77.CraftAmount = 1; Item obj = new Item("armory", "HelmetFenrir_TW") { Configurable = Configurability.Recipe }; MaterialReplacer.RegisterGameObjectForShaderSwap(obj.Prefab, MaterialReplacer.ShaderType.CustomCreature); obj.Crafting.Add("Armory_TW", 3); obj.RequiredItems.Add("HelmetFenring", 1); obj.RequiredItems.Add("Silver", 20); obj.RequiredItems.Add("JuteRed", 6); obj.RequiredItems.Add("WolfFang", 6); obj.RequiredUpgradeItems.Add("Silver", 10); obj.RequiredUpgradeItems.Add("JuteRed", 3); obj.RequiredUpgradeItems.Add("WolfFang", 3); obj.CraftAmount = 1; Item item78 = new Item("armory", "ArmorFenrirChest_TW"); item78.Configurable = Configurability.Recipe; item78.Crafting.Add("Armory_TW", 3); item78.RequiredItems.Add("ArmorFenringChest", 1); item78.RequiredItems.Add("Silver", 20); item78.RequiredItems.Add("JuteRed", 8); item78.RequiredItems.Add("WolfPelt", 6); item78.RequiredUpgradeItems.Add("Silver", 10); item78.RequiredUpgradeItems.Add("JuteRed", 4); item78.RequiredUpgradeItems.Add("WolfPelt", 3); item78.CraftAmount = 1; Item item79 = new Item("armory", "ArmorFenrirLegs_TW"); item79.Configurable = Configurability.Recipe; item79.Crafting.Add("Armory_TW", 3); item79.RequiredItems.Add("ArmorFenringLegs", 1); item79.RequiredItems.Add("Silver", 20); item79.RequiredItems.Add("WolfHairBundle", 20); item79.RequiredItems.Add("Obsidian", 12); item79.RequiredUpgradeItems.Add("Silver", 10); item79.RequiredUpgradeItems.Add("WolfHairBundle", 10); item79.RequiredUpgradeItems.Add("Obsidian", 6); item79.CraftAmount = 1; Item obj2 = new Item("armory", "HelmetFenrirBM_TW") { Configurable = Configurability.Recipe }; MaterialReplacer.RegisterGameObjectForShaderSwap(obj2.Prefab, MaterialReplacer.ShaderType.CustomCreature); obj2.Crafting.Add("Armory_TW", 4); obj2.RequiredItems.Add("HelmetFenrir_TW", 1); obj2.RequiredItems.Add("BlackMetal", 20); obj2.RequiredItems.Add("LinenThread", 12); obj2.RequiredItems.Add("LoxPelt", 8); obj2.RequiredUpgradeItems.Add("BlackMetal", 10); obj2.RequiredUpgradeItems.Add("LinenThread", 6); obj2.RequiredUpgradeItems.Add("LoxPelt", 4); obj2.CraftAmount = 1; Item item80 = new Item("armory", "ArmorFenrirBMChest_TW"); item80.Configurable = Configurability.Recipe; item80.Crafting.Add("Armory_TW", 4); item80.RequiredItems.Add("ArmorFenrirChest_TW", 1); item80.RequiredItems.Add("BlackMetal", 20); item80.RequiredItems.Add("LinenThread", 12); item80.RequiredItems.Add("LoxBone_TW", 8); item80.RequiredUpgradeItems.Add("BlackMetal", 10); item80.RequiredUpgradeItems.Add("LinenThread", 6); item80.RequiredUpgradeItems.Add("LoxBone_TW", 4); item80.CraftAmount = 1; Item item81 = new Item("armory", "ArmorFenrirBMLegs_TW"); item81.Configurable = Configurability.Recipe; item81.Crafting.Add("Armory_TW", 4); item81.RequiredItems.Add("ArmorFenrirLegs_TW", 1); item81.RequiredItems.Add("BlackMetal", 20); item81.RequiredItems.Add("Tar", 12); item81.RequiredItems.Add("Needle", 8); item81.RequiredUpgradeItems.Add("BlackMetal", 10); item81.RequiredUpgradeItems.Add("Tar", 6); item81.RequiredUpgradeItems.Add("Needle", 4); item81.CraftAmount = 1; Item obj3 = new Item("armory", "HelmetFenrirCarapace_TW") { Configurable = Configurability.Recipe }; MaterialReplacer.RegisterGameObjectForShaderSwap(obj3.Prefab, MaterialReplacer.ShaderType.CustomCreature); obj3.Crafting.Add("Armory_TW", 4); obj3.RequiredItems.Add("HelmetFenrirBM_TW", 1); obj3.RequiredItems.Add("Carapace", 25); obj3.RequiredItems.Add("Eitr", 8); obj3.RequiredItems.Add("VenomousFang_TW", 6); obj3.RequiredUpgradeItems.Add("Carapace", 12); obj3.RequiredUpgradeItems.Add("Eitr", 4); obj3.RequiredUpgradeItems.Add("VenomousFang_TW", 3); obj3.CraftAmount = 1; Item item82 = new Item("armory", "ArmorFenrirCarapaceChest_TW"); item82.Configurable = Configurability.Recipe; item82.Crafting.Add("Armory_TW", 4); item82.RequiredItems.Add("ArmorFenrirBMChest_TW", 1); item82.RequiredItems.Add("Softtissue", 25); item82.RequiredItems.Add("Eitr", 8); item82.RequiredItems.Add("JuteBlack_TW", 10); item82.RequiredUpgradeItems.Add("Softtissue", 12); item82.RequiredUpgradeItems.Add("Eitr", 4); item82.RequiredUpgradeItems.Add("JuteBlack_TW", 5); item82.CraftAmount = 1; Item item83 = new Item("armory", "ArmorFenrirCarapaceLegs_TW"); item83.Configurable = Configurability.Recipe; item83.Crafting.Add("Armory_TW", 4); item83.RequiredItems.Add("ArmorFenrirBMLegs_TW", 1); item83.RequiredItems.Add("Softtissue", 25); item83.RequiredItems.Add("Eitr", 8); item83.RequiredItems.Add("ScaleHide", 12); item83.RequiredUpgradeItems.Add("Softtissue", 12); item83.RequiredUpgradeItems.Add("Eitr", 4); item83.RequiredUpgradeItems.Add("ScaleHide", 6); item83.CraftAmount = 1; Item obj4 = new Item("armory", "HelmetFenrirTyranium_TW") { Configurable = Configurability.Recipe }; MaterialReplacer.RegisterGameObjectForShaderSwap(obj4.Prefab, MaterialReplacer.ShaderType.CustomCreature); obj4.Crafting.Add("Armory_TW", 4); obj4.RequiredItems.Add("HelmetFenrirCarapace_TW", 1); obj4.RequiredItems.Add("TyraniumBar_TW", 30); obj4.RequiredItems.Add("ArcticWolfPelt_TW", 12); obj4.RequiredItems.Add("PrimalFenrisHairBundle_TW", 8); obj4.RequiredUpgradeItems.Add("TyraniumBar_TW", 15); obj4.RequiredUpgradeItems.Add("ArcticWolfPelt_TW", 6); obj4.RequiredUpgradeItems.Add("PrimalFenrisHairBundle_TW", 4); obj4.CraftAmount = 1; Item item84 = new Item("armory", "ArmorFenrirTyraniumChest_TW"); item84.Configurable = Configurability.Recipe; item84.Crafting.Add("Armory_TW", 4); item84.RequiredItems.Add("ArmorFenrirCarapaceChest_TW", 1); item84.RequiredItems.Add("TyraniumBar_TW", 30); item84.RequiredItems.Add("ArcticSerpentScale_TW", 12); item84.RequiredItems.Add("PrimalFenrisHairBundle_TW", 8); item84.RequiredUpgradeItems.Add("TyraniumBar_TW", 15); item84.RequiredUpgradeItems.Add("ArcticSerpentScale_TW", 8); item84.RequiredUpgradeItems.Add("PrimalFenrisHairBundle_TW", 4); item84.CraftAmount = 1; Item item85 = new Item("armory", "ArmorFenrirTyraniumLegs_TW"); item85.Configurable = Configurability.Recipe; item85.Crafting.Add("Armory_TW", 4); item85.RequiredItems.Add("ArmorFenrirCarapaceLegs_TW", 1); item85.RequiredItems.Add("TyraniumBar_TW", 30); item85.RequiredItems.Add("PrimalFenrisHairBundle_TW", 10); item85.RequiredItems.Add("FrozenClaw_TW", 8); item85.RequiredUpgradeItems.Add("TyraniumBar_TW", 15); item85.RequiredUpgradeItems.Add("PrimalFenrisHairBundle_TW", 5); item85.RequiredUpgradeItems.Add("FrozenClaw_TW", 4); item85.CraftAmount = 1; Item item86 = new Item("armory", "HelmetBold_TW"); item86.Configurable = Configurability.Recipe; item86.Crafting.Add("Armory_TW", 4); item86.RequiredItems.Add("HelmetPadded", 1); item86.RequiredItems.Add("BlackMetal", 12); item86.RequiredItems.Add("LoxPelt", 6); item86.RequiredItems.Add("LoxBone_TW", 4); item86.RequiredUpgradeItems.Add("BlackMetal", 12); item86.RequiredUpgradeItems.Add("LoxPelt", 4); item86.RequiredUpgradeItems.Add("LoxBone_TW", 3); item86.CraftAmount = 1; Item item87 = new Item("armory", "ArmorBoldChest_TW"); item87.Configurable = Configurability.Recipe; item87.Crafting.Add("Armory_TW", 4); item87.RequiredItems.Add("ArmorPaddedCuirass", 1); item87.RequiredItems.Add("BlackMetal", 12); item87.RequiredItems.Add("Tar", 6); item87.RequiredItems.Add("LoxPelt", 6); item87.RequiredUpgradeItems.Add("BlackMetal", 12); item87.RequiredUpgradeItems.Add("Tar", 6); item87.RequiredUpgradeItems.Add("LoxPelt", 4); item87.CraftAmount = 1; Item item88 = new Item("armory", "ArmorBoldLegs_TW"); item88.Configurable = Configurability.Recipe; item88.Crafting.Add("Armory_TW", 4); item88.RequiredItems.Add("ArmorPaddedGreaves", 1); item88.RequiredItems.Add("BlackMetal", 12); item88.RequiredItems.Add("LinenThread", 10); item88.RequiredItems.Add("Needle", 6); item88.RequiredUpgradeItems.Add("BlackMetal", 12); item88.RequiredUpgradeItems.Add("LinenThread", 6); item88.RequiredUpgradeItems.Add("Needle", 4); item88.CraftAmount = 1; Item item89 = new Item("armory", "HelmetBoldCarapace_TW"); item89.Configurable = Configurability.Recipe; item89.Crafting.Add("Armory_TW", 4); item89.RequiredItems.Add("HelmetBold_TW", 1); item89.RequiredItems.Add("Carapace", 25); item89.RequiredItems.Add("Eitr", 8); item89.RequiredItems.Add("DarkCrystal_TW", 6); item89.RequiredUpgradeItems.Add("Carapace", 12); item89.RequiredUpgradeItems.Add("Eitr", 4); item89.RequiredUpgradeItems.Add("DarkCrystal_TW", 3); item89.CraftAmount = 1; Item item90 = new Item("armory", "ArmorBoldCarapaceChest_TW"); item90.Configurable = Configurability.Recipe; item90.Crafting.Add("Armory_TW", 4); item90.RequiredItems.Add("ArmorBoldChest_TW", 1); item90.RequiredItems.Add("Carapace", 25); item90.RequiredItems.Add("Eitr", 8); item90.RequiredItems.Add("ScaleHide", 15); item90.RequiredUpgradeItems.Add("Carapace", 12); item90.RequiredUpgradeItems.Add("Eitr", 4); item90.RequiredUpgradeItems.Add("ScaleHide", 8); item90.CraftAmount = 1; Item item91 = new Item("armory", "ArmorBoldCarapaceLegs_TW"); item91.Configurable = Configurability.Recipe; item91.Crafting.Add("Armory_TW", 4); item91.RequiredItems.Add("ArmorBoldLegs_TW", 1); item91.RequiredItems.Add("Carapace", 25); item91.RequiredItems.Add("Eitr", 8); item91.RequiredItems.Add("Softtissue", 15); item91.RequiredUpgradeItems.Add("Carapace", 12); item91.RequiredUpgradeItems.Add("Eitr", 4); item91.RequiredUpgradeItems.Add("Softtissue", 8); item91.CraftAmount = 1; Item item92 = new Item("armory", "HelmetBoldFlametal_TW"); item92.Configurable = Configurability.Recipe; item92.Crafting.Add("Armory_TW", 4); item92.RequiredItems.Add("HelmetBoldCarapace_TW", 1); item92.RequiredItems.Add("Flametal", 30); item92.RequiredItems.Add("AshenFang_TW", 12); item92.RequiredItems.Add("LavaGland_TW", 8); item92.RequiredUpgradeItems.Add("Flametal", 15); item92.RequiredUpgradeItems.Add("AshenFang_TW", 6); item92.RequiredUpgradeItems.Add("LavaGland_TW", 4); item92.CraftAmount = 1; Item item93 = new Item("armory", "ArmorBoldFlametalChest_TW"); item93.Configurable = Configurability.Recipe; item93.Crafting.Add("Armory_TW", 4); item93.RequiredItems.Add("ArmorBoldCarapaceChest_TW", 1); item93.RequiredItems.Add("Flametal", 30); item93.RequiredItems.Add("VolcanicCrystal_TW", 15); item93.RequiredItems.Add("AshenScale_TW", 8); item93.RequiredUpgradeItems.Add("Flametal", 15); item93.RequiredUpgradeItems.Add("VolcanicCrystal_TW", 8); item93.RequiredUpgradeItems.Add("AshenScale_TW", 8); item93.CraftAmount = 1; Item item94 = new Item("armory", "ArmorBoldFlametalLegs_TW"); item94.Configurable = Configurability.Recipe; item94.Crafting.Add("Armory_TW", 4); item94.RequiredItems.Add("ArmorBoldCarapaceLegs_TW", 1); item94.RequiredItems.Add("Flametal", 30); item94.RequiredItems.Add("AshenFur_TW", 12); item94.RequiredItems.Add("AshenClaw_TW", 8); item94.RequiredUpgradeItems.Add("Flametal", 15); item94.RequiredUpgradeItems.Add("AshenFur_TW", 6); item94.RequiredUpgradeItems.Add("AshenClaw_TW", 8); item94.CraftAmount = 1; Item item95 = new Item("armory", "HelmetLegion_TW"); item95.Configurable = Configurability.Recipe; item95.Crafting.Add("Armory_TW", 4); item95.RequiredItems.Add("HelmetCarapace", 1); item95.RequiredItems.Add("Carapace", 12); item95.RequiredItems.Add("Eitr", 8); item95.RequiredItems.Add("Mandible", 4); item95.RequiredUpgradeItems.Add("Carapace", 12); item95.RequiredUpgradeItems.Add("Eitr", 4); item95.RequiredUpgradeItems.Add("Mandible", 2); item95.CraftAmount = 1; Item item96 = new Item("armory", "ArmorLegionChest_TW"); item96.Configurable = Configurability.Recipe; item96.Crafting.Add("Armory_TW", 4); item96.RequiredItems.Add("ArmorCarapaceChest", 1); item96.RequiredItems.Add("Carapace", 12); item96.RequiredItems.Add("Eitr", 8); item96.RequiredItems.Add("DarkCrystal_TW", 6); item96.RequiredUpgradeItems.Add("Carapace", 12); item96.RequiredUpgradeItems.Add("Eitr", 4); item96.RequiredUpgradeItems.Add("DarkCrystal_TW", 3); item96.CraftAmount = 1; Item item97 = new Item("armory", "ArmorLegionLegs_TW"); item97.Configurable = Configurability.Recipe; item97.Crafting.Add("Armory_TW", 4); item97.RequiredItems.Add("ArmorCarapaceLegs", 1); item97.RequiredItems.Add("Softtissue", 12); item97.RequiredItems.Add("Eitr", 8); item97.RequiredItems.Add("ScaleHide", 8); item97.RequiredUpgradeItems.Add("Softtissue", 12); item97.RequiredUpgradeItems.Add("Eitr", 4); item97.RequiredUpgradeItems.Add("ScaleHide", 4); item97.CraftAmount = 1; Item item98 = new Item("armory", "HelmetLegionFlametal_TW"); item98.Configurable = Configurability.Recipe; item98.Crafting.Add("Armory_TW", 4); item98.RequiredItems.Add("HelmetLegion_TW", 1); item98.RequiredItems.Add("Flametal", 30); item98.RequiredItems.Add("AshenChitin_TW", 12); item98.RequiredItems.Add("AshenFang_TW", 8); item98.RequiredUpgradeItems.Add("Flametal", 15); item98.RequiredUpgradeItems.Add("AshenChitin_TW", 6); item98.RequiredUpgradeItems.Add("AshenFang_TW", 4); item98.CraftAmount = 1; Item item99 = new Item("armory", "ArmorLegionFlametalChest_TW"); item99.Configurable = Configurability.Recipe; item99.Crafting.Add("Armory_TW", 4); item99.RequiredItems.Add("ArmorLegionChest_TW", 1); item99.RequiredItems.Add("Flametal", 30); item99.RequiredItems.Add("AshenScale_TW", 12); item99.RequiredItems.Add("LavaGland_TW", 8); item99.RequiredUpgradeItems.Add("Flametal", 15); item99.RequiredUpgradeItems.Add("AshenScale_TW", 6); item99.RequiredUpgradeItems.Add("LavaGland_TW", 4); item99.CraftAmount = 1; Item item100 = new Item("armory", "ArmorLegionFlametalLegs_TW"); item100.Configurable = Configurability.Recipe; item100.Crafting.Add("Armory_TW", 4); item100.RequiredItems.Add("ArmorLegionLegs_TW", 1); item100.RequiredItems.Add("Flametal", 30); item100.RequiredItems.Add("AshenFur_TW", 12); item100.RequiredItems.Add("AshenClaw_TW", 8); item100.RequiredUpgradeItems.Add("Flametal", 15); item100.RequiredUpgradeItems.Add("AshenFur_TW", 8); item100.RequiredUpgradeItems.Add("AshenClaw_TW", 4); item100.CraftAmount = 1; Item item101 = new Item("armory", "HelmetDestruction_TW"); item101.Configurable = Configurability.Recipe; item101.Crafting.Add("Armory_TW", 4); item101.RequiredItems.Add("HelmetMage", 1); item101.RequiredItems.Add("Softtissue", 12); item101.RequiredItems.Add("Eitr", 10); item101.RequiredItems.Add("DarkCrystal_TW", 8); item101.RequiredUpgradeItems.Add("Softtissue", 12); item101.RequiredUpgradeItems.Add("Eitr", 5); item101.RequiredUpgradeItems.Add("DarkCrystal_TW", 4); item101.CraftAmount = 1; Item item102 = new Item("armory", "ArmorDestructionChest_TW"); item102.Configurable = Configurability.Recipe; item102.Crafting.Add("Armory_TW", 4); item102.RequiredItems.Add("ArmorMageChest", 1); item102.RequiredItems.Add("Softtissue", 12); item102.RequiredItems.Add("Eitr", 10); item102.RequiredItems.Add("GiantBloodSack", 8); item102.RequiredUpgradeItems.Add("Softtissue", 12); item102.RequiredUpgradeItems.Add("Eitr", 5); item102.RequiredUpgradeItems.Add("GiantBloodSack", 4); item102.CraftAmount = 1; Item item103 = new Item("armory", "ArmorDestructionLegs_TW"); item103.Configurable = Configurability.Recipe; item103.Crafting.Add("Armory_TW", 4); item103.RequiredItems.Add("ArmorMageLegs", 1); item103.RequiredItems.Add("Softtissue", 12); item103.RequiredItems.Add("Eitr", 10); item103.RequiredItems.Add("ScaleHide", 8); item103.RequiredUpgradeItems.Add("Softtissue", 12); item103.RequiredUpgradeItems.Add("Eitr", 5); item103.RequiredUpgradeItems.Add("ScaleHide", 6); item103.CraftAmount = 1; Item item104 = new Item("armory", "HelmetDestructionTyranium_TW"); item104.Configurable = Configurability.Recipe; item104.Crafting.Add("Armory_TW", 4); item104.RequiredItems.Add("HelmetDestruction_TW", 1); item104.RequiredItems.Add("TyraniumBar_TW", 30); item104.RequiredItems.Add("GlacierCrystal_TW", 20); item104.RequiredItems.Add("ArcticMammothTusk_TW", 10); item104.RequiredUpgradeItems.Add("TyraniumBar_TW", 15); item104.RequiredUpgradeItems.Add("GlacierCrystal_TW", 10); item104.RequiredUpgradeItems.Add("ArcticMammothTusk_TW", 5); item104.CraftAmount = 1; Item item105 = new Item("armory", "ArmorDestructionTyraniumChest_TW"); item105.Configurable = Configurability.Recipe; item105.Crafting.Add("Armory_TW", 4); item105.RequiredItems.Add("ArmorDestructionChest_TW", 1); item105.RequiredItems.Add("TyraniumBar_TW", 30); item105.RequiredItems.Add("GlacierGland_TW", 14); item105.RequiredItems.Add("ArcticSerpentScale_TW", 8); item105.RequiredUpgradeItems.Add("TyraniumBar_TW", 12); item105.RequiredUpgradeItems.Add("GlacierGland_TW", 7); item105.RequiredUpgradeItems.Add("ArcticSerpentScale_TW", 4); item105.CraftAmount = 1; Item item106 = new Item("armory", "ArmorDestructionTyraniumLegs_TW"); item106.Configurable = Configurability.Recipe; item106.Crafting.Add("Armory_TW", 4); item106.RequiredItems.Add("ArmorDestructionLegs_TW", 1); item106.RequiredItems.Add("TyraniumBar_TW", 30); item106.RequiredItems.Add("FrozenFang_TW", 12); item106.RequiredItems.Add("JotunnTooth_TW", 8); item106.RequiredUpgradeItems.Add("TyraniumBar_TW", 15); item106.RequiredUpgradeItems.Add("FrozenFang_TW", 6); item106.RequiredUpgradeItems.Add("JotunnTooth_TW", 4); item106.CraftAmount = 1; Item item107 = new Item("armory", "HelmetSacrifice_TW"); item107.Configurable = Configurability.Recipe; item107.Crafting.Add("Armory_TW", 4); item107.RequiredItems.Add("HelmetMage", 1); item107.RequiredItems.Add("Carapace", 12); item107.RequiredItems.Add("Eitr", 10); item107.RequiredItems.Add("DarkCrystal_TW", 10); item107.RequiredUpgradeItems.Add("Carapace", 12); item107.RequiredUpgradeItems.Add("Eitr", 5); item107.RequiredUpgradeItems.Add("DarkCrystal_TW", 5); item107.CraftAmount = 1; Item item108 = new Item("armory", "ArmorSacrificeChest_TW"); item108.Configurable = Configurability.Recipe; item108.Crafting.Add("Armory_TW", 4); item108.RequiredItems.Add("ArmorMageChest", 1); item108.RequiredItems.Add("ScaleHide", 10); item108.RequiredItems.Add("Eitr", 10); item108.RequiredItems.Add("JuteBlack_TW", 10); item108.RequiredUpgradeItems.Add("ScaleHide", 6); item108.RequiredUpgradeItems.Add("Eitr", 5); item108.RequiredUpgradeItems.Add("JuteBlack_TW", 6); item108.CraftAmount = 1; Item item109 = new Item("armory", "ArmorSacrificeLegs_TW"); item109.Configurable = Configurability.Recipe; item109.Crafting.Add("Armory_TW", 4); item109.RequiredItems.Add("ArmorMageLegs", 1); item109.RequiredItems.Add("Softtissue", 12); item109.RequiredItems.Add("Eitr", 10); item109.RequiredItems.Add("VenomousFang_TW", 8); item109.RequiredUpgradeItems.Add("Softtissue", 12); item109.RequiredUpgradeItems.Add("Eitr", 5); item109.RequiredUpgradeItems.Add("VenomousFang_TW", 4); item109.CraftAmount = 1; Item item110 = new Item("armory", "HelmetSacrificeFlametal_TW"); item110.Configurable = Configurability.Recipe; item110.Crafting.Add("Armory_TW", 4); item110.RequiredItems.Add("HelmetSacrifice_TW", 1); item110.RequiredItems.Add("Flametal", 30); item110.RequiredItems.Add("MinotaurHorn_TW", 12); item110.RequiredItems.Add("DemonicEssence_TW", 12); item110.RequiredUpgradeItems.Add("Flametal", 15); item110.RequiredUpgradeItems.Add("MinotaurHorn_TW", 6); item110.RequiredUpgradeItems.Add("DemonicEssence_TW", 6); item110.CraftAmount = 1; Item item111 = new Item("armory", "ArmorSacrificeFlametalChest_TW"); item111.Configurable = Configurability.Recipe; item111.Crafting.Add("Armory_TW", 4); item111.RequiredItems.Add("ArmorSacrificeChest_TW", 1); item111.RequiredItems.Add("Flametal", 30); item111.RequiredItems.Add("AshenScale_TW", 14); item111.RequiredItems.Add("VolcanicCrystal_TW", 14); item111.RequiredUpgradeItems.Add("Flametal", 15); item111.RequiredUpgradeItems.Add("AshenScale_TW", 7); item111.RequiredUpgradeItems.Add("VolcanicCrystal_TW", 7); item111.CraftAmount = 1; Item item112 = new Item("armory", "ArmorSacrificeFlametalLegs_TW"); item112.Configurable = Configurability.Recipe; item112.Crafting.Add("Armory_TW", 4); item112.RequiredItems.Add("ArmorSacrificeLegs_TW", 1); item112.RequiredItems.Add("Flametal", 30); item112.RequiredItems.Add("AshenClaw_TW", 12); item112.RequiredItems.Add("DemonicEssence_TW", 12); item112.RequiredUpgradeItems.Add("Flametal", 15); item112.RequiredUpgradeItems.Add("AshenClaw_TW", 6); item112.RequiredUpgradeItems.Add("DemonicEssence_TW", 6); item112.CraftAmount = 1; Assembly executingAssembly = Assembly.GetExecutingAssembly(); _harmony.PatchAll(executingAssembly); SetupWatcher(); } private void OnDestroy() { ((BaseUnityPlugin)this).Config.Save(); } private void SetupWatcher() { FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(Paths.ConfigPath, ConfigFileName); fileSystemWatcher.Changed += ReadConfigValues; fileSystemWatcher.Created += ReadConfigValues; fileSystemWatcher.Renamed += ReadConfigValues; fileSystemWatcher.IncludeSubdirectories = true; fileSystemWatcher.SynchronizingObject = ThreadingHelper.SynchronizingObject; fileSystemWatcher.EnableRaisingEvents = true; } private void ReadConfigValues(object sender, FileSystemEventArgs e) { if (!File.Exists(ConfigFileFullPath)) { return; } try { ArmoryLogger.LogDebug((object)"ReadConfigValues called"); ((BaseUnityPlugin)this).Config.Reload(); } catch { ArmoryLogger.LogError((object)("There was an issue loading your " + ConfigFileName)); ArmoryLogger.LogError((object)"Please check your config entries for spelling and format!"); } } private ConfigEntry<T> config<[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] T>(string group, string name, T value, ConfigDescription description, bool synchronizedSetting = true) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown ConfigDescription val = new ConfigDescription(description.Description + (synchronizedSetting ? " [Synced with Server]" : " [Not Synced with Server]"), description.AcceptableValues, description.Tags); ConfigEntry<T> val2 = ((BaseUnityPlugin)this).Config.Bind<T>(group, name, value, val); ConfigSync.AddConfigEntry<T>(val2).SynchronizedConfig = synchronizedSetting; return val2; } private ConfigEntry<T> config<[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] T>(string group, string name, T value, string description, bool synchronizedSetting = true) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()), synchronizedSetting); } static ArmoryPlugin() { string configPath = Paths.ConfigPath; char directorySeparatorChar = Path.DirectorySeparatorChar; ConfigFileFullPath = configPath + directorySeparatorChar + ConfigFileName; ConnectionError = ""; ArmoryLogger = Logger.CreateLogSource("Armory"); ConfigSync = new ConfigSync("Therzie.Armory") { DisplayName = "Armory", CurrentVersion = "1.1.9", MinimumRequiredVersion = "1.1.9", ModRequired = true }; _serverConfigLocked = null; _recipeIsActiveConfig = null; } } [HarmonyPatch(typeof(ZNetScene), "Awake")] public static class ArmoryDrops_Patch { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] public static void Postfix(ZNetScene __instance) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)__instance)) { return; } GameObject prefab = __instance.GetPrefab("Gjall"); if (Object.op_Implicit((Object)(object)prefab)) { CharacterDrop component = prefab.GetComponent<CharacterDrop>(); if (Object.op_Implicit((Object)(object)component)) { component.m_drops.Add(new Drop { m_prefab = __instance.GetPrefab("Bilebag"), m_amountMin = 1, m_amountMax = 1, m_chance = 1f, m_onePerPlayer = false, m_levelMultiplier = false }); } } } } [HarmonyPatch(typeof(ZNet), "OnNewConnection")] public static class RegisterAndCheckVersion { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] private static void Prefix(ZNetPeer peer, ref ZNet __instance) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown ArmoryPlugin.ArmoryLogger.LogDebug((object)"Registering version RPC handler"); peer.m_rpc.Register<ZPackage>("Armory_VersionCheck", (Action<ZRpc, ZPackage>)RpcHandlers.RPC_Armory_Version); ArmoryPlugin.ArmoryLogger.LogDebug((object)"Invoking version check"); ZPackage val = new ZPackage(); val.Write("1.1.9"); peer.m_rpc.Invoke("Armory_VersionCheck", new object[1] { val }); } } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] [HarmonyPatch(typeof(ZNet), "RPC_PeerInfo")] [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)] public static class VerifyClient { private static bool Prefix(ZRpc rpc, ZPackage pkg, ref ZNet __instance) { if (!__instance.IsServer() || RpcHandlers.ValidatedPeers.Contains(rpc)) { return true; } ArmoryPlugin.ArmoryLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") never sent version or couldn't due to previous disconnect, disconnecting")); rpc.Invoke("Error", new object[1] { 3 }); return false; } private static void Postfix(ZNet __instance) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown ZRoutedRpc.instance.InvokeRoutedRPC(ZRoutedRpc.instance.GetServerPeerID(), "RequestAdminSync", new object[1] { (object)new ZPackage() }); } } [HarmonyPatch(typeof(FejdStartup), "ShowConnectError")] public class ShowConnectionError { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] private static void Postfix(FejdStartup __instance) { if (__instance.m_connectionFailedPanel.activeSelf) { __instance.m_connectionFailedError.fontSizeMax = 25f; __instance.m_connectionFailedError.fontSizeMin = 15f; TMP_Text connectionFailedError = __instance.m_connectionFailedError; connectionFailedError.text = connectionFailedError.text + "\n" + ArmoryPlugin.ConnectionError; } } } [HarmonyPatch(typeof(ZNet), "Disconnect")] public static class RemoveDisconnectedPeerFromVerified { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] private static void Prefix(ZNetPeer peer, ref ZNet __instance) { if (__instance.IsServer()) { ArmoryPlugin.ArmoryLogger.LogInfo((object)("Peer (" + peer.m_rpc.m_socket.GetHostName() + ") disconnected, removing from validated list")); RpcHandlers.ValidatedPeers.Remove(peer.m_rpc); } } } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)] public static class RpcHandlers { public static readonly List<ZRpc> ValidatedPeers = new List<ZRpc>(); public static void RPC_Armory_Version(ZRpc rpc, ZPackage pkg) { string text = pkg.ReadString(); ArmoryPlugin.ArmoryLogger.LogInfo((object)("Version check, local: 1.1.9, remote: " + text)); if (text != "1.1.9") { ArmoryPlugin.ConnectionError = "Armory Installed: 1.1.9\n Needed: " + text; if (ZNet.instance.IsServer()) { ArmoryPlugin.ArmoryLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") has incompatible version, disconnecting")); rpc.Invoke("Error", new object[1] { 3 }); } } else if (!ZNet.instance.IsServer()) { ArmoryPlugin.ArmoryLogger.LogInfo((object)"Received same version from server!"); } else { ArmoryPlugin.ArmoryLogger.LogInfo((object)("Adding peer (" + rpc.m_socket.GetHostName() + ") to validated list")); ValidatedPeers.Add(rpc); } } } } namespace StatusEffectManager { [PublicAPI] [Description("The ItemDrop effect to apply the status effect")] public enum EffectType { Equip, Attack, Consume, Set } public struct SE_Item { [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(1)] public StatusEffect Effect; public EffectType Type; } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)] [PublicAPI] public class CustomSE { private static readonly List<CustomSE> RegisteredEffects = new List<CustomSE>(); private static readonly Dictionary<StatusEffect, CustomSE> CustomEffectMap = new Dictionary<StatusEffect, CustomSE>(); internal static readonly List<StatusEffect> CustomSEs = new List<StatusEffect>(); internal static readonly Dictionary<SE_Item, string> AddToPrefabs = new Dictionary<SE_Item, string>(); [Description("Instance of the StatusEffect.")] public readonly StatusEffect Effect; public EffectType Type; private string _folderName = "icons"; [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] private AssetBundle _assetBundle; [Description("Sets the icon for the StatusEffect. Must be 64x64")] [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] public Sprite IconSprite; [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] private string IconName; [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] private LocalizeKey _name; [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] private static Localization _english; [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] private static BaseUnityPlugin _plugin; private static bool hasConfigSync = true; [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] private static object _configSync; [Description("Sets the icon for the StatusEffect. Must be 64x64")] [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] public string Icon { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(2)] get { return IconName; } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(2)] set { IconName = value; IconSprite = ((IconName == null) ? null : loadSprite(IconName)); Effect.m_icon = IconSprite; } } [Description("Sets the in-game name for the StatusEffect")] public LocalizeKey Name { get { LocalizeKey name = _name; if (name != null) { return name; } StatusEffect effect = Effect; if (effect.m_name.StartsWith("$")) { _name = new LocalizeKey(effect.m_name); } else { string text = "$statuseffect_" + ((Object)Effect).name.Replace(" ", "_"); _name = new LocalizeKey(text).English(effect.m_name); effect.m_name = text; } return _name; } } private static Localization english { get { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown if (_english == null) { _english = new Localization(); _english.SetupLanguage("English"); } return _english; } } private static BaseUnityPlugin plugin { get { //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Expected O, but got Unknown if (_plugin == null) { IEnumerable<TypeInfo> source; try { source = Assembly.GetExecutingAssembly().DefinedTypes.ToList(); } catch (ReflectionTypeLoadException ex) { source = from t in ex.Types where t != null select t.GetTypeInfo(); } _plugin = (BaseUnityPlugin)Chainloader.ManagerObject.GetComponent((Type)source.First([<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] (TypeInfo t) => t.IsClass && typeof(BaseUnityPlugin).IsAssignableFrom(t))); } return _plugin; } } [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] private static object configSync { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(2)] get { if (_configSync == null && hasConfigSync) { Type type = Assembly.GetExecutingAssembly().GetType("ServerSync.ConfigSync"); if ((object)type != null) { _configSync = Activator.CreateInstance(type, plugin.Info.Metadata.GUID + " ItemManager"); type.GetField("CurrentVersion").SetValue(_configSync, plugin.Info.Metadata.Version.ToString()); type.GetProperty("IsLocked").SetValue(_configSync, true); } else { hasConfigSync = false; } } return _configSync; } } public CustomSE(string assetBundleFileName, string customEffectName, string folderName = "assets") : this(EffectManager.RegisterAssetBundle(assetBundleFileName, folderName), customEffectName) { } public CustomSE(AssetBundle bundle, string customEffectName) { Effect = EffectManager.RegisterCustomSE(bundle, customEffectName); RegisteredEffects.Add(this); CustomEffectMap[Effect] = this; } public CustomSE(string customEffectName) { Effect = ScriptableObject.CreateInstance<StatusEffect>(); EffectManager.RegisterCustomSE(Effect, customEffectName); RegisteredEffects.Add(this); CustomEffectMap[Effect] = this; } [return: <75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] private byte[] ReadEmbeddedFileBytes(string name) { using MemoryStream memoryStream = new MemoryStream(); Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(Assembly.GetExecutingAssembly().GetName().Name + ((_folderName == "") ? "" : ".") + _folderName + "." + name); if (manifestResourceStream == null) { return null; } manifestResourceStream.CopyTo(memoryStream); return memoryStream.ToArray(); } [return: <75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] private Texture2D loadTexture(string name) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown //IL_001b: Expected O, but got Unknown byte[] array = ReadEmbeddedFileBytes(name); if (array != null) { Texture2D val = new Texture2D(0, 0); ImageConversion.LoadImage(val, array); return val; } return null; } private Sprite loadSprite(string name) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) Texture2D val = loadTexture(name); if (val != null) { return Sprite.Create(val, new Rect(0f, 0f, 64f, 64f), Vector2.zero); } AssetBundle assetBundle = _assetBundle; Sprite val2 = ((assetBundle != null) ? assetBundle.LoadAsset<Sprite>(name) : null); if (val2 != null) { return val2; } throw new FileNotFoundException("Could not find a file named " + name + " for the effect icon"); } public void AddSEToPrefab(CustomSE customSE, string prefabName) { SE_Item sE_Item = default(SE_Item); sE_Item.Effect = customSE.Effect; sE_Item.Type = customSE.Type; SE_Item key = sE_Item; AddToPrefabs.Add(key, prefabName); } private static ConfigEntry<T> config<[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] T>(string group, string name, T value, ConfigDescription description) { ConfigEntry<T> val = plugin.Config.Bind<T>(group, name, value, description); configSync?.GetType().GetMethod("AddConfigEntry").MakeGenericMethod(typeof(T)) .Invoke(configSync, new object[1] { val }); return val; } private static ConfigEntry<T> config<[<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] T>(string group, string name, T value, string description) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>())); } } [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)] [PublicAPI] public class LocalizeKey { public readonly string Key; public LocalizeKey(string key) { Key = key.Replace("$", ""); } public LocalizeKey English(string key) { return addForLang("English", key); } public LocalizeKey Swedish(string key) { return addForLang("Swedish", key); } public LocalizeKey French(string key) { return addForLang("French", key); } public LocalizeKey Italian(string key) { return addForLang("Italian", key); } public LocalizeKey German(string key) { return addForLang("German", key); } public LocalizeKey Spanish(string key) { return addForLang("Spanish", key); } public LocalizeKey Russian(string key) { return addForLang("Russian", key); } public LocalizeKey Romanian(string key) { return addForLang("Romanian", key); } public LocalizeKey Bulgarian(string key) { return addForLang("Bulgarian", key); } public LocalizeKey Macedonian(string key) { return addForLang("Macedonian", key); } public LocalizeKey Finnish(string key) { return addForLang("Finnish", key); } public LocalizeKey Danish(string key) { return addForLang("Danish", key); } public LocalizeKey Norwegian(string key) { return addForLang("Norwegian", key); } public LocalizeKey Icelandic(string key) { return addForLang("Icelandic", key); } public LocalizeKey Turkish(string key) { return addForLang("Turkish", key); } public LocalizeKey Lithuanian(string key) { return addForLang("Lithuanian", key); } public LocalizeKey Czech(string key) { return addForLang("Czech", key); } public LocalizeKey Hungarian(string key) { return addForLang("Hungarian", key); } public LocalizeKey Slovak(string key) { return addForLang("Slovak", key); } public LocalizeKey Polish(string key) { return addForLang("Polish", key); } public LocalizeKey Dutch(string key) { return addForLang("Dutch", key); } public LocalizeKey Portuguese_European(string key) { return addForLang("Portuguese_European", key); } public LocalizeKey Portuguese_Brazilian(string key) { return addForLang("Portuguese_Brazilian", key); } public LocalizeKey Chinese(string key) { return addForLang("Chinese", key); } public LocalizeKey Japanese(string key) { return addForLang("Japanese", key); } public LocalizeKey Korean(string key) { return addForLang("Korean", key); } public LocalizeKey Hindi(string key) { return addForLang("Hindi", key); } public LocalizeKey Thai(string key) { return addForLang("Thai", key); } public LocalizeKey Abenaki(string key) { return addForLang("Abenaki", key); } public LocalizeKey Croatian(string key) { return addForLang("Croatian", key); } public LocalizeKey Georgian(string key) { return addForLang("Georgian", key); } public LocalizeKey Greek(string key) { return addForLang("Greek", key); } public LocalizeKey Serbian(string key) { return addForLang("Serbian", key); } public LocalizeKey Ukrainian(string key) { return addForLang("Ukrainian", key); } private LocalizeKey addForLang(string lang, string value) { if (Localization.instance.GetSelectedLanguage() == lang) { Localization.instance.AddWord(Key, value); } else if (lang == "English" && !Localization.instance.m_translations.ContainsKey(Key)) { Localization.instance.AddWord(Key, value); } return this; } } [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)] [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] public static class EffectManager { [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)] private struct BundleId { [UsedImplicitly] public string assetBundleFileName; [UsedImplicitly] public string folderName; } private static readonly Dictionary<BundleId, AssetBundle> bundleCache; static EffectManager() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Expected O, but got Unknown bundleCache = new Dictionary<BundleId, AssetBundle>(); Harmony val = new Harmony("org.bepinex.helpers.StatusEffectManager"); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(ObjectDB), "Awake", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(EffectManager), "Patch_ObjectDBInit", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(ZNetScene), "Awake", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(EffectManager), "Patch_ZNetSceneAwake", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } public static AssetBundle RegisterAssetBundle(string assetBundleFileName, string folderName = "assets") { BundleId bundleId = default(BundleId); bundleId.assetBundleFileName = assetBundleFileName; bundleId.folderName = folderName; BundleId key = bundleId; if (!bundleCache.TryGetValue(key, out var value)) { Dictionary<BundleId, AssetBundle> dictionary = bundleCache; AssetBundle? obj = ((IEnumerable<AssetBundle>)Resources.FindObjectsOfTypeAll<AssetBundle>()).FirstOrDefault((Func<AssetBundle, bool>)([<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] (AssetBundle a) => ((Object)a).name == assetBundleFileName)) ?? AssetBundle.LoadFromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream(Assembly.GetExecutingAssembly().GetName().Name + ((folderName == "") ? "" : ".") + folderName + "." + assetBundleFileName)); AssetBundle result = obj; dictionary[key] = obj; return result; } return value; } public static StatusEffect RegisterCustomSE(string assetBundleFileName, string customEffectName, string folderName = "assets") { return RegisterCustomSE(RegisterAssetBundle(assetBundleFileName, folderName), customEffectName); } public static StatusEffect RegisterCustomSE(AssetBundle assets, string customEffectName) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown StatusEffect val = (StatusEffect)assets.LoadAsset<ScriptableObject>(customEffectName); CustomSE.CustomSEs.Add(val); return val; } public static StatusEffect RegisterCustomSE(StatusEffect customSE, string customEffectName) { ((Object)customSE).name = customEffectName; CustomSE.CustomSEs.Add(customSE); return customSE; } [HarmonyPriority(700)] private static void Patch_ObjectDBInit(ObjectDB __instance) { foreach (StatusEffect customSE in CustomSE.CustomSEs) { if (!__instance.m_StatusEffects.Contains(customSE)) { __instance.m_StatusEffects.Add(customSE); } } __instance.UpdateItemHashes(); } [HarmonyPriority(700)] private static void Patch_ZNetSceneAwake(ZNetScene __instance) { foreach (KeyValuePair<SE_Item, string> addToPrefab in CustomSE.AddToPrefabs) { try { GameObject prefab = __instance.GetPrefab(addToPrefab.Value); ItemDrop val = (Object.op_Implicit((Object)(object)prefab) ? prefab.GetComponent<ItemDrop>() : prefab.GetComponentInChildren<ItemDrop>()); Aoe val2 = (Object.op_Implicit((Object)(object)prefab) ? prefab.GetComponent<Aoe>() : prefab.GetComponentInChildren<Aoe>()); EffectArea val3 = (Object.op_Implicit((Object)(object)prefab) ? prefab.GetComponent<EffectArea>() : prefab.GetComponentInChildren<EffectArea>()); if (Object.op_Implicit((Object)(object)val)) { switch (addToPrefab.Key.Type) { case EffectType.Equip: val.m_itemData.m_shared.m_equipStatusEffect = addToPrefab.Key.Effect; break; case EffectType.Attack: val.m_itemData.m_shared.m_attackStatusEffect = addToPrefab.Key.Effect; break; case EffectType.Consume: val.m_itemData.m_shared.m_consumeStatusEffect = addToPrefab.Key.Effect; break; case EffectType.Set: val.m_itemData.m_shared.m_setSize = 1; val.m_itemData.m_shared.m_setName = ((Object)addToPrefab.Key.Effect).name; val.m_itemData.m_shared.m_setStatusEffect = addToPrefab.Key.Effect; break; default: throw new ArgumentOutOfRangeException(); } } else if (Object.op_Implicit((Object)(object)val2)) { val2.m_statusEffect = ((Object)addToPrefab.Key.Effect).name; } else if (Object.op_Implicit((Object)(object)val3)) { val3.m_statusEffect = ((Object)addToPrefab.Key.Effect).name; } else { Debug.LogWarning((object)("The prefab '" + ((Object)prefab).name + "' does not have an ItemDrop, AOE, or EffectArea component. Cannot add the StatusEffect to the prefab.")); } } catch (Exception) { Debug.LogWarning((object)"BROKE"); } } } } } namespace SkillManager { [<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(1)] [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)] [PublicAPI] public class Skill { [<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(0)] public static class LocalizationCache { private static readonly Dictionary<string, Localization> localizations = new Dictionary<string, Localization>(); internal static void LocalizationPostfix(Localization __instance, string language) { string key = localizations.FirstOrDefault([<76c2f7b7-2d6e-43e0-bbb7-3a5c6143e396>NullableContext(0)] (KeyValuePair<string, Localization> l) => l.Value == __instance).Key; if (key != null) { localizations.Remove(key); } if (!localizations.ContainsKey(language)) { localizations.Add(language, __instance); } } public static Localization ForLanguage([<75b0ea3e-2c06-4e53-958f-4d89854efa6b>Nullable(2)] string language = null) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a