Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of OdinsSteelworks v0.4.0
OdinsSteelworks.dll
Decompiled a day ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Threading; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using ItemManager; using JetBrains.Annotations; using LocalizationManager; using Microsoft.CodeAnalysis; using PieceManager; using ServerSync; using TMPro; using UnityEngine; using UnityEngine.Audio; using UnityEngine.UI; 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.Callbacks; 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: Guid("D181CDA7-EF07-4BBC-B975-2B80FC6BBFAE")] [assembly: ComVisible(false)] [assembly: AssemblyTrademark("")] [assembly: AssemblyCopyright("Copyright © 2022")] [assembly: AssemblyProduct("OdinPlus")] [assembly: AssemblyCompany("")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyDescription("")] [assembly: AssemblyTitle("OdinsSteelworks")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyConfiguration("")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: <b9a496f7-ed74-47de-a867-a367d8894e90>RefSafetyRules(11)] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [<00f7eab5-92b7-485c-abca-843b8a0ae8a9>Embedded] internal sealed class <00f7eab5-92b7-485c-abca-843b8a0ae8a9>EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [<00f7eab5-92b7-485c-abca-843b8a0ae8a9>Embedded] [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class <b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>NullableAttribute : Attribute { public readonly byte[] NullableFlags; public <b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public <b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [<00f7eab5-92b7-485c-abca-843b8a0ae8a9>Embedded] [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class <92cb037d-f399-4f99-99e6-e56faa42f218>NullableContextAttribute : Attribute { public readonly byte Flag; public <92cb037d-f399-4f99-99e6-e56faa42f218>NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [<00f7eab5-92b7-485c-abca-843b8a0ae8a9>Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class <b9a496f7-ed74-47de-a867-a367d8894e90>RefSafetyRulesAttribute : Attribute { public readonly int Version; public <b9a496f7-ed74-47de-a867-a367d8894e90>RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace OdinsSteelworks { [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(0)] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] [BepInPlugin("org.bepinex.plugins.odinssteelworks", "OdinsSteelworks", "0.4.0")] public class OdinsSteelworks : BaseUnityPlugin { [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] private enum Toggle { On = 1, Off = 0 } [HarmonyPatch(typeof(AudioMan), "Awake")] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] private static class SteelworksAudioMixerFix { [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] [HarmonyPostfix] private static void Postfix(AudioMan __instance) { if ((Object)(object)__instance == (Object)null || (Object)(object)__instance.m_masterMixer == (Object)null) { return; } AudioMixerGroup[] source = __instance.m_masterMixer.FindMatchingGroups("SFX"); AudioMixerGroup val = ((IEnumerable<AudioMixerGroup>)source).FirstOrDefault((Func<AudioMixerGroup, bool>)((AudioMixerGroup g) => ((Object)g).name == "SFX")) ?? source.FirstOrDefault(); if ((Object)(object)val == (Object)null) { return; } AssetBundle val2 = PrefabManager.RegisterAssetBundle("cwsassets"); GameObject[] array = val2.LoadAllAssets<GameObject>(); foreach (GameObject val3 in array) { AudioSource[] componentsInChildren = val3.GetComponentsInChildren<AudioSource>(true); foreach (AudioSource val4 in componentsInChildren) { val4.outputAudioMixerGroup = val; } } } } [HarmonyPatch(typeof(ObjectDB), "Awake")] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] private static class ForgeIdolsObjectDBAwake { [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] [HarmonyPostfix] [HarmonyAfter(new string[] { "org.bepinex.helpers.ItemManager" })] private static void Postfix(ObjectDB __instance) { ApplyForgeIdols(__instance); } } [HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] private static class ForgeIdolsObjectDBCopy { [HarmonyAfter(new string[] { "org.bepinex.helpers.ItemManager" })] [HarmonyPostfix] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] private static void Postfix(ObjectDB __instance) { ApplyForgeIdols(__instance); } } [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] [HarmonyPatch(typeof(Player), "GetAvailableRecipes")] private static class ForgeIdolsRecipeList { [HarmonyPrefix] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] private static void Prefix(Player __instance) { CraftingStation val = (((Object)(object)__instance != (Object)null) ? __instance.GetCurrentCraftingStation() : null); if ((Object)(object)val != (Object)null && val.m_upgrader) { ApplyForgeIdols(ObjectDB.instance); } } } [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(0)] private static class SteelKiln { [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(0)] private sealed class Pair { public ItemDrop From = null; public ItemDrop To = null; public int InAmount = 1; public int OutAmount = 1; } [HarmonyPatch(typeof(ZNetScene), "Awake")] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] private static class ResetOnWorldLoad { private static void Postfix() { baseConversions = null; custom = null; itemLookup = null; customByFrom.Clear(); kilns.Clear(); } } [HarmonyPatch(typeof(Smelter), "Awake")] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] private static class AwakePatch { [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] private static void Prefix(Smelter __instance) { try { if (IsKiln(__instance)) { EnsureBase(__instance); Apply(__instance); ZNetView val = ((Component)__instance).GetComponent<ZNetView>() ?? ((Component)__instance).GetComponentInParent<ZNetView>(); if ((Object)(object)val != (Object)null) { kilns[__instance] = val; } } } catch (Exception ex) { Warn("Could not apply kiln settings: " + ex.Message); } } } [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] [HarmonyPatch(typeof(Smelter), "UpdateSmelter")] private static class UpdateSmelterPatch { [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { return RedirectFuelReads(instructions); } } [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] [HarmonyPatch(typeof(Smelter), "IsActive")] private static class IsActivePatch { [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { return RedirectFuelReads(instructions); } } [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] [HarmonyPatch(typeof(Smelter), "OnAddOre")] private static class AddOrePatch { [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] private static bool Prefix(Smelter __instance, Humanoid user, ItemData item, ref bool __result) { try { if (!IsRegisteredKiln(__instance) || (Object)(object)user == (Object)null) { return true; } EnsureCustom(); Inventory inventory = user.GetInventory(); if (item == null) { foreach (ItemConversion item2 in __instance.m_conversion) { if (!((Object)(object)item2?.m_from == (Object)null)) { item = inventory.GetItem(item2.m_from.m_itemData.m_shared.m_name, -1, false); if (item != null) { break; } } } } if ((Object)(object)item?.m_dropPrefab == (Object)null) { return true; } if (!customByFrom.TryGetValue(((Object)item.m_dropPrefab).name, out var value) || value.InAmount <= 1) { return true; } ZDO val = KilnZdo(__instance); if (val == null) { return true; } if (val.GetInt("queued", 0) >= __instance.m_maxOre) { ((Character)user).Message((MessageType)2, "$msg_itsfull", 0, (Sprite)null, false); __result = false; return false; } string name = item.m_shared.m_name; if (inventory.CountItems(name, -1, true) < value.InAmount) { ((Character)user).Message((MessageType)2, $"$msg_donthaveany {name} x{value.InAmount}", 0, (Sprite)null, false); __result = false; return false; } ((Character)user).Message((MessageType)2, "$msg_added " + name, 0, (Sprite)null, false); inventory.RemoveItem(name, value.InAmount, -1, true); kilns[__instance].InvokeRPC("RPC_AddOre", new object[2] { ((Object)item.m_dropPrefab).name, item.m_cheated }); __result = true; return false; } catch (Exception ex) { Warn("Kiln add-ore hook failed, using vanilla behaviour: " + ex.Message); return true; } } } [HarmonyPatch(typeof(Smelter), "Spawn")] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] private static class SpawnPatch { [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] private static void Prefix(Smelter __instance, string ore, ref int stack) { if (spawningExtra || SpawnMethod == null) { return; } try { if (!IsRegisteredKiln(__instance)) { return; } EnsureCustom(); if (!customByFrom.TryGetValue(ore, out var value) || value.OutAmount <= 1) { return; } int num = stack * value.OutAmount; int val = Math.Max(1, value.To.m_itemData.m_shared.m_maxStackSize); stack = Math.Min(num, val); int num2 = num - stack; spawningExtra = true; try { while (num2 > 0) { int num3 = Math.Min(num2, val); SpawnMethod.Invoke(__instance, new object[2] { ore, num3 }); num2 -= num3; } } finally { spawningExtra = false; } } catch (Exception ex) { Warn("Kiln spawn hook failed, using vanilla amount: " + ex.Message); } } } [HarmonyPatch(typeof(Smelter), "DropAllItems")] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] private static class DropAllPatch { [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] private static void Prefix(Smelter __instance) { //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) try { if (!IsRegisteredKiln(__instance)) { return; } ZDO val = KilnZdo(__instance); if (val == null) { return; } EnsureCustom(); int num = val.GetInt("queued", 0); for (int i = 0; i < num; i++) { if (customByFrom.TryGetValue(val.GetString("item" + i, ""), out var value) && value.InAmount > 1) { for (int j = 1; j < value.InAmount; j++) { Vector3 val2 = ((Component)__instance).transform.position + Vector3.up + Random.insideUnitSphere * 0.3f; Quaternion val3 = Quaternion.Euler(0f, (float)Random.Range(0, 360), 0f); ItemDrop.OnCreateNew(Object.Instantiate<GameObject>(((Component)value.From).gameObject, val2, val3), false); } } } } catch (Exception ex) { Warn("Kiln drop hook failed: " + ex.Message); } } } private const string KilnToken = "$cws_stone_kiln"; private const string KilnPrefabName = "CWS_Stone_Kiln"; [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(new byte[] { 2, 1 })] private static List<Pair> baseConversions; [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(new byte[] { 2, 1 })] private static List<Pair> custom; [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(new byte[] { 2, 1, 1 })] private static Dictionary<string, ItemDrop> itemLookup; private static readonly Dictionary<string, Pair> customByFrom = new Dictionary<string, Pair>(); private static readonly Dictionary<Smelter, ZNetView> kilns = new Dictionary<Smelter, ZNetView>(); [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] private static readonly MethodInfo SpawnMethod = AccessTools.Method(typeof(Smelter), "Spawn", (Type[])null, (Type[])null); private static bool spawningExtra; private static bool IsKiln(Smelter s) { if ((Object)(object)s == (Object)null) { return false; } if (s.m_name == "$cws_stone_kiln") { return true; } Piece componentInParent = ((Component)s).GetComponentInParent<Piece>(); return (Object)(object)componentInParent != (Object)null && ((Object)componentInParent).name.StartsWith("CWS_Stone_Kiln", StringComparison.Ordinal); } private static bool IsRegisteredKiln(Smelter s) { return (Object)(object)s != (Object)null && kilns.ContainsKey(s); } private static void Warn(string message) { ManualLogSource kilnLog = OdinsSteelworks.kilnLog; if (kilnLog != null) { kilnLog.LogWarning((object)("[Kiln] " + message)); } } [return: <b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] private static ItemDrop FindItem(string name) { name = (name ?? "").Trim(); if (name.Length == 0) { return null; } ObjectDB instance = ObjectDB.instance; if ((Object)(object)instance == (Object)null) { return null; } if (itemLookup == null) { itemLookup = new Dictionary<string, ItemDrop>(StringComparer.OrdinalIgnoreCase); foreach (GameObject item in instance.m_items) { if (!((Object)(object)item == (Object)null)) { ItemDrop component = item.GetComponent<ItemDrop>(); if ((Object)(object)component != (Object)null && !itemLookup.ContainsKey(((Object)item).name)) { itemLookup[((Object)item).name] = component; } } } } ItemDrop value; return itemLookup.TryGetValue(name, out value) ? value : null; } private static void EnsureBase(Smelter s) { if (baseConversions != null) { return; } baseConversions = new List<Pair>(); foreach (ItemConversion item in s.m_conversion) { if (item != null && (Object)(object)item.m_from != (Object)null && (Object)(object)item.m_to != (Object)null) { baseConversions.Add(new Pair { From = item.m_from, To = item.m_to }); } } } private static bool ParseSide(string text, out string name, out int amount) { name = ""; amount = 1; string[] array = text.Split(new char[1] { ',' }); if (array.Length < 1 || array.Length > 2) { return false; } name = array[0].Trim(); if (name.Length == 0) { return false; } if (array.Length == 2) { if (!int.TryParse(array[1].Trim(), out amount) || amount < 1) { return false; } amount = Math.Min(amount, 999); } return true; } private static void EnsureCustom() { if (custom != null) { return; } List<Pair> list = new List<Pair>(); customByFrom.Clear(); HashSet<string> hashSet = new HashSet<string>(StringComparer.OrdinalIgnoreCase); if (baseConversions != null) { foreach (Pair baseConversion in baseConversions) { hashSet.Add(((Object)baseConversion.From).name); } } IEnumerable<string> enumerable = from e in (KilnConversions.Value ?? "").Split(new char[3] { ';', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries) select e.Trim() into e where e.Length > 0 select e; foreach (string item in enumerable) { string[] array = item.Split(new char[1] { '=' }); if (array.Length != 2 || !ParseSide(array[0], out var name, out var amount) || !ParseSide(array[1], out var name2, out var amount2)) { Warn("Conversion '" + item + "' must look like input,amount = output,amount - skipped."); continue; } ItemDrop val = FindItem(name); ItemDrop val2 = FindItem(name2); if ((Object)(object)val == (Object)null || (Object)(object)val2 == (Object)null) { Warn("Conversion '" + item + "': unknown item '" + (((Object)(object)val == (Object)null) ? name : name2) + "' - skipped."); } else if (!hashSet.Add(((Object)val).name)) { Warn("Conversion '" + item + "': '" + ((Object)val).name + "' is already converted by the kiln - skipped."); } else { list.Add(new Pair { From = val, To = val2, InAmount = amount, OutAmount = amount2 }); } } custom = list; foreach (Pair item2 in list) { customByFrom[((Object)item2.From).name] = item2; } } private static void Apply(Smelter s) { //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Expected O, but got Unknown if (baseConversions == null) { return; } EnsureCustom(); s.m_maxOre = KilnMaxOre.Value; s.m_maxFuel = KilnMaxFuel.Value; s.m_fuelPerProduct = KilnFuelPerProduct.Value; s.m_secPerProduct = KilnSecondsPerProduct.Value; s.m_requiresRoof = KilnRequiresRoof.Value == Toggle.On; s.m_spawnStack = KilnOutputAsStack.Value == Toggle.On; ItemDrop val = FindItem(KilnFuelItem.Value); if ((Object)(object)val != (Object)null) { s.m_fuelItem = val; } else if ((Object)(object)ObjectDB.instance != (Object)null && !string.IsNullOrWhiteSpace(KilnFuelItem.Value)) { Warn("Fuel item '" + KilnFuelItem.Value + "' not found - the kiln keeps its built-in fuel."); } s.m_conversion.Clear(); foreach (Pair item in baseConversions.Concat(custom)) { s.m_conversion.Add(new ItemConversion { m_from = item.From, m_to = item.To }); } } internal static void OnConfigChanged() { custom = null; customByFrom.Clear(); foreach (Smelter item in kilns.Keys.ToList()) { if ((Object)(object)item == (Object)null) { kilns.Remove(item); } else { Apply(item); } } } [return: <b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] private static ZDO KilnZdo(Smelter s) { if (!kilns.TryGetValue(s, out var value) || (Object)(object)value == (Object)null || !value.IsValid()) { return null; } return value.GetZDO(); } [return: <b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] private static Pair HeadCustom(Smelter s) { ZDO val = KilnZdo(s); if (val == null || val.GetInt("queued", 0) <= 0) { return null; } EnsureCustom(); Pair value; return customByFrom.TryGetValue(val.GetString("item0", ""), out value) ? value : null; } internal static int EffectiveMaxFuel(Smelter s) { return (HeadCustom(s) == null) ? s.m_maxFuel : 0; } internal static float EffectiveSecPerProduct(Smelter s) { return (HeadCustom(s) != null && KilnConversionSeconds.Value > 0f) ? KilnConversionSeconds.Value : s.m_secPerProduct; } private static IEnumerable<CodeInstruction> RedirectFuelReads(IEnumerable<CodeInstruction> instructions) { MethodInfo maxFuel = AccessTools.Method(typeof(SteelKiln), "EffectiveMaxFuel", (Type[])null, (Type[])null); MethodInfo secPerProduct = AccessTools.Method(typeof(SteelKiln), "EffectiveSecPerProduct", (Type[])null, (Type[])null); FieldInfo f = default(FieldInfo); foreach (CodeInstruction ins in instructions) { int num; if (ins.opcode == OpCodes.Ldfld) { object operand = ins.operand; f = operand as FieldInfo; if ((object)f != null) { num = ((f.DeclaringType == typeof(Smelter)) ? 1 : 0); goto IL_00e5; } } num = 0; goto IL_00e5; IL_00e5: if (num != 0) { if (f.Name == "m_maxFuel") { ins.opcode = OpCodes.Call; ins.operand = maxFuel; } else if (f.Name == "m_secPerProduct") { ins.opcode = OpCodes.Call; ins.operand = secPerProduct; } } yield return ins; f = null; } } } private const string ModName = "OdinsSteelworks"; private const string ModVersion = "0.4.0"; private const string ModGUID = "org.bepinex.plugins.odinssteelworks"; private static readonly ConfigSync configSync = new ConfigSync("OdinsSteelworks") { DisplayName = "OdinsSteelworks", CurrentVersion = "0.4.0", MinimumRequiredVersion = "0.4.0" }; private static ConfigEntry<Toggle> serverConfigLocked = null; private const string ItemManagerHarmonyId = "org.bepinex.helpers.ItemManager"; private static ConfigEntry<Toggle> ForgeEnabled = null; private static ConfigEntry<string> ForgeWeaponIdol = null; private static ConfigEntry<string> ForgeShieldIdol = null; private static ConfigEntry<string> ForgeOverrides = null; [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] private static ManualLogSource forgeLog; private static readonly HashSet<string> forgeWarned = new HashSet<string>(StringComparer.OrdinalIgnoreCase); private static ConfigEntry<string> KilnFuelItem = null; private static ConfigEntry<int> KilnFuelPerProduct = null; private static ConfigEntry<float> KilnSecondsPerProduct = null; private static ConfigEntry<int> KilnMaxOre = null; private static ConfigEntry<int> KilnMaxFuel = null; private static ConfigEntry<Toggle> KilnRequiresRoof = null; private static ConfigEntry<Toggle> KilnOutputAsStack = null; private static ConfigEntry<string> KilnConversions = null; private static ConfigEntry<float> KilnConversionSeconds = null; [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] private static ManualLogSource kilnLog; private ConfigEntry<T> config<[<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] T>(string group, string name, T value, ConfigDescription description, bool synchronizedSetting = true) { ConfigEntry<T> val = ((BaseUnityPlugin)this).Config.Bind<T>(group, name, value, description); SyncedConfigEntry<T> syncedConfigEntry = configSync.AddConfigEntry<T>(val); syncedConfigEntry.SynchronizedConfig = synchronizedSetting; return val; } private ConfigEntry<T> config<[<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] T>(string group, string name, T value, string description, bool synchronizedSetting = true) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()), synchronizedSetting); } public void Awake() { //IL_561f: Unknown result type (might be due to invalid IL or missing references) //IL_5626: Expected O, but got Unknown 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); BindKilnConfig(); BindForgeConfig(); GameObject val = PrefabManager.RegisterPrefab("cwsassets", "sfx_steel_mold_pro"); GameObject val2 = PrefabManager.RegisterPrefab("cwsassets", "sfx_slacktub_sound"); GameObject val3 = PrefabManager.RegisterPrefab("cwsassets", "vfx_cws_produce"); BuildPiece buildPiece = new BuildPiece("cwsassets", "CWS_Forge"); buildPiece.RequiredItems.Add("Stone", 10, recover: true); buildPiece.RequiredItems.Add("Iron", 5, recover: true); buildPiece.RequiredItems.Add("DragonTear", 1, recover: true); buildPiece.Category.Set(BuildPieceCategory.Crafting); BuildPiece buildPiece2 = new BuildPiece("cwsassets", "CWS_Slack_Tub"); buildPiece2.RequiredItems.Add("Iron", 2, recover: true); buildPiece2.RequiredItems.Add("CWS_SurtlingCoal", 2, recover: true); buildPiece2.RequiredItems.Add("RoundLog", 5, recover: true); buildPiece2.Extension.Set("CWS_Forge", 15); buildPiece2.Category.Set(BuildPieceCategory.Crafting); BuildPiece buildPiece3 = new BuildPiece("cwsassets", "CWS_Stone_Kiln"); buildPiece3.RequiredItems.Add("CWS_SurtlingCoal", 4, recover: true); buildPiece3.RequiredItems.Add("Iron", 5, recover: true); buildPiece3.RequiredItems.Add("Stone", 20, recover: true); buildPiece3.Extension.Set("CWS_Forge", 15); buildPiece3.Category.Set(BuildPieceCategory.Crafting); BuildPiece buildPiece4 = new BuildPiece("cwsassets", "CWS_Steel_Mold"); buildPiece4.RequiredItems.Add("Iron", 1, recover: true); buildPiece4.RequiredItems.Add("CWS_SurtlingCoal", 2, recover: true); buildPiece4.RequiredItems.Add("Stone", 5, recover: true); buildPiece4.Extension.Set("CWS_Forge", 15); buildPiece4.Category.Set(BuildPieceCategory.Crafting); BuildPiece buildPiece5 = new BuildPiece("cwsassets", "CWS_Grindwheel"); buildPiece5.RequiredItems.Add("YggdrasilWood", 4, recover: true); buildPiece5.RequiredItems.Add("CWS_Cold_Steel", 1, recover: true); buildPiece5.RequiredItems.Add("SharpeningStone", 1, recover: true); buildPiece5.Extension.Set("CWS_Forge", 15); buildPiece5.Category.Set(BuildPieceCategory.Crafting); BuildPiece buildPiece6 = new BuildPiece("cwsassets", "CWS_Item_Stand"); buildPiece6.RequiredItems.Add("CWS_Cold_Steel", 4, recover: true); buildPiece6.RequiredItems.Add("CWS_SurtlingCoal", 2, recover: true); buildPiece6.RequiredItems.Add("DeerHide", 2, recover: true); buildPiece6.Extension.Set("CWS_Forge", 15); buildPiece6.Category.Set(BuildPieceCategory.Crafting); BuildPiece buildPiece7 = new BuildPiece("cwsassets", "CWS_Item_Stand_2"); buildPiece7.RequiredItems.Add("CWS_Cold_Steel", 4, recover: true); buildPiece7.RequiredItems.Add("CWS_SurtlingCoal", 2, recover: true); buildPiece7.RequiredItems.Add("DeerHide", 2, recover: true); buildPiece7.Extension.Set("CWS_Forge", 15); buildPiece7.Category.Set(BuildPieceCategory.Crafting); BuildPiece buildPiece8 = new BuildPiece("cwsassets", "CWS_Steel_Pile"); buildPiece8.RequiredItems.Add("CWS_Cold_Steel", 20, recover: true); buildPiece8.Category.Set(BuildPieceCategory.Crafting); Item item = new Item("cwsassets", "CWS_Material_Placeholder"); Item item2 = new Item("cwsassets", "CWS_SurtlingCoal"); item2.Crafting.Add("CWS_Forge", 1); item2.RequiredItems.Add("Coal", 5); item2.RequiredItems.Add("SurtlingCore", 1); item2.CraftAmount = 10; Item item3 = new Item("cwsassets", "CWS_Crucible_Full"); item3.Crafting.Add("CWS_Forge", 1); item3.RequiredItems.Add("CWS_SurtlingCoal", 2); item3.RequiredItems.Add("IronScrap", 4); item3.CraftAmount = 1; Item item4 = new Item("cwsassets", "CWS_Crucible_Finished"); item4.Crafting.Add("CWS_Forge", 30); item4.RequiredItems.Add("CWS_Material_Placeholder", 1); item4.CraftAmount = 1; Item item5 = new Item("cwsassets", "CWS_Cold_Steel"); item5.Crafting.Add("CWS_Forge", 30); item5.RequiredItems.Add("CWS_Material_Placeholder", 1); item5.CraftAmount = 1; Item item6 = new Item("cwsassets", "CWS_Hot_Steel"); item6.Crafting.Add("CWS_Forge", 30); item6.RequiredItems.Add("CWS_Material_Placeholder", 1); item6.CraftAmount = 1; Item item7 = new Item("cwsassets", "CWS_Hot_Steel_Finished"); item7.Crafting.Add("CWS_Forge", 30); item7.RequiredItems.Add("CWS_Material_Placeholder", 1); item7.CraftAmount = 1; Item item8 = new Item("cwsassets", "CWS_TH_Axe_1"); item8.Crafting.Add("CWS_Forge", 2); item8.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item8.RequiredItems.Add("RoundLog", 6); item8.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item8.RequiredUpgradeItems.Add("RoundLog", 8); item8.Configurable = Configurability.Full; item8.CraftAmount = 1; Item item9 = new Item("cwsassets", "CWS_TH_Axe_2"); item9.Crafting.Add("CWS_Forge", 2); item9.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item9.RequiredItems.Add("RoundLog", 6); item9.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item9.RequiredUpgradeItems.Add("RoundLog", 8); item9.Configurable = Configurability.Full; item9.CraftAmount = 1; Item item10 = new Item("cwsassets", "CWS_TH_Axe_3"); item10.Crafting.Add("CWS_Forge", 2); item10.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item10.RequiredItems.Add("RoundLog", 6); item10.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item10.RequiredUpgradeItems.Add("RoundLog", 8); item10.Configurable = Configurability.Full; item10.CraftAmount = 1; Item item11 = new Item("cwsassets", "CWS_TH_Axe_4"); item11.Crafting.Add("CWS_Forge", 2); item11.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item11.RequiredItems.Add("RoundLog", 6); item11.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item11.RequiredUpgradeItems.Add("RoundLog", 8); item11.Configurable = Configurability.Full; item11.CraftAmount = 1; Item item12 = new Item("cwsassets", "CWS_TH_Axe_5"); item12.Crafting.Add("CWS_Forge", 2); item12.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item12.RequiredItems.Add("RoundLog", 6); item12.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item12.RequiredUpgradeItems.Add("RoundLog", 8); item12.Configurable = Configurability.Full; item12.CraftAmount = 1; Item item13 = new Item("cwsassets", "CWS_TH_Axe_6"); item13.Crafting.Add("CWS_Forge", 2); item13.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item13.RequiredItems.Add("RoundLog", 6); item13.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item13.RequiredUpgradeItems.Add("RoundLog", 8); item13.Configurable = Configurability.Full; item13.CraftAmount = 1; Item item14 = new Item("cwsassets", "CWS_TH_Axe_7"); item14.Crafting.Add("CWS_Forge", 2); item14.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item14.RequiredItems.Add("RoundLog", 6); item14.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item14.RequiredUpgradeItems.Add("RoundLog", 8); item14.Configurable = Configurability.Full; item14.CraftAmount = 1; Item item15 = new Item("cwsassets", "CWS_TH_Axe_8"); item15.Crafting.Add("CWS_Forge", 2); item15.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item15.RequiredItems.Add("RoundLog", 6); item15.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item15.RequiredUpgradeItems.Add("RoundLog", 8); item15.Configurable = Configurability.Full; item15.CraftAmount = 1; Item item16 = new Item("cwsassets", "CWS_TH_Axe_9"); item16.Crafting.Add("CWS_Forge", 2); item16.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item16.RequiredItems.Add("RoundLog", 6); item16.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item16.RequiredUpgradeItems.Add("RoundLog", 8); item16.Configurable = Configurability.Full; item16.CraftAmount = 1; Item item17 = new Item("cwsassets", "CWS_TH_Axe_10"); item17.Crafting.Add("CWS_Forge", 2); item17.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item17.RequiredItems.Add("RoundLog", 6); item17.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item17.RequiredUpgradeItems.Add("RoundLog", 8); item17.Configurable = Configurability.Full; item17.CraftAmount = 1; Item item18 = new Item("cwsassets", "CWS_Sledge_1"); item18.Crafting.Add("CWS_Forge", 2); item18.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item18.RequiredItems.Add("RoundLog", 6); item18.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item18.RequiredUpgradeItems.Add("RoundLog", 8); item18.Configurable = Configurability.Full; item18.CraftAmount = 1; Item item19 = new Item("cwsassets", "CWS_Sledge_2"); item19.Crafting.Add("CWS_Forge", 2); item19.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item19.RequiredItems.Add("RoundLog", 6); item19.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item19.RequiredUpgradeItems.Add("RoundLog", 8); item19.Configurable = Configurability.Full; item19.CraftAmount = 1; Item item20 = new Item("cwsassets", "CWS_Sledge_3"); item20.Crafting.Add("CWS_Forge", 2); item20.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item20.RequiredItems.Add("RoundLog", 6); item20.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item20.RequiredUpgradeItems.Add("RoundLog", 8); item20.Configurable = Configurability.Full; item20.CraftAmount = 1; Item item21 = new Item("cwsassets", "CWS_Sledge_4"); item21.Crafting.Add("CWS_Forge", 2); item21.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item21.RequiredItems.Add("RoundLog", 6); item21.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item21.RequiredUpgradeItems.Add("RoundLog", 8); item21.Configurable = Configurability.Full; item21.CraftAmount = 1; Item item22 = new Item("cwsassets", "CWS_Sledge_5"); item22.Crafting.Add("CWS_Forge", 2); item22.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item22.RequiredItems.Add("RoundLog", 6); item22.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item22.RequiredUpgradeItems.Add("RoundLog", 8); item22.Configurable = Configurability.Full; item22.CraftAmount = 1; Item item23 = new Item("cwsassets", "CWS_Sledge_6"); item23.Crafting.Add("CWS_Forge", 2); item23.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item23.RequiredItems.Add("RoundLog", 6); item23.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item23.RequiredUpgradeItems.Add("RoundLog", 8); item23.Configurable = Configurability.Full; item23.CraftAmount = 1; Item item24 = new Item("cwsassets", "CWS_Sledge_7"); item24.Crafting.Add("CWS_Forge", 2); item24.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item24.RequiredItems.Add("RoundLog", 6); item24.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item24.RequiredUpgradeItems.Add("RoundLog", 8); item24.Configurable = Configurability.Full; item24.CraftAmount = 1; Item item25 = new Item("cwsassets", "CWS_Sledge_8"); item25.Crafting.Add("CWS_Forge", 2); item25.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item25.RequiredItems.Add("RoundLog", 6); item25.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item25.RequiredUpgradeItems.Add("RoundLog", 8); item25.Configurable = Configurability.Full; item25.CraftAmount = 1; Item item26 = new Item("cwsassets", "CWS_Sledge_9"); item26.Crafting.Add("CWS_Forge", 2); item26.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item26.RequiredItems.Add("RoundLog", 6); item26.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item26.RequiredUpgradeItems.Add("RoundLog", 8); item26.Configurable = Configurability.Full; item26.CraftAmount = 1; Item item27 = new Item("cwsassets", "CWS_Sledge_10"); item27.Crafting.Add("CWS_Forge", 2); item27.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item27.RequiredItems.Add("RoundLog", 6); item27.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item27.RequiredUpgradeItems.Add("RoundLog", 8); item27.Configurable = Configurability.Full; item27.CraftAmount = 1; Item item28 = new Item("cwsassets", "CWS_Sledge_11"); item28.Crafting.Add("CWS_Forge", 2); item28.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item28.RequiredItems.Add("RoundLog", 6); item28.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item28.RequiredUpgradeItems.Add("RoundLog", 8); item28.Configurable = Configurability.Full; item28.CraftAmount = 1; Item item29 = new Item("cwsassets", "CWS_TH_Sword_1"); item29.Crafting.Add("CWS_Forge", 2); item29.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item29.RequiredItems.Add("RoundLog", 6); item29.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item29.RequiredUpgradeItems.Add("RoundLog", 8); item29.Configurable = Configurability.Full; item29.CraftAmount = 1; Item item30 = new Item("cwsassets", "CWS_TH_Sword_2"); item30.Crafting.Add("CWS_Forge", 2); item30.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item30.RequiredItems.Add("RoundLog", 6); item30.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item30.RequiredUpgradeItems.Add("RoundLog", 8); item30.Configurable = Configurability.Full; item30.CraftAmount = 1; Item item31 = new Item("cwsassets", "CWS_TH_Sword_3"); item31.Crafting.Add("CWS_Forge", 2); item31.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item31.RequiredItems.Add("RoundLog", 6); item31.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item31.RequiredUpgradeItems.Add("RoundLog", 8); item31.Configurable = Configurability.Full; item31.CraftAmount = 1; Item item32 = new Item("cwsassets", "CWS_TH_Sword_4"); item32.Crafting.Add("CWS_Forge", 2); item32.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item32.RequiredItems.Add("RoundLog", 6); item32.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item32.RequiredUpgradeItems.Add("RoundLog", 8); item32.Configurable = Configurability.Full; item32.CraftAmount = 1; Item item33 = new Item("cwsassets", "CWS_TH_Sword_5"); item33.Crafting.Add("CWS_Forge", 2); item33.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item33.RequiredItems.Add("RoundLog", 6); item33.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item33.RequiredUpgradeItems.Add("RoundLog", 8); item33.Configurable = Configurability.Full; item33.CraftAmount = 1; Item item34 = new Item("cwsassets", "CWS_TH_Sword_6"); item34.Crafting.Add("CWS_Forge", 2); item34.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item34.RequiredItems.Add("RoundLog", 6); item34.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item34.RequiredUpgradeItems.Add("RoundLog", 8); item34.Configurable = Configurability.Full; item34.CraftAmount = 1; Item item35 = new Item("cwsassets", "CWS_TH_Sword_7"); item35.Crafting.Add("CWS_Forge", 2); item35.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item35.RequiredItems.Add("RoundLog", 6); item35.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item35.RequiredUpgradeItems.Add("RoundLog", 8); item35.Configurable = Configurability.Full; item35.CraftAmount = 1; Item item36 = new Item("cwsassets", "CWS_TH_Sword_8"); item36.Crafting.Add("CWS_Forge", 2); item36.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item36.RequiredItems.Add("RoundLog", 6); item36.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item36.RequiredUpgradeItems.Add("RoundLog", 8); item36.Configurable = Configurability.Full; item36.CraftAmount = 1; Item item37 = new Item("cwsassets", "CWS_TH_Sword_9"); item37.Crafting.Add("CWS_Forge", 2); item37.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item37.RequiredItems.Add("RoundLog", 6); item37.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item37.RequiredUpgradeItems.Add("RoundLog", 8); item37.Configurable = Configurability.Full; item37.CraftAmount = 1; Item item38 = new Item("cwsassets", "CWS_TH_Sword_10"); item38.Crafting.Add("CWS_Forge", 2); item38.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item38.RequiredItems.Add("RoundLog", 6); item38.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item38.RequiredUpgradeItems.Add("RoundLog", 8); item38.Configurable = Configurability.Full; item38.CraftAmount = 1; Item item39 = new Item("cwsassets", "CWS_TH_Sword_11"); item39.Crafting.Add("CWS_Forge", 2); item39.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item39.RequiredItems.Add("RoundLog", 6); item39.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item39.RequiredUpgradeItems.Add("RoundLog", 8); item39.Configurable = Configurability.Full; item39.CraftAmount = 1; Item item40 = new Item("cwsassets", "CWS_Atgeir_1"); item40.Crafting.Add("CWS_Forge", 2); item40.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item40.RequiredItems.Add("RoundLog", 6); item40.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item40.RequiredUpgradeItems.Add("RoundLog", 8); item40.Configurable = Configurability.Full; item40.CraftAmount = 1; Item item41 = new Item("cwsassets", "CWS_Atgeir_2"); item41.Crafting.Add("CWS_Forge", 2); item41.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item41.RequiredItems.Add("RoundLog", 6); item41.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item41.RequiredUpgradeItems.Add("RoundLog", 8); item41.Configurable = Configurability.Full; item41.CraftAmount = 1; Item item42 = new Item("cwsassets", "CWS_Atgeir_3"); item42.Crafting.Add("CWS_Forge", 2); item42.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item42.RequiredItems.Add("RoundLog", 6); item42.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item42.RequiredUpgradeItems.Add("RoundLog", 8); item42.Configurable = Configurability.Full; item42.CraftAmount = 1; Item item43 = new Item("cwsassets", "CWS_Atgeir_4"); item43.Crafting.Add("CWS_Forge", 2); item43.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item43.RequiredItems.Add("RoundLog", 6); item43.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item43.RequiredUpgradeItems.Add("RoundLog", 8); item43.Configurable = Configurability.Full; item43.CraftAmount = 1; Item item44 = new Item("cwsassets", "CWS_Atgeir_5"); item44.Crafting.Add("CWS_Forge", 2); item44.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item44.RequiredItems.Add("RoundLog", 6); item44.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item44.RequiredUpgradeItems.Add("RoundLog", 8); item44.Configurable = Configurability.Full; item44.CraftAmount = 1; Item item45 = new Item("cwsassets", "CWS_Atgeir_6"); item45.Crafting.Add("CWS_Forge", 2); item45.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item45.RequiredItems.Add("RoundLog", 6); item45.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item45.RequiredUpgradeItems.Add("RoundLog", 8); item45.Configurable = Configurability.Full; item45.CraftAmount = 1; Item item46 = new Item("cwsassets", "CWS_Atgeir_7"); item46.Crafting.Add("CWS_Forge", 2); item46.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item46.RequiredItems.Add("RoundLog", 6); item46.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item46.RequiredUpgradeItems.Add("RoundLog", 8); item46.Configurable = Configurability.Full; item46.CraftAmount = 1; Item item47 = new Item("cwsassets", "CWS_Atgeir_8"); item47.Crafting.Add("CWS_Forge", 2); item47.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item47.RequiredItems.Add("RoundLog", 6); item47.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item47.RequiredUpgradeItems.Add("RoundLog", 8); item47.Configurable = Configurability.Full; item47.CraftAmount = 1; Item item48 = new Item("cwsassets", "CWS_Atgeir_9"); item48.Crafting.Add("CWS_Forge", 2); item48.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item48.RequiredItems.Add("RoundLog", 6); item48.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item48.RequiredUpgradeItems.Add("RoundLog", 8); item48.Configurable = Configurability.Full; item48.CraftAmount = 1; Item item49 = new Item("cwsassets", "CWS_Atgeir_10"); item49.Crafting.Add("CWS_Forge", 2); item49.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item49.RequiredItems.Add("RoundLog", 6); item49.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item49.RequiredUpgradeItems.Add("RoundLog", 8); item49.Configurable = Configurability.Full; item49.CraftAmount = 1; Item item50 = new Item("cwsassets", "CWS_Axe_1"); item50.Crafting.Add("CWS_Forge", 2); item50.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item50.RequiredItems.Add("RoundLog", 6); item50.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item50.RequiredUpgradeItems.Add("RoundLog", 8); item50.Configurable = Configurability.Full; item50.CraftAmount = 1; Item item51 = new Item("cwsassets", "CWS_Axe_2"); item51.Crafting.Add("CWS_Forge", 2); item51.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item51.RequiredItems.Add("RoundLog", 6); item51.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item51.RequiredUpgradeItems.Add("RoundLog", 8); item51.Configurable = Configurability.Full; item51.CraftAmount = 1; Item item52 = new Item("cwsassets", "CWS_Axe_3"); item52.Crafting.Add("CWS_Forge", 2); item52.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item52.RequiredItems.Add("RoundLog", 6); item52.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item52.RequiredUpgradeItems.Add("RoundLog", 8); item52.Configurable = Configurability.Full; item52.CraftAmount = 1; Item item53 = new Item("cwsassets", "CWS_Axe_4"); item53.Crafting.Add("CWS_Forge", 2); item53.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item53.RequiredItems.Add("RoundLog", 6); item53.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item53.RequiredUpgradeItems.Add("RoundLog", 8); item53.Configurable = Configurability.Full; item53.CraftAmount = 1; Item item54 = new Item("cwsassets", "CWS_Axe_5"); item54.Crafting.Add("CWS_Forge", 2); item54.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item54.RequiredItems.Add("RoundLog", 6); item54.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item54.RequiredUpgradeItems.Add("RoundLog", 8); item54.Configurable = Configurability.Full; item54.CraftAmount = 1; Item item55 = new Item("cwsassets", "CWS_Axe_6"); item55.Crafting.Add("CWS_Forge", 2); item55.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item55.RequiredItems.Add("RoundLog", 6); item55.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item55.RequiredUpgradeItems.Add("RoundLog", 8); item55.Configurable = Configurability.Full; item55.CraftAmount = 1; Item item56 = new Item("cwsassets", "CWS_Axe_7"); item56.Crafting.Add("CWS_Forge", 2); item56.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item56.RequiredItems.Add("RoundLog", 6); item56.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item56.RequiredUpgradeItems.Add("RoundLog", 8); item56.Configurable = Configurability.Full; item56.CraftAmount = 1; Item item57 = new Item("cwsassets", "CWS_Axe_8"); item57.Crafting.Add("CWS_Forge", 2); item57.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item57.RequiredItems.Add("RoundLog", 6); item57.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item57.RequiredUpgradeItems.Add("RoundLog", 8); item57.Configurable = Configurability.Full; item57.CraftAmount = 1; Item item58 = new Item("cwsassets", "CWS_Axe_9"); item58.Crafting.Add("CWS_Forge", 2); item58.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item58.RequiredItems.Add("RoundLog", 6); item58.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item58.RequiredUpgradeItems.Add("RoundLog", 8); item58.Configurable = Configurability.Full; item58.CraftAmount = 1; Item item59 = new Item("cwsassets", "CWS_Axe_10"); item59.Crafting.Add("CWS_Forge", 2); item59.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item59.RequiredItems.Add("RoundLog", 6); item59.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item59.RequiredUpgradeItems.Add("RoundLog", 8); item59.Configurable = Configurability.Full; item59.CraftAmount = 1; Item item60 = new Item("cwsassets", "CWS_Bow_1"); item60.Crafting.Add("CWS_Forge", 2); item60.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item60.RequiredItems.Add("RoundLog", 6); item60.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item60.RequiredUpgradeItems.Add("RoundLog", 8); item60.Configurable = Configurability.Full; item60.CraftAmount = 1; Item item61 = new Item("cwsassets", "CWS_Bow_2"); item61.Crafting.Add("CWS_Forge", 2); item61.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item61.RequiredItems.Add("RoundLog", 6); item61.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item61.RequiredUpgradeItems.Add("RoundLog", 8); item61.Configurable = Configurability.Full; item61.CraftAmount = 1; Item item62 = new Item("cwsassets", "CWS_Bow_3"); item62.Crafting.Add("CWS_Forge", 2); item62.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item62.RequiredItems.Add("RoundLog", 6); item62.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item62.RequiredUpgradeItems.Add("RoundLog", 8); item62.Configurable = Configurability.Full; item62.CraftAmount = 1; Item item63 = new Item("cwsassets", "CWS_Bow_4"); item63.Crafting.Add("CWS_Forge", 2); item63.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item63.RequiredItems.Add("RoundLog", 6); item63.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item63.RequiredUpgradeItems.Add("RoundLog", 8); item63.Configurable = Configurability.Full; item63.CraftAmount = 1; Item item64 = new Item("cwsassets", "CWS_Bow_5"); item64.Crafting.Add("CWS_Forge", 2); item64.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item64.RequiredItems.Add("RoundLog", 6); item64.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item64.RequiredUpgradeItems.Add("RoundLog", 8); item64.Configurable = Configurability.Full; item64.CraftAmount = 1; Item item65 = new Item("cwsassets", "CWS_Bow_6"); item65.Crafting.Add("CWS_Forge", 2); item65.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item65.RequiredItems.Add("RoundLog", 6); item65.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item65.RequiredUpgradeItems.Add("RoundLog", 8); item65.Configurable = Configurability.Full; item65.CraftAmount = 1; Item item66 = new Item("cwsassets", "CWS_Bow_7"); item66.Crafting.Add("CWS_Forge", 2); item66.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item66.RequiredItems.Add("RoundLog", 6); item66.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item66.RequiredUpgradeItems.Add("RoundLog", 8); item66.Configurable = Configurability.Full; item66.CraftAmount = 1; Item item67 = new Item("cwsassets", "CWS_Bow_8"); item67.Crafting.Add("CWS_Forge", 2); item67.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item67.RequiredItems.Add("RoundLog", 6); item67.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item67.RequiredUpgradeItems.Add("RoundLog", 8); item67.Configurable = Configurability.Full; item67.CraftAmount = 1; Item item68 = new Item("cwsassets", "CWS_Bow_9"); item68.Crafting.Add("CWS_Forge", 2); item68.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item68.RequiredItems.Add("RoundLog", 6); item68.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item68.RequiredUpgradeItems.Add("RoundLog", 8); item68.Configurable = Configurability.Full; item68.CraftAmount = 1; Item item69 = new Item("cwsassets", "CWS_Bow_10"); item69.Crafting.Add("CWS_Forge", 2); item69.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item69.RequiredItems.Add("RoundLog", 6); item69.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item69.RequiredUpgradeItems.Add("RoundLog", 8); item69.Configurable = Configurability.Full; item69.CraftAmount = 1; Item item70 = new Item("cwsassets", "CWS_Bow_11"); item70.Crafting.Add("CWS_Forge", 2); item70.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item70.RequiredItems.Add("RoundLog", 6); item70.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item70.RequiredUpgradeItems.Add("RoundLog", 8); item70.Configurable = Configurability.Full; item70.CraftAmount = 1; Item item71 = new Item("cwsassets", "CWS_Dagger_1"); item71.Crafting.Add("CWS_Forge", 2); item71.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item71.RequiredItems.Add("RoundLog", 6); item71.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item71.RequiredUpgradeItems.Add("RoundLog", 8); item71.Configurable = Configurability.Full; item71.CraftAmount = 1; Item item72 = new Item("cwsassets", "CWS_Dagger_2"); item72.Crafting.Add("CWS_Forge", 2); item72.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item72.RequiredItems.Add("RoundLog", 6); item72.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item72.RequiredUpgradeItems.Add("RoundLog", 8); item72.Configurable = Configurability.Full; item72.CraftAmount = 1; Item item73 = new Item("cwsassets", "CWS_Dagger_3"); item73.Crafting.Add("CWS_Forge", 2); item73.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item73.RequiredItems.Add("RoundLog", 6); item73.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item73.RequiredUpgradeItems.Add("RoundLog", 8); item73.Configurable = Configurability.Full; item73.CraftAmount = 1; Item item74 = new Item("cwsassets", "CWS_Dagger_4"); item74.Crafting.Add("CWS_Forge", 2); item74.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item74.RequiredItems.Add("RoundLog", 6); item74.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item74.RequiredUpgradeItems.Add("RoundLog", 8); item74.Configurable = Configurability.Full; item74.CraftAmount = 1; Item item75 = new Item("cwsassets", "CWS_Dagger_5"); item75.Crafting.Add("CWS_Forge", 2); item75.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item75.RequiredItems.Add("RoundLog", 6); item75.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item75.RequiredUpgradeItems.Add("RoundLog", 8); item75.Configurable = Configurability.Full; item75.CraftAmount = 1; Item item76 = new Item("cwsassets", "CWS_Dagger_6"); item76.Crafting.Add("CWS_Forge", 2); item76.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item76.RequiredItems.Add("RoundLog", 6); item76.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item76.RequiredUpgradeItems.Add("RoundLog", 8); item76.Configurable = Configurability.Full; item76.CraftAmount = 1; Item item77 = new Item("cwsassets", "CWS_Dagger_7"); item77.Crafting.Add("CWS_Forge", 2); item77.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item77.RequiredItems.Add("RoundLog", 6); item77.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item77.RequiredUpgradeItems.Add("RoundLog", 8); item77.Configurable = Configurability.Full; item77.CraftAmount = 1; Item item78 = new Item("cwsassets", "CWS_Dagger_8"); item78.Crafting.Add("CWS_Forge", 2); item78.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item78.RequiredItems.Add("RoundLog", 6); item78.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item78.RequiredUpgradeItems.Add("RoundLog", 8); item78.Configurable = Configurability.Full; item78.CraftAmount = 1; Item item79 = new Item("cwsassets", "CWS_Dagger_9"); item79.Crafting.Add("CWS_Forge", 2); item79.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item79.RequiredItems.Add("RoundLog", 6); item79.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item79.RequiredUpgradeItems.Add("RoundLog", 8); item79.Configurable = Configurability.Full; item79.CraftAmount = 1; Item item80 = new Item("cwsassets", "CWS_Dagger_10"); item80.Crafting.Add("CWS_Forge", 2); item80.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item80.RequiredItems.Add("RoundLog", 6); item80.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item80.RequiredUpgradeItems.Add("RoundLog", 8); item80.Configurable = Configurability.Full; item80.CraftAmount = 1; Item item81 = new Item("cwsassets", "CWS_Dagger_11"); item81.Crafting.Add("CWS_Forge", 2); item81.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item81.RequiredItems.Add("RoundLog", 6); item81.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item81.RequiredUpgradeItems.Add("RoundLog", 8); item81.Configurable = Configurability.Full; item81.CraftAmount = 1; Item item82 = new Item("cwsassets", "CWS_Mace_1"); item82.Crafting.Add("CWS_Forge", 2); item82.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item82.RequiredItems.Add("RoundLog", 6); item82.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item82.RequiredUpgradeItems.Add("RoundLog", 8); item82.Configurable = Configurability.Full; item82.CraftAmount = 1; Item item83 = new Item("cwsassets", "CWS_Mace_2"); item83.Crafting.Add("CWS_Forge", 2); item83.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item83.RequiredItems.Add("RoundLog", 6); item83.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item83.RequiredUpgradeItems.Add("RoundLog", 8); item83.Configurable = Configurability.Full; item83.CraftAmount = 1; Item item84 = new Item("cwsassets", "CWS_Mace_3"); item84.Crafting.Add("CWS_Forge", 2); item84.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item84.RequiredItems.Add("RoundLog", 6); item84.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item84.RequiredUpgradeItems.Add("RoundLog", 8); item84.Configurable = Configurability.Full; item84.CraftAmount = 1; Item item85 = new Item("cwsassets", "CWS_Mace_4"); item85.Crafting.Add("CWS_Forge", 2); item85.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item85.RequiredItems.Add("RoundLog", 6); item85.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item85.RequiredUpgradeItems.Add("RoundLog", 8); item85.Configurable = Configurability.Full; item85.CraftAmount = 1; Item item86 = new Item("cwsassets", "CWS_Mace_5"); item86.Crafting.Add("CWS_Forge", 2); item86.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item86.RequiredItems.Add("RoundLog", 6); item86.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item86.RequiredUpgradeItems.Add("RoundLog", 8); item86.Configurable = Configurability.Full; item86.CraftAmount = 1; Item item87 = new Item("cwsassets", "CWS_Mace_6"); item87.Crafting.Add("CWS_Forge", 2); item87.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item87.RequiredItems.Add("RoundLog", 6); item87.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item87.RequiredUpgradeItems.Add("RoundLog", 8); item87.Configurable = Configurability.Full; item87.CraftAmount = 1; Item item88 = new Item("cwsassets", "CWS_Mace_7"); item88.Crafting.Add("CWS_Forge", 2); item88.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item88.RequiredItems.Add("RoundLog", 6); item88.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item88.RequiredUpgradeItems.Add("RoundLog", 8); item88.Configurable = Configurability.Full; item88.CraftAmount = 1; Item item89 = new Item("cwsassets", "CWS_Mace_8"); item89.Crafting.Add("CWS_Forge", 2); item89.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item89.RequiredItems.Add("RoundLog", 6); item89.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item89.RequiredUpgradeItems.Add("RoundLog", 8); item89.Configurable = Configurability.Full; item89.CraftAmount = 1; Item item90 = new Item("cwsassets", "CWS_Mace_9"); item90.Crafting.Add("CWS_Forge", 2); item90.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item90.RequiredItems.Add("RoundLog", 6); item90.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item90.RequiredUpgradeItems.Add("RoundLog", 8); item90.Configurable = Configurability.Full; item90.CraftAmount = 1; Item item91 = new Item("cwsassets", "CWS_Mace_10"); item91.Crafting.Add("CWS_Forge", 2); item91.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item91.RequiredItems.Add("RoundLog", 6); item91.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item91.RequiredUpgradeItems.Add("RoundLog", 8); item91.Configurable = Configurability.Full; item91.CraftAmount = 1; Item item92 = new Item("cwsassets", "CWS_Buckler_Shield_1"); item92.Crafting.Add("CWS_Forge", 2); item92.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item92.RequiredItems.Add("RoundLog", 6); item92.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item92.RequiredUpgradeItems.Add("RoundLog", 8); item92.Configurable = Configurability.Full; item92.CraftAmount = 1; Item item93 = new Item("cwsassets", "CWS_Buckler_Shield_2"); item93.Crafting.Add("CWS_Forge", 2); item93.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item93.RequiredItems.Add("RoundLog", 6); item93.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item93.RequiredUpgradeItems.Add("RoundLog", 8); item93.Configurable = Configurability.Full; item93.CraftAmount = 1; Item item94 = new Item("cwsassets", "CWS_Round_Shield_1"); item94.Crafting.Add("CWS_Forge", 2); item94.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item94.RequiredItems.Add("RoundLog", 6); item94.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item94.RequiredUpgradeItems.Add("RoundLog", 8); item94.Configurable = Configurability.Full; item94.CraftAmount = 1; Item item95 = new Item("cwsassets", "CWS_Round_Shield_2"); item95.Crafting.Add("CWS_Forge", 2); item95.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item95.RequiredItems.Add("RoundLog", 6); item95.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item95.RequiredUpgradeItems.Add("RoundLog", 8); item95.Configurable = Configurability.Full; item95.CraftAmount = 1; Item item96 = new Item("cwsassets", "CWS_Round_Shield_3"); item96.Crafting.Add("CWS_Forge", 2); item96.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item96.RequiredItems.Add("RoundLog", 6); item96.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item96.RequiredUpgradeItems.Add("RoundLog", 8); item96.Configurable = Configurability.Full; item96.CraftAmount = 1; Item item97 = new Item("cwsassets", "CWS_Round_Shield_4"); item97.Crafting.Add("CWS_Forge", 2); item97.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item97.RequiredItems.Add("RoundLog", 6); item97.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item97.RequiredUpgradeItems.Add("RoundLog", 8); item97.Configurable = Configurability.Full; item97.CraftAmount = 1; Item item98 = new Item("cwsassets", "CWS_Round_Shield_5"); item98.Crafting.Add("CWS_Forge", 2); item98.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item98.RequiredItems.Add("RoundLog", 6); item98.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item98.RequiredUpgradeItems.Add("RoundLog", 8); item98.Configurable = Configurability.Full; item98.CraftAmount = 1; Item item99 = new Item("cwsassets", "CWS_Round_Shield_6"); item99.Crafting.Add("CWS_Forge", 2); item99.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item99.RequiredItems.Add("RoundLog", 6); item99.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item99.RequiredUpgradeItems.Add("RoundLog", 8); item99.Configurable = Configurability.Full; item99.CraftAmount = 1; Item item100 = new Item("cwsassets", "CWS_Round_Shield_7"); item100.Crafting.Add("CWS_Forge", 2); item100.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item100.RequiredItems.Add("RoundLog", 6); item100.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item100.RequiredUpgradeItems.Add("RoundLog", 8); item100.Configurable = Configurability.Full; item100.CraftAmount = 1; Item item101 = new Item("cwsassets", "CWS_Heater_Shield_1"); item101.Crafting.Add("CWS_Forge", 2); item101.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item101.RequiredItems.Add("RoundLog", 6); item101.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item101.RequiredUpgradeItems.Add("RoundLog", 8); item101.Configurable = Configurability.Full; item101.CraftAmount = 1; Item item102 = new Item("cwsassets", "CWS_Heater_Shield_2"); item102.Crafting.Add("CWS_Forge", 2); item102.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item102.RequiredItems.Add("RoundLog", 6); item102.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item102.RequiredUpgradeItems.Add("RoundLog", 8); item102.Configurable = Configurability.Full; item102.CraftAmount = 1; Item item103 = new Item("cwsassets", "CWS_Heater_Shield_3"); item103.Crafting.Add("CWS_Forge", 2); item103.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item103.RequiredItems.Add("RoundLog", 6); item103.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item103.RequiredUpgradeItems.Add("RoundLog", 8); item103.Configurable = Configurability.Full; item103.CraftAmount = 1; Item item104 = new Item("cwsassets", "CWS_Heater_Shield_4"); item104.Crafting.Add("CWS_Forge", 2); item104.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item104.RequiredItems.Add("RoundLog", 6); item104.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item104.RequiredUpgradeItems.Add("RoundLog", 8); item104.Configurable = Configurability.Full; item104.CraftAmount = 1; Item item105 = new Item("cwsassets", "CWS_Heater_Shield_5"); item105.Crafting.Add("CWS_Forge", 2); item105.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item105.RequiredItems.Add("RoundLog", 6); item105.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item105.RequiredUpgradeItems.Add("RoundLog", 8); item105.Configurable = Configurability.Full; item105.CraftAmount = 1; Item item106 = new Item("cwsassets", "CWS_Tower_Shield_1"); item106.Crafting.Add("CWS_Forge", 2); item106.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item106.RequiredItems.Add("RoundLog", 6); item106.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item106.RequiredUpgradeItems.Add("RoundLog", 8); item106.Configurable = Configurability.Full; item106.CraftAmount = 1; Item item107 = new Item("cwsassets", "CWS_Tower_Shield_2"); item107.Crafting.Add("CWS_Forge", 2); item107.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item107.RequiredItems.Add("RoundLog", 6); item107.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item107.RequiredUpgradeItems.Add("RoundLog", 8); item107.Configurable = Configurability.Full; item107.CraftAmount = 1; Item item108 = new Item("cwsassets", "CWS_Tower_Shield_3"); item108.Crafting.Add("CWS_Forge", 2); item108.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item108.RequiredItems.Add("RoundLog", 6); item108.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item108.RequiredUpgradeItems.Add("RoundLog", 8); item108.Configurable = Configurability.Full; item108.CraftAmount = 1; Item item109 = new Item("cwsassets", "CWS_Tower_Shield_4"); item109.Crafting.Add("CWS_Forge", 2); item109.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item109.RequiredItems.Add("RoundLog", 6); item109.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item109.RequiredUpgradeItems.Add("RoundLog", 8); item109.Configurable = Configurability.Full; item109.CraftAmount = 1; Item item110 = new Item("cwsassets", "CWS_Tower_Shield_5"); item110.Crafting.Add("CWS_Forge", 2); item110.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item110.RequiredItems.Add("RoundLog", 6); item110.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item110.RequiredUpgradeItems.Add("RoundLog", 8); item110.Configurable = Configurability.Full; item110.CraftAmount = 1; Item item111 = new Item("cwsassets", "CWS_Spear_1"); item111.Crafting.Add("CWS_Forge", 2); item111.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item111.RequiredItems.Add("RoundLog", 6); item111.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item111.RequiredUpgradeItems.Add("RoundLog", 8); item111.Configurable = Configurability.Full; item111.CraftAmount = 1; GameObject val4 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Spear_1_Projectile"); Item item112 = new Item("cwsassets", "CWS_Spear_2"); item112.Crafting.Add("CWS_Forge", 2); item112.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item112.RequiredItems.Add("RoundLog", 6); item112.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item112.RequiredUpgradeItems.Add("RoundLog", 8); item112.Configurable = Configurability.Full; item112.CraftAmount = 1; GameObject val5 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Spear_2_Projectile"); Item item113 = new Item("cwsassets", "CWS_Spear_3"); item113.Crafting.Add("CWS_Forge", 2); item113.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item113.RequiredItems.Add("RoundLog", 6); item113.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item113.RequiredUpgradeItems.Add("RoundLog", 8); item113.Configurable = Configurability.Full; item113.CraftAmount = 1; GameObject val6 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Spear_3_Projectile"); Item item114 = new Item("cwsassets", "CWS_Spear_4"); item114.Crafting.Add("CWS_Forge", 2); item114.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item114.RequiredItems.Add("RoundLog", 6); item114.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item114.RequiredUpgradeItems.Add("RoundLog", 8); item114.Configurable = Configurability.Full; item114.CraftAmount = 1; GameObject val7 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Spear_4_Projectile"); Item item115 = new Item("cwsassets", "CWS_Spear_5"); item115.Crafting.Add("CWS_Forge", 2); item115.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item115.RequiredItems.Add("RoundLog", 6); item115.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item115.RequiredUpgradeItems.Add("RoundLog", 8); item115.Configurable = Configurability.Full; item115.CraftAmount = 1; GameObject val8 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Spear_5_Projectile"); Item item116 = new Item("cwsassets", "CWS_Spear_6"); item116.Crafting.Add("CWS_Forge", 2); item116.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item116.RequiredItems.Add("RoundLog", 6); item116.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item116.RequiredUpgradeItems.Add("RoundLog", 8); item116.Configurable = Configurability.Full; item116.CraftAmount = 1; GameObject val9 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Spear_6_Projectile"); Item item117 = new Item("cwsassets", "CWS_Spear_7"); item117.Crafting.Add("CWS_Forge", 2); item117.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item117.RequiredItems.Add("RoundLog", 6); item117.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item117.RequiredUpgradeItems.Add("RoundLog", 8); item117.Configurable = Configurability.Full; item117.CraftAmount = 1; GameObject val10 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Spear_7_Projectile"); Item item118 = new Item("cwsassets", "CWS_Spear_8"); item118.Crafting.Add("CWS_Forge", 2); item118.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item118.RequiredItems.Add("RoundLog", 6); item118.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item118.RequiredUpgradeItems.Add("RoundLog", 8); item118.Configurable = Configurability.Full; item118.CraftAmount = 1; GameObject val11 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Spear_8_Projectile"); Item item119 = new Item("cwsassets", "CWS_Spear_9"); item119.Crafting.Add("CWS_Forge", 2); item119.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item119.RequiredItems.Add("RoundLog", 6); item119.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item119.RequiredUpgradeItems.Add("RoundLog", 8); item119.Configurable = Configurability.Full; item119.CraftAmount = 1; GameObject val12 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Spear_9_Projectile"); Item item120 = new Item("cwsassets", "CWS_Sword_1"); item120.Crafting.Add("CWS_Forge", 2); item120.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item120.RequiredItems.Add("RoundLog", 6); item120.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item120.RequiredUpgradeItems.Add("RoundLog", 8); item120.Configurable = Configurability.Full; item120.CraftAmount = 1; Item item121 = new Item("cwsassets", "CWS_Sword_2"); item121.Crafting.Add("CWS_Forge", 2); item121.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item121.RequiredItems.Add("RoundLog", 6); item121.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item121.RequiredUpgradeItems.Add("RoundLog", 8); item121.Configurable = Configurability.Full; item121.CraftAmount = 1; Item item122 = new Item("cwsassets", "CWS_Sword_3"); item122.Crafting.Add("CWS_Forge", 2); item122.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item122.RequiredItems.Add("RoundLog", 6); item122.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item122.RequiredUpgradeItems.Add("RoundLog", 8); item122.Configurable = Configurability.Full; item122.CraftAmount = 1; Item item123 = new Item("cwsassets", "CWS_Sword_4"); item123.Crafting.Add("CWS_Forge", 2); item123.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item123.RequiredItems.Add("RoundLog", 6); item123.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item123.RequiredUpgradeItems.Add("RoundLog", 8); item123.Configurable = Configurability.Full; item123.CraftAmount = 1; Item item124 = new Item("cwsassets", "CWS_Sword_5"); item124.Crafting.Add("CWS_Forge", 2); item124.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item124.RequiredItems.Add("RoundLog", 6); item124.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item124.RequiredUpgradeItems.Add("RoundLog", 8); item124.Configurable = Configurability.Full; item124.CraftAmount = 1; Item item125 = new Item("cwsassets", "CWS_Sword_6"); item125.Crafting.Add("CWS_Forge", 2); item125.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item125.RequiredItems.Add("RoundLog", 6); item125.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item125.RequiredUpgradeItems.Add("RoundLog", 8); item125.Configurable = Configurability.Full; item125.CraftAmount = 1; Item item126 = new Item("cwsassets", "CWS_Sword_7"); item126.Crafting.Add("CWS_Forge", 2); item126.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item126.RequiredItems.Add("RoundLog", 6); item126.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item126.RequiredUpgradeItems.Add("RoundLog", 8); item126.Configurable = Configurability.Full; item126.CraftAmount = 1; Item item127 = new Item("cwsassets", "CWS_Sword_8"); item127.Crafting.Add("CWS_Forge", 2); item127.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item127.RequiredItems.Add("RoundLog", 6); item127.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item127.RequiredUpgradeItems.Add("RoundLog", 8); item127.Configurable = Configurability.Full; item127.CraftAmount = 1; Item item128 = new Item("cwsassets", "CWS_Sword_9"); item128.Crafting.Add("CWS_Forge", 2); item128.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item128.RequiredItems.Add("RoundLog", 6); item128.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item128.RequiredUpgradeItems.Add("RoundLog", 8); item128.Configurable = Configurability.Full; item128.CraftAmount = 1; Item item129 = new Item("cwsassets", "CWS_Sword_10"); item129.Crafting.Add("CWS_Forge", 2); item129.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item129.RequiredItems.Add("RoundLog", 6); item129.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item129.RequiredUpgradeItems.Add("RoundLog", 8); item129.Configurable = Configurability.Full; item129.CraftAmount = 1; Item item130 = new Item("cwsassets", "CWS_Sword_11"); item130.Crafting.Add("CWS_Forge", 2); item130.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item130.RequiredItems.Add("RoundLog", 6); item130.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item130.RequiredUpgradeItems.Add("RoundLog", 8); item130.Configurable = Configurability.Full; item130.CraftAmount = 1; Item item131 = new Item("cwsassets", "CWS_Sword_12"); item131.Crafting.Add("CWS_Forge", 2); item131.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item131.RequiredItems.Add("RoundLog", 6); item131.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item131.RequiredUpgradeItems.Add("RoundLog", 8); item131.Configurable = Configurability.Full; item131.CraftAmount = 1; Item item132 = new Item("cwsassets", "CWS_Sword_13"); item132.Crafting.Add("CWS_Forge", 2); item132.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item132.RequiredItems.Add("RoundLog", 6); item132.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item132.RequiredUpgradeItems.Add("RoundLog", 8); item132.Configurable = Configurability.Full; item132.CraftAmount = 1; Item item133 = new Item("cwsassets", "CWS_Sword_14"); item133.Crafting.Add("CWS_Forge", 2); item133.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item133.RequiredItems.Add("RoundLog", 6); item133.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item133.RequiredUpgradeItems.Add("RoundLog", 8); item133.Configurable = Configurability.Full; item133.CraftAmount = 1; Item item134 = new Item("cwsassets", "CWS_Crossbow_1"); item134.Crafting.Add("CWS_Forge", 2); item134.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item134.RequiredItems.Add("RoundLog", 6); item134.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item134.RequiredUpgradeItems.Add("RoundLog", 8); item134.Configurable = Configurability.Full; item134.CraftAmount = 1; Item item135 = new Item("cwsassets", "CWS_Crossbow_2"); item135.Crafting.Add("CWS_Forge", 2); item135.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item135.RequiredItems.Add("RoundLog", 6); item135.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item135.RequiredUpgradeItems.Add("RoundLog", 8); item135.Configurable = Configurability.Full; item135.CraftAmount = 1; Item item136 = new Item("cwsassets", "CWS_Crossbow_3"); item136.Crafting.Add("CWS_Forge", 2); item136.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item136.RequiredItems.Add("RoundLog", 6); item136.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item136.RequiredUpgradeItems.Add("RoundLog", 8); item136.Configurable = Configurability.Full; item136.CraftAmount = 1; Item item137 = new Item("cwsassets", "CWS_Crossbow_4"); item137.Crafting.Add("CWS_Forge", 2); item137.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item137.RequiredItems.Add("RoundLog", 6); item137.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item137.RequiredUpgradeItems.Add("RoundLog", 8); item137.Configurable = Configurability.Full; item137.CraftAmount = 1; Item item138 = new Item("cwsassets", "CWS_Crossbow_5"); item138.Crafting.Add("CWS_Forge", 2); item138.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item138.RequiredItems.Add("RoundLog", 6); item138.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item138.RequiredUpgradeItems.Add("RoundLog", 8); item138.Configurable = Configurability.Full; item138.CraftAmount = 1; Item item139 = new Item("cwsassets", "CWS_Crossbow_6"); item139.Crafting.Add("CWS_Forge", 2); item139.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item139.RequiredItems.Add("RoundLog", 6); item139.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item139.RequiredUpgradeItems.Add("RoundLog", 8); item139.Configurable = Configurability.Full; item139.CraftAmount = 1; Item item140 = new Item("cwsassets", "CWS_Crossbow_7"); item140.Crafting.Add("CWS_Forge", 2); item140.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item140.RequiredItems.Add("RoundLog", 6); item140.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item140.RequiredUpgradeItems.Add("RoundLog", 8); item140.Configurable = Configurability.Full; item140.CraftAmount = 1; Item item141 = new Item("cwsassets", "CWS_Crossbow_8"); item141.Crafting.Add("CWS_Forge", 2); item141.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item141.RequiredItems.Add("RoundLog", 6); item141.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item141.RequiredUpgradeItems.Add("RoundLog", 8); item141.Configurable = Configurability.Full; item141.CraftAmount = 1; Item item142 = new Item("cwsassets", "CWS_Crossbow_9"); item142.Crafting.Add("CWS_Forge", 2); item142.RequiredItems.Add("CWS_Hot_Steel_Finished", 2); item142.RequiredItems.Add("RoundLog", 6); item142.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 4); item142.RequiredUpgradeItems.Add("RoundLog", 8); item142.Configurable = Configurability.Full; item142.CraftAmount = 1; Item item143 = new Item("cwsassets", "CWS_Arrow_1"); item143.Crafting.Add("CWS_Forge", 2); item143.RequiredItems.Add("CWS_Hot_Steel_Finished", 1); item143.RequiredItems.Add("RoundLog", 4); item143.RequiredItems.Add("ElderBark", 1); item143.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 2); item143.RequiredUpgradeItems.Add("RoundLog", 6); item143.Configurable = Configurability.Full; item143.CraftAmount = 20; GameObject val13 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Arrow_Pro_1"); Item item144 = new Item("cwsassets", "CWS_Arrow_2"); item144.Crafting.Add("CWS_Forge", 2); item144.RequiredItems.Add("CWS_Hot_Steel_Finished", 1); item144.RequiredItems.Add("RoundLog", 4); item144.RequiredItems.Add("Obsidian", 1); item144.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 2); item144.RequiredUpgradeItems.Add("RoundLog", 6); item144.Configurable = Configurability.Full; item144.CraftAmount = 20; GameObject val14 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Arrow_Pro_2"); Item item145 = new Item("cwsassets", "CWS_Arrow_3"); item145.Crafting.Add("CWS_Forge", 2); item145.RequiredItems.Add("CWS_Hot_Steel_Finished", 1); item145.RequiredItems.Add("RoundLog", 4); item145.RequiredItems.Add("Entrails", 1); item145.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 2); item145.RequiredUpgradeItems.Add("RoundLog", 6); item145.Configurable = Configurability.Full; item145.CraftAmount = 20; GameObject val15 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Arrow_Pro_3"); Item item146 = new Item("cwsassets", "CWS_Arrow_4"); item146.Crafting.Add("CWS_Forge", 2); item146.RequiredItems.Add("CWS_Hot_Steel_Finished", 1); item146.RequiredItems.Add("RoundLog", 4); item146.RequiredItems.Add("Ooze", 1); item146.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 2); item146.RequiredUpgradeItems.Add("RoundLog", 6); item146.Configurable = Configurability.Full; item146.CraftAmount = 20; GameObject val16 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Arrow_Pro_4"); Item item147 = new Item("cwsassets", "CWS_Arrow_5"); item147.Crafting.Add("CWS_Forge", 2); item147.RequiredItems.Add("CWS_Hot_Steel_Finished", 1); item147.RequiredItems.Add("RoundLog", 4); item147.RequiredItems.Add("FreezeGland", 1); item147.RequiredUpgradeItems.Add("CWS_Hot_Steel_Finished", 2); item147.RequiredUpgradeItems.Add("RoundLog", 6); item147.Configurable = Configurability.Full; item147.CraftAmount = 20; GameObject val17 = PrefabManager.RegisterPrefab("cwsassets", "CWS_Arrow_Pro_5"); Assembly executingAssembly = Assembly.GetExecutingAssembly(); Harmony val18 = new Harmony("org.bepinex.plugins.odinssteelworks"); val18.PatchAll(executingAssembly); } private void BindForgeConfig() { forgeLog = ((BaseUnityPlugin)this).Logger; ForgeEnabled = config("3 - Forge of Potential", "Enabled", Toggle.On, "If on, Steelworks weapons and shields can be refined at the Forge of Potential with an Idol. Only items that have more than one quality level are offered."); ForgeWeaponIdol = config("3 - Forge of Potential", "Weapon Idol", "Upgrader2Weapon", "Prefab name of the Idol used to refine Steelworks weapons (case insensitive). Battle Idols are Upgrader0Weapon (Wooden) to Upgrader7Weapon (Bloodgold). The Idol's tier decides the odds. Leave empty to keep weapons out of the forge."); ForgeShieldIdol = config("3 - Forge of Potential", "Shield Idol", "Upgrader2Armor", "Prefab name of the Idol used to refine Steelworks shields (case insensitive). Protection Idols are Upgrader0Armor (Wooden) to Upgrader7Armor (Bloodgold). Leave empty to keep shields out of the forge."); ForgeOverrides = config("3 - Forge of Potential", "Idol Overrides", "", "Optional per item idol, listed like: CWS_Sword_14 = Upgrader5Weapon; CWS_Tower_Shield_5 = Upgrader4Armor. An item listed here uses that idol instead of the weapon / shield default. Use 'none' as the idol to keep a single item out of the forge."); } private static void ForgeInfo(string message) { ManualLogSource obj = forgeLog; if (obj != null) { obj.LogInfo((object)("[Forge] " + message)); } } private static void ForgeWarn(string message) { ManualLogSource obj = forgeLog; if (obj != null) { obj.LogWarning((object)("[Forge] " + message)); } } private static Dictionary<string, string> ParseForgeOverrides() { Dictionary<string, string> dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); string text = ForgeOverrides.Value ?? ""; string[] array = text.Split(new char[2] { ';', '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (string text2 in array) { int num = text2.IndexOf('='); if (num > 0) { string text3 = text2.Substring(0, num).Trim(); string value = text2.Substring(num + 1).Trim(); if (text3.Length > 0) { dictionary[text3] = value; } } } return dictionary; } [return: <b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] private static ItemDrop FindForgeItem(ObjectDB odb, string name) { foreach (GameObject item in odb.m_items) { if ((Object)(object)item != (Object)null && string.Equals(((Object)item).name, name, StringComparison.OrdinalIgnoreCase)) { return item.GetComponent<ItemDrop>(); } } return null; } [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(2)] internal static void ApplyForgeIdols(ObjectDB odb) { //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Invalid comparison between Unknown and I4 //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Invalid comparison between Unknown and I4 //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Invalid comparison between Unknown and I4 //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Invalid comparison between Unknown and I4 //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Invalid comparison between Unknown and I4 //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Expected O, but got Unknown if ((Object)(object)odb == (Object)null || odb.m_recipes == null || ForgeEnabled == null || ForgeEnabled.Value != Toggle.On) { return; } Dictionary<string, string> dictionary = ParseForgeOverrides(); Dictionary<string, ItemDrop> dictionary2 = new Dictionary<string, ItemDrop>(StringComparer.OrdinalIgnoreCase); foreach (Recipe recipe in odb.m_recipes) { if ((Object)(object)recipe == (Object)null || (Object)(object)recipe.m_item == (Object)null) { continue; } string name = ((Object)recipe.m_item).name; if (!name.StartsWith("CWS_", StringComparison.OrdinalIgnoreCase)) { continue; } SharedData shared = recipe.m_item.m_itemData.m_shared; if (shared.m_maxQuality <= 1) { continue; } string text = null; ItemType itemType = shared.m_itemType; ItemType val = itemType; if ((int)val <= 5) { if (val - 3 <= 1) { goto IL_0125; } if ((int)val == 5) { text = ForgeShieldIdol.Value; } } else if ((int)val == 14 || (int)val == 22) { goto IL_0125; } goto IL_0133; IL_0133: if (dictionary.TryGetValue(name, out var value)) { text = value; } text = (text ?? "").Trim(); int existing = Array.FindIndex(recipe.m_resources, [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] (Requirement r) => r?.m_upgraderResource ?? false); if (text.Length == 0 || text.Equals("none", StringComparison.OrdinalIgnoreCase)) { if (existing >= 0) { recipe.m_resources = recipe.m_resources.Where([<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] (Requirement r, int i) => i != existing).ToArray(); } continue; } if (!dictionary2.TryGetValue(text, out var value2)) { value2 = (dictionary2[text] = FindForgeItem(odb, text)); } if ((Object)(object)value2 == (Object)null) { if (forgeWarned.Add(text)) { ForgeWarn("Idol '" + text + "' was not found, so items using it stay out of the Forge of Potential."); } continue; } if (existing >= 0) { if ((Object)(object)recipe.m_resources[existing].m_resItem != (Object)(object)value2) { recipe.m_resources[existing].m_resItem = value2; } continue; } Requirement val3 = new Requirement { m_resItem = value2, m_amount = 1, m_amountPerLevel = 0, m_upgraderResource = true, m_recover = false }; recipe.m_resources = recipe.m_resources.Concat((IEnumerable<Requirement>)(object)new Requirement[1] { val3 }).ToArray(); continue; IL_0125: text = ForgeWeaponIdol.Value; goto IL_0133; } } private void BindKilnConfig() { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Expected O, but got Unknown //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Expected O, but got Unknown //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Expected O, but got Unknown kilnLog = ((BaseUnityPlugin)this).Logger; KilnFuelItem = config("2 - Steel Kiln", "Fuel Item", "CWS_SurtlingCoal", "Prefab name of the item the kiln burns as fuel for its STEEL conversions (case sensitive), e.g. CWS_SurtlingCoal, Coal, Resin. If the name is not found the kiln keeps its built-in fuel."); KilnFuelPerProduct = config("2 - Steel Kiln", "Fuel Per Product", 1, new ConfigDescription("How much fuel is burned for every finished steel product (crucible / steel bar). Higher = more expensive.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 100), Array.Empty<object>())); KilnSecondsPerProduct = config("2 - Steel Kiln", "Seconds Per Product", 20f, new ConfigDescription("Seconds it takes the kiln to finish one steel product.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 3600f), Array.Empty<object>())); KilnMaxOre = config("2 - Steel Kiln", "Max Ore", 20, new ConfigDescription("How many items can be queued in the kiln at once.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 200), Array.Empty<object>())); KilnMaxFuel = config("2 - Steel Kiln", "Max Fuel", 30, new ConfigDescription("How much fuel the kiln can hold at once.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 500), Array.Empty<object>())); KilnRequiresRoof = config("2 - Steel Kiln", "Requires Roof", Toggle.Off, "If on, the kiln only works with a roof over it (like the vanilla smelter)."); KilnOutputAsStack = config("2 - Steel Kiln", "Output As Stack", Toggle.Off, "If on, finished products are collected and dropped as one stack instead of one at a time."); KilnConversions = config("3 - Kiln Conversions", "Conversions", "Wood,1 = Coal,1; FineWood,1 = Coal,1; RoundLog,1 = Coal,1", "Extra conversions the kiln can do, on top of its steel ones. Written as input,amount = output,amount and separated by semicolons, e.g. Wood,1 = Coal,1; Flax,2 = LinenThread,3. Use item prefab names (not case sensitive); an amount you leave out counts as 1. These conversions never need or burn fuel, even if the kiln is full of Surtling coal. Leave empty for none."); KilnConversionSeconds = config("3 - Kiln Conversions", "Seconds Per Product", 0f, new ConfigDescription("Seconds each of these conversions takes. 0 = same as the steel 'Seconds Per Product'.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 3600f), Array.Empty<object>())); ((BaseUnityPlugin)this).Config.SettingChanged += [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(0)] (object _, SettingChangedEventArgs _) => { SteelKiln.OnConfigChanged(); }; } } } namespace PieceManager { [PublicAPI] public enum CraftingTable { None, [InternalName("piece_workbench")] Workbench, [InternalName("piece_cauldron")] Cauldron, [InternalName("forge")] Forge, [InternalName("piece_artisanstation")] ArtisanTable, [InternalName("piece_stonecutter")] StoneCutter, [InternalName("piece_magetable")] MageTable, [InternalName("blackforge")] BlackForge, [InternalName("piece_preptable")] FoodPreparationTable, [InternalName("piece_MeadCauldron")] MeadKetill, Custom } [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(0)] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] public class InternalName : Attribute { public readonly string internalName; public InternalName(string internalName) { this.internalName = internalName; } } [PublicAPI] [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(0)] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] public class ExtensionList { public readonly List<ExtensionConfig> ExtensionStations = new List<ExtensionConfig>(); public void Set(CraftingTable table, int maxStationDistance = 5) { ExtensionStations.Add(new ExtensionConfig { Table = table, maxStationDistance = maxStationDistance }); } public void Set(string customTable, int maxStationDistance = 5) { ExtensionStations.Add(new ExtensionConfig { Table = CraftingTable.Custom, custom = customTable, maxStationDistance = maxStationDistance }); } } public struct ExtensionConfig { public CraftingTable Table; public float maxStationDistance; [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] public string custom; } [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(0)] [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] [PublicAPI] public class CraftingStationList { public readonly List<CraftingStationConfig> Stations = new List<CraftingStationConfig>(); public void Set(CraftingTable table) { Stations.Add(new CraftingStationConfig { Table = table }); } public void Set(string customTable) { Stations.Add(new CraftingStationConfig { Table = CraftingTable.Custom, custom = customTable }); } } public struct CraftingStationConfig { public CraftingTable Table; public int level; [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(2)] public string custom; } [PublicAPI] public enum BuildPieceCategory { Misc = 0, Crafting = 1, BuildingWorkbench = 2, BuildingStonecutter = 3, Furniture = 4, DeepNorth = 5, Feasts = 6, Food = 7, Meads = 8, All = 100, Custom = 99 } [PublicAPI] public class PieceUsage { public UsageTagFlags Tags; public void Add(UsageTagFlags tag) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) Tags |= tag; } public void Set(UsageTagFlags tags) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Tags = tags; } } [<92cb037d-f399-4f99-99e6-e56faa42f218>NullableContext(1)] [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(0)] [PublicAPI] public class RequiredResourcesList { public readonly List<Requirement> Requirements = new List<Requirement>(); public void Add(string item, int amount, bool recover) { Requirements.Add(new Requirement { itemName = item, amount = amount, recover = recover }); } } public struct Requirement { [<b8f3c6f2-1382-4bd0-9e79-63cf88e6d9fe>Nullable(1)] public str