Decompiled source of Hunter Legacy v1.0.2
plugins/Hunter_Legacy.dll
Decompiled 2 weeks ago
            The result has been truncated due to the large size, download it to view full contents!
        
        
        using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Cryptography; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Threading; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using ItemManager; using JetBrains.Annotations; using LocalizationManager; using Microsoft.CodeAnalysis; using PieceManager; using ServerSync; using TMPro; using UnityEngine; 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.Converters; using YamlDotNet.Serialization.EventEmitters; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.NodeDeserializers; using YamlDotNet.Serialization.NodeTypeResolvers; using YamlDotNet.Serialization.ObjectFactories; using YamlDotNet.Serialization.ObjectGraphTraversalStrategies; using YamlDotNet.Serialization.ObjectGraphVisitors; using YamlDotNet.Serialization.Schemas; using YamlDotNet.Serialization.TypeInspectors; using YamlDotNet.Serialization.TypeResolvers; using YamlDotNet.Serialization.Utilities; using YamlDotNet.Serialization.ValueDeserializers; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("Hunter_Legacy")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyProduct("Hunter_Legacy")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("4358610B-F3F4-4843-B7AF-98B7BC60DCDE")] [assembly: AssemblyFileVersion("1.0.2")] [assembly: AssemblyCompany("Dreanegade")] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [<b21706a9-029a-4b28-90f3-b8bede232f2c>Embedded] internal sealed class <b21706a9-029a-4b28-90f3-b8bede232f2c>EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [<b21706a9-029a-4b28-90f3-b8bede232f2c>Embedded] [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class <eba573b6-ee0c-44f4-8f07-9a6235970ee1>NullableAttribute : Attribute { public readonly byte[] NullableFlags; public <eba573b6-ee0c-44f4-8f07-9a6235970ee1>NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public <eba573b6-ee0c-44f4-8f07-9a6235970ee1>NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [<b21706a9-029a-4b28-90f3-b8bede232f2c>Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class <bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContextAttribute : Attribute { public readonly byte Flag; public <bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContextAttribute(byte P_0) { Flag = P_0; } } } [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(1)] [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(0)] internal static class BSU_Log { private static readonly ManualLogSource _log = Logger.CreateLogSource("BowSecondaryUnlock"); public static void Info(string s) { _log.LogInfo((object)s); } public static void Err(string s) { _log.LogError((object)s); } } [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(1)] [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(0)] internal static class BSU_Whitelist { private static readonly string[] _names; internal static readonly HashSet<string> Names; internal static readonly HashSet<int> NameHashes; static BSU_Whitelist() { _names = new string[3] { "BowEvoCoreAshlandsLightningDO", "BowEvoCoreAshlandsBloodDO", "BowEvoCoreAshlandsNatureDO" }; Names = new HashSet<string>(StringComparer.Ordinal); NameHashes = new HashSet<int>(); string[] names = _names; foreach (string text in names) { Names.Add(text); NameHashes.Add(StringExtensionMethods.GetStableHashCode(text)); } } public static bool Match(string prefabName) { if (string.IsNullOrEmpty(prefabName)) { return false; } if (Names.Contains(prefabName)) { return true; } return NameHashes.Contains(StringExtensionMethods.GetStableHashCode(prefabName)); } } [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(1)] [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(0)] internal static class BSU_RateLimiter { private static readonly Dictionary<string, float> _lastStart = new Dictionary<string, float>(); private static readonly Dictionary<string, float> _lockUntil = new Dictionary<string, float>(); private static string Key(Humanoid h, string prefab) { return string.Format("{0}:{1}", Object.op_Implicit((Object)(object)h) ? ((Object)h).GetInstanceID() : 0, prefab ?? ""); } public static bool IsLocked(Humanoid h, string prefab) { string key = Key(h, prefab); if (_lockUntil.TryGetValue(key, out var value)) { return Time.time < value; } return false; } public static float GetLastStart(Humanoid h, string prefab) { string key = Key(h, prefab); if (!_lastStart.TryGetValue(key, out var value)) { return -999f; } return value; } public static void MarkStartedAndLock(Humanoid h, string prefab, float cooldown) { string key = Key(h, prefab); float time = Time.time; _lastStart[key] = time; _lockUntil[key] = time + Mathf.Max(0.1f, cooldown); } public static void ClearLock(Humanoid h, string prefab) { string key = Key(h, prefab); _lockUntil.Remove(key); } } [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(1)] [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(0)] internal static class BSU_Util { public static ItemData GetEquippedBow(Humanoid h) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Invalid comparison between Unknown and I4 ItemData val = ((h != null) ? h.GetCurrentWeapon() : null); if (val?.m_shared == null) { return null; } if ((int)val.m_shared.m_itemType != 4) { return null; } return val; } public static string GetPrefabName(ItemData item) { if (item == null) { return null; } if ((Object)(object)item.m_dropPrefab != (Object)null) { return ((Object)item.m_dropPrefab).name; } try { ObjectDB instance = ObjectDB.instance; if ((Object)(object)instance != (Object)null) { foreach (GameObject item2 in instance.m_items) { if (Object.op_Implicit((Object)(object)item2) && item2.GetComponent<ItemDrop>()?.m_itemData?.m_shared == item.m_shared) { return ((Object)item2).name; } } } } catch { } return null; } public static bool SecondaryPressedThisFrame() { try { if (ZInput.GetButtonDown("SecondaryAttack")) { return true; } } catch { } try { if (ZInput.GetButtonDown("Attack2")) { return true; } } catch { } try { if (ZInput.GetButtonDown("SecAttack")) { return true; } } catch { } try { if (Input.GetKeyDown((KeyCode)325)) { return true; } } catch { } return false; } private static bool CallBoolNoArgs(object obj, string methodName) { if (obj == null) { return false; } Type type = obj.GetType(); while (type != null) { MethodInfo method = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Type.EmptyTypes, null); if (method != null && method.ReturnType == typeof(bool)) { try { return (bool)method.Invoke(obj, Array.Empty<object>()); } catch { return false; } } type = type.BaseType; } return false; } public static bool IsInAttackStrict(Humanoid h) { if (CallBoolNoArgs(h, "InAttack")) { return true; } if (CallBoolNoArgs(h, "IsAttacking")) { return true; } return false; } public static float GetAttackCooldown(object attackObj) { if (attackObj == null) { return 0.35f; } try { FieldInfo field = attackObj.GetType().GetField("m_attackCooldown", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null && field.FieldType == typeof(float)) { float num = (float)field.GetValue(attackObj); if (num > 0f) { return num; } } } catch { } return 0.5f; } public static void ClearStuckCurrentAttackIfSafe(Humanoid h, float lastStartTime, float cooldown) { if (IsInAttackStrict(h) || Time.time < lastStartTime + Mathf.Max(0.1f, cooldown) + 0.035f) { return; } try { if (GetField(h, "m_currentAttack") != null) { SetField(h, "m_currentAttack", null); } } catch { } } private static FieldInfo FindField(Type t, string name) { while (t != null) { FieldInfo field = t.GetField(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null) { return field; } t = t.BaseType; } return null; } private static object GetField(object obj, string name) { if (obj == null) { return null; } return FindField(obj.GetType(), name)?.GetValue(obj); } private static void SetField(object obj, string name, object val) { if (obj != null) { FindField(obj.GetType(), name)?.SetValue(obj, val); } } private static object FindFieldByTypeName(object obj, string typeName) { if (obj == null) { return null; } Type type = obj.GetType(); while (type != null) { FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); foreach (FieldInfo fieldInfo in fields) { Type fieldType = fieldInfo.FieldType; if (!(fieldType == null) && (fieldType.Name == typeName || (fieldType.FullName != null && fieldType.FullName.EndsWith("." + typeName, StringComparison.Ordinal)))) { object value = fieldInfo.GetValue(obj); if (value != null) { return value; } } } type = type.BaseType; } return null; } private static Type FindTypeByName(string typeName) { Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly assembly in assemblies) { Type type = null; try { type = assembly.GetType(typeName); } catch { } if (type != null) { return type; } try { Type[] types = assembly.GetTypes(); foreach (Type type2 in types) { if (type2.Name == typeName) { return type2; } if (type2.FullName != null && type2.FullName.EndsWith("." + typeName, StringComparison.Ordinal)) { return type2; } } } catch { } } return null; } private static Component GetComponentByTypeName(Component c, string typeName) { if ((Object)(object)c == (Object)null) { return null; } Type type = FindTypeByName(typeName); if (type == null) { return null; } try { return c.GetComponent(type); } catch { return null; } } private static object FindZAnim(Humanoid h) { object field = GetField(h, "m_zanim"); if (field != null) { return field; } field = FindFieldByTypeName(h, "ZSyncAnimation"); if (field != null) { return field; } field = FindFieldByTypeName(h, "ZAnimator"); if (field != null) { return field; } return GetComponentByTypeName((Component)(object)h, "ZSyncAnimation") ?? GetComponentByTypeName((Component)(object)h, "ZAnimator"); } private static Rigidbody FindBody(Humanoid h) { object field = GetField(h, "m_body"); Rigidbody val = (Rigidbody)((field is Rigidbody) ? field : null); if ((Object)(object)val != (Object)null) { return val; } try { return ((Component)h).GetComponent<Rigidbody>(); } catch { return null; } } private static object FindAnimEvent(Humanoid h) { object field = GetField(h, "m_animEvent"); if (field != null) { return field; } field = FindFieldByTypeName(h, "CharacterAnimEvent"); if (field != null) { return field; } return GetComponentByTypeName((Component)(object)h, "CharacterAnimEvent"); } private static object FindVisEquipment(Humanoid h) { object field = GetField(h, "m_visEquipment"); if (field != null) { return field; } field = FindFieldByTypeName(h, "VisEquipment"); if (field != null) { return field; } return GetComponentByTypeName((Component)(object)h, "VisEquipment"); } private static IEnumerable<MethodInfo> EnumerateAttackStartMethods(object attackObj) { if (attackObj == null) { yield break; } IEnumerable<MethodInfo> enumerable = from m in attackObj.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) where m.Name == "Start" select m; foreach (MethodInfo item in enumerable) { yield return item; } } public static bool TryStartSecondary(Humanoid h, ItemData item) { if ((Object)(object)h == (Object)null || item?.m_shared == null) { return false; } Attack secondaryAttack = item.m_shared.m_secondaryAttack; if (secondaryAttack == null) { return false; } try { SetField(h, "m_currentWeapon", item); SetField(h, "m_currentAttack", secondaryAttack); FieldInfo fieldInfo = FindField(((object)h).GetType(), "m_attackQueue"); if (fieldInfo != null) { fieldInfo.SetValue(h, false); } FieldInfo fieldInfo2 = FindField(((object)h).GetType(), "m_blocking"); if (fieldInfo2 != null) { fieldInfo2.SetValue(h, false); } FieldInfo fieldInfo3 = FindField(((object)h).GetType(), "m_wasAiming"); if (fieldInfo3 != null) { fieldInfo3.SetValue(h, false); } } catch { } Rigidbody body = FindBody(h); object zAnim = FindZAnim(h); object animEv = FindAnimEvent(h); object visEq = FindVisEquipment(h); List<MethodInfo> list = EnumerateAttackStartMethods(secondaryAttack).ToList(); if (list.Count == 0) { return false; } foreach (MethodInfo item2 in list) { ParameterInfo[] parameters = item2.GetParameters(); object[] args = new object[parameters.Length]; if (TryFillArgsAndInvoke(item2, parameters, args, h, body, zAnim, animEv, visEq, item, secondaryAttack, Time.time, 1f, prevAttackNull: false)) { return true; } if (TryFillArgsAndInvoke(item2, parameters, args, h, body, zAnim, animEv, visEq, item, secondaryAttack, Time.time, 1f, prevAttackNull: true)) { return true; } } return false; } private static bool TryFillArgsAndInvoke(MethodInfo mi, ParameterInfo[] pars, object[] args, Humanoid h, Rigidbody body, object zAnim, object animEv, object visEq, ItemData item, object secAttack, float timeNow, float drawPct, bool prevAttackNull) { //IL_0225: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) int num = 0; for (int i = 0; i < pars.Length; i++) { Type parameterType = pars[i].ParameterType; if (parameterType == typeof(Humanoid) || parameterType == typeof(Character) || parameterType == typeof(Player) || parameterType.IsInstanceOfType(h)) { args[i] = h; } else if (parameterType == typeof(Rigidbody)) { if ((Object)(object)body == (Object)null) { return false; } args[i] = body; } else if (zAnim != null && (parameterType.IsInstanceOfType(zAnim) || parameterType.Name.Contains("ZSyncAnimation") || parameterType.Name.Contains("ZAnimator"))) { args[i] = zAnim; } else if (parameterType.Name == "CharacterAnimEvent") { if (animEv == null) { return false; } args[i] = animEv; } else if (parameterType.Name == "VisEquipment") { if (visEq == null) { return false; } args[i] = visEq; } else if (parameterType == typeof(ItemData)) { args[i] = item; } else if (parameterType.Name == "Attack") { args[i] = (prevAttackNull ? null : secAttack); } else if (parameterType == typeof(float)) { args[i] = ((num++ == 0) ? timeNow : ((num == 2) ? drawPct : 0f)); } else if (parameterType == typeof(bool)) { args[i] = true; } else if (parameterType == typeof(int)) { args[i] = 0; } else if (parameterType == typeof(string)) { try { FieldInfo field = secAttack.GetType().GetField("m_attackAnimation", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); args[i] = ((field != null) ? ((string)field.GetValue(secAttack)) : ""); } catch { args[i] = ""; } } else if (parameterType == typeof(Vector3)) { args[i] = ((Component)h).transform.position; } else { if (!(parameterType == typeof(Quaternion))) { return false; } args[i] = ((Component)h).transform.rotation; } } try { return !(mi.Invoke(secAttack, args) is bool flag) || flag; } catch { return false; } } } [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(0)] [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(1)] [HarmonyPatch(typeof(Player), "Update")] internal static class BSU_PlayerUpdate_Postfix { private static float _lastTriggerTime; private static readonly HashSet<string> _notified = new HashSet<string>(StringComparer.Ordinal); private static void Postfix(Player __instance) { try { if ((Object)(object)__instance != (Object)(object)Player.m_localPlayer || !BSU_Util.SecondaryPressedThisFrame()) { return; } ItemData equippedBow = BSU_Util.GetEquippedBow((Humanoid)(object)__instance); if (equippedBow == null) { return; } string prefabName = BSU_Util.GetPrefabName(equippedBow); if (!BSU_Whitelist.Match(prefabName)) { return; } if (!string.IsNullOrEmpty(prefabName) && !_notified.Contains(prefabName)) { _notified.Add(prefabName); BSU_Log.Info("Secondary unlocked for '" + prefabName + "'."); } if (Time.time - _lastTriggerTime < 0.1f) { return; } _lastTriggerTime = Time.time; float attackCooldown = BSU_Util.GetAttackCooldown(equippedBow.m_shared?.m_secondaryAttack); if (!BSU_Util.IsInAttackStrict((Humanoid)(object)__instance)) { if (BSU_RateLimiter.IsLocked((Humanoid)(object)__instance, prefabName)) { BSU_Util.ClearStuckCurrentAttackIfSafe((Humanoid)(object)__instance, BSU_RateLimiter.GetLastStart((Humanoid)(object)__instance, prefabName), attackCooldown); } else if (BSU_Util.TryStartSecondary((Humanoid)(object)__instance, equippedBow)) { BSU_RateLimiter.MarkStartedAndLock((Humanoid)(object)__instance, prefabName, attackCooldown); } } } catch (Exception ex) { BSU_Log.Err("BowSecondaryUnlock.Update error: " + ex.GetType().Name + ": " + ex.Message); } } } [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(1)] [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(0)] internal static class VES_Log { private static readonly ManualLogSource _log = Logger.CreateLogSource("VisEqSafeSetup"); public static void Info(string s) { _log.LogInfo((object)s); } public static void Warn(string s) { _log.LogWarning((object)s); } public static void Err(string s) { _log.LogError((object)s); } } [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(1)] [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(0)] internal static class VES_Ref { public static FieldInfo FindField(Type t, string name) { while (t != null) { FieldInfo field = t.GetField(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null) { return field; } t = t.BaseType; } return null; } public static object GetField(object obj, string name) { if (obj == null) { return null; } return FindField(obj.GetType(), name)?.GetValue(obj); } public static void SetField(object obj, string name, object val) { if (obj != null) { FindField(obj.GetType(), name)?.SetValue(obj, val); } } } [HarmonyPatch(typeof(Humanoid), "Awake")] internal static class Humanoid_Awake_VisEq_Autobind { [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(1)] private static void Postfix(Humanoid __instance) { try { FieldInfo fieldInfo = VES_Ref.FindField(((object)__instance).GetType(), "m_visEquipment"); if (!(fieldInfo == null) && !((Object)/*isinst with value type is only supported in some contexts*/ != (Object)null)) { VisEquipment componentInChildren = ((Component)__instance).GetComponentInChildren<VisEquipment>(true); if ((Object)(object)componentInChildren != (Object)null) { fieldInfo.SetValue(__instance, componentInChildren); } } } catch (Exception ex) { VES_Log.Warn("[AutoBind] " + ((__instance != null) ? ((Object)__instance).name : null) + ": " + ex.GetType().Name + ": " + ex.Message); } } } [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(1)] [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(0)] [HarmonyPatch(typeof(Humanoid), "SetupVisEquipment")] internal static class Humanoid_SetupVisEquipment_Safe { private static readonly HashSet<string> Notified = new HashSet<string>(StringComparer.Ordinal); private static bool Prefix(Humanoid __instance, VisEquipment visEq, bool isRagdoll) { if (__instance is Player) { return true; } if ((Object)(object)visEq == (Object)null) { NotifyOnce(__instance, "missing VisEquipment"); return false; } if ((Object)(object)visEq.m_bodyModel == (Object)null || ((Object)(object)visEq.m_leftHand == (Object)null && (Object)(object)visEq.m_rightHand == (Object)null)) { NotifyOnce(__instance, "incomplete VisEquipment"); return false; } return true; } private static Exception Finalizer(Humanoid __instance, VisEquipment visEq, bool isRagdoll, Exception __exception) { if (__exception != null && !(__instance is Player)) { NotifyOnce(__instance, "exception in SetupVisEquipment: " + __exception.GetType().Name); return null; } return __exception; } private static void NotifyOnce(Humanoid h, string reason) { try { string text = (Object.op_Implicit((Object)(object)h) ? (((Object)h).name ?? "Humanoid") : "Humanoid"); int num = text.IndexOf("(Clone)", StringComparison.Ordinal); if (num >= 0) { text = text.Substring(0, num).Trim(); } if (!Notified.Contains(text)) { Notified.Add(text); VES_Log.Info("Guarded SetupVisEquipment for '" + text + "' (" + reason + ")."); } } catch { } } } namespace Hunter_Legacy { [BepInPlugin("Dreanegade.Hunter_Legacy", "Hunter_Legacy", "1.0.2")] [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(1)] [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(0)] public class Hunter_LegacyPlugin : BaseUnityPlugin { [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(0)] public enum Toggle { On = 1, Off = 0 } [<bbb84118-7f3a-4bc6-95c4-60cce96b2318>NullableContext(0)] private class ConfigurationManagerAttributes { [UsedImplicitly] public int? Order; [UsedImplicitly] public bool? Browsable; [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(2)] [UsedImplicitly] public string Category; [<eba573b6-ee0c-44f4-8f07-9a6235970ee1>Nullable(new byte[] { 2, 1 })] [UsedImplicitly] public Action<ConfigEntryBase> CustomDrawer; } internal const string ModName = "Hunter_Legacy"; internal const string ModVersion = "1.0.2"; internal const string Author = "Dreanegade"; private const string ModGUID = "Dreanegade.Hunter_Legacy"; private static string ConfigFileName = "Dreanegade.Hunter_Legacy.cfg"; private static string ConfigFileFullPath; internal static string ConnectionError; private readonly Harmony _harmony = new Harmony("Dreanegade.Hunter_Legacy"); public static readonly ManualLogSource Hunter_LegacyLogger; private static readonly ConfigSync ConfigSync; private static ConfigEntry<Toggle> _serverConfigLocked; private static ConfigEntry<Toggle> _recipeIsActiveConfig; public void Awake() { Localizer.Load(); _serverConfigLocked = config("1 - General", "Lock Configuration", Toggle.On, "If on, the configuration is locked and can be changed by server admins only."); ConfigSync.AddLockingConfigEntry<Toggle>(_serverConfigLocked); AssetBundle assets = PrefabManager.RegisterAssetBundle("hunter_legacy"); BuildPiece.ConfigurationEnabled = true; PrefabManager.RegisterPrefab(assets, "projectile_demon_hunter_crossbow_blood_DO"); PrefabManager.RegisterPrefab(assets, "vfx_demon_hunter_crossbow_blood_fire_DO"); PrefabManager.RegisterPrefab(assets, "sfx_demon_hunter_crossbow_blood_fire_main_DO"); PrefabManager.RegisterPrefab(assets, "sfx_demon_hunter_crossbow_blood_fire_scream_DO"); PrefabManager.RegisterPrefab(assets, "vfx_demon_hunter_crossbow_blood_hit_DO"); PrefabManager.RegisterPrefab(assets, "spawn_demon_hunter_crossbow_blood_skeleton_DO"); PrefabManager.RegisterPrefab(assets, "creature_demon_hunter_crossbow_blood_skeleton_DO"); PrefabManager.RegisterPrefab(assets, "fx_demon_hunter_crossbow_blood_skeleton_summon_DO"); PrefabManager.RegisterPrefab(assets, "sfx_dread_crossbow_poison_fire_DO"); PrefabManager.RegisterPrefab(assets, "vfx_dread_crossbow_poison_fire_DO"); PrefabManager.RegisterPrefab(assets, "aoe_dread_crossbow_poison_hit_DO"); PrefabManager.RegisterPrefab(assets, "projectile_demon_hunter_crossbow_lightning_DO"); PrefabManager.RegisterPrefab(assets, "chain_demon_hunter_crossbow_lightning_DO"); PrefabManager.RegisterPrefab(assets, "vfx_demon_hunter_crossbow_lightning_fire_DO"); PrefabManager.RegisterPrefab(assets, "sfx_demon_hunter_crossbow_lightning_fire_DO"); PrefabManager.RegisterPrefab(assets, "fx_demon_hunter_crossbow_lightning_hit_DO"); PrefabManager.RegisterPrefab(assets, "fx_demon_hunter_crossbow_lightning_hit_secondary_DO"); PrefabManager.RegisterPrefab(assets, "vfx_demon_hunter_crossbow_nature_fire_DO"); PrefabManager.RegisterPrefab(assets, "fx_demon_hunter_crossbow_nature_shield_block_DO"); PrefabManager.RegisterPrefab(assets, "vfx_demon_hunter_crossbow_nature_hit_secondary_DO"); PrefabManager.RegisterPrefab(assets, "sfx_demon_hunter_crossbow_nature_hit_secondary_DO"); PrefabManager.RegisterPrefab(assets, "aoe_ashen_exile_bow_hit_DO"); PrefabManager.RegisterPrefab(assets, "vfx_ashen_exile_bow_fire_DO"); PrefabManager.RegisterPrefab(assets, "sfx_ashen_exile_bow_fire_DO"); PrefabManager.RegisterPrefab(assets, "projectile_bolt_syringe_poison_DO"); PrefabManager.RegisterPrefab(assets, "vfx_evo_bow_blood_fire_DO"); PrefabManager.RegisterPrefab(assets, "vfx_evo_bow_lightning_fire_DO"); PrefabManager.RegisterPrefab(assets, "vfx_evo_bow_nature_fire_DO"); PrefabManager.RegisterPrefab(assets, "sfx_bow_nocturne_fire_DO"); PrefabManager.RegisterPrefab(assets, "projectile_throwing_knife_bronze_DO"); PrefabManager.RegisterPrefab(assets, "projectile_throwing_knife_iron_DO"); PrefabManager.RegisterPrefab(assets, "projectile_throwing_knife_silver_DO"); PrefabManager.RegisterPrefab(assets, "projectile_throwing_knife_blackmetal_DO"); PrefabManager.RegisterPrefab(assets, "projectile_throwing_knife_flametal_DO"); PrefabManager.RegisterPrefab(assets, "projectile_throwing_whirlstar_bronze_DO"); PrefabManager.RegisterPrefab(assets, "projectile_throwing_whirlstar_iron_DO"); PrefabManager.RegisterPrefab(assets, "projectile_throwing_whirlstar_silver_DO"); PrefabManager.RegisterPrefab(assets, "projectile_throwing_whirlstar_blackmetal_DO"); PrefabManager.RegisterPrefab(assets, "projectile_throwing_whirlstar_flametal_DO"); PrefabManager.RegisterPrefab(assets, "vfx_bomb_smoke_escape_smoke_DO"); PrefabManager.RegisterPrefab(assets, "sfx_bomb_smoke_escape_glass_break_DO"); BuildPiece buildPiece = new BuildPiece("hunter_legacy", "HunterTableDO"); buildPiece.RequiredItems.Add("Bronze", 10, recover: true); buildPiece.RequiredItems.Add("RoundLog", 30, recover: true); buildPiece.RequiredItems.Add("BronzeNails", 40, recover: true); buildPiece.RequiredItems.Add("Resin", 15, recover: true); buildPiece.Category.Set("Distant Origins"); buildPiece.Crafting.Set(PieceManager.CraftingTable.Forge); MaterialReplacer.RegisterGameObjectForShaderSwap(buildPiece.Prefab, MaterialReplacer.ShaderType.UseUnityShader); BuildPiece buildPiece2 = new BuildPiece("hunter_legacy", "MunitionsBenchDO"); buildPiece2.RequiredItems.Add("Bronze", 10, recover: true); buildPiece2.RequiredItems.Add("RoundLog", 20, recover: true); buildPiece2.RequiredItems.Add("BronzeNails", 20, recover: true); buildPiece2.RequiredItems.Add("Wood", 20, recover: true); buildPiece2.Category.Set("Distant Origins"); MaterialReplacer.RegisterGameObjectForShaderSwap(buildPiece2.Prefab, MaterialReplacer.ShaderType.UseUnityShader); BuildPiece buildPiece3 = new BuildPiece("hunter_legacy", "HunterTableExt1DO"); buildPiece3.RequiredItems.Add("Wood", 15, recover: true); buildPiece3.RequiredItems.Add("Iron", 3, recover: true); buildPiece3.RequiredItems.Add("LeatherResinedDO", 6, recover: true); buildPiece3.Category.Set("Distant Origins"); MaterialReplacer.RegisterGameObjectForShaderSwap(buildPiece3.Prefab, MaterialReplacer.ShaderType.UseUnityShader); BuildPiece buildPiece4 = new BuildPiece("hunter_legacy", "HunterTableExt2DO"); buildPiece4.RequiredItems.Add("RoundLog", 25, recover: true); buildPiece4.RequiredItems.Add("CoarseThreadDO", 8, recover: true); buildPiece4.RequiredItems.Add("Silver", 4, recover: true); buildPiece4.Category.Set("Distant Origins"); MaterialReplacer.RegisterGameObjectForShaderSwap(buildPiece4.Prefab, MaterialReplacer.ShaderType.UseUnityShader); BuildPiece buildPiece5 = new BuildPiece("hunter_legacy", "HunterTableExt3DO"); buildPiece5.RequiredItems.Add("LeatherTarredDO", 16, recover: true); buildPiece5.RequiredItems.Add("FineWood", 16, recover: true); buildPiece5.RequiredItems.Add("LinenThread", 10, recover: true); buildPiece5.RequiredItems.Add("BlackMetal", 10, recover: true); buildPiece5.Category.Set("Distant Origins"); MaterialReplacer.RegisterGameObjectForShaderSwap(buildPiece5.Prefab, MaterialReplacer.ShaderType.UseUnityShader); BuildPiece buildPiece6 = new BuildPiece("hunter_legacy", "HunterTableExt4DO"); buildPiece6.RequiredItems.Add("YggdrasilWood", 15, recover: true); buildPiece6.RequiredItems.Add("Silver", 10, recover: true); buildPiece6.RequiredItems.Add("BlackMetal", 15, recover: true); buildPiece6.RequiredItems.Add("LeatherSappedDO", 10, recover: true); buildPiece6.Category.Set("Distant Origins"); MaterialReplacer.RegisterGameObjectForShaderSwap(buildPiece6.Prefab, MaterialReplacer.ShaderType.UseUnityShader); BuildPiece buildPiece7 = new BuildPiece("hunter_legacy", "HunterTableExt5DO"); buildPiece7.RequiredItems.Add("BlackMarble", 30, recover: true); buildPiece7.RequiredItems.Add("FlametalNew", 6, recover: true); buildPiece7.RequiredItems.Add("TrophyFallenValkyrie", 1, recover: true); buildPiece7.RequiredItems.Add("TrophyMorgen", 1, recover: true); buildPiece7.Category.Set("Distant Origins"); MaterialReplacer.RegisterGameObjectForShaderSwap(buildPiece7.Prefab, MaterialReplacer.ShaderType.UseUnityShader); Item item = new Item("hunter_legacy", "DrawLeverDO"); item.Crafting.Add("HunterTableDO", 1); item.RequiredItems.Add("Bronze", 4); item.RequiredItems.Add("BronzeNails", 10); item.RequiredItems.Add("LeatherResinedDO", 2); item.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Draw Lever", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item2 = new Item("hunter_legacy", "EternalBowstringDO"); item2.Crafting.Add("HunterTableDO", 1); item2.RequiredItems.Add("CoarseThreadDO", 10); item2.RequiredItems.Add("LeatherResinedDO", 3); item2.RequiredItems.Add("AncientSeed", 1); item2.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item2.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Eternal Bowstring", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item2.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item3 = new Item("hunter_legacy", "CoarseThreadDO"); item3.Crafting.Add("HunterTableDO", 1); item3.RequiredItems.Add("Thistle", 2); item3.RequiredItems.Add("Dandelion", 4); item3.RequiredItems.Add("Resin", 3); item3.CraftAmount = 2; MaterialReplacer.RegisterGameObjectForShaderSwap(item3.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Coarse Thread", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item3.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item4 = new Item("hunter_legacy", "LeatherResinedDO"); item4.Crafting.Add("HunterTableDO", 1); item4.RequiredItems.Add("DeerHide", 1); item4.RequiredItems.Add("Resin", 3); item4.CraftAmount = 2; MaterialReplacer.RegisterGameObjectForShaderSwap(item4.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Leather Resined", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item4.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item5 = new Item("hunter_legacy", "LeatherGreasedDO"); item5.Crafting.Add("HunterTableDO", 1); item5.RequiredItems.Add("TrollHide", 1); item5.RequiredItems.Add("RawMeat", 2); item5.CraftAmount = 2; MaterialReplacer.RegisterGameObjectForShaderSwap(item5.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Leather Greased", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item5.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item6 = new Item("hunter_legacy", "LeatherFrostedDO"); item6.Crafting.Add("HunterTableDO", 1); item6.RequiredItems.Add("WolfPelt", 1); item6.RequiredItems.Add("FreezeGland", 2); item6.CraftAmount = 2; MaterialReplacer.RegisterGameObjectForShaderSwap(item6.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Leather Frosted", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item6.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item7 = new Item("hunter_legacy", "LeatherTarredDO"); item7.Crafting.Add("HunterTableDO", 1); item7.RequiredItems.Add("LoxPelt", 1); item7.RequiredItems.Add("Tar", 1); item7.CraftAmount = 2; MaterialReplacer.RegisterGameObjectForShaderSwap(item7.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Leather Tarred", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item7.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item8 = new Item("hunter_legacy", "LeatherSappedDO"); item8.Crafting.Add("HunterTableDO", 1); item8.RequiredItems.Add("ScaleHide", 1); item8.RequiredItems.Add("Sap", 2); item8.CraftAmount = 2; MaterialReplacer.RegisterGameObjectForShaderSwap(item8.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Leather Sapped", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item8.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item9 = new Item("hunter_legacy", "LeatherCharredDO"); item9.Crafting.Add("HunterTableDO", 1); item9.RequiredItems.Add("AskHide", 1); item9.RequiredItems.Add("CharcoalResin", 2); item9.CraftAmount = 2; MaterialReplacer.RegisterGameObjectForShaderSwap(item9.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Leather Charred", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item9.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item10 = new Item("hunter_legacy", "BoltFlintDO"); item10.Crafting.Add("MunitionsBenchDO", 1); item10.RequiredItems.Add("Flint", 2); item10.RequiredItems.Add("Wood", 8); item10.RequiredItems.Add("Feathers", 2); item10.CraftAmount = 20; MaterialReplacer.RegisterGameObjectForShaderSwap(item10.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bolt Flint", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item10.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item11 = new Item("hunter_legacy", "BoltStoneDO"); item11.Crafting.Add("MunitionsBenchDO", 1); item11.RequiredItems.Add("Stone", 4); item11.RequiredItems.Add("RoundLog", 8); item11.RequiredItems.Add("Feathers", 2); item11.CraftAmount = 20; MaterialReplacer.RegisterGameObjectForShaderSwap(item11.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bolt Stone", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item11.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item12 = new Item("hunter_legacy", "BoltBoneDO"); item12.Crafting.Add("MunitionsBenchDO", 1); item12.RequiredItems.Add("WitheredBone", 2); item12.RequiredItems.Add("ElderBark", 2); item12.RequiredItems.Add("Feathers", 2); item12.CraftAmount = 20; MaterialReplacer.RegisterGameObjectForShaderSwap(item12.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bolt Bone", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item12.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item13 = new Item("hunter_legacy", "BoltObsidianDO"); item13.Crafting.Add("MunitionsBenchDO", 1); item13.RequiredItems.Add("Obsidian", 4); item13.RequiredItems.Add("Wood", 8); item13.RequiredItems.Add("Feathers", 2); item13.CraftAmount = 20; MaterialReplacer.RegisterGameObjectForShaderSwap(item13.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bolt Obsidian", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item13.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item14 = new Item("hunter_legacy", "BoltCrystalDO"); item14.Crafting.Add("MunitionsBenchDO", 1); item14.RequiredItems.Add("Crystal", 2); item14.RequiredItems.Add("Wood", 8); item14.RequiredItems.Add("Feathers", 2); item14.CraftAmount = 20; MaterialReplacer.RegisterGameObjectForShaderSwap(item14.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bolt Crystal", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item14.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item15 = new Item("hunter_legacy", "BoltMarbleDO"); item15.Crafting.Add("MunitionsBenchDO", 1); item15.RequiredItems.Add("BlackMarble", 2); item15.RequiredItems.Add("Wood", 8); item15.RequiredItems.Add("Feathers", 2); item15.CraftAmount = 20; MaterialReplacer.RegisterGameObjectForShaderSwap(item15.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bolt Marble", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item15.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item16 = new Item("hunter_legacy", "BoltSyringePoisonDO"); item16.Crafting.Add("MunitionsBenchDO", 1); item16.RequiredItems.Add("Ooze", 3); item16.RequiredItems.Add("BlackMetal", 1); item16.RequiredItems.Add("Feathers", 2); item16.CraftAmount = 20; MaterialReplacer.RegisterGameObjectForShaderSwap(item16.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bolt Syringe Poison", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item16.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item17 = new Item("hunter_legacy", "ThrowingKnifeCoreBronzeDO"); item17.Crafting.Add("MunitionsBenchDO", 1); item17.RequiredItems.Add("Bronze", 1); item17.RequiredItems.Add("LeatherResinedDO", 1); item17.CraftAmount = 100; MaterialReplacer.RegisterGameObjectForShaderSwap(item17.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Throwing Knife Core Bronze", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item17.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item18 = new Item("hunter_legacy", "ThrowingKnifeCoreIronDO"); item18.Crafting.Add("MunitionsBenchDO", 1); item18.RequiredItems.Add("Iron", 1); item18.RequiredItems.Add("LeatherGreasedDO", 1); item18.CraftAmount = 100; MaterialReplacer.RegisterGameObjectForShaderSwap(item18.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Throwing Knife Core Iron", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item18.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item19 = new Item("hunter_legacy", "ThrowingKnifeCoreSilverDO"); item19.Crafting.Add("MunitionsBenchDO", 1); item19.RequiredItems.Add("Silver", 1); item19.RequiredItems.Add("LeatherFrostedDO", 1); item19.CraftAmount = 100; MaterialReplacer.RegisterGameObjectForShaderSwap(item19.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Throwing Knife Core Silver", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item19.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item20 = new Item("hunter_legacy", "ThrowingKnifeCoreBlackmetalDO"); item20.Crafting.Add("MunitionsBenchDO", 1); item20.RequiredItems.Add("BlackMetal", 1); item20.RequiredItems.Add("LeatherTarredDO", 1); item20.CraftAmount = 100; MaterialReplacer.RegisterGameObjectForShaderSwap(item20.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Throwing Knife Core Blackmetal", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item20.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item21 = new Item("hunter_legacy", "ThrowingKnifeCoreFlametalDO"); item21.Crafting.Add("MunitionsBenchDO", 1); item21.RequiredItems.Add("FlametalNew", 1); item21.RequiredItems.Add("LeatherCharredDO", 1); item21.CraftAmount = 100; MaterialReplacer.RegisterGameObjectForShaderSwap(item21.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Throwing Knife Core Flametal", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item21.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item22 = new Item("hunter_legacy", "ThrowingWhirlstarCoreBronzeDO"); item22.Crafting.Add("MunitionsBenchDO", 1); item22.RequiredItems.Add("Bronze", 1); item22.RequiredItems.Add("LeatherResinedDO", 1); item22.CraftAmount = 100; MaterialReplacer.RegisterGameObjectForShaderSwap(item22.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Throwing Whirlstar Core Bronze", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item22.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item23 = new Item("hunter_legacy", "ThrowingWhirlstarCoreIronDO"); item23.Crafting.Add("MunitionsBenchDO", 1); item23.RequiredItems.Add("Iron", 1); item23.RequiredItems.Add("LeatherGreasedDO", 1); item23.CraftAmount = 100; MaterialReplacer.RegisterGameObjectForShaderSwap(item23.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Throwing Whirlstar Core Iron", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item23.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item24 = new Item("hunter_legacy", "ThrowingWhirlstarCoreSilverDO"); item24.Crafting.Add("MunitionsBenchDO", 1); item24.RequiredItems.Add("Silver", 1); item24.RequiredItems.Add("LeatherFrostedDO", 1); item24.CraftAmount = 100; MaterialReplacer.RegisterGameObjectForShaderSwap(item24.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Throwing Whirlstar Core Silver", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item24.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item25 = new Item("hunter_legacy", "ThrowingWhirlstarCoreBlackmetalDO"); item25.Crafting.Add("MunitionsBenchDO", 1); item25.RequiredItems.Add("BlackMetal", 2); item25.RequiredItems.Add("LeatherTarredDO", 1); item25.CraftAmount = 100; MaterialReplacer.RegisterGameObjectForShaderSwap(item25.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Throwing Whirlstar Core Black Metal", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item25.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item26 = new Item("hunter_legacy", "ThrowingWhirlstarCoreFlametalDO"); item26.Crafting.Add("MunitionsBenchDO", 1); item26.RequiredItems.Add("FlametalNew", 1); item26.RequiredItems.Add("LeatherCharredDO", 1); item26.CraftAmount = 100; MaterialReplacer.RegisterGameObjectForShaderSwap(item26.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Throwing Whirlstar Core Flametal", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item26.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item27 = new Item("hunter_legacy", "BombSmokeEscapeDO"); item27.Crafting.Add("MunitionsBenchDO", 1); item27.RequiredItems.Add("Crystal", 1); item27.RequiredItems.Add("Obsidian", 2); item27.RequiredItems.Add("Coal", 5); item27.RequiredItems.Add("BoneFragments", 5); item27.CraftAmount = 5; MaterialReplacer.RegisterGameObjectForShaderSwap(item27.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bomb Smoke Escape", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item27.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item28 = new Item("hunter_legacy", "ArmorForestSentinelChestDO"); item28.Crafting.Add("HunterTableDO", 1); item28.RequiredItems.Add("Bronze", 2); item28.RequiredItems.Add("LeatherResinedDO", 6); item28.RequiredItems.Add("CoarseThreadDO", 4); item28.RequiredUpgradeItems.Add("Bronze", 2); item28.RequiredUpgradeItems.Add("LeatherResinedDO", 4); item28.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item28.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Forest Sentinel Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item28.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item29 = new Item("hunter_legacy", "ArmorForestSentinelLegsDO"); item29.Crafting.Add("HunterTableDO", 1); item29.RequiredItems.Add("Bronze", 2); item29.RequiredItems.Add("LeatherResinedDO", 6); item29.RequiredItems.Add("CoarseThreadDO", 4); item29.RequiredUpgradeItems.Add("Bronze", 2); item29.RequiredUpgradeItems.Add("LeatherResinedDO", 4); item29.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item29.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Forest Sentinel Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item29.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item30 = new Item("hunter_legacy", "ArmorForestSentinelHelmetDO"); item30.Crafting.Add("HunterTableDO", 1); item30.RequiredItems.Add("Bronze", 2); item30.RequiredItems.Add("LeatherResinedDO", 6); item30.RequiredItems.Add("CoarseThreadDO", 4); item30.RequiredUpgradeItems.Add("Bronze", 2); item30.RequiredUpgradeItems.Add("LeatherResinedDO", 4); item30.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item30.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Forest Sentinel Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item30.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item31 = new Item("hunter_legacy", "ArmorForestSentinelCapeDO"); item31.Crafting.Add("HunterTableDO", 1); item31.RequiredItems.Add("Bronze", 1); item31.RequiredItems.Add("LeatherResinedDO", 4); item31.RequiredItems.Add("CoarseThreadDO", 3); item31.RequiredUpgradeItems.Add("LeatherResinedDO", 1); item31.RequiredUpgradeItems.Add("CoarseThreadDO", 2); item31.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item31.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Forest Sentinel Cape", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item31.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item32 = new Item("hunter_legacy", "ArmorForestSentinelBeltDO"); item32.Crafting.Add("HunterTableDO", 1); item32.RequiredItems.Add("LeatherResinedDO", 10); item32.RequiredItems.Add("LeatherGreasedDO", 8); item32.RequiredItems.Add("TrophyGreydwarfShaman", 1); item32.RequiredItems.Add("Coins", 100); item32.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item32.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Forest Sentinel Belt", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item32.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item33 = new Item("hunter_legacy", "ArmorFrostpeakHarrierChestDO"); item33.Crafting.Add("HunterTableDO", 2); item33.RequiredItems.Add("Silver", 4); item33.RequiredItems.Add("LeatherFrostedDO", 12); item33.RequiredItems.Add("CoarseThreadDO", 8); item33.RequiredUpgradeItems.Add("Silver", 2); item33.RequiredUpgradeItems.Add("LeatherFrostedDO", 4); item33.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item33.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Frostpeak Harrier Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item33.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item34 = new Item("hunter_legacy", "ArmorFrostpeakHarrierLegsDO"); item34.Crafting.Add("HunterTableDO", 2); item34.RequiredItems.Add("Silver", 4); item34.RequiredItems.Add("LeatherFrostedDO", 12); item34.RequiredItems.Add("CoarseThreadDO", 8); item34.RequiredUpgradeItems.Add("Silver", 2); item34.RequiredUpgradeItems.Add("LeatherFrostedDO", 4); item34.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item34.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Frostpeak Harrier Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item34.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item35 = new Item("hunter_legacy", "ArmorFrostpeakHarrierHelmetDO"); item35.Crafting.Add("HunterTableDO", 2); item35.RequiredItems.Add("Silver", 4); item35.RequiredItems.Add("LeatherFrostedDO", 12); item35.RequiredItems.Add("CoarseThreadDO", 8); item35.RequiredUpgradeItems.Add("Silver", 2); item35.RequiredUpgradeItems.Add("LeatherFrostedDO", 4); item35.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item35.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Frostpeak Harrier Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item35.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item36 = new Item("hunter_legacy", "ArmorFrostpeakHarrierCapeDO"); item36.Crafting.Add("HunterTableDO", 2); item36.RequiredItems.Add("Silver", 1); item36.RequiredItems.Add("LeatherFrostedDO", 4); item36.RequiredItems.Add("CoarseThreadDO", 3); item36.RequiredItems.Add("Wood", 4); item36.RequiredUpgradeItems.Add("LeatherFrostedDO", 1); item36.RequiredUpgradeItems.Add("CoarseThreadDO", 2); item36.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item36.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Frostpeak Harrier Quiver", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item36.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item37 = new Item("hunter_legacy", "ArmorFrostpeakHarrierTrinketDO"); item37.Crafting.Add("HunterTableDO", 2); item37.RequiredItems.Add("CoarseThreadDO", 10); item37.RequiredItems.Add("WolfFang", 9); item37.RequiredItems.Add("WolfClaw", 3); item37.RequiredItems.Add("TrophyWolf", 1); item37.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item37.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Frostpeak Harrier Trinket", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item37.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item38 = new Item("hunter_legacy", "ArmorGoldenStriderChestDO"); item38.Crafting.Add("HunterTableDO", 3); item38.RequiredItems.Add("BlackMetal", 5); item38.RequiredItems.Add("LeatherTarredDO", 15); item38.RequiredItems.Add("LinenThread", 10); item38.RequiredUpgradeItems.Add("BlackMetal", 3); item38.RequiredUpgradeItems.Add("LeatherTarredDO", 6); item38.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item38.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Golden Strider Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item38.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item39 = new Item("hunter_legacy", "ArmorGoldenStriderLegsDO"); item39.Crafting.Add("HunterTableDO", 3); item39.RequiredItems.Add("BlackMetal", 5); item39.RequiredItems.Add("LeatherTarredDO", 15); item39.RequiredItems.Add("LinenThread", 10); item39.RequiredUpgradeItems.Add("BlackMetal", 3); item39.RequiredUpgradeItems.Add("LeatherTarredDO", 6); item39.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item39.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Golden Strider Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item39.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item40 = new Item("hunter_legacy", "ArmorGoldenStriderHelmetDO"); item40.Crafting.Add("HunterTableDO", 3); item40.RequiredItems.Add("BlackMetal", 5); item40.RequiredItems.Add("LeatherTarredDO", 15); item40.RequiredItems.Add("LinenThread", 10); item40.RequiredUpgradeItems.Add("BlackMetal", 3); item40.RequiredUpgradeItems.Add("LeatherTarredDO", 6); item40.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item40.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Golden Strider Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item40.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item41 = new Item("hunter_legacy", "ArmorGoldenStriderCapeDO"); item41.Crafting.Add("HunterTableDO", 3); item41.RequiredItems.Add("BlackMetal", 1); item41.RequiredItems.Add("LeatherTarredDO", 4); item41.RequiredItems.Add("LinenThread", 3); item41.RequiredItems.Add("FineWood", 6); item41.RequiredUpgradeItems.Add("LeatherTarredDO", 1); item41.RequiredUpgradeItems.Add("LinenThread", 2); item41.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item41.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Golden Strider Quiver", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item41.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item42 = new Item("hunter_legacy", "ArmorGoldenStriderBeltDO"); item42.Crafting.Add("HunterTableDO", 3); item42.RequiredItems.Add("LeatherTarredDO", 15); item42.RequiredItems.Add("Bronze", 12); item42.RequiredItems.Add("TrophyGoblinShaman", 1); item42.RequiredItems.Add("TrophyDeathsquito", 1); item42.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item42.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Golden Strider Belt", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item42.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item43 = new Item("hunter_legacy", "ArmorSapphireFalconChestDO"); item43.Crafting.Add("HunterTableDO", 4); item43.RequiredItems.Add("Carapace", 8); item43.RequiredItems.Add("LeatherSappedDO", 12); item43.RequiredItems.Add("LinenThread", 12); item43.RequiredUpgradeItems.Add("Carapace", 4); item43.RequiredUpgradeItems.Add("LeatherSappedDO", 6); item43.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item43.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Sapphire Falcon Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item43.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item44 = new Item("hunter_legacy", "ArmorSapphireFalconLegsDO"); item44.Crafting.Add("HunterTableDO", 4); item44.RequiredItems.Add("Carapace", 8); item44.RequiredItems.Add("LeatherSappedDO", 12); item44.RequiredItems.Add("LinenThread", 12); item44.RequiredUpgradeItems.Add("Carapace", 4); item44.RequiredUpgradeItems.Add("LeatherSappedDO", 6); item44.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item44.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Sapphire Falcon Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item44.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item45 = new Item("hunter_legacy", "ArmorSapphireFalconHelmetDO"); item45.Crafting.Add("HunterTableDO", 4); item45.RequiredItems.Add("Carapace", 8); item45.RequiredItems.Add("LeatherSappedDO", 12); item45.RequiredItems.Add("LinenThread", 10); item45.RequiredUpgradeItems.Add("Carapace", 4); item45.RequiredUpgradeItems.Add("LeatherSappedDO", 6); item45.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item45.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Sapphire Falcon Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item45.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item46 = new Item("hunter_legacy", "ArmorSapphireFalconCapeDO"); item46.Crafting.Add("HunterTableDO", 4); item46.RequiredItems.Add("Carapace", 2); item46.RequiredItems.Add("LeatherSappedDO", 6); item46.RequiredItems.Add("LinenThread", 3); item46.RequiredItems.Add("YggdrasilWood", 6); item46.RequiredUpgradeItems.Add("Carapace", 2); item46.RequiredUpgradeItems.Add("LeatherSappedDO", 3); item46.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item46.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Sapphire Falcon Quiver", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item46.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item47 = new Item("hunter_legacy", "ArmorSapphireFalconTrinketDO"); item47.Crafting.Add("HunterTableDO", 4); item47.RequiredItems.Add("LeatherSappedDO", 10); item47.RequiredItems.Add("Eitr", 12); item47.RequiredItems.Add("Bilebag", 3); item47.RequiredItems.Add("TrophyDvergr", 1); item47.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item47.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Sapphire Falcon Trinket", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item47.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item48 = new Item("hunter_legacy", "ArmorNocturneArrowChestDO"); item48.Crafting.Add("HunterTableDO", 4); item48.RequiredItems.Add("Carapace", 4); item48.RequiredItems.Add("LeatherSappedDO", 18); item48.RequiredItems.Add("LinenThread", 12); item48.RequiredUpgradeItems.Add("Carapace", 2); item48.RequiredUpgradeItems.Add("LeatherSappedDO", 8); item48.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item48.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Nocturne Arrow Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item48.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item49 = new Item("hunter_legacy", "ArmorNocturneArrowLegsDO"); item49.Crafting.Add("HunterTableDO", 4); item49.RequiredItems.Add("Carapace", 4); item49.RequiredItems.Add("LeatherSappedDO", 18); item49.RequiredItems.Add("LinenThread", 12); item49.RequiredUpgradeItems.Add("Carapace", 2); item49.RequiredUpgradeItems.Add("LeatherSappedDO", 8); item49.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item49.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Nocturne Arrow Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item49.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item50 = new Item("hunter_legacy", "ArmorNocturneArrowHelmetDO"); item50.Crafting.Add("HunterTableDO", 4); item50.RequiredItems.Add("Carapace", 4); item50.RequiredItems.Add("LeatherSappedDO", 18); item50.RequiredItems.Add("LinenThread", 12); item50.RequiredUpgradeItems.Add("Carapace", 2); item50.RequiredUpgradeItems.Add("LeatherSappedDO", 8); item50.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item50.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Nocturne Arrow Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item50.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item51 = new Item("hunter_legacy", "ArmorNocturneArrowCapeDO"); item51.Crafting.Add("HunterTableDO", 4); item51.RequiredItems.Add("Carapace", 4); item51.RequiredItems.Add("LeatherSappedDO", 12); item51.RequiredItems.Add("LinenThread", 18); item51.RequiredItems.Add("YggdrasilWood", 12); item51.RequiredUpgradeItems.Add("Carapace", 2); item51.RequiredUpgradeItems.Add("LeatherSappedDO", 6); item51.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item51.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Nocturne Arrow Cape", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item51.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item52 = new Item("hunter_legacy", "ArmorAshenExileChestDO"); item52.Crafting.Add("HunterTableDO", 4); item52.RequiredItems.Add("FlametalNew", 6); item52.RequiredItems.Add("Eitr", 6); item52.RequiredItems.Add("LeatherCharredDO", 18); item52.RequiredItems.Add("LinenThread", 12); item52.RequiredUpgradeItems.Add("FlametalNew", 2); item52.RequiredUpgradeItems.Add("LeatherCharredDO", 4); item52.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item52.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Ashen Exile Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item52.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item53 = new Item("hunter_legacy", "ArmorAshenExileLegsDO"); item53.Crafting.Add("HunterTableDO", 4); item53.RequiredItems.Add("FlametalNew", 6); item53.RequiredItems.Add("Eitr", 6); item53.RequiredItems.Add("LeatherCharredDO", 18); item53.RequiredItems.Add("LinenThread", 12); item53.RequiredUpgradeItems.Add("FlametalNew", 2); item53.RequiredUpgradeItems.Add("LeatherCharredDO", 4); item53.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item53.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Ashen Exile Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item53.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item54 = new Item("hunter_legacy", "ArmorAshenExileHelmetDO"); item54.Crafting.Add("HunterTableDO", 4); item54.RequiredItems.Add("FlametalNew", 6); item54.RequiredItems.Add("Eitr", 6); item54.RequiredItems.Add("LeatherCharredDO", 18); item54.RequiredItems.Add("LinenThread", 12); item54.RequiredUpgradeItems.Add("FlametalNew", 2); item54.RequiredUpgradeItems.Add("LeatherCharredDO", 4); item54.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item54.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Ashen Exile Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item54.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item55 = new Item("hunter_legacy", "ArmorAshenExileCapeDO"); item55.Crafting.Add("HunterTableDO", 4); item55.RequiredItems.Add("FlametalNew", 2); item55.RequiredItems.Add("LeatherCharredDO", 6); item55.RequiredItems.Add("LinenThread", 4); item55.RequiredItems.Add("Blackwood", 4); item55.RequiredUpgradeItems.Add("FlametalNew", 1); item55.RequiredUpgradeItems.Add("LeatherCharredDO", 3); item55.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item55.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Ashen Exile Quiver", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item55.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item56 = new Item("hunter_legacy", "ArmorAshenExileTrinketDO"); item56.Crafting.Add("HunterTableDO", 4); item56.RequiredItems.Add("GemstoneRed", 1); item56.RequiredItems.Add("ProustitePowder", 20); item56.RequiredItems.Add("TrophyFallenValkyrie", 1); item56.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item56.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Ashen Exile Trinket", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item56.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item57 = new Item("hunter_legacy", "ArmorGraveMercenaryChestDO"); item57.Crafting.Add("HunterTableDO", 1); item57.RequiredItems.Add("Iron", 6); item57.RequiredItems.Add("LeatherGreasedDO", 12); item57.RequiredItems.Add("CoarseThreadDO", 4); item57.RequiredUpgradeItems.Add("Iron", 3); item57.RequiredUpgradeItems.Add("LeatherGreasedDO", 3); item57.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item57.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Grave Mercenary Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item57.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item58 = new Item("hunter_legacy", "ArmorGraveMercenaryLegsDO"); item58.Crafting.Add("HunterTableDO", 1); item58.RequiredItems.Add("Iron", 6); item58.RequiredItems.Add("LeatherGreasedDO", 12); item58.RequiredItems.Add("CoarseThreadDO", 4); item58.RequiredUpgradeItems.Add("Iron", 3); item58.RequiredUpgradeItems.Add("LeatherGreasedDO", 3); item58.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item58.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Grave Mercenary Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item58.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item59 = new Item("hunter_legacy", "ArmorGraveMercenaryHelmetDO"); item59.Crafting.Add("HunterTableDO", 1); item59.RequiredItems.Add("Iron", 6); item59.RequiredItems.Add("LeatherGreasedDO", 12); item59.RequiredItems.Add("CoarseThreadDO", 4); item59.RequiredUpgradeItems.Add("Iron", 3); item59.RequiredUpgradeItems.Add("LeatherGreasedDO", 3); item59.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item59.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Grave Mercenary Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item59.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item60 = new Item("hunter_legacy", "ArmorGraveMercenaryCapeDO"); item60.Crafting.Add("HunterTableDO", 1); item60.RequiredItems.Add("Iron", 2); item60.RequiredItems.Add("LeatherGreasedDO", 4); item60.RequiredItems.Add("CoarseThreadDO", 2); item60.RequiredUpgradeItems.Add("Iron", 2); item60.RequiredUpgradeItems.Add("LeatherGreasedDO", 2); item60.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item60.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Grave Mercenary Cape", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item60.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item61 = new Item("hunter_legacy", "ArmorDreadRenegadeChestDO"); item61.Crafting.Add("HunterTableDO", 3); item61.RequiredItems.Add("BlackMetal", 8); item61.RequiredItems.Add("LeatherTarredDO", 16); item61.RequiredItems.Add("LinenThread", 6); item61.RequiredUpgradeItems.Add("BlackMetal", 3); item61.RequiredUpgradeItems.Add("LeatherTarredDO", 3); item61.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item61.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Dread Renegade Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item61.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item62 = new Item("hunter_legacy", "ArmorDreadRenegadeLegsDO"); item62.Crafting.Add("HunterTableDO", 3); item62.RequiredItems.Add("BlackMetal", 8); item62.RequiredItems.Add("LeatherTarredDO", 16); item62.RequiredItems.Add("LinenThread", 6); item62.RequiredUpgradeItems.Add("BlackMetal", 3); item62.RequiredUpgradeItems.Add("LeatherTarredDO", 3); item62.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item62.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Dread Renegade Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item62.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item63 = new Item("hunter_legacy", "ArmorDreadRenegadeHelmetDO"); item63.Crafting.Add("HunterTableDO", 3); item63.RequiredItems.Add("BlackMetal", 8); item63.RequiredItems.Add("LeatherTarredDO", 16); item63.RequiredItems.Add("LinenThread", 6); item63.RequiredUpgradeItems.Add("BlackMetal", 3); item63.RequiredUpgradeItems.Add("LeatherTarredDO", 3); item63.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item63.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Dread Renegade Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item63.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item64 = new Item("hunter_legacy", "ArmorDreadRenegadeCapeDO"); item64.Crafting.Add("HunterTableDO", 3); item64.RequiredItems.Add("BlackMetal", 3); item64.RequiredItems.Add("LeatherTarredDO", 6); item64.RequiredItems.Add("LinenThread", 3); item64.RequiredUpgradeItems.Add("BlackMetal", 2); item64.RequiredUpgradeItems.Add("LeatherTarredDO", 2); item64.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item64.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Dread Renegade Cape", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item64.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item65 = new Item("hunter_legacy", "ArmorDemonHunterChestDO"); item65.Crafting.Add("HunterTableDO", 4); item65.RequiredItems.Add("FlametalNew", 10); item65.RequiredItems.Add("Eitr", 6); item65.RequiredItems.Add("LeatherCharredDO", 18); item65.RequiredItems.Add("LinenThread", 8); item65.RequiredUpgradeItems.Add("FlametalNew", 3); item65.RequiredUpgradeItems.Add("LeatherCharredDO", 3); item65.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item65.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Demon Hunter Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item65.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item66 = new Item("hunter_legacy", "ArmorDemonHunterLegsDO"); item66.Crafting.Add("HunterTableDO", 4); item66.RequiredItems.Add("FlametalNew", 10); item66.RequiredItems.Add("Eitr", 6); item66.RequiredItems.Add("LeatherCharredDO", 18); item66.RequiredItems.Add("LinenThread", 8); item66.RequiredUpgradeItems.Add("FlametalNew", 3); item66.RequiredUpgradeItems.Add("LeatherCharredDO", 3); item66.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item66.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Demon Hunter Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item66.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item67 = new Item("hunter_legacy", "ArmorDemonHunterHelmetDO"); item67.Crafting.Add("HunterTableDO", 4); item67.RequiredItems.Add("FlametalNew", 10); item67.RequiredItems.Add("Eitr", 6); item67.RequiredItems.Add("LeatherCharredDO", 18); item67.RequiredItems.Add("LinenThread", 8); item67.RequiredUpgradeItems.Add("FlametalNew", 3); item67.RequiredUpgradeItems.Add("LeatherCharredDO", 3); item67.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item67.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Demon Hunter Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item67.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item68 = new Item("hunter_legacy", "ArmorDemonHunterCapeDO"); item68.Crafting.Add("HunterTableDO", 4); item68.RequiredItems.Add("FlametalNew", 6); item68.RequiredItems.Add("Eitr", 2); item68.RequiredItems.Add("LeatherCharredDO", 12); item68.RequiredItems.Add("LinenThread", 4); item68.RequiredUpgradeItems.Add("FlametalNew", 2); item68.RequiredUpgradeItems.Add("LeatherCharredDO", 2); item68.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item68.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Demon Hunter Quiver", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item68.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item69 = new Item("hunter_legacy", "ArmorDemonHunterTrinketDO"); item69.Crafting.Add("HunterTableDO", 4); item69.RequiredItems.Add("GemstoneRed", 2); item69.RequiredItems.Add("FlametalNew", 6); item69.RequiredItems.Add("Eitr", 12); item69.RequiredItems.Add("TrophyMorgen", 1); item69.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item69.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Demon Hunter Ring", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item69.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item70 = new Item("hunter_legacy", "ArmorSilentThornChestDO"); item70.Crafting.Add("HunterTableDO", 1); item70.RequiredItems.Add("Bronze", 2); item70.RequiredItems.Add("LeatherResinedDO", 10); item70.RequiredItems.Add("CoarseThreadDO", 6); item70.RequiredUpgradeItems.Add("Bronze", 2); item70.RequiredUpgradeItems.Add("LeatherResinedDO", 6); item70.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item70.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Silent Thorn Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item70.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item71 = new Item("hunter_legacy", "ArmorSilentThornLegsDO"); item71.Crafting.Add("HunterTableDO", 1); item71.RequiredItems.Add("Bronze", 2); item71.RequiredItems.Add("LeatherResinedDO", 10); item71.RequiredItems.Add("CoarseThreadDO", 6); item71.RequiredUpgradeItems.Add("Bronze", 2); item71.RequiredUpgradeItems.Add("LeatherResinedDO", 6); item71.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item71.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Silent Thorn Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item71.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item72 = new Item("hunter_legacy", "ArmorSilentThornHelmetDO"); item72.Crafting.Add("HunterTableDO", 1); item72.RequiredItems.Add("Bronze", 2); item72.RequiredItems.Add("LeatherResinedDO", 10); item72.RequiredItems.Add("CoarseThreadDO", 6); item72.RequiredItems.Add("NeckTail", 4); item72.RequiredUpgradeItems.Add("Bronze", 2); item72.RequiredUpgradeItems.Add("LeatherResinedDO", 6); item72.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item72.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Silent Thorn Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item72.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item73 = new Item("hunter_legacy", "ArmorSnowTalonChestDO"); item73.Crafting.Add("HunterTableDO", 2); item73.RequiredItems.Add("Silver", 3); item73.RequiredItems.Add("LeatherFrostedDO", 12); item73.RequiredItems.Add("CoarseThreadDO", 10); item73.RequiredUpgradeItems.Add("Silver", 2); item73.RequiredUpgradeItems.Add("LeatherFrostedDO", 5); item73.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item73.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Snow Talon Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item73.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item74 = new Item("hunter_legacy", "ArmorSnowTalonLegsDO"); item74.Crafting.Add("HunterTableDO", 2); item74.RequiredItems.Add("Silver", 3); item74.RequiredItems.Add("LeatherFrostedDO", 12); item74.RequiredItems.Add("CoarseThreadDO", 10); item74.RequiredUpgradeItems.Add("Silver", 2); item74.RequiredUpgradeItems.Add("LeatherFrostedDO", 5); item74.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item74.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Snow Talon Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item74.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item75 = new Item("hunter_legacy", "ArmorSnowTalonHelmetDO"); item75.Crafting.Add("HunterTableDO", 2); item75.RequiredItems.Add("Silver", 3); item75.RequiredItems.Add("LeatherFrostedDO", 12); item75.RequiredItems.Add("CoarseThreadDO", 10); item75.RequiredUpgradeItems.Add("Silver", 2); item75.RequiredUpgradeItems.Add("LeatherFrostedDO", 5); item75.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item75.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Snow Talon Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item75.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item76 = new Item("hunter_legacy", "ArmorSnowTalonCapeDO"); item76.Crafting.Add("HunterTableDO", 2); item76.RequiredItems.Add("Silver", 3); item76.RequiredItems.Add("LeatherFrostedDO", 8); item76.RequiredItems.Add("CoarseThreadDO", 6); item76.RequiredUpgradeItems.Add("Silver", 1); item76.RequiredUpgradeItems.Add("LeatherFrostedDO", 4); item76.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item76.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Snow Talon Cape", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item76.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item77 = new Item("hunter_legacy", "ArmorNocturneBladeChestDO"); item77.Crafting.Add("HunterTableDO", 4); item77.RequiredItems.Add("Carapace", 4); item77.RequiredItems.Add("Silver", 4); item77.RequiredItems.Add("LeatherSappedDO", 18); item77.RequiredItems.Add("LinenThread", 12); item77.RequiredUpgradeItems.Add("Silver", 3); item77.RequiredUpgradeItems.Add("LeatherSappedDO", 8); item77.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item77.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Nocturne Blade Chest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item77.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item78 = new Item("hunter_legacy", "ArmorNocturneBladeLegsDO"); item78.Crafting.Add("HunterTableDO", 4); item78.RequiredItems.Add("Carapace", 4); item78.RequiredItems.Add("Silver", 4); item78.RequiredItems.Add("LeatherSappedDO", 18); item78.RequiredItems.Add("LinenThread", 12); item78.RequiredUpgradeItems.Add("Silver", 3); item78.RequiredUpgradeItems.Add("LeatherSappedDO", 8); item78.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item78.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Nocturne Blade Legs", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item78.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item79 = new Item("hunter_legacy", "ArmorNocturneBladeHelmetDO"); item79.Crafting.Add("HunterTableDO", 4); item79.RequiredItems.Add("Carapace", 4); item79.RequiredItems.Add("Silver", 4); item79.RequiredItems.Add("LeatherSappedDO", 18); item79.RequiredItems.Add("LinenThread", 12); item79.RequiredUpgradeItems.Add("Silver", 3); item79.RequiredUpgradeItems.Add("LeatherSappedDO", 8); item79.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item79.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Nocturne Blade Helmet", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item79.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item80 = new Item("hunter_legacy", "ArmorNocturneBladeCapeDO"); item80.Crafting.Add("HunterTableDO", 4); item80.RequiredItems.Add("Carapace", 2); item80.RequiredItems.Add("Silver", 2); item80.RequiredItems.Add("LeatherSappedDO", 12); item80.RequiredItems.Add("LinenThread", 8); item80.RequiredUpgradeItems.Add("Silver", 2); item80.RequiredUpgradeItems.Add("LeatherSappedDO", 6); item80.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item80.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Nocturne Blade Cape", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item80.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item81 = new Item("hunter_legacy", "BowEvoCoreAshlandsBloodDO"); item81.Crafting.Add("HunterTableDO", 4); item81.RequiredItems.Add("BowEvoCoreMistlandsDO", 1); item81.RequiredItems.Add("FlametalNew", 6); item81.RequiredItems.Add("GemstoneRed", 1); item81.RequiredUpgradeItems.Add("FlametalNew", 4); item81.RequiredUpgradeItems.Add("GemstoneRed", 1); item81.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item81.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bow Evo Core Ashlands Blood", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item81.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item82 = new Item("hunter_legacy", "BowEvoCoreAshlandsNatureDO"); item82.Crafting.Add("HunterTableDO", 4); item82.RequiredItems.Add("BowEvoCoreMistlandsDO", 1); item82.RequiredItems.Add("FlametalNew", 6); item82.RequiredItems.Add("GemstoneGreen", 1); item82.RequiredUpgradeItems.Add("FlametalNew", 4); item82.RequiredUpgradeItems.Add("GemstoneGreen", 1); item82.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item82.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bow Evo Core Ashlands Nature", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item82.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item83 = new Item("hunter_legacy", "BowEvoCoreAshlandsLightningDO"); item83.Crafting.Add("HunterTableDO", 4); item83.RequiredItems.Add("BowEvoCoreMistlandsDO", 1); item83.RequiredItems.Add("FlametalNew", 6); item83.RequiredItems.Add("GemstoneBlue", 1); item83.RequiredUpgradeItems.Add("FlametalNew", 4); item83.RequiredUpgradeItems.Add("GemstoneBlue", 1); item83.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item83.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bow Evo Core Ashlands Lightning", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item83.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item84 = new Item("hunter_legacy", "BowEvoCoreMistlandsDO"); item84.Crafting.Add("HunterTableDO", 4); item84.RequiredItems.Add("BowEvoCorePlainsDO", 1); item84.RequiredItems.Add("Carapace", 9); item84.RequiredItems.Add("YggdrasilWood", 9); item84.RequiredItems.Add("LeatherSappedDO", 3); item84.RequiredUpgradeItems.Add("Carapace", 3); item84.RequiredUpgradeItems.Add("YggdrasilWood", 3); item84.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item84.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bow Evo Core Mistlands", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item84.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item85 = new Item("hunter_legacy", "BowEvoCorePlainsDO"); item85.Crafting.Add("HunterTableDO", 3); item85.RequiredItems.Add("BowEvoCoreMountainDO", 1); item85.RequiredItems.Add("BlackMetal", 9); item85.RequiredItems.Add("FineWood", 9); item85.RequiredItems.Add("LeatherTarredDO", 3); item85.RequiredUpgradeItems.Add("BlackMetal", 3); item85.RequiredUpgradeItems.Add("FineWood", 3); item85.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item85.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bow Evo Core Plains", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item85.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item86 = new Item("hunter_legacy", "BowEvoCoreMountainDO"); item86.Crafting.Add("HunterTableDO", 2); item86.RequiredItems.Add("BowEvoCoreSwampDO", 1); item86.RequiredItems.Add("Silver", 9); item86.RequiredItems.Add("ElderBark", 9); item86.RequiredItems.Add("LeatherFrostedDO", 3); item86.RequiredUpgradeItems.Add("Silver", 3); item86.RequiredUpgradeItems.Add("ElderBark", 3); item86.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item86.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bow Evo Core Mountain", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item86.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item87 = new Item("hunter_legacy", "BowEvoCoreSwampDO"); item87.Crafting.Add("HunterTableDO", 1); item87.RequiredItems.Add("BowEvoCoreBlackforestDO", 1); item87.RequiredItems.Add("Iron", 9); item87.RequiredItems.Add("RoundLog", 9); item87.RequiredItems.Add("LeatherGreasedDO", 3); item87.RequiredUpgradeItems.Add("Iron", 3); item87.RequiredUpgradeItems.Add("RoundLog", 3); item87.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item87.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bow Evo Core Swamp", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item87.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item88 = new Item("hunter_legacy", "BowEvoCoreBlackforestDO"); item88.Crafting.Add("HunterTableDO", 1); item88.RequiredItems.Add("EternalBowstringDO", 1); item88.RequiredItems.Add("Bronze", 9); item88.RequiredItems.Add("Wood", 9); item88.RequiredItems.Add("LeatherResinedDO", 3); item88.RequiredUpgradeItems.Add("Bronze", 3); item88.RequiredUpgradeItems.Add("Wood", 3); item88.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item88.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Bow Evo Core Blackforest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item88.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item89 = new Item("hunter_legacy", "CrossbowEvoCoreAshlandsBloodDO"); item89.Crafting.Add("HunterTableDO", 4); item89.RequiredItems.Add("CrossbowEvoCoreMistlandsDO", 1); item89.RequiredItems.Add("FlametalNew", 6); item89.RequiredItems.Add("GemstoneRed", 1); item89.RequiredUpgradeItems.Add("FlametalNew", 4); item89.RequiredUpgradeItems.Add("GemstoneRed", 1); item89.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item89.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Core Ashlands Blood", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item89.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item90 = new Item("hunter_legacy", "CrossbowEvoCoreAshlandsNatureDO"); item90.Crafting.Add("HunterTableDO", 4); item90.RequiredItems.Add("CrossbowEvoCoreMistlandsDO", 1); item90.RequiredItems.Add("FlametalNew", 6); item90.RequiredItems.Add("GemstoneGreen", 1); item90.RequiredUpgradeItems.Add("FlametalNew", 4); item90.RequiredUpgradeItems.Add("GemstoneGreen", 1); item90.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item90.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Core Ashlands Nature", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item90.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item91 = new Item("hunter_legacy", "CrossbowEvoCoreAshlandsLightningDO"); item91.Crafting.Add("HunterTableDO", 4); item91.RequiredItems.Add("CrossbowEvoCoreMistlandsDO", 1); item91.RequiredItems.Add("FlametalNew", 6); item91.RequiredItems.Add("GemstoneBlue", 1); item91.RequiredUpgradeItems.Add("FlametalNew", 4); item91.RequiredUpgradeItems.Add("GemstoneBlue", 1); item91.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item91.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Core Ashlands Lightning", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item91.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item92 = new Item("hunter_legacy", "CrossbowEvoCoreMistlandsDO"); item92.Crafting.Add("HunterTableDO", 4); item92.RequiredItems.Add("CrossbowEvoCorePlainsDO", 1); item92.RequiredItems.Add("Carapace", 9); item92.RequiredItems.Add("YggdrasilWood", 9); item92.RequiredItems.Add("LeatherSappedDO", 3); item92.RequiredUpgradeItems.Add("Carapace", 3); item92.RequiredUpgradeItems.Add("YggdrasilWood", 3); item92.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item92.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Core Mistlands", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item92.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item93 = new Item("hunter_legacy", "CrossbowEvoCorePlainsDO"); item93.Crafting.Add("HunterTableDO", 3); item93.RequiredItems.Add("CrossbowEvoCoreMountainDO", 1); item93.RequiredItems.Add("BlackMetal", 9); item93.RequiredItems.Add("FineWood", 9); item93.RequiredItems.Add("LeatherTarredDO", 3); item93.RequiredUpgradeItems.Add("BlackMetal", 3); item93.RequiredUpgradeItems.Add("FineWood", 3); item93.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item93.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Core Plains", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item93.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item94 = new Item("hunter_legacy", "CrossbowEvoCoreMountainDO"); item94.Crafting.Add("HunterTableDO", 2); item94.RequiredItems.Add("CrossbowEvoCoreSwampDO", 1); item94.RequiredItems.Add("Silver", 9); item94.RequiredItems.Add("ElderBark", 9); item94.RequiredItems.Add("LeatherFrostedDO", 3); item94.RequiredUpgradeItems.Add("Silver", 3); item94.RequiredUpgradeItems.Add("ElderBark", 3); item94.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item94.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Core Mountain", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item94.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item95 = new Item("hunter_legacy", "CrossbowEvoCoreSwampDO"); item95.Crafting.Add("HunterTableDO", 1); item95.RequiredItems.Add("CrossbowEvoCoreBlackforestDO", 1); item95.RequiredItems.Add("Iron", 9); item95.RequiredItems.Add("RoundLog", 9); item95.RequiredItems.Add("LeatherGreasedDO", 3); item95.RequiredUpgradeItems.Add("Iron", 3); item95.RequiredUpgradeItems.Add("RoundLog", 3); item95.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item95.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Core Swamp", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item95.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item96 = new Item("hunter_legacy", "CrossbowEvoCoreBlackforestDO"); item96.Crafting.Add("HunterTableDO", 1); item96.RequiredItems.Add("DrawLeverDO", 1); item96.RequiredItems.Add("Bronze", 9); item96.RequiredItems.Add("Wood", 9); item96.RequiredItems.Add("LeatherResinedDO", 3); item96.RequiredUpgradeItems.Add("Bronze", 3); item96.RequiredUpgradeItems.Add("Wood", 3); item96.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item96.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Core Blackforest", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item96.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item97 = new Item("hunter_legacy", "CrossbowEvoRenegadeMistlandsDO"); item97.Crafting.Add("HunterTableDO", 4); item97.RequiredItems.Add("CrossbowEvoRenegadePlainsDO", 1); item97.RequiredItems.Add("Carapace", 9); item97.RequiredItems.Add("Eitr", 9); item97.RequiredItems.Add("LeatherSappedDO", 3); item97.RequiredUpgradeItems.Add("Carapace", 3); item97.RequiredUpgradeItems.Add("Eitr", 3); item97.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item97.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Renegade Mistlands", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item97.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item98 = new Item("hunter_legacy", "CrossbowEvoRenegadePlainsDO"); item98.Crafting.Add("HunterTableDO", 3); item98.RequiredItems.Add("CrossbowEvoRenegadeMountainDO", 1); item98.RequiredItems.Add("BlackMetal", 9); item98.RequiredItems.Add("Needle", 9); item98.RequiredItems.Add("LeatherTarredDO", 3); item98.RequiredUpgradeItems.Add("BlackMetal", 3); item98.RequiredUpgradeItems.Add("Needle", 3); item98.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item98.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Renegade Plains", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item98.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item99 = new Item("hunter_legacy", "CrossbowEvoRenegadeMountainDO"); item99.Crafting.Add("HunterTableDO", 2); item99.RequiredItems.Add("CrossbowEvoRenegadeSwampDO", 1); item99.RequiredItems.Add("Silver", 9); item99.RequiredItems.Add("Guck", 9); item99.RequiredItems.Add("LeatherFrostedDO", 3); item99.RequiredUpgradeItems.Add("Silver", 3); item99.RequiredUpgradeItems.Add("Guck", 3); item99.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item99.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Renegade Mountain", "IsRecipeEnabled", Toggle.On, "Determines if the recipe is enabled for this prefab"); item99.RecipeIsActive = (ConfigEntryBase)(object)_recipeIsActiveConfig; Item item100 = new Item("hunter_legacy", "CrossbowEvoRenegadeSwampDO"); item100.Crafting.Add("HunterTableDO", 1); item100.RequiredItems.Add("CrossbowEvoRenegadeBlackforestDO", 1); item100.RequiredItems.Add("Iron", 9); item100.RequiredItems.Add("RoundLog", 9); item100.RequiredItems.Add("LeatherGreasedDO", 3); item100.RequiredUpgradeItems.Add("Iron", 3); item100.RequiredUpgradeItems.Add("RoundLog", 3); item100.CraftAmount = 1; MaterialReplacer.RegisterGameObjectForShaderSwap(item100.Prefab, MaterialReplacer.ShaderType.UseUnityShader); _recipeIsActiveConfig = config("Crossbow Evo Renega