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.3
OdinsSteelworks.dll
Decompiled a week 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 SoundMixManager; 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: <310530ea-62ba-4726-bd88-afd7553c21c1>RefSafetyRules(11)] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [<c5caa3d2-d78e-4397-884b-047af2232c33>Embedded] internal sealed class <c5caa3d2-d78e-4397-884b-047af2232c33>EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [<c5caa3d2-d78e-4397-884b-047af2232c33>Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class <c0d2b041-8bbc-4c50-8dd9-a559351041b6>NullableAttribute : Attribute { public readonly byte[] NullableFlags; public <c0d2b041-8bbc-4c50-8dd9-a559351041b6>NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public <c0d2b041-8bbc-4c50-8dd9-a559351041b6>NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [<c5caa3d2-d78e-4397-884b-047af2232c33>Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class <df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContextAttribute : Attribute { public readonly byte Flag; public <df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [<c5caa3d2-d78e-4397-884b-047af2232c33>Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class <310530ea-62ba-4726-bd88-afd7553c21c1>RefSafetyRulesAttribute : Attribute { public readonly int Version; public <310530ea-62ba-4726-bd88-afd7553c21c1>RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace SoundMixManager { [HarmonyPatch] public static class SoundMixMan { private static readonly List<AssetBundle> Bundles = new List<AssetBundle>(); private static AudioMixerGroup _sfxGroup; private const int MaxFieldDepth = 4; private static readonly Dictionary<Type, FieldInfo[]> FieldCache = new Dictionary<Type, FieldInfo[]>(); public static void PatchAssetBundle(AssetBundle assetBundle) { if ((Object)(object)assetBundle != (Object)null && !Bundles.Contains(assetBundle)) { Bundles.Add(assetBundle); } } public static void PatchAssetBundle(string assetBundleFileName, string folderName = "assets") { if (string.IsNullOrEmpty(assetBundleFileName)) { return; } AssetBundle val = ((IEnumerable<AssetBundle>)Resources.FindObjectsOfTypeAll<AssetBundle>()).FirstOrDefault((Func<AssetBundle, bool>)((AssetBundle a) => ((Object)a).name == assetBundleFileName)); if ((Object)(object)val == (Object)null) { Assembly executingAssembly = Assembly.GetExecutingAssembly(); string name = executingAssembly.GetName().Name + "." + folderName + "." + assetBundleFileName; try { using Stream stream = executingAssembly.GetManifestResourceStream(name); if (stream != null) { val = AssetBundle.LoadFromStream(stream); } } catch { } } PatchAssetBundle(val); } private static AudioMixerGroup ResolveSfxGroup(AudioMixer masterMixer) { if ((Object)(object)_sfxGroup != (Object)null) { return _sfxGroup; } if ((Object)(object)masterMixer == (Object)null) { return null; } AudioMixerGroup[] source = masterMixer.FindMatchingGroups(string.Empty); _sfxGroup = ((IEnumerable<AudioMixerGroup>)source).FirstOrDefault((Func<AudioMixerGroup, bool>)((AudioMixerGroup g) => string.Equals(((Object)g).name, "SFX", StringComparison.OrdinalIgnoreCase))) ?? masterMixer.FindMatchingGroups("SFX").FirstOrDefault() ?? masterMixer.FindMatchingGroups("Sfx").FirstOrDefault(); return _sfxGroup; } [HarmonyPatch(typeof(AudioMan), "Awake")] [HarmonyPostfix] private static void AudioMan_Awake_Postfix(AudioMan __instance) { if (Bundles.Count == 0 || (Object)(object)__instance == (Object)null) { return; } AudioMixerGroup val = ResolveSfxGroup(__instance.m_masterMixer); if ((Object)(object)val == (Object)null) { Debug.LogWarning((object)("[" + Assembly.GetExecutingAssembly().GetName().Name + "] SoundMixMan: Valheim's SFX mixer group was not found; mod sounds will ignore the volume slider.")); return; } HashSet<GameObject> hashSet = new HashSet<GameObject>(); Queue<GameObject> queue = new Queue<GameObject>(); int num = 0; int num2 = 0; foreach (AssetBundle bundle in Bundles) { if ((Object)(object)bundle == (Object)null) { continue; } GameObject[] array = bundle.LoadAllAssets<GameObject>(); foreach (GameObject val2 in array) { if (!((Object)(object)val2 == (Object)null) && hashSet.Add(val2)) { AudioSource[] componentsInChildren = val2.GetComponentsInChildren<AudioSource>(true); foreach (AudioSource val3 in componentsInChildren) { val3.outputAudioMixerGroup = val; num++; } CollectReferences(val2, queue); } } } while (queue.Count > 0) { GameObject val4 = queue.Dequeue(); if ((Object)(object)val4 == (Object)null || !hashSet.Add(val4)) { continue; } AudioSource[] componentsInChildren2 = val4.GetComponentsInChildren<AudioSource>(true); foreach (AudioSource val5 in componentsInChildren2) { if (!((Object)(object)val5.outputAudioMixerGroup != (Object)null)) { val5.outputAudioMixerGroup = val; num2++; } } CollectReferences(val4, queue); } Debug.Log((object)$"[{Assembly.GetExecutingAssembly().GetName().Name}] SoundMixMan: routed {num} bundled and {num2} referenced AudioSource(s) to mixer group '{((Object)val).name}'."); } private static void CollectReferences(GameObject prefab, Queue<GameObject> queue) { Component[] componentsInChildren = prefab.GetComponentsInChildren<Component>(true); foreach (Component val in componentsInChildren) { if (!((Object)(object)val == (Object)null) && !(val is Transform)) { CollectFromObject(val, ((object)val).GetType(), queue, 0); } } } private static void CollectFromObject(object owner, Type type, Queue<GameObject> queue, int depth) { FieldInfo[] fields = GetFields(type); foreach (FieldInfo fieldInfo in fields) { object value; try { value = fieldInfo.GetValue(owner); } catch { continue; } CollectFromValue(value, queue, depth); } } private static void CollectFromValue(object value, Queue<GameObject> queue, int depth) { if (value == null) { return; } GameObject val = (GameObject)((value is GameObject) ? value : null); if (val == null) { Component val2 = (Component)((value is Component) ? value : null); if (val2 == null) { if (value is Object || value is string) { return; } if (value is IEnumerable enumerable) { if (depth >= 4) { return; } { foreach (object item in enumerable) { CollectFromValue(item, queue, depth + 1); } return; } } Type type = value.GetType(); if (depth < 4 && !type.IsPrimitive && !type.IsEnum && type.IsSerializable) { CollectFromObject(value, type, queue, depth + 1); } } else if ((Object)(object)val2 != (Object)null) { queue.Enqueue(val2.gameObject); } } else if ((Object)(object)val != (Object)null) { queue.Enqueue(val); } } private static FieldInfo[] GetFields(Type type) { if (FieldCache.TryGetValue(type, out var value)) { return value; } List<FieldInfo> list = new List<FieldInfo>(); Type type2 = type; while (type2 != null && type2 != typeof(MonoBehaviour) && type2 != typeof(Component) && type2 != typeof(object)) { FieldInfo[] fields = type2.GetFields(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); foreach (FieldInfo fieldInfo in fields) { if (!fieldInfo.IsNotSerialized) { Type fieldType = fieldInfo.FieldType; if (!fieldType.IsPrimitive && !fieldType.IsEnum && !(fieldType == typeof(string)) && !(fieldType == typeof(decimal)) && (!fieldInfo.IsPrivate || ((MemberInfo)fieldInfo).GetCustomAttribute<SerializeField>() != null || typeof(Object).IsAssignableFrom(fieldType) || IsCollectionOrSerializable(fieldType))) { list.Add(fieldInfo); } } } type2 = type2.BaseType; } FieldInfo[] array = list.ToArray(); FieldCache[type] = array; return array; } private static bool IsCollectionOrSerializable(Type type) { return typeof(IEnumerable).IsAssignableFrom(type) || type.IsSerializable; } } } namespace OdinsSteelworks { [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(1)] [BepInPlugin("org.bepinex.plugins.odinssteelworks", "OdinsSteelworks", "0.4.3")] [<c0d2b041-8bbc-4c50-8dd9-a559351041b6>Nullable(0)] public class OdinsSteelworks : BaseUnityPlugin { [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] private enum Toggle { On = 1, Off = 0 } [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] [HarmonyPatch(typeof(ObjectDB), "Awake")] private static class ForgeIdolsObjectDBAwake { [HarmonyAfter(new string[] { "org.bepinex.helpers.ItemManager" })] [HarmonyPostfix] [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(1)] private static void Postfix(ObjectDB __instance) { ApplyForgeIdols(__instance); } } [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] [HarmonyPatch(typeof(ObjectDB), "CopyOtherDB")] private static class ForgeIdolsObjectDBCopy { [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(1)] [HarmonyPostfix] [HarmonyAfter(new string[] { "org.bepinex.helpers.ItemManager" })] private static void Postfix(ObjectDB __instance) { ApplyForgeIdols(__instance); } } [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] [HarmonyPatch(typeof(Player), "GetAvailableRecipes")] private static class ForgeIdolsRecipeList { [HarmonyPrefix] [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>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); } } } [<c0d2b041-8bbc-4c50-8dd9-a559351041b6>Nullable(0)] private static class SteelKiln { [<c0d2b041-8bbc-4c50-8dd9-a559351041b6>Nullable(0)] private sealed class Pair { public ItemDrop From = null; public ItemDrop To = null; public int InAmount = 1; public int OutAmount = 1; } [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] [HarmonyPatch(typeof(ZNetScene), "Awake")] private static class ResetOnWorldLoad { private static void Postfix() { baseConversions = null; custom = null; itemLookup = null; customByFrom.Clear(); kilns.Clear(); } } [HarmonyPatch(typeof(Smelter), "Awake")] [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] private static class AwakePatch { [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>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); } } } [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] [HarmonyPatch(typeof(Smelter), "UpdateSmelter")] private static class UpdateSmelterPatch { [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(1)] private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { return RedirectFuelReads(instructions); } } [HarmonyPatch(typeof(Smelter), "IsActive")] [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] private static class IsActivePatch { [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(1)] private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { return RedirectFuelReads(instructions); } } [HarmonyPatch(typeof(Smelter), "OnAddOre")] [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] private static class AddOrePatch { [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>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")] [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] private static class SpawnPatch { [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>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")] [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] private static class DropAllPatch { [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>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"; [<c0d2b041-8bbc-4c50-8dd9-a559351041b6>Nullable(new byte[] { 2, 1 })] private static List<Pair> baseConversions; [<c0d2b041-8bbc-4c50-8dd9-a559351041b6>Nullable(new byte[] { 2, 1 })] private static List<Pair> custom; [<c0d2b041-8bbc-4c50-8dd9-a559351041b6>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>(); [<c0d2b041-8bbc-4c50-8dd9-a559351041b6>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: <c0d2b041-8bbc-4c50-8dd9-a559351041b6>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: <c0d2b041-8bbc-4c50-8dd9-a559351041b6>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: <c0d2b041-8bbc-4c50-8dd9-a559351041b6>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.3"; private const string ModGUID = "org.bepinex.plugins.odinssteelworks"; private static readonly string[] SteelworksEffectPrefabs = new string[52] { "fx_steelworks_block_camshake", "fx_steelworks_hit_camshake", "fx_steelworks_hit_camshake_knife", "fx_steelworks_sledge_demolisher_hit", "fx_steelworks_swing_camshake", "sfx_steelworks_arbalest_fire", "sfx_steelworks_arrow_hit", "sfx_steelworks_atgeir_attack", "sfx_steelworks_axe_hit", "sfx_steelworks_axe_swing", "sfx_steelworks_battleaxe_hit", "sfx_steelworks_battleaxe_swing_wosh", "sfx_steelworks_bow_draw", "sfx_steelworks_bow_fire", "sfx_steelworks_build_hammer_stone", "sfx_steelworks_build_hammer_stone_0", "sfx_steelworks_build_hammer_wood", "sfx_steelworks_club_hit", "sfx_steelworks_club_swing", "sfx_steelworks_gui_craftitem_forge", "sfx_steelworks_gui_craftitem_forge_end", "sfx_steelworks_gui_repairitem_forge", "sfx_steelworks_knife_swing", "sfx_steelworks_kromsword_swing", "sfx_steelworks_metal_blocked", "sfx_steelworks_pickable_pick", "sfx_steelworks_rock_destroyed", "sfx_steelworks_rock_hit", "sfx_steelworks_rock_hit_0", "sfx_steelworks_sledge_swing", "sfx_steelworks_smelter_add", "sfx_steelworks_smelter_produce", "sfx_steelworks_spear_hit", "sfx_steelworks_spear_poke", "sfx_steelworks_spear_throw", "sfx_steelworks_sword_hit", "sfx_steelworks_sword_swing", "sfx_steelworks_wood_blocked", "sfx_steelworks_wood_destroyed", "sfx_steelworks_wood_hit", "vfx_steelworks_HitSparks", "vfx_steelworks_Place_forge", "vfx_steelworks_Place_smelter", "vfx_steelworks_SawDust", "vfx_steelworks_arbalest_fire", "vfx_steelworks_arrowhit", "vfx_steelworks_blocked", "vfx_steelworks_bow_fire", "vfx_steelworks_clubhit", "vfx_steelworks_pickable_pick", "vfx_steelworks_smelter_produce", "vfx_steelworks_smelter_produce_0" }; private static readonly ConfigSync configSync = new ConfigSync("OdinsSteelworks") { DisplayName = "OdinsSteelworks", CurrentVersion = "0.4.3", MinimumRequiredVersion = "0.4.3" }; 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; [<c0d2b041-8bbc-4c50-8dd9-a559351041b6>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; [<c0d2b041-8bbc-4c50-8dd9-a559351041b6>Nullable(2)] private static ManualLogSource kilnLog; private ConfigEntry<T> config<[<c0d2b041-8bbc-4c50-8dd9-a559351041b6>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<[<c0d2b041-8bbc-4c50-8dd9-a559351041b6>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_569d: Unknown result type (might be due to invalid IL or missing references) //IL_56a4: Expected O, but got Unknown SoundMixMan.PatchAssetBundle("cwsassets"); 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"); AssetBundle val3 = PrefabManager.RegisterAssetBundle("cwsassets"); string[] steelworksEffectPrefabs = SteelworksEffectPrefabs; foreach (string text in steelworksEffectPrefabs) { if ((Object)(object)val3 != (Object)null && val3.Contains(text)) { PrefabManager.RegisterPrefab("cwsassets", text); } else { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Effect prefab '" + text + "' is not in the cwsassets bundle; rebuild the bundle.")); } } 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: <c0d2b041-8bbc-4c50-8dd9-a559351041b6>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; } [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>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, [<df526db4-9c73-4b3a-8e11-5a008c7d06bc>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([<df526db4-9c73-4b3a-8e11-5a008c7d06bc>NullableContext(0)] (Requirement r, int i) => i != existing).ToArray(); } continue; } if (!dictionary2.TryGetVa