Decompiled source of WildWeapons v2.2.3
WildWeapons.dll
Decompiled 3 days 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.Cryptography; 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 LocalizationManager; using Microsoft.CodeAnalysis; 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.BufferedDeserialization; using YamlDotNet.Serialization.BufferedDeserialization.TypeDiscriminators; using YamlDotNet.Serialization.Converters; using YamlDotNet.Serialization.EventEmitters; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.NodeDeserializers; using YamlDotNet.Serialization.NodeTypeResolvers; using YamlDotNet.Serialization.ObjectFactories; using YamlDotNet.Serialization.ObjectGraphTraversalStrategies; using YamlDotNet.Serialization.ObjectGraphVisitors; using YamlDotNet.Serialization.Schemas; using YamlDotNet.Serialization.TypeInspectors; using YamlDotNet.Serialization.TypeResolvers; using YamlDotNet.Serialization.Utilities; using YamlDotNet.Serialization.ValueDeserializers; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("WildWeapons")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyProduct("WildWeapons")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("4358610B-F3F4-4843-B7AF-98B7BC60DCDE")] [assembly: AssemblyFileVersion("2.2.3")] [assembly: AssemblyCompany("catharis")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.2.3.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [<19d8b668-cc02-45b7-aeda-75e43e2225e8>Embedded] internal sealed class <19d8b668-cc02-45b7-aeda-75e43e2225e8>EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [<19d8b668-cc02-45b7-aeda-75e43e2225e8>Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] [CompilerGenerated] internal sealed class <d28022a6-0b07-42d6-bd25-81bd28e414ef>NullableAttribute : Attribute { public readonly byte[] NullableFlags; public <d28022a6-0b07-42d6-bd25-81bd28e414ef>NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public <d28022a6-0b07-42d6-bd25-81bd28e414ef>NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [<19d8b668-cc02-45b7-aeda-75e43e2225e8>Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class <c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContextAttribute : Attribute { public readonly byte Flag; public <c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace WildWeapons { [BepInPlugin("catharis.WildWeapons", "WildWeapons", "2.2.3")] [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(1)] [<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(0)] public class WildWeaponsPlugin : BaseUnityPlugin { [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(0)] public enum Toggle { On = 1, Off = 0 } [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(0)] private class ConfigurationManagerAttributes { [UsedImplicitly] public int? Order; [UsedImplicitly] public bool? Browsable; [UsedImplicitly] [<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(2)] public string Category; [UsedImplicitly] [<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(new byte[] { 2, 1 })] public Action<ConfigEntryBase> CustomDrawer; } internal const string ModName = "WildWeapons"; internal const string ModVersion = "2.2.3"; internal const string Author = "catharis"; private const string ModGUID = "catharis.WildWeapons"; private static string ConfigFileName = "catharis.WildWeapons.cfg"; private static string ConfigFileFullPath; internal static string ConnectionError; private readonly Harmony _harmony = new Harmony("catharis.WildWeapons"); public static readonly ManualLogSource WildWeaponsLogger; 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); Item item = new Item("crazymagic", "Permafrost_CM"); item.Name.English("Permafrost"); item.Description.English("A lethally cold magic implement, may your foes be wary, lest they lose a limb to the frosty curse."); item.Crafting.Add(CraftingTable.MageTable, 1); item.RequiredItems.Add("StaffIceShards", 1); item.RequiredItems.Add("FreezeGland", 15); item.RequiredItems.Add("Silver", 15); item.RequiredUpgradeItems.Add("FreezeGland", 3); item.RequiredUpgradeItems.Add("Silver", 3); item.CraftAmount = 1; item.Trade.Price = 0u; item.Trade.Stack = 0u; item.Trade.RequiredGlobalKey = "defeated_bonemass"; item.Trade.Trader = Trader.None; Item item2 = new Item("wildweapons", "RoyalSword_CAH"); item2.Name.English("Royal Sword"); item2.Description.English("A sword used by the Avereign Royal guard before the kingdom's fall."); item2.Crafting.Add(CraftingTable.Forge, 1); item2.RequiredItems.Add("Bronze", 10); item2.RequiredItems.Add("BjornHide", 10); item2.RequiredItems.Add("Ruby", 10); item2.RequiredUpgradeItems.Add("BjornHide", 1); item2.RequiredUpgradeItems.Add("Ruby", 1); item2.CraftAmount = 1; item2.Trade.Price = 0u; item2.Trade.Stack = 0u; item2.Trade.RequiredGlobalKey = "defeated_bonemass"; item2.Trade.Trader = Trader.None; Item item3 = new Item("wildweapons", "RoyalGreatsword_CAH"); item3.Name.English("Royal Greatsword"); item3.Description.English("A greatsword used by the Avereign Royal guard before the kingdom's fall.."); item3.Crafting.Add(CraftingTable.Forge, 1); item3.RequiredItems.Add("Bronze", 20); item3.RequiredItems.Add("BjornHide", 10); item3.RequiredItems.Add("Ruby", 10); item3.RequiredUpgradeItems.Add("Ruby", 1); item3.RequiredUpgradeItems.Add("BjornHide", 1); item3.CraftAmount = 1; item3.Trade.Price = 0u; item3.Trade.Stack = 0u; item3.Trade.RequiredGlobalKey = "defeated_bonemass"; item3.Trade.Trader = Trader.None; Item item4 = new Item("wildweapons", "Repressor_CAH"); item4.Name.English("Repressor"); item4.Description.English("A sleek, straight, and lightweight blade designed for flexible combat."); item4.Crafting.Add(CraftingTable.Forge, 1); item4.RequiredItems.Add("Iron", 20); item4.RequiredItems.Add("Guck", 10); item4.RequiredItems.Add("Root", 5); item4.RequiredUpgradeItems.Add("Guck", 5); item4.RequiredUpgradeItems.Add("Root", 1); item4.CraftAmount = 1; item4.Trade.Price = 0u; item4.Trade.Stack = 0u; item4.Trade.RequiredGlobalKey = "defeated_bonemass"; item4.Trade.Trader = Trader.None; Item item5 = new Item("wildweapons", "TwistedEdge_CAH"); item5.Name.English("Witchbrand"); item5.Description.English("A twisted and bloodied iron blade, to rend apart your foes."); item5.Crafting.Add(CraftingTable.Forge, 1); item5.RequiredItems.Add("Iron", 20); item5.RequiredItems.Add("TrophyKvastur", 1); item5.RequiredItems.Add("Bloodbag", 10); item5.RequiredUpgradeItems.Add("Iron", 5); item5.RequiredUpgradeItems.Add("Bloodbag", 2); item5.CraftAmount = 1; item5.Trade.Price = 0u; item5.Trade.Stack = 0u; item5.Trade.RequiredGlobalKey = "defeated_bonemass"; item5.Trade.Trader = Trader.None; Item item6 = new Item("wildweapons", "EagleStrike_CAH"); item6.Name.English("Eaglestrike"); item6.Description.English("A modified version of the silver sword, infused with icy power."); item6.Crafting.Add(CraftingTable.Forge, 1); item6.RequiredItems.Add("SwordSilver", 1); item6.RequiredItems.Add("FreezeGland", 15); item6.RequiredItems.Add("TrophyHatchling", 1); item6.RequiredUpgradeItems.Add("FreezeGland", 5); item6.RequiredUpgradeItems.Add("TrophyHatchling", 1); item6.CraftAmount = 1; item6.Trade.Price = 0u; item6.Trade.Stack = 0u; item6.Trade.RequiredGlobalKey = "defeated_bonemass"; item6.Trade.Trader = Trader.None; Item item7 = new Item("wildweapons", "Astralis_CAH"); item7.Name.English("Astralis"); item7.Description.English("A magical blade forged from crystals produced by the dragon queen herself."); item7.Crafting.Add(CraftingTable.Forge, 1); item7.RequiredItems.Add("Silver", 15); item7.RequiredItems.Add("FreezeGland", 15); item7.RequiredItems.Add("TrophySGolem", 1); item7.RequiredUpgradeItems.Add("FreezeGland", 5); item7.RequiredUpgradeItems.Add("Silver", 5); item7.CraftAmount = 1; item7.Trade.Price = 0u; item7.Trade.Stack = 0u; item7.Trade.RequiredGlobalKey = "defeated_bonemass"; item7.Trade.Trader = Trader.None; Item item8 = new Item("wildweapons", "DemonBladeAehm_CAH"); item8.Name.English("Aehm"); item8.Description.English("Demonic sword Aehm, Brother sword of Vehm."); item8.Crafting.Add(CraftingTable.Forge, 1); item8.RequiredItems.Add("SwordIron", 1); item8.RequiredItems.Add("TrophyCultist", 1); item8.RequiredItems.Add("Bloodbag", 10); item8.RequiredUpgradeItems.Add("Iron", 5); item8.RequiredUpgradeItems.Add("Bloodbag", 5); item8.CraftAmount = 1; item8.Trade.Price = 0u; item8.Trade.Stack = 0u; item8.Trade.RequiredGlobalKey = "defeated_bonemass"; item8.Trade.Trader = Trader.None; Item item9 = new Item("wildweapons", "DemonBladeVehm_CAH"); item9.Name.English("Vehm"); item9.Description.English("Demonic sword Vehm, Sister sword of Aehm."); item9.Crafting.Add(CraftingTable.Forge, 1); item9.RequiredItems.Add("SwordIron", 1); item9.RequiredItems.Add("TrophyCultist", 1); item9.RequiredItems.Add("Bloodbag", 10); item9.RequiredUpgradeItems.Add("Iron", 5); item9.RequiredUpgradeItems.Add("Bloodbag", 5); item9.CraftAmount = 1; item9.Trade.Price = 0u; item9.Trade.Stack = 0u; item9.Trade.RequiredGlobalKey = "defeated_bonemass"; item9.Trade.Trader = Trader.None; Item item10 = new Item("wildweapons", "MountainCleaver_CAH"); item10.Name.English("Mountain Cleaver"); item10.Description.English("A massive heavy blade capable of tearing even mountains asunder."); item10.Crafting.Add(CraftingTable.Forge, 1); item10.RequiredItems.Add("Iron", 80); item10.RequiredItems.Add("Silver", 30); item10.RequiredItems.Add("TrophySGolem", 1); item10.RequiredUpgradeItems.Add("Iron", 5); item10.RequiredUpgradeItems.Add("Silver", 5); item10.CraftAmount = 1; item10.Trade.Price = 0u; item10.Trade.Stack = 0u; item10.Trade.RequiredGlobalKey = "defeated_bonemass"; item10.Trade.Trader = Trader.None; Item item11 = new Item("wildweapons", "BoneReaver_CAH"); item11.Name.English("Bonereaver"); item11.Description.English("An incredibly violent blade made to rip apart foes. Something about violating a geneva convention, whatever that is."); item11.Crafting.Add(CraftingTable.Forge, 1); item11.RequiredItems.Add("TrophyGoblinKing", 1); item11.RequiredItems.Add("BoneFragments", 50); item11.RequiredItems.Add("Bloodbag", 25); item11.RequiredUpgradeItems.Add("BoneFragments", 10); item11.RequiredUpgradeItems.Add("Bloodbag", 10); item11.CraftAmount = 1; item11.Trade.Price = 0u; item11.Trade.Stack = 0u; item11.Trade.RequiredGlobalKey = "defeated_bonemass"; item11.Trade.Trader = Trader.None; Item item12 = new Item("wildweapons", "Infernus_CAH"); item12.Name.English("Infernus"); item12.Description.English("A burning blade once wielded by a great queen who built a castle atop a volcano, eventually people tired of her control and slaughtered her."); item12.Crafting.Add(CraftingTable.BlackForge, 1); item12.RequiredItems.Add("Heatscar_CAH", 1); item12.RequiredItems.Add("SurtlingCore", 5); item12.RequiredItems.Add("YagluthDrop", 2); item12.RequiredUpgradeItems.Add("SurtlingCore", 1); item12.RequiredUpgradeItems.Add("YagluthDrop", 1); item12.CraftAmount = 1; item12.Trade.Price = 0u; item12.Trade.Stack = 0u; item12.Trade.RequiredGlobalKey = "defeated_bonemass"; item12.Trade.Trader = Trader.None; Item item13 = new Item("wildweapons", "JadeJian_CAH"); item13.Name.English("Tian Du"); item13.Description.English("The ancient jian once wielded by the one known as the Heavenly Poison Demon."); item13.Crafting.Add(CraftingTable.BlackForge, 1); item13.RequiredItems.Add("TrophyTick", 5); item13.RequiredItems.Add("Eitr", 30); item13.RequiredItems.Add("Sap", 30); item13.RequiredUpgradeItems.Add("Eitr", 5); item13.RequiredUpgradeItems.Add("Sap", 5); item13.CraftAmount = 1; item13.Trade.Price = 0u; item13.Trade.Stack = 0u; item13.Trade.RequiredGlobalKey = "defeated_bonemass"; item13.Trade.Trader = Trader.None; Item item14 = new Item("wildweapons", "SoulThief_CAH"); item14.Name.English("Soulthief"); item14.Description.English("A sinister longsword that utilizes unknown magic to fire condensed magic blades at your foes"); item14.Crafting.Add(CraftingTable.MageTable, 1); item14.RequiredItems.Add("Eitr", 20); item14.RequiredItems.Add("BlackCore", 5); item14.RequiredItems.Add("BlackMetal", 15); item14.RequiredItems.Add("TrophyDvergr", 3); item14.RequiredUpgradeItems.Add("Eitr", 5); item14.RequiredUpgradeItems.Add("BlackMetal", 5); item14.CraftAmount = 1; item14.Trade.Price = 0u; item14.Trade.Stack = 0u; item14.Trade.RequiredGlobalKey = "defeated_bonemass"; item14.Trade.Trader = Trader.None; Item item15 = new Item("wildweapons", "Arondight_CAH"); item15.Name.English("Arondight"); item15.Description.English("A legendary sword, reborn and stronger than ever."); item15.Crafting.Add(CraftingTable.BlackForge, 1); item15.RequiredItems.Add("Coins", 1000); item15.RequiredItems.Add("THSwordKrom", 1); item15.RequiredItems.Add("TrophySeekerQueen", 1); item15.RequiredItems.Add("TrophyDragonQueen", 1); item15.RequiredUpgradeItems.Add("DragonTear", 1); item15.RequiredUpgradeItems.Add("QueenDrop", 1); item15.CraftAmount = 1; item15.Trade.Price = 0u; item15.Trade.Stack = 0u; item15.Trade.RequiredGlobalKey = "defeated_bonemass"; item15.Trade.Trader = Trader.None; Item item16 = new Item("wildweapons", "StarGleam_CAH"); item16.Name.English("Stargleam"); item16.Description.English("A sparkling long blade made in an effort to mimic the very stars."); item16.Crafting.Add(CraftingTable.BlackForge, 1); item16.RequiredItems.Add("TrophyFader", 1); item16.RequiredItems.Add("Coins", 1000); item16.RequiredItems.Add("FlametalNew", 25); item16.RequiredItems.Add("GemstoneBlue", 1); item16.RequiredUpgradeItems.Add("FlametalNew", 5); item16.RequiredUpgradeItems.Add("GemstoneBlue", 1); item16.CraftAmount = 1; item16.Trade.Price = 0u; item16.Trade.Stack = 0u; item16.Trade.RequiredGlobalKey = "defeated_bonemass"; item16.Trade.Trader = Trader.None; Item item17 = new Item("wildweapons", "Firebrand_CAH"); item17.Name.English("Durandal"); item17.Description.English("A legendary sword, blazing once more beneath molten skies"); item17.Crafting.Add(CraftingTable.BlackForge, 1); item17.RequiredItems.Add("MountainCleaver_CAH", 1); item17.RequiredItems.Add("TrophyCharredMelee", 1); item17.RequiredItems.Add("TrophyCharredMage", 1); item17.RequiredItems.Add("TrophyCharredArcher", 1); item17.RequiredUpgradeItems.Add("FlametalNew", 2); item17.RequiredUpgradeItems.Add("CharredBone", 10); item17.CraftAmount = 1; item17.Trade.Price = 0u; item17.Trade.Stack = 0u; item17.Trade.RequiredGlobalKey = "defeated_bonemass"; item17.Trade.Trader = Trader.None; Item item18 = new Item("wildweapons", "Rupture_CAH"); item18.Name.English("Rupture"); item18.Description.English("A blade forged by combining the twin demon blades and concentrating their power into a deadly weapon."); item18.Crafting.Add(CraftingTable.BlackForge, 1); item18.RequiredItems.Add("DemonBladeAehm_CAH", 1); item18.RequiredItems.Add("DemonBladeVehm_CAH", 1); item18.RequiredItems.Add("FlametalNew", 25); item18.RequiredItems.Add("GemstoneRed", 1); item18.RequiredUpgradeItems.Add("FlametalNew", 5); item18.RequiredUpgradeItems.Add("GemstoneRed", 1); item18.CraftAmount = 1; item18.Trade.Price = 0u; item18.Trade.Stack = 0u; item18.Trade.RequiredGlobalKey = "defeated_bonemass"; item18.Trade.Trader = Trader.None; Item item19 = new Item("wildweapons", "Frigida_CAH"); item19.Name.English("Frigada"); item19.Description.English("A deep and ancient sword, harrowing with icy power, even the heat of the Ashlands yields to Frigada's frosty might."); item19.Crafting.Add(CraftingTable.BlackForge, 1); item19.RequiredItems.Add("FreezeGland", 30); item19.RequiredItems.Add("FlametalNew", 30); item19.RequiredItems.Add("GemstoneBlue", 2); item19.RequiredUpgradeItems.Add("FreezeGland", 5); item19.RequiredUpgradeItems.Add("FlametalNew", 5); item19.CraftAmount = 1; item19.Trade.Price = 0u; item19.Trade.Stack = 0u; item19.Trade.RequiredGlobalKey = "defeated_bonemass"; item19.Trade.Trader = Trader.None; Item item20 = new Item("wildweapons", "Conflagration_CAH"); item20.Name.English("Conflagration"); item20.Description.English("A culmination of absolute flame, the pinnacle of fire, Conflagration."); item20.Crafting.Add(CraftingTable.BlackForge, 1); item20.RequiredItems.Add("Infernus_CAH", 1); item20.RequiredItems.Add("SwordDyrnwyn", 1); item20.RequiredItems.Add("MoltenCore", 5); item20.RequiredItems.Add("FlametalNew", 10); item20.RequiredUpgradeItems.Add("MoltenCore", 1); item20.RequiredUpgradeItems.Add("FlametalNew", 5); item20.CraftAmount = 1; item20.Trade.Price = 0u; item20.Trade.Stack = 0u; item20.Trade.RequiredGlobalKey = "defeated_bonemass"; item20.Trade.Trader = Trader.None; Item item21 = new Item("wildweapons", "Viridium_CAH"); item21.Name.English("Viridium"); item21.Description.English("A mighty blade made from black steel and enhanced with ghostly jade."); item21.Crafting.Add(CraftingTable.BlackForge, 1); item21.RequiredItems.Add("JadeJian_CAH", 1); item21.RequiredItems.Add("BlackMetal", 25); item21.RequiredItems.Add("TrophyAbomination", 1); item21.RequiredItems.Add("GemstoneGreen", 1); item21.RequiredUpgradeItems.Add("BlackMetal", 5); item21.RequiredUpgradeItems.Add("Bronze", 5); item21.CraftAmount = 1; item21.Trade.Price = 0u; item21.Trade.Stack = 0u; item21.Trade.RequiredGlobalKey = "defeated_bonemass"; item21.Trade.Trader = Trader.None; Item item22 = new Item("wildweapons", "StormWalker_CAH"); item22.Name.English("Storm Walker"); item22.Description.English("The wielder is said to be capable of flying through storms like lightning."); item22.Crafting.Add(CraftingTable.BlackForge, 1); item22.RequiredItems.Add("FlametalNew", 30); item22.RequiredItems.Add("ShieldCore", 1); item22.RequiredItems.Add("GemstoneRed", 1); item22.RequiredItems.Add("SwordNiedhoggLightning", 1); item22.RequiredUpgradeItems.Add("FlametalNew", 5); item22.RequiredUpgradeItems.Add("Bronze", 5); item22.CraftAmount = 1; item22.Trade.Price = 0u; item22.Trade.Stack = 0u; item22.Trade.RequiredGlobalKey = "defeated_bonemass"; item22.Trade.Trader = Trader.None; Item item23 = new Item("wildweapons", "Agareth_CAH"); item23.Name.English("Agareth"); item23.Description.English("A ghostly sword, from torn spirits and unholy wraiths, let yourself revel in dark power..."); item23.Crafting.Add(CraftingTable.BlackForge, 1); item23.RequiredItems.Add("TwistedEdge_CAH", 1); item23.RequiredItems.Add("FlametalNew", 20); item23.RequiredItems.Add("TrophyWraith", 3); item23.RequiredItems.Add("TrophyGhost", 3); item23.RequiredUpgradeItems.Add("FlametalNew", 5); item23.RequiredUpgradeItems.Add("Ectoplasm", 2); item23.CraftAmount = 1; item23.Trade.Price = 0u; item23.Trade.Stack = 0u; item23.Trade.RequiredGlobalKey = "defeated_bonemass"; item23.Trade.Trader = Trader.None; Item item24 = new Item("wildweapons", "Arumeria_CAH"); item24.Name.English("Arumeria"); item24.Description.English("Cut them, stab them, put holes through their miserable eyes, you are divine, and they shall not gaze upon you."); item24.Crafting.Add(CraftingTable.BlackForge, 1); item24.RequiredItems.Add("Repressor_CAH", 1); item24.RequiredItems.Add("MechanicalSpring", 10); item24.RequiredItems.Add("FlametalNew", 15); item24.RequiredItems.Add("TrophyMorgen", 2); item24.RequiredUpgradeItems.Add("FlametalNew", 3); item24.RequiredUpgradeItems.Add("MorgenSinew", 2); item24.CraftAmount = 1; item24.Trade.Price = 0u; item24.Trade.Stack = 0u; item24.Trade.RequiredGlobalKey = "defeated_bonemass"; item24.Trade.Trader = Trader.None; Item item25 = new Item("wildweapons", "GoldBrand_CAH"); item25.Name.English("Goldbrand"); item25.Description.English("A simple and regal katana forged from bronze and leather."); item25.Crafting.Add(CraftingTable.Forge, 1); item25.RequiredItems.Add("Bronze", 15); item25.RequiredItems.Add("LeatherScraps", 5); item25.RequiredItems.Add("DeerHide", 5); item25.RequiredUpgradeItems.Add("Bronze", 5); item25.RequiredUpgradeItems.Add("DeerHide", 2); item25.CraftAmount = 1; item25.Trade.Price = 0u; item25.Trade.Stack = 0u; item25.Trade.RequiredGlobalKey = "defeated_bonemass"; item25.Trade.Trader = Trader.None; Item item26 = new Item("wildweapons", "Emberspark_CAH"); item26.Name.English("Emberspark"); item26.Description.English("A wicked katana forged from iron and fire to create a mystical blade."); item26.Crafting.Add(CraftingTable.Forge, 1); item26.RequiredItems.Add("Iron", 20); item26.RequiredItems.Add("SurtlingCore", 5); item26.RequiredItems.Add("TrophySurtling", 1); item26.RequiredUpgradeItems.Add("Iron", 5); item26.RequiredUpgradeItems.Add("SurtlingCore", 1); item26.CraftAmount = 1; item26.Trade.Price = 0u; item26.Trade.Stack = 0u; item26.Trade.RequiredGlobalKey = "defeated_bonemass"; item26.Trade.Trader = Trader.None; Item item27 = new Item("wildweapons", "Mortalis_CAH"); item27.Name.English("Mortalis"); item27.Description.English("A once regal katana, now smeared by cultist blood, has gained a mind of its own and craves blood."); item27.Crafting.Add(CraftingTable.Forge, 1); item27.RequiredItems.Add("GoldBrand_CAH", 1); item27.RequiredItems.Add("TrophyCultist", 2); item27.RequiredItems.Add("Iron", 10); item27.RequiredItems.Add("Bloodbag", 10); item27.RequiredUpgradeItems.Add("Bloodbag", 5); item27.RequiredUpgradeItems.Add("JuteRed", 1); item27.CraftAmount = 1; item27.Trade.Price = 0u; item27.Trade.Stack = 0u; item27.Trade.RequiredGlobalKey = "defeated_bonemass"; item27.Trade.Trader = Trader.None; Item item28 = new Item("wildweapons", "FlowerVeil_CAH"); item28.Name.English("Flowerveil"); item28.Description.English("The result of purifying Mortalis under the guidance of ancient spirits and a strong will. "); item28.Crafting.Add(CraftingTable.Forge, 1); item28.RequiredItems.Add("Mortalis_CAH", 1); item28.RequiredItems.Add("Silver", 10); item28.RequiredItems.Add("Wisp", 5); item28.RequiredItems.Add("PowderedDragonEgg", 10); item28.RequiredUpgradeItems.Add("Silver", 5); item28.RequiredUpgradeItems.Add("PowderedDragonEgg", 2); item28.CraftAmount = 1; item28.Trade.Price = 0u; item28.Trade.Stack = 0u; item28.Trade.RequiredGlobalKey = "defeated_bonemass"; item28.Trade.Trader = Trader.None; Item item29 = new Item("wildweapons", "StormDragon_CAH"); item29.Name.English("Storm Dragon"); item29.Description.English("The call of thunder, the breath of a dragon, behold a mighty blade!"); item29.Crafting.Add(CraftingTable.BlackForge, 1); item29.RequiredItems.Add("Emberspark_CAH", 1); item29.RequiredItems.Add("FlametalNew", 15); item29.RequiredItems.Add("Thunderstone", 20); item29.RequiredItems.Add("GemstoneBlue", 1); item29.RequiredUpgradeItems.Add("SurtlingCore", 5); item29.RequiredUpgradeItems.Add("Thunderstone", 5); item29.CraftAmount = 1; item29.Trade.Price = 0u; item29.Trade.Stack = 0u; item29.Trade.RequiredGlobalKey = "defeated_bonemass"; item29.Trade.Trader = Trader.None; Item item30 = new Item("wildweapons", "BlossomSong_CAH"); item30.Name.English("Blossomsong"); item30.Description.English("A beautiful blade of utmost elegance, capable of firing condensed sword energy from the will of its wielder."); item30.Crafting.Add(CraftingTable.BlackForge, 1); item30.RequiredItems.Add("TrophySeekerQueen", 1); item30.RequiredItems.Add("FlowerVeil_CAH", 1); item30.RequiredItems.Add("FlametalNew", 20); item30.RequiredItems.Add("PowderedDragonEgg", 20); item30.RequiredUpgradeItems.Add("PowderedDragonEgg", 5); item30.RequiredUpgradeItems.Add("FlametalNew", 5); item30.CraftAmount = 1; item30.Trade.Price = 0u; item30.Trade.Stack = 0u; item30.Trade.RequiredGlobalKey = "defeated_bonemass"; item30.Trade.Trader = Trader.None; Item item31 = new Item("wildweapons", "SpiritBreaker_CAH"); item31.Name.English("Spiritbreaker"); item31.Description.English("Woe be apon thee, crush your enemies with their own skulls."); item31.Crafting.Add(CraftingTable.Forge, 1); item31.RequiredItems.Add("Iron", 20); item31.RequiredItems.Add("Ectoplasm", 10); item31.RequiredItems.Add("TrophySkeletonPoison", 2); item31.RequiredUpgradeItems.Add("Iron", 5); item31.RequiredUpgradeItems.Add("Ectoplasm", 2); item31.CraftAmount = 1; item31.Trade.Price = 0u; item31.Trade.Stack = 0u; item31.Trade.RequiredGlobalKey = "defeated_bonemass"; item31.Trade.Trader = Trader.None; Item item32 = new Item("wildweapons", "Frostburn_CAH"); item32.Name.English("Frostburn"); item32.Description.English("Forged of unmelting ice, this hammer is capable of inflicting devastating wounds."); item32.Crafting.Add(CraftingTable.Forge, 1); item32.RequiredItems.Add("Silver", 20); item32.RequiredItems.Add("FreezeGland", 10); item32.RequiredItems.Add("TrophySGolem", 1); item32.RequiredUpgradeItems.Add("Silver", 5); item32.RequiredUpgradeItems.Add("FreezeGland", 2); item32.CraftAmount = 1; item32.Trade.Price = 0u; item32.Trade.Stack = 0u; item32.Trade.RequiredGlobalKey = "defeated_bonemass"; item32.Trade.Trader = Trader.None; Item item33 = new Item("wildweapons", "SunCrusher_CAH"); item33.Name.English("Suncrusher"); item33.Description.English("By utilizing the power of heat and spirit, you have converted frostner into a deadly heated weapon."); item33.Crafting.Add(CraftingTable.Forge, 1); item33.RequiredItems.Add("MaceSilver", 1); item33.RequiredItems.Add("TrophyBjornUndead", 1); item33.RequiredItems.Add("TrophySurtling", 1); item33.RequiredItems.Add("Bronze", 20); item33.RequiredUpgradeItems.Add("Bronze", 5); item33.RequiredUpgradeItems.Add("SurtlingCore", 1); item33.CraftAmount = 1; item33.Trade.Price = 0u; item33.Trade.Stack = 0u; item33.Trade.RequiredGlobalKey = "defeated_bonemass"; item33.Trade.Trader = Trader.None; Item item34 = new Item("wildweapons", "Harrower_CAH"); item34.Name.English("Harrower"); item34.Description.English("What a grotesque thing... What have you done..."); item34.Crafting.Add(CraftingTable.BlackForge, 1); item34.RequiredItems.Add("SledgeDemolisher", 1); item34.RequiredItems.Add("TrophyGoblinKing", 1); item34.RequiredItems.Add("TrophyDvergr", 2); item34.RequiredItems.Add("TrophySkeleton", 5); item34.RequiredUpgradeItems.Add("BoneFragments", 10); item34.RequiredUpgradeItems.Add("TrophySkeleton", 1); item34.CraftAmount = 1; item34.Trade.Price = 0u; item34.Trade.Stack = 0u; item34.Trade.RequiredGlobalKey = "defeated_bonemass"; item34.Trade.Trader = Trader.None; Item item35 = new Item("wildweapons", "Sparkgrinder_CAH"); item35.Name.English("Sparkgrinder"); item35.Description.English("A hammer forged from lightning and sun, it possesses sky crushing strength."); item35.Crafting.Add(CraftingTable.BlackForge, 1); item35.RequiredItems.Add("SunCrusher_CAH", 1); item35.RequiredItems.Add("Thunderstone", 20); item35.RequiredItems.Add("Eitr", 15); item35.RequiredUpgradeItems.Add("Eitr", 5); item35.RequiredUpgradeItems.Add("Thunderstone", 1); item35.CraftAmount = 1; item35.Trade.Price = 0u; item35.Trade.Stack = 0u; item35.Trade.RequiredGlobalKey = "defeated_bonemass"; item35.Trade.Trader = Trader.None; Item item36 = new Item("wildweapons", "Magmarium_CAH"); item36.Name.English("Magmarium"); item36.Description.English("A magmatic hammer capable of creating eruptions from the earth."); item36.Crafting.Add(CraftingTable.BlackForge, 1); item36.RequiredItems.Add("MaceEldner", 1); item36.RequiredItems.Add("DragonEgg", 2); item36.RequiredItems.Add("FlametalNew", 20); item36.RequiredItems.Add("MoltenCore", 5); item36.RequiredUpgradeItems.Add("FlametalNew", 5); item36.RequiredUpgradeItems.Add("MoltenCore", 1); item36.CraftAmount = 1; item36.Trade.Price = 0u; item36.Trade.Stack = 0u; item36.Trade.RequiredGlobalKey = "defeated_bonemass"; item36.Trade.Trader = Trader.None; Item item37 = new Item("wildweapons", "Corundum_CAH"); item37.Name.English("Corundum"); item37.Description.English("The mightiest hammer there is, capable of crushing any rock, or skull..."); item37.Crafting.Add(CraftingTable.BlackForge, 1); item37.RequiredItems.Add("TrophyFader", 1); item37.RequiredItems.Add("Bronze", 25); item37.RequiredItems.Add("FlametalNew", 25); item37.RequiredItems.Add("BlackMarble", 25); item37.RequiredUpgradeItems.Add("Bronze", 5); item37.RequiredUpgradeItems.Add("FlametalNew", 5); item37.CraftAmount = 1; item37.Trade.Price = 0u; item37.Trade.Stack = 0u; item37.Trade.RequiredGlobalKey = "defeated_bonemass"; item37.Trade.Trader = Trader.None; Item item38 = new Item("wildweapons", "FringeTrimmer_CAH"); item38.Name.English("Fringe Trimmer"); item38.Description.English("Despite the low quality in material, the craftsmanship is exceptional."); item38.Crafting.Add(CraftingTable.Forge, 1); item38.RequiredItems.Add("Tin", 10); item38.RequiredItems.Add("Wood", 5); item38.RequiredItems.Add("DeerHide", 10); item38.RequiredUpgradeItems.Add("Tin", 1); item38.RequiredUpgradeItems.Add("DeerHide", 1); item38.CraftAmount = 1; item38.Trade.Price = 0u; item38.Trade.Stack = 0u; item38.Trade.RequiredGlobalKey = "defeated_bonemass"; item38.Trade.Trader = Trader.None; Item item39 = new Item("wildweapons", "RoyalAxe_CAH"); item39.Name.English("Royal Greataxe"); item39.Description.English("An axe used by the Avereign Royal guard before the kingdom's fall."); item39.Crafting.Add(CraftingTable.Forge, 1); item39.RequiredItems.Add("Bronze", 20); item39.RequiredItems.Add("BjornHide", 10); item39.RequiredItems.Add("Ruby", 10); item39.RequiredUpgradeItems.Add("BjornHide", 1); item39.RequiredUpgradeItems.Add("Ruby", 1); item39.CraftAmount = 1; item39.Trade.Price = 0u; item39.Trade.Stack = 0u; item39.Trade.RequiredGlobalKey = "defeated_bonemass"; item39.Trade.Trader = Trader.None; Item item40 = new Item("wildweapons", "Galice_CAH"); item40.Name.English("Galice"); item40.Description.English("A deadly hand scythe crafted from materials scavenged from the swamp."); item40.Crafting.Add(CraftingTable.Forge, 1); item40.RequiredItems.Add("Iron", 10); item40.RequiredItems.Add("Guck", 5); item40.RequiredItems.Add("ElderBark", 10); item40.RequiredUpgradeItems.Add("Guck", 5); item40.RequiredUpgradeItems.Add("ElderBark", 5); item40.CraftAmount = 1; item40.Trade.Price = 0u; item40.Trade.Stack = 0u; item40.Trade.RequiredGlobalKey = "defeated_bonemass"; item40.Trade.Trader = Trader.None; Item item41 = new Item("wildweapons", "SideWinder_CAH"); item41.Name.English("Sidewinder"); item41.Description.English("A frosty axe forged of silver and frost and inscribed with runes."); item41.Crafting.Add(CraftingTable.Forge, 1); item41.RequiredItems.Add("AxeIron", 1); item41.RequiredItems.Add("FreezeGland", 15); item41.RequiredItems.Add("Silver", 30); item41.RequiredUpgradeItems.Add("Silver", 3); item41.RequiredUpgradeItems.Add("FreezeGland", 3); item41.CraftAmount = 1; item41.Trade.Price = 0u; item41.Trade.Stack = 0u; item41.Trade.RequiredGlobalKey = "defeated_bonemass"; item41.Trade.Trader = Trader.None; Item item42 = new Item("wildweapons", "FrostBearer_CAH"); item42.Name.English("Frostbearer"); item42.Description.English("A great axe once wielded by a now dead king who ruled a castle in the mountains."); item42.Crafting.Add(CraftingTable.Forge, 1); item42.RequiredItems.Add("TrophyCultist_Hildir", 1); item42.RequiredItems.Add("FreezeGland", 20); item42.RequiredItems.Add("Silver", 25); item42.RequiredUpgradeItems.Add("Silver", 5); item42.RequiredUpgradeItems.Add("FreezeGland", 5); item42.CraftAmount = 1; item42.Trade.Price = 0u; item42.Trade.Stack = 0u; item42.Trade.RequiredGlobalKey = "defeated_bonemass"; item42.Trade.Trader = Trader.None; Item item43 = new Item("wildweapons", "Corruptum_CAH"); item43.Name.English("Corruptum"); item43.Description.English("A cursed axe that eats away at the minds and bodies of foes, granting vigor to its wielder."); item43.Crafting.Add(CraftingTable.Forge, 1); item43.RequiredItems.Add("Galice_CAH", 1); item43.RequiredItems.Add("TrophyGrowth", 2); item43.RequiredItems.Add("TrophySkeletonPoison", 2); item43.RequiredItems.Add("LinenThread", 10); item43.RequiredUpgradeItems.Add("LinenThread", 5); item43.RequiredUpgradeItems.Add("Guck", 5); item43.CraftAmount = 1; item43.Trade.Price = 0u; item43.Trade.Stack = 0u; item43.Trade.RequiredGlobalKey = "defeated_bonemass"; item43.Trade.Trader = Trader.None; Item item44 = new Item("wildweapons", "Fuegon_CAH"); item44.Name.English("Fuegon"); item44.Description.English("A malformed infernal axe, the result of an experiment with magic gone terribly wrong..."); item44.Crafting.Add(CraftingTable.MageTable, 1); item44.RequiredItems.Add("StaffFireball", 1); item44.RequiredItems.Add("BlackMetal", 20); item44.RequiredItems.Add("TrophySurtling", 2); item44.RequiredUpgradeItems.Add("BlackMetal", 5); item44.RequiredUpgradeItems.Add("Eitr", 5); item44.CraftAmount = 1; item44.Trade.Price = 0u; item44.Trade.Stack = 0u; item44.Trade.RequiredGlobalKey = "defeated_bonemass"; item44.Trade.Trader = Trader.None; Item item45 = new Item("wildweapons", "Evallis_CAH"); item45.Name.English("Evallis"); item45.Description.English("Corruptum evolved, an even more sinister power lurks within, ready to viscerate your enemies."); item45.Crafting.Add(CraftingTable.BlackForge, 1); item45.RequiredItems.Add("Corruptum_CAH", 1); item45.RequiredItems.Add("TrophyFallenValkyrie", 1); item45.RequiredItems.Add("FlametalNew", 15); item45.RequiredItems.Add("Bloodbag", 15); item45.RequiredUpgradeItems.Add("FlametalNew", 5); item45.RequiredUpgradeItems.Add("Bloodbag", 5); item45.CraftAmount = 1; item45.Trade.Price = 0u; item45.Trade.Stack = 0u; item45.Trade.RequiredGlobalKey = "defeated_bonemass"; item45.Trade.Trader = Trader.None; Item item46 = new Item("wildweapons", "Arken_CAH"); item46.Name.English("Arken"); item46.Description.English("The legendary greataxe Arken, crystallized with the combined power of Frostbearer and Fuegon."); item46.Crafting.Add(CraftingTable.BlackForge, 1); item46.RequiredItems.Add("Fuegon_CAH", 1); item46.RequiredItems.Add("FrostBearer_CAH", 1); item46.RequiredItems.Add("FlametalNew", 30); item46.RequiredItems.Add("Crystal", 30); item46.RequiredUpgradeItems.Add("FlametalNew", 5); item46.RequiredUpgradeItems.Add("Crystal", 5); item46.CraftAmount = 1; item46.Trade.Price = 0u; item46.Trade.Stack = 0u; item46.Trade.RequiredGlobalKey = "defeated_bonemass"; item46.Trade.Trader = Trader.None; Item item47 = new Item("wildweapons", "StrideBreaker_CAH"); item47.Name.English("Stridebreaker"); item47.Description.English("Break them, break them all, shatter their knees, make them kneel for you."); item47.Crafting.Add(CraftingTable.BlackForge, 1); item47.RequiredItems.Add("TrophyCharredArcher", 5); item47.RequiredItems.Add("GemstoneRed", 2); item47.RequiredItems.Add("Silver", 25); item47.RequiredItems.Add("Bronze", 25); item47.RequiredUpgradeItems.Add("Silver", 5); item47.RequiredUpgradeItems.Add("Bronze", 5); item47.CraftAmount = 1; item47.Trade.Price = 0u; item47.Trade.Stack = 0u; item47.Trade.RequiredGlobalKey = "defeated_bonemass"; item47.Trade.Trader = Trader.None; Item item48 = new Item("wildweapons", "RoyalLance_CAH"); item48.Name.English("Royal Lance"); item48.Description.English("A lance used by the Avereign Royal guard before the kingdom's fall."); item48.Crafting.Add(CraftingTable.Forge, 1); item48.RequiredItems.Add("Broze", 10); item48.RequiredItems.Add("BjornHide", 10); item48.RequiredItems.Add("Ruby", 10); item48.RequiredUpgradeItems.Add("BjornHide", 1); item48.RequiredUpgradeItems.Add("Ruby", 1); item48.CraftAmount = 1; item48.Trade.Price = 0u; item48.Trade.Stack = 0u; item48.Trade.RequiredGlobalKey = "defeated_bonemass"; item48.Trade.Trader = Trader.None; Item item49 = new Item("wildweapons", "Bladeshift_CAH"); item49.Name.English("Bladeshift"); item49.Description.English("A spear, or is it a sword? Regardless, it sure is deadly."); item49.Crafting.Add(CraftingTable.Forge, 1); item49.RequiredItems.Add("Iron", 10); item49.RequiredItems.Add("Bronze", 10); item49.RequiredItems.Add("BjornHide", 5); item49.RequiredUpgradeItems.Add("BjornHide", 1); item49.RequiredUpgradeItems.Add("Iron", 3); item49.CraftAmount = 1; item49.Trade.Price = 0u; item49.Trade.Stack = 0u; item49.Trade.RequiredGlobalKey = "defeated_bonemass"; item49.Trade.Trader = Trader.None; Item item50 = new Item("wildweapons", "Frostpiercer_CAH"); item50.Name.English("Frostpiercer"); item50.Description.English("A frigid and pointy spear forged from unmelting ice."); item50.Crafting.Add(CraftingTable.Forge, 1); item50.RequiredItems.Add("Silver", 15); item50.RequiredItems.Add("FreezeGland", 10); item50.RequiredItems.Add("TrophyWolf", 1); item50.RequiredUpgradeItems.Add("Silver", 5); item50.RequiredUpgradeItems.Add("FreezeGland", 2); item50.CraftAmount = 1; item50.Trade.Price = 0u; item50.Trade.Stack = 0u; item50.Trade.RequiredGlobalKey = "defeated_bonemass"; item50.Trade.Trader = Trader.None; Item item51 = new Item("wildweapons", "Solemnity_CAH"); item51.Name.English("Solemnity"); item51.Description.English("Harrowing, yet beautifully distinct, it will tear through your foes with ease."); item51.Crafting.Add(CraftingTable.BlackForge, 1); item51.RequiredItems.Add("SpearCarapace", 1); item51.RequiredItems.Add("Crystal", 5); item51.RequiredItems.Add("Bronze", 5); item51.RequiredUpgradeItems.Add("Crystal", 2); item51.RequiredUpgradeItems.Add("Bronze", 2); item51.CraftAmount = 1; item51.Trade.Price = 0u; item51.Trade.Stack = 0u; item51.Trade.RequiredGlobalKey = "defeated_bonemass"; item51.Trade.Trader = Trader.None; Item item52 = new Item("wildweapons", "SunPiercer_CAH"); item52.Name.English("Sunpiercer"); item52.Description.English("A magestic and legendary spear, said to once be used by a god to spear the very sun from the sky."); item52.Crafting.Add(CraftingTable.BlackForge, 1); item52.RequiredItems.Add("SpearSplitner", 1); item52.RequiredItems.Add("MoltenCore", 5); item52.RequiredItems.Add("Bronze", 20); item52.RequiredItems.Add("TrophySkeletonHildir", 1); item52.RequiredUpgradeItems.Add("MoltenCore", 1); item52.RequiredUpgradeItems.Add("Bronze", 5); item52.CraftAmount = 1; item52.Trade.Price = 0u; item52.Trade.Stack = 0u; item52.Trade.RequiredGlobalKey = "defeated_bonemass"; item52.Trade.Trader = Trader.None; Item item53 = new Item("wildweapons", "RoyalAtgeir_CAH"); item53.Name.English("Royal Atgeir"); item53.Description.English("An atgeir used by the Avereign Royal guard before the kingdom's fall."); item53.Crafting.Add(CraftingTable.Forge, 1); item53.RequiredItems.Add("Bronze", 20); item53.RequiredItems.Add("BjornHide", 10); item53.RequiredItems.Add("Ruby", 10); item53.RequiredUpgradeItems.Add("BjornHide", 1); item53.RequiredUpgradeItems.Add("Ruby", 1); item53.CraftAmount = 1; item53.Trade.Price = 0u; item53.Trade.Stack = 0u; item53.Trade.RequiredGlobalKey = "defeated_bonemass"; item53.Trade.Trader = Trader.None; Item item54 = new Item("wildweapons", "RoyalScythe_CAH"); item54.Name.English("Royal Scythe"); item54.Description.English("A scythe used by the Avereign Royal guard before the kingdom's fall."); item54.Crafting.Add(CraftingTable.Forge, 1); item54.RequiredItems.Add("Bronze", 20); item54.RequiredItems.Add("BjornHide", 10); item54.RequiredItems.Add("Ruby", 10); item54.RequiredUpgradeItems.Add("BjornHide", 1); item54.RequiredUpgradeItems.Add("Ruby", 1); item54.CraftAmount = 1; item54.Trade.Price = 0u; item54.Trade.Stack = 0u; item54.Trade.RequiredGlobalKey = "defeated_bonemass"; item54.Trade.Trader = Trader.None; Item item55 = new Item("wildweapons", "Ephemerance_CAH"); item55.Name.English("Ephemerance"); item55.Description.English("A ghostly glaive that has the ability to make one intangible for a short period of time."); item55.Crafting.Add(CraftingTable.Forge, 1); item55.RequiredItems.Add("TrophyGhost", 1); item55.RequiredItems.Add("Iron", 20); item55.RequiredItems.Add("Ectoplasm", 10); item55.RequiredUpgradeItems.Add("Iron", 3); item55.RequiredUpgradeItems.Add("Ectoplasm", 1); item55.CraftAmount = 1; item55.Trade.Price = 0u; item55.Trade.Stack = 0u; item55.Trade.RequiredGlobalKey = "defeated_bonemass"; item55.Trade.Trader = Trader.None; Item item56 = new Item("wildweapons", "Frostclash_CAH"); item56.Name.English("Frostclash"); item56.Description.English("A frosty and lethal scythe forged from unmelting ice."); item56.Crafting.Add(CraftingTable.Forge, 1); item56.RequiredItems.Add("Silver", 20); item56.RequiredItems.Add("FreezeGland", 10); item56.RequiredItems.Add("TrophyHatchling", 1); item56.RequiredUpgradeItems.Add("Silver", 5); item56.RequiredUpgradeItems.Add("FreezeGland", 2); item56.CraftAmount = 1; item56.Trade.Price = 0u; item56.Trade.Stack = 0u; item56.Trade.RequiredGlobalKey = "defeated_bonemass"; item56.Trade.Trader = Trader.None; Item item57 = new Item("wildweapons", "FearNaught_CAH"); item57.Name.English("Fearnaught"); item57.Description.English("A vile scythe that has reaped the lives of many, will you use it? or will it use you?"); item57.Crafting.Add(CraftingTable.Forge, 1); item57.RequiredItems.Add("TrophyGoblinShaman", 1); item57.RequiredItems.Add("BlackMetal", 20); item57.RequiredItems.Add("AtgeirBlackmetal", 5); item57.RequiredUpgradeItems.Add("BlackMetal", 5); item57.RequiredUpgradeItems.Add("TrophyGoblinShaman", 1); item57.CraftAmount = 1; item57.Trade.Price = 0u; item57.Trade.Stack = 0u; item57.Trade.RequiredGlobalKey = "defeated_bonemass"; item57.Trade.Trader = Trader.None; Item item58 = new Item("wildweapons", "DemonVane_CAH"); item58.Name.English("Demonvane"); item58.Description.English("An insidious spear that gives off a woeful aura..."); item58.Crafting.Add(CraftingTable.BlackForge, 1); item58.RequiredItems.Add("AtgeirHimminAfl", 1); item58.RequiredItems.Add("BlackMetal", 15); item58.RequiredItems.Add("BlackCore", 5); item58.RequiredItems.Add("TrophyDvergr", 1); item58.RequiredUpgradeItems.Add("BlackMetal", 5); item58.RequiredUpgradeItems.Add("BlackCore", 1); item58.CraftAmount = 1; item58.Trade.Price = 0u; item58.Trade.Stack = 0u; item58.Trade.RequiredGlobalKey = "defeated_bonemass"; item58.Trade.Trader = Trader.None; Item item59 = new Item("wildweapons", "Malevolence_CAH"); item59.Name.English("Malevolence"); item59.Description.English("A great magic lance made of ancient evil bones, capable of firing deadly projectiles at the cost of the wielder's life."); item59.Crafting.Add(CraftingTable.BlackForge, 1); item59.RequiredItems.Add("TrophySeekerQueen", 1); item59.RequiredItems.Add("StaffSkeleton", 1); item59.RequiredItems.Add("UndeadBjornRibcage", 15); item59.RequiredItems.Add("BonemawSerpentTooth", 10); item59.RequiredUpgradeItems.Add("UndeadBjornRibcage", 1); item59.RequiredUpgradeItems.Add("BonemawSerpentTooth", 5); item59.CraftAmount = 1; item59.Trade.Price = 0u; item59.Trade.Stack = 0u; item59.Trade.RequiredGlobalKey = "defeated_bonemass"; item59.Trade.Trader = Trader.None; Item item60 = new Item("wildweapons", "SoulShear_CAH"); item60.Name.English("Soulshear"); item60.Description.English("A sinister sickle made from cheap metal and some spiritual materials."); item60.Crafting.Add(CraftingTable.Forge, 1); item60.RequiredItems.Add("Copper", 5); item60.RequiredItems.Add("Ectoplasm", 5); item60.RequiredItems.Add("RoundLog", 1); item60.RequiredUpgradeItems.Add("Copper", 1); item60.RequiredUpgradeItems.Add("Ectoplasm", 1); item60.CraftAmount = 1; item60.Trade.Price = 0u; item60.Trade.Stack = 0u; item60.Trade.RequiredGlobalKey = "defeated_bonemass"; item60.Trade.Trader = Trader.None; Item item61 = new Item("wildweapons", "GospelSong_CAH"); item61.Name.English("Gospelsong"); item61.Description.English("An ornate gothic dagger forged of iron."); item61.Crafting.Add(CraftingTable.Forge, 1); item61.RequiredItems.Add("Iron", 10); item61.RequiredItems.Add("Root", 2); item61.RequiredItems.Add("LeatherScraps", 5); item61.RequiredUpgradeItems.Add("Iron", 1); item61.RequiredUpgradeItems.Add("Root", 1); item61.CraftAmount = 1; item61.Trade.Price = 0u; item61.Trade.Stack = 0u; item61.Trade.RequiredGlobalKey = "defeated_bonemass"; item61.Trade.Trader = Trader.None; Item item62 = new Item("wildweapons", "Heatscar_CAH"); item62.Name.English("Heatscar"); item62.Description.English("A crude blade forged of iron and fire, perhaps someday it can be something more..."); item62.Crafting.Add(CraftingTable.Forge, 1); item62.RequiredItems.Add("Iron", 10); item62.RequiredItems.Add("SurtlingCore", 2); item62.RequiredItems.Add("TrophySurtling", 1); item62.RequiredUpgradeItems.Add("Iron", 3); item62.RequiredUpgradeItems.Add("SurtlingCore", 1); item62.CraftAmount = 1; item62.Trade.Price = 0u; item62.Trade.Stack = 0u; item62.Trade.RequiredGlobalKey = "defeated_bonemass"; item62.Trade.Trader = Trader.None; Item item63 = new Item("wildweapons", "Suppressor_CAH"); item63.Name.English("Suppressor"); item63.Description.English("A dagger designed for defense rather than offense."); item63.Crafting.Add(CraftingTable.Forge, 1); item63.RequiredItems.Add("Iron", 10); item63.RequiredItems.Add("Guck", 10); item63.RequiredItems.Add("TrophyDraugrElite", 1); item63.RequiredUpgradeItems.Add("Iron", 3); item63.RequiredUpgradeItems.Add("Guck", 3); item63.CraftAmount = 1; item63.Trade.Price = 0u; item63.Trade.Stack = 0u; item63.Trade.RequiredGlobalKey = "defeated_bonemass"; item63.Trade.Trader = Trader.None; Item item64 = new Item("wildweapons", "Fanatica_CAH"); item64.Name.English("Fanatica"); item64.Description.English("An ornate dagger used in cultist rituals, extended use may drive the wearer mad..."); item64.Crafting.Add(CraftingTable.Forge, 1); item64.RequiredItems.Add("KnifeSilver", 1); item64.RequiredItems.Add("TrophyUlv", 2); item64.RequiredItems.Add("Ectoplasm", 5); item64.RequiredUpgradeItems.Add("Silver", 3); item64.RequiredUpgradeItems.Add("Ectoplasm", 1); item64.CraftAmount = 1; item64.Trade.Price = 0u; item64.Trade.Stack = 0u; item64.Trade.RequiredGlobalKey = "defeated_bonemass"; item64.Trade.Trader = Trader.None; Item item65 = new Item("wildweapons", "Angelcutter_CAH"); item65.Name.English("Angelcutter"); item65.Description.English("A blasphemous dagger that was once used to murder an angel."); item65.Crafting.Add(CraftingTable.Forge, 1); item65.RequiredItems.Add("Silver", 10); item65.RequiredItems.Add("Obsidian", 10); item65.RequiredItems.Add("TrophyHatchling", 1); item65.RequiredUpgradeItems.Add("Silver", 3); item65.RequiredUpgradeItems.Add("Obsidian", 3); item65.CraftAmount = 1; item65.Trade.Price = 0u; item65.Trade.Stack = 0u; item65.Trade.RequiredGlobalKey = "defeated_bonemass"; item65.Trade.Trader = Trader.None; Item item66 = new Item("wildweapons", "DevilThorn_CAH"); item66.Name.English("Devil's Thorn"); item66.Description.English("A magic-forged dagger said to be capable of cutting through even iron."); item66.Crafting.Add(CraftingTable.BlackForge, 1); item66.RequiredItems.Add("Fanatica_CAH", 1); item66.RequiredItems.Add("GiantBloodSack", 10); item66.RequiredItems.Add("YagluthDrop", 1); item66.RequiredUpgradeItems.Add("Silver", 5); item66.RequiredUpgradeItems.Add("GiantBloodSack", 5); item66.CraftAmount = 1; item66.Trade.Price = 0u; item66.Trade.Stack = 0u; item66.Trade.RequiredGlobalKey = "defeated_bonemass"; item66.Trade.Trader = Trader.None; Item item67 = new Item("wildweapons", "QueenSlayer_CAH"); item67.Name.English("QueenSlayer"); item67.Description.English("A powerful Dagger, made from the bloody might of the Seeker Queen herself."); item67.Crafting.Add(CraftingTable.BlackForge, 1); item67.RequiredItems.Add("TrophySeekerQueen", 1); item67.RequiredItems.Add("Ruby", 10); item67.RequiredItems.Add("Bronze", 10); item67.RequiredUpgradeItems.Add("Bronze", 3); item67.RequiredUpgradeItems.Add("Ruby", 3); item67.CraftAmount = 1; item67.Trade.Price = 0u; item67.Trade.Stack = 0u; item67.Trade.RequiredGlobalKey = "defeated_bonemass"; item67.Trade.Trader = Trader.None; Item item68 = new Item("wildweapons", "Regalia_CAH"); item68.Name.English("Regalia"); item68.Description.English("A regal and deadly dagger that was once used to kill a great king."); item68.Crafting.Add(CraftingTable.BlackForge, 1); item68.RequiredItems.Add("QueenSlayer_CAH", 1); item68.RequiredItems.Add("GemstoneBlue", 3); item68.RequiredItems.Add("FlametalNew", 15); item68.RequiredItems.Add("MorgenSinew", 10); item68.RequiredUpgradeItems.Add("FlametalNew", 3); item68.RequiredUpgradeItems.Add("MorgenSinew", 2); item68.CraftAmount = 1; item68.Trade.Price = 0u; item68.Trade.Stack = 0u; item68.Trade.RequiredGlobalKey = "defeated_bonemass"; item68.Trade.Trader = Trader.None; Item item69 = new Item("wildweapons", "Regulator_CAH"); item69.Name.English("Regulator"); item69.Description.English("Throughout countless battles, Regulator has never failed to deflect a blade. -Perfectly parrying grants a boost to regen, armor, and damage."); item69.Crafting.Add(CraftingTable.BlackForge, 1); item69.RequiredItems.Add("TrophyCharredMelee", 2); item69.RequiredItems.Add("FlametalNew", 10); item69.RequiredItems.Add("GemstoneRed", 1); item69.RequiredUpgradeItems.Add("FlametalNew", 5); item69.RequiredUpgradeItems.Add("GemstoneRed", 1); item69.CraftAmount = 1; item69.Trade.Price = 0u; item69.Trade.Stack = 0u; item69.Trade.RequiredGlobalKey = "defeated_bonemass"; item69.Trade.Trader = Trader.None; Item item70 = new Item("wildweapons", "Auretia_CAH"); item70.Name.English("Auretia"); item70.Description.English("Elegant, sleek, some would even say divine, may this blade deflect the blows of any filthy beings that stand beneath you."); item70.Crafting.Add(CraftingTable.BlackForge, 1); item70.RequiredItems.Add("Suppressor_CAH", 1); item70.RequiredItems.Add("FlametalNew", 15); item70.RequiredItems.Add("TrophyFallenValkyrie", 1); item70.RequiredItems.Add("GemstoneRed", 1); item70.RequiredUpgradeItems.Add("FlametalNew", 3); item70.RequiredUpgradeItems.Add("CelestialFeather", 3); item70.CraftAmount = 1; item70.Trade.Price = 0u; item70.Trade.Stack = 0u; item70.Trade.RequiredGlobalKey = "defeated_bonemass"; item70.Trade.Trader = Trader.None; Item item71 = new Item("wildweapons", "RoyalBow_CAH"); item71.Name.English("Royal Bow"); item71.Description.English("A bow used by the Avereign Royal archers before the kingdom's fall."); item71.Crafting.Add(CraftingTable.Workbench, 1); item71.RequiredItems.Add("Bronze", 15); item71.RequiredItems.Add("BjornHide", 10); item71.RequiredItems.Add("Ruby", 10); item71.RequiredUpgradeItems.Add("BjornHide", 1); item71.RequiredUpgradeItems.Add("Ruby", 1); item71.CraftAmount = 1; item71.Trade.Price = 0u; item71.Trade.Stack = 0u; item71.Trade.RequiredGlobalKey = "defeated_bonemass"; item71.Trade.Trader = Trader.None; Item item72 = new Item("wildweapons", "SkullStrike_CAH"); item72.Name.English("Skullstrike"); item72.Description.English("Crafted of the skulls and bones of your enemies, tear them apart with deadly arrows."); item72.Crafting.Add(CraftingTable.Workbench, 1); item72.RequiredItems.Add("Iron", 15); item72.RequiredItems.Add("ElderBark", 15); item72.RequiredItems.Add("TrophyDraugrElite", 1); item72.RequiredUpgradeItems.Add("Iron", 3); item72.RequiredUpgradeItems.Add("ElderBark", 2); item72.CraftAmount = 1; item72.Trade.Price = 0u; item72.Trade.Stack = 0u; item72.Trade.RequiredGlobalKey = "defeated_bonemass"; item72.Trade.Trader = Trader.None; Item item73 = new Item("wildweapons", "Skivanti_CAH"); item73.Name.English("Skivanti"); item73.Description.English("A mechanical greatbow made to fire high speed arrows."); item73.Crafting.Add(CraftingTable.Workbench, 1); item73.RequiredItems.Add("Silver", 15); item73.RequiredItems.Add("Bronze", 15); item73.RequiredItems.Add("DragonTear", 5); item73.RequiredUpgradeItems.Add("Silver", 5); item73.RequiredUpgradeItems.Add("DragonTear", 1); item73.CraftAmount = 1; item73.Trade.Price = 0u; item73.Trade.Stack = 0u; item73.Trade.RequiredGlobalKey = "defeated_bonemass"; item73.Trade.Trader = Trader.None; Item item74 = new Item("wildweapons", "Vecta_CAH"); item74.Name.English("Vecta"); item74.Description.English("A strong bow forged from the tough carapace of seekers."); item74.Crafting.Add(CraftingTable.BlackForge, 1); item74.RequiredItems.Add("TrophySeekerBrute", 1); item74.RequiredItems.Add("BlackMetal", 25); item74.RequiredItems.Add("Mandible", 10); item74.RequiredUpgradeItems.Add("BlackMetal", 5); item74.RequiredUpgradeItems.Add("Mandible", 1); item74.CraftAmount = 1; item74.Trade.Price = 0u; item74.Trade.Stack = 0u; item74.Trade.RequiredGlobalKey = "defeated_bonemass"; item74.Trade.Trader = Trader.None; Item item75 = new Item("wildweapons", "Astarte_CAH"); item75.Name.English("Astarte"); item75.Description.English("Holy bow Astarte, one wielded by a heroic archer."); item75.Crafting.Add(CraftingTable.BlackForge, 1); item75.RequiredItems.Add("BowDraugrFang", 1); item75.RequiredItems.Add("Eitr", 25); item75.RequiredItems.Add("Silver", 15); item75.RequiredItems.Add("TrophySeeker", 5); item75.RequiredUpgradeItems.Add("Silver", 5); item75.RequiredUpgradeItems.Add("Eitr", 5); item75.CraftAmount = 1; item75.Trade.Price = 0u; item75.Trade.Stack = 0u; item75.Trade.RequiredGlobalKey = "defeated_bonemass"; item75.Trade.Trader = Trader.None; Item item76 = new Item("wildweapons", "Nocturata_CAH"); item76.Name.English("Nocturata"); item76.Description.English("Dark, sleek, and deadly, this bow craves blood."); item76.Crafting.Add(CraftingTable.BlackForge, 1); item76.RequiredItems.Add("TrophyFallenValkyrie", 2); item76.RequiredItems.Add("BowSpineSnap", 1); item76.RequiredItems.Add("GemstoneRed", 1); item76.RequiredItems.Add("Feathers", 30); item76.RequiredUpgradeItems.Add("FlametalNew", 3); item76.RequiredUpgradeItems.Add("Feathers", 10); item76.CraftAmount = 1; item76.Trade.Price = 0u; item76.Trade.Stack = 0u; item76.Trade.RequiredGlobalKey = "defeated_bonemass"; item76.Trade.Trader = Trader.None; Item item77 = new Item("wildweapons", "Sieglinde_CAH"); item77.Name.English("Sieglinde"); item77.Description.English("A legendary greatbow, capable of loosing deadly arrows at insane speeds."); item77.Crafting.Add(CraftingTable.BlackForge, 1); item77.RequiredItems.Add("Astarte_CAH", 1); item77.RequiredItems.Add("Vecta_CAH", 1); item77.RequiredItems.Add("GemstoneBlue", 1); item77.RequiredItems.Add("FlametalNew", 15); item77.RequiredUpgradeItems.Add("Eitr", 5); item77.RequiredUpgradeItems.Add("FlametalNew", 5); item77.CraftAmount = 1; item77.Trade.Price = 0u; item77.Trade.Stack = 0u; item77.Trade.RequiredGlobalKey = "defeated_bonemass"; item77.Trade.Trader = Trader.None; Item item78 = new Item("wildweapons", "RoyalShield_CAH"); item78.Name.English("Royal Shield"); item78.Description.English("A shield used by the Avereign royal guard before the kingdom's fall."); item78.Crafting.Add(CraftingTable.Forge, 1); item78.RequiredItems.Add("Bronze", 25); item78.RequiredItems.Add("TrophyBjorn", 1); item78.RequiredItems.Add("Ruby", 10); item78.RequiredUpgradeItems.Add("BjornHide", 2); item78.RequiredUpgradeItems.Add("Ruby", 2); item78.CraftAmount = 1; item78.Trade.Price = 0u; item78.Trade.Stack = 0u; item78.Trade.RequiredGlobalKey = "defeated_bonemass"; item78.Trade.Trader = Trader.None; Item item79 = new Item("wildweapons", "RedMoon_CAH"); item79.Name.English("Red Moon"); item79.Description.English("A strange red shield that depicts a moon and a star, perhaps it is cursed..."); item79.Crafting.Add(CraftingTable.Forge, 1); item79.RequiredItems.Add("Ruby", 10); item79.RequiredItems.Add("Iron", 30); item79.RequiredItems.Add("Guck", 15); item79.RequiredUpgradeItems.Add("Guck", 2); item79.RequiredUpgradeItems.Add("Iron", 5); item79.CraftAmount = 1; item79.Trade.Price = 0u; item79.Trade.Stack = 0u; item79.Trade.RequiredGlobalKey = "defeated_bonemass"; item79.Trade.Trader = Trader.None; Item item80 = new Item("wildweapons", "Demora_CAH"); item80.Name.English("Demora"); item80.Description.English("Counterpart shield to Corruptum, it bolsters its strength"); item80.Crafting.Add(CraftingTable.Forge, 1); item80.RequiredItems.Add("BlackMetal", 25); item80.RequiredItems.Add("TrophyGoblin", 5); item80.RequiredItems.Add("Guck", 10); item80.RequiredUpgradeItems.Add("BlackMetal", 5); item80.RequiredUpgradeItems.Add("Guck", 5); item80.CraftAmount = 1; item80.Trade.Price = 0u; item80.Trade.Stack = 0u; item80.Trade.RequiredGlobalKey = "defeated_bonemass"; item80.Trade.Trader = Trader.None; Item item81 = new Item("wildweapons", "KingsGuard_CAH"); item81.Name.English("King's Guard"); item81.Description.English("A true royal shield fit for a king! -Landing a perfect parry with this shield will grant you health, stamina, and armor for a short burst."); item81.Crafting.Add(CraftingTable.Forge, 1); item81.RequiredItems.Add("RoyalShield_CAH", 1); item81.RequiredItems.Add("Silver", 20); item81.RequiredItems.Add("LinenThread", 15); item81.RequiredUpgradeItems.Add("Silver", 5); item81.RequiredUpgradeItems.Add("LinenThread", 5); item81.CraftAmount = 1; item81.Trade.Price = 0u; item81.Trade.Stack = 0u; item81.Trade.RequiredGlobalKey = "defeated_bonemass"; item81.Trade.Trader = Trader.None; Item item82 = new Item("wildweapons", "Crystalis_CAH"); item82.Name.English("Crystalis"); item82.Description.English("With Moder's frigid power, this shield is made possible."); item82.Crafting.Add(CraftingTable.Forge, 1); item82.RequiredItems.Add("TrophyDragonQueen", 1); item82.RequiredItems.Add("Crystal", 25); item82.RequiredItems.Add("Silver", 25); item82.RequiredUpgradeItems.Add("FreezeGland", 5); item82.RequiredUpgradeItems.Add("Silver", 5); item82.CraftAmount = 1; item82.Trade.Price = 0u; item82.Trade.Stack = 0u; item82.Trade.RequiredGlobalKey = "defeated_bonemass"; item82.Trade.Trader = Trader.None; Item item83 = new Item("wildweapons", "Rerederum_CAH"); item83.Name.English("Rerederum"); item83.Description.English("An evil and powerful shield, bursting with demonic energy."); item83.Crafting.Add(CraftingTable.BlackForge, 1); item83.RequiredItems.Add("Demora_CAH", 1); item83.RequiredItems.Add("FlametalNew", 25); item83.RequiredItems.Add("TrophyCharredMage", 1); item83.RequiredItems.Add("Bloodbag", 15); item83.RequiredUpgradeItems.Add("FlametalNew", 5); item83.RequiredUpgradeItems.Add("Bloodbag", 5); item83.CraftAmount = 1; item83.Trade.Price = 0u; item83.Trade.Stack = 0u; item83.Trade.RequiredGlobalKey = "defeated_bonemass"; item83.Trade.Trader = Trader.None; Item item84 = new Item("wildweapons", "Avrinn_CAH"); item84.Name.English("Avrinn"); item84.Description.English("The slaying blade, to cut, to slice, to kill, is to live."); item84.Crafting.Add(CraftingTable.Disabled, 1); item84.RequiredItems.Add("GemstoneRed", 5); item84.RequiredItems.Add("TrophyFader", 1); item84.RequiredItems.Add("Silver", 50); item84.RequiredItems.Add("SwordDyrnwyn", 99); item84.RequiredUpgradeItems.Add("Silver", 5); item84.RequiredUpgradeItems.Add("QueenDrop", 1); item84.CraftAmount = 1; item84.Trade.Price = 0u; item84.Trade.Stack = 0u; item84.Trade.RequiredGlobalKey = "defeated_bonemass"; item84.Trade.Trader = Trader.None; Item item85 = new Item("wildelixirs", "SwordElixir_CE"); item85.Name.English("Elixir of Swords"); item85.Description.English("Empowers your sword based capabilities."); item85.Crafting.Add(CraftingTable.MeadCauldron, 1); item85.RequiredItems.Add("Eitr", 10); item85.RequiredItems.Add("SwordBlackmetal", 1); item85.RequiredItems.Add("SwordSilver", 1); item85.RequiredItems.Add("SwordIron", 1); item85.CraftAmount = 10; item85.Trade.Price = 0u; item85.Trade.Stack = 0u; item85.Trade.RequiredGlobalKey = "defeated_bonemass"; item85.Trade.Trader = Trader.None; Item item86 = new Item("wildelixirs", "SpearElixir_CE"); item86.Name.English("Elixir of Spears"); item86.Description.English("Empowers your spear based capabilities."); item86.Crafting.Add(CraftingTable.MeadCauldron, 1); item86.RequiredItems.Add("Eitr", 10); item86.RequiredItems.Add("SpearWolfFang", 1); item86.RequiredItems.Add("SpearElderbark", 1); item86.RequiredItems.Add("SpearBronze", 1); item86.CraftAmount = 10; item86.Trade.Price = 0u; item86.Trade.Stack = 0u; item86.Trade.RequiredGlobalKey = "defeated_bonemass"; item86.Trade.Trader = Trader.None; Item item87 = new Item("wildelixirs", "PolearmElixir_CE"); item87.Name.English("Elixir of Polearms"); item87.Description.English("Empowers your polearm based capabilities."); item87.Crafting.Add(CraftingTable.MeadCauldron, 1); item87.RequiredItems.Add("Eitr", 10); item87.RequiredItems.Add("AtgeirBlackmetal", 1); item87.RequiredItems.Add("AtgeirIron", 1); item87.RequiredItems.Add("AtgeirBronze", 1); item87.CraftAmount = 10; item87.Trade.Price = 0u; item87.Trade.Stack = 0u; item87.Trade.RequiredGlobalKey = "defeated_bonemass"; item87.Trade.Trader = Trader.None; Item item88 = new Item("wildelixirs", "KnifeElixir_CE"); item88.Name.English("Elixir of Knives"); item88.Description.English("Empowers your knife based capabilities."); item88.Crafting.Add(CraftingTable.MeadCauldron, 1); item88.RequiredItems.Add("Eitr", 10); item88.RequiredItems.Add("KnifeBlackMetal", 1); item88.RequiredItems.Add("KnifeSilver", 1); item88.RequiredItems.Add("KnifeChitin", 1); item88.CraftAmount = 10; item88.Trade.Price = 0u; item88.Trade.Stack = 0u; item88.Trade.RequiredGlobalKey = "defeated_bonemass"; item88.Trade.Trader = Trader.None; Item item89 = new Item("wildelixirs", "ClubElixir_CE"); item89.Name.English("Elixir of Clubs"); item89.Name.English("Elixir of Clubs"); item89.Description.English("Empowers your club based capabilities."); item89.Crafting.Add(CraftingTable.MeadCauldron, 1); item89.RequiredItems.Add("Eitr", 10); item89.RequiredItems.Add("MaceNeedle", 1); item89.RequiredItems.Add("MaceSilver", 1); item89.RequiredItems.Add("MaceIron", 1); item89.CraftAmount = 10; item89.Trade.Price = 0u; item89.Trade.Stack = 0u; item89.Trade.RequiredGlobalKey = "defeated_bonemass"; item89.Trade.Trader = Trader.None; Item item90 = new Item("wildelixirs", "AxeElixir_CE"); item90.Name.English("Elixir of Axes"); item90.Description.English("Empowers your axe based capabilities."); item90.Crafting.Add(CraftingTable.MeadCauldron, 1); item90.RequiredItems.Add("Eitr", 10); item90.RequiredItems.Add("BattleaxeBlackmetal", 1); item90.RequiredItems.Add("BattleaxeCrystal", 1); item90.RequiredItems.Add("Battleaxe", 1); item90.CraftAmount = 10; item90.Trade.Price = 0u; item90.Trade.Stack = 0u; item90.Trade.RequiredGlobalKey = "defeated_bonemass"; item90.Trade.Trader = Trader.None; Item item91 = new Item("wildelixirs", "BowElixir_CE"); item91.Name.English("Elixir of Bows"); item91.Description.English("Empowers your bow based capabilities."); item91.Crafting.Add(CraftingTable.MeadCauldron, 1); item91.RequiredItems.Add("Eitr", 10); item91.RequiredItems.Add("BowDraugrFang", 1); item91.RequiredItems.Add("BowHuntsman", 1); item91.RequiredItems.Add("BowFineWood", 1); item91.CraftAmount = 10; item91.Trade.Price = 0u; item91.Trade.Stack = 0u; item91.Trade.RequiredGlobalKey = "defeated_bonemass"; item91.Trade.Trader = Trader.None; Item item92 = new Item("wildelixirs", "ShieldElixir_CE"); item92.Name.English("Elixir of Shields"); item92.Description.English("Empowers your shield based capabilities"); item92.Crafting.Add(CraftingTable.MeadCauldron, 1); item92.RequiredItems.Add("Eitr", 10); item92.RequiredItems.Add("ShieldBlackmetal", 1); item92.RequiredItems.Add("ShieldSilver", 1); item92.RequiredItems.Add("ShieldSerpentscale", 1); item92.CraftAmount = 10; item92.Trade.Price = 0u; item92.Trade.Stack = 0u; item92.Trade.RequiredGlobalKey = "defeated_bonemass"; item92.Trade.Trader = Trader.None; Item item93 = new Item("wildelixirs", "DrPibble_CE"); item93.Name.English("Dr.Pibble"); item93.Description.English("Crack open a cold drink and enjoy a good time."); item93.Crafting.Add(CraftingTable.MeadCauldron, 1); item93.RequiredItems.Add("MeadStaminaMinor", 1); item93.RequiredItems.Add("MeadHealthMinor", 1); item93.RequiredItems.Add("Tar", 4); item93.CraftAmount = 4; item93.Trade.Price = 0u; item93.Trade.Stack = 0u; item93.Trade.RequiredGlobalKey = "defeated_bonemass"; item93.Trade.Trader = Trader.None; PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "Projectile_BlossomSlash"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "Projectile_SpineShard"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "projectile_Sunpiercer"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "Projectile_SoulthiefSlash"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "projectile_Frostpiercer"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "projectile_Solemnity"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "projectile_Bladeshift"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_Conflaghit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_StrikeClang"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_Arkenshatter"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_fleshrip"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_SunpierceHit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_ClashingHit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_samuraislash"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_GhostlyHauntings"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_SliceHit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_explosion1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_explosion2"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_Fleshstab"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "sfx_zap23"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildelixirs"), "sfx_WildPotion"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildelixirs"), "sfx_Soda"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildelixirs"), "vfx_WildPotion"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("crazymagic"), "fx_iceshard_launch1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("crazymagic"), "fx_IceballBoom"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("crazymagic"), "fx_PermafrostHit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("crazymagic"), "Permafrostblast"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("crazymagic"), "PermaFrostIceCube"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("crazymagic"), "IceBallBlast"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksFire"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_DivineBlock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksGhost"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_GhostBlock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksStormDragon"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_blockStormDragon"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_SuperZapProc"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_LightningDragon"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparks2"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_CorpseSlam"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Sunhit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_ReaverSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksRegalia"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Spinehit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksQueen"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_CorruptumHit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_BrokenAura"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_SpineSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_FrigidCut"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Frost1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Crownblock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_BowfireShimmer"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_gleamblock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Mortalweaponhit1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Holyhit1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_blockjade"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_clubhit3"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksAstralis"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_enhancedfire"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_FrigidCutSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_IceCurse"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksCorundum"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_AgarethBlock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_soulthiefblock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Legendbow"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksNature"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_BlackArrowFire"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_AvrinnBlock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksEsterra"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_blockedblacked"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_RuptureSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_blockFanatica"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_durandalhit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_lightningdaveSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_SpiritBurn"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_mountaincleavehit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Agarethhitspecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparks1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_ViridBurn"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_blockedlegend"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_goldblock1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_BowfireVecta"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_petalblock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Slimed1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_DeusSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_CrownHit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_holyhit3"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksAvrinnRed"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_deusnormal"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_AvrinnSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_BlossomFlux"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_daveblock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_silvermace_hit1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_skivantifire"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_RegaliaSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_StargleamHit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_AstarteBowFire"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_LightningDemonic"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_demonvane_special"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksGold"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_petalweaponhit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksRupture"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Esterrablock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_silverblock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksAngel"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_AngelBlock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_DurandalSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_demonvaneblock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_CorundumNewSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_blockArken"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_corruptBlock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_blockedSpine"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_holyhit2"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_soulshardhit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_astralblock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_lightningdave"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_blockenhanced1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_ConflagrateSpecial"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_StrideBreakerhit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Arkenhit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_iceshard_hit1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_demonvane_basic"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksFanatica"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksAvrinn"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_QueenStab"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksEnhanced"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_blockenhanced"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_Titanhit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_soulburn"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksSoul"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_reaverblock1"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksSilver"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_ArondightHit"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_CorruptBurn"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_HitSparksBone"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_flameblock"); PrefabManager.RegisterPrefab(PrefabManager.RegisterAssetBundle("wildweapons"), "vfx_EvallisHit"); 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 { WildWeaponsLogger.LogDebug((object)"ReadConfigValues called"); ((BaseUnityPlugin)this).Config.Reload(); } catch { WildWeaponsLogger.LogError((object)("There was an issue loading your " + ConfigFileName)); WildWeaponsLogger.LogError((object)"Please check your config entries for spelling and format!"); } } private ConfigEntry<T> config<[<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(2)] T>(string group, string name, T value, ConfigDescription description, bool synchronizedSetting = true) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: 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); SyncedConfigEntry<T> syncedConfigEntry = ConfigSync.AddConfigEntry<T>(val2); syncedConfigEntry.SynchronizedConfig = synchronizedSetting; return val2; } private ConfigEntry<T> config<[<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(2)] T>(string group, string name, T value, string description, bool synchronizedSetting = true) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()), synchronizedSetting); } static WildWeaponsPlugin() { string configPath = Paths.ConfigPath; char directorySeparatorChar = Path.DirectorySeparatorChar; ConfigFileFullPath = configPath + directorySeparatorChar + ConfigFileName; ConnectionError = ""; WildWeaponsLogger = Logger.CreateLogSource("WildWeapons"); ConfigSync = new ConfigSync("catharis.WildWeapons") { DisplayName = "WildWeapons", CurrentVersion = "2.2.3", MinimumRequiredVersion = "2.2.3" }; _serverConfigLocked = null; _recipeIsActiveConfig = null; } } public static class KeyboardExtensions { public static bool IsKeyDown(this KeyboardShortcut shortcut) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) return (int)((KeyboardShortcut)(ref shortcut)).MainKey != 0 && Input.GetKeyDown(((KeyboardShortcut)(ref shortcut)).MainKey) && ((KeyboardShortcut)(ref shortcut)).Modifiers.All((Func<KeyCode, bool>)Input.GetKey); } public static bool IsKeyHeld(this KeyboardShortcut shortcut) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) return (int)((KeyboardShortcut)(ref shortcut)).MainKey != 0 && Input.GetKey(((KeyboardShortcut)(ref shortcut)).MainKey) && ((KeyboardShortcut)(ref shortcut)).Modifiers.All((Func<KeyCode, bool>)Input.GetKey); } } [HarmonyPatch(typeof(ZNet), "OnNewConnection")] public static class RegisterAndCheckVersion { [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(1)] private static void Prefix(ZNetPeer peer, ref ZNet __instance) { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown WildWeaponsPlugin.WildWeaponsLogger.LogDebug((object)"Registering version RPC handler"); peer.m_rpc.Register<ZPackage>("WildWeapons_VersionCheck", (Action<ZRpc, ZPackage>)RpcHandlers.RPC_ItemManagerModTemplate_Version); WildWeaponsPlugin.WildWeaponsLogger.LogInfo((object)"Invoking version check"); ZPackage val = new ZPackage(); val.Write("2.2.3"); peer.m_rpc.Invoke("WildWeapons_VersionCheck", new object[1] { val }); } } [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(1)] [<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(0)] [HarmonyPatch(typeof(ZNet), "RPC_PeerInfo")] public static class VerifyClient { private static bool Prefix(ZRpc rpc, ZPackage pkg, ref ZNet __instance) { if (!__instance.IsServer() || RpcHandlers.ValidatedPeers.Contains(rpc)) { return true; } WildWeaponsPlugin.WildWeaponsLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") never sent version or couldn't due to previous disconnect, disconnecting")); rpc.Invoke("Error", new object[1] { 3 }); return false; } private static void Postfix(ZNet __instance) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown ZRoutedRpc.instance.InvokeRoutedRPC(ZRoutedRpc.instance.GetServerPeerID(), "WildWeaponsRequestAdminSync", new object[1] { (object)new ZPackage() }); } } [HarmonyPatch(typeof(FejdStartup), "ShowConnectError")] public class ShowConnectionError { [<c987f02b-92f9-402e-9e48-5d23477b18e7>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" + WildWeaponsPlugin.ConnectionError; } } } [HarmonyPatch(typeof(ZNet), "Disconnect")] public static class RemoveDisconnectedPeerFromVerified { [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(1)] private static void Prefix(ZNetPeer peer, ref ZNet __instance) { if (__instance.IsServer()) { WildWeaponsPlugin.WildWeaponsLogger.LogInfo((object)("Peer (" + peer.m_rpc.m_socket.GetHostName() + ") disconnected, removing from validated list")); RpcHandlers.ValidatedPeers.Remove(peer.m_rpc); } } } [<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(0)] [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(1)] public static class RpcHandlers { public static readonly List<ZRpc> ValidatedPeers = new List<ZRpc>(); public static void RPC_ItemManagerModTemplate_Version(ZRpc rpc, ZPackage pkg) { string text = pkg.ReadString(); WildWeaponsPlugin.WildWeaponsLogger.LogInfo((object)("Version check, local: 2.2.3, remote: " + text)); if (text != "2.2.3") { WildWeaponsPlugin.ConnectionError = "WildWeapons Installed: 2.2.3\n Needed: " + text; if (ZNet.instance.IsServer()) { WildWeaponsPlugin.WildWeaponsLogger.LogWarning((object)("Peer (" + rpc.m_socket.GetHostName() + ") has incompatible version, disconnecting...")); rpc.Invoke("Error", new object[1] { 3 }); } } else if (!ZNet.instance.IsServer()) { WildWeaponsPlugin.WildWeaponsLogger.LogInfo((object)"Received same version from server!"); } else { WildWeaponsPlugin.WildWeaponsLogger.LogInfo((object)("Adding peer (" + rpc.m_socket.GetHostName() + ") to validated list")); ValidatedPeers.Add(rpc); } } public static string ComputeHashForMod() { using SHA256 sHA = SHA256.Create(); byte[] array = sHA.ComputeHash(File.ReadAllBytes(Assembly.GetExecutingAssembly().Location)); StringBuilder stringBuilder = new StringBuilder(); byte[] array2 = array; foreach (byte b in array2) { stringBuilder.Append(b.ToString("X2")); } return stringBuilder.ToString(); } } } namespace LocalizationManager { [PublicAPI] [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(1)] [<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(0)] public class Localizer { private static readonly Dictionary<string, Dictionary<string, Func<string>>> PlaceholderProcessors; private static readonly Dictionary<string, Dictionary<string, string>> loadedTexts; private static readonly ConditionalWeakTable<Localization, string> localizationLanguage; private static readonly List<WeakReference<Localization>> localizationObjects; [<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(2)] private static BaseUnityPlugin _plugin; private static readonly List<string> fileExtensions; private static BaseUnityPlugin plugin { get { //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: 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([<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(0)] (TypeInfo t) => t.IsClass && typeof(BaseUnityPlugin).IsAssignableFrom(t))); } return _plugin; } } private static void UpdatePlaceholderText(Localization localization, string key) { localizationLanguage.TryGetValue(localization, out var value); string text = loadedTexts[value][key]; if (PlaceholderProcessors.TryGetValue(key, out var value2)) { text = value2.Aggregate(text, [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(0)] (string current, KeyValuePair<string, Func<string>> kv) => current.Replace("{" + kv.Key + "}", kv.Value())); } localization.AddWord(key, text); } public static void AddPlaceholder<T>(string key, string placeholder, ConfigEntry<T> config, [<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(new byte[] { 2, 1, 1 })] Func<T, string> convertConfigValue = null) { if (convertConfigValue == null) { convertConfigValue = (T val) => val.ToString(); } if (!PlaceholderProcessors.ContainsKey(key)) { PlaceholderProcessors[key] = new Dictionary<string, Func<string>>(); } config.SettingChanged += [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(0)] (object _, EventArgs _) => { UpdatePlaceholder(); }; if (loadedTexts.ContainsKey(Localization.instance.GetSelectedLanguage())) { UpdatePlaceholder(); } void UpdatePlaceholder() { PlaceholderProcessors[key][placeholder] = () => convertConfigValue(config.Value); UpdatePlaceholderText(Localization.instance, key); } } public static void AddText(string key, string text) { List<WeakReference<Localization>> list = new List<WeakReference<Localization>>(); foreach (WeakReference<Localization> localizationObject in localizationObjects) { if (localizationObject.TryGetTarget(out var target)) { Dictionary<string, string> dictionary = loadedTexts[localizationLanguage.GetOrCreateValue(target)]; if (!target.m_translations.ContainsKey(key)) { dictionary[key] = text; target.AddWord(key, text); } } else { list.Add(localizationObject); } } foreach (WeakReference<Localization> item in list) { localizationObjects.Remove(item); } } public static void Load() { LoadLocalization(Localization.instance, Localization.instance.GetSelectedLanguage()); } private static void LoadLocalization(Localization __instance, string language) { if (!localizationLanguage.Remove(__instance)) { localizationObjects.Add(new WeakReference<Localization>(__instance)); } localizationLanguage.Add(__instance, language); Dictionary<string, string> dictionary = new Dictionary<string, string>(); foreach (string item in from f in Directory.GetFiles(Path.GetDirectoryName(Paths.PluginPath), plugin.Info.Metadata.Name + ".*", SearchOption.AllDirectories) where fileExtensions.IndexOf(Path.GetExtension(f)) >= 0 select f) { string text = Path.GetFileNameWithoutExtension(item).Split(new char[1] { '.' })[1]; if (dictionary.ContainsKey(text)) { Debug.LogWarning((object)("Duplicate key " + text + " found for " + plugin.Info.Metadata.Name + ". The duplicate file found at " + item + " will be skipped.")); } else { dictionary[text] = item; } } byte[] array = LoadTranslationFromAssembly("English"); if (array == null) { throw new Exception("Found no English localizations in mod " + plugin.Info.Metadata.Name + ". Expected an embedded resource translations/English.json or translations/English.yml."); } Dictionary<string, string> dictionary2 = new DeserializerBuilder().IgnoreFields().Build().Deserialize<Dictionary<string, string>>(Encoding.UTF8.GetString(array)); if (dictionary2 == null) { throw new Exception("Localization for mod " + plugin.Info.Metadata.Name + " failed: Localization file was empty."); } string text2 = null; if (language != "English") { if (dictionary.ContainsKey(language)) { text2 = File.ReadAllText(dictionary[language]); } else { byte[] array2 = LoadTranslationFromAssembly(language); if (array2 != null) { text2 = Encoding.UTF8.GetString(array2); } } } if (text2 == null && dictionary.ContainsKey("English")) { text2 = File.ReadAllText(dictionary["English"]); } if (text2 != null) { foreach (KeyValuePair<string, string> item2 in new DeserializerBuilder().IgnoreFields().Build().Deserialize<Dictionary<string, string>>(text2) ?? new Dictionary<string, string>()) { dictionary2[item2.Key] = item2.Value; } } loadedTexts[language] = dictionary2; foreach (KeyValuePair<string, string> item3 in dictionary2) { UpdatePlaceholderText(__instance, item3.Key); } } static Localizer() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Expected O, but got Unknown PlaceholderProcessors = new Dictionary<string, Dictionary<string, Func<string>>>(); loadedTexts = new Dictionary<string, Dictionary<string, string>>(); localizationLanguage = new ConditionalWeakTable<Localization, string>(); localizationObjects = new List<WeakReference<Localization>>(); fileExtensions = new List<string> { ".json", ".yml" }; Harmony val = new Harmony("org.bepinex.helpers.LocalizationManager"); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Localization), "LoadCSV", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Localizer), "LoadLocalization", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } [return: <d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(2)] private static byte[] LoadTranslationFromAssembly(string language) { foreach (string fileExtension in fileExtensions) { byte[] array = ReadEmbeddedFileBytes("translations." + language + fileExtension); if (array != null) { return array; } } return null; } [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(2)] public static byte[] ReadEmbeddedFileBytes([<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(1)] string resourceFileName, Assembly containingAssembly = null) { using MemoryStream memoryStream = new MemoryStream(); if ((object)containingAssembly == null) { containingAssembly = Assembly.GetCallingAssembly(); } string text = containingAssembly.GetManifestResourceNames().FirstOrDefault([<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(0)] (string str) => str.EndsWith(resourceFileName, StringComparison.Ordinal)); if (text != null) { containingAssembly.GetManifestResourceStream(text)?.CopyTo(memoryStream); } return (memoryStream.Length == 0L) ? null : memoryStream.ToArray(); } } } namespace ItemManager { [PublicAPI] public enum CraftingTable { Disabled, Inventory, [InternalName("piece_workbench")] Workbench, [InternalName("piece_cauldron")] Cauldron, [InternalName("piece_MeadCauldron")] MeadCauldron, [InternalName("forge")] Forge, [InternalName("piece_artisanstation")] ArtisanTable, [InternalName("piece_stonecutter")] StoneCutter, [InternalName("piece_magetable")] MageTable, [InternalName("piece_preptable")] PrepTable, [InternalName("blackforge")] BlackForge, Custom } [PublicAPI] public enum ConversionPiece { Disabled, [InternalName("smelter")] Smelter, [InternalName("charcoal_kiln")] CharcoalKiln, [InternalName("blastfurnace")] BlastFurnace, [InternalName("windmill")] Windmill, [InternalName("piece_spinningwheel")] SpinningWheel, [InternalName("eitrrefinery")] EitrRefinery, Custom } [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(1)] [<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(0)] public class InternalName : Attribute { public readonly string internalName; public InternalName(string internalName) { this.internalName = internalName; } } [<c987f02b-92f9-402e-9e48-5d23477b18e7>NullableContext(1)] [<d28022a6-0b07-42d6-bd25-81bd28e414ef>Nullable(0)] [PublicAPI] public class RequiredResourceList { public readonly List<Requirement> Requirements = new List<Requirement>(); public bool Free = false; public void Add(string itemName, int amount, int quality = 0) { Requirements.Add(new Requirement { itemName = itemName, amount = amount, quality = quality }); } public void Add(string itemName, ConfigEntry<int> amountConfig, int quality = 0) { Requirements.Add(new Requirement { itemName = itemName, amountConfig = amountConfig, quality = quality }); } } [PublicAPI] [<c987f02b-92f9-402e-9e48-5d23477b