Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of ValheimArmory v1.32.0
plugins/ValheimArmory.dll
Decompiled 3 hours 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.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security.Permissions; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using SimpleJson; using UnityEngine; using ValheimArmory.Common; using ValheimArmory.common; using ValheimArmory.patches; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("ValheimArmory")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ValheimArmory")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("1.32.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.32.0.0")] namespace ValheimArmory { internal static class ConfigFileWatcher { private class WatchEntry { internal DateTime LastWriteUTC; internal long FileLength; internal Action<string> Callback; } internal class ConfigFileWatcherBehaviour : MonoBehaviour { private float nextPollTime; public void Update() { if (!(Time.unscaledTime < nextPollTime)) { nextPollTime = Time.unscaledTime + PollInterval(); Poll(); } } private static float PollInterval() { if (ValConfig.ConfigPollIntervalSeconds == null) { return 30f; } return ValConfig.ConfigPollIntervalSeconds.Value; } private static void Poll() { if (WatchedFiles.Count == 0) { return; } string[] array = WatchedFiles.Keys.ToArray(); foreach (string text in array) { if (!WatchedFiles.TryGetValue(text, out var value) || !File.Exists(text)) { continue; } FileInfo fileInfo = new FileInfo(text); DateTime lastWriteTimeUtc = fileInfo.LastWriteTimeUtc; long length = fileInfo.Length; if (!(lastWriteTimeUtc == value.LastWriteUTC) || length != value.FileLength) { value.LastWriteUTC = lastWriteTimeUtc; value.FileLength = length; try { value.Callback?.Invoke(text); } catch (Exception ex) { Logger.LogWarning("ConfigFileWatcher callback for " + text + " threw: " + ex.Message); } } } } } private const float FallbackPollSeconds = 30f; private static readonly Dictionary<string, WatchEntry> WatchedFiles = new Dictionary<string, WatchEntry>(StringComparer.OrdinalIgnoreCase); private static ConfigFileWatcherBehaviour watchProcess; internal static void Initialize() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_001e: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)watchProcess != (Object)null)) { GameObject val = new GameObject("ValheimArmory_ConfigFileWatcher"); Object.DontDestroyOnLoad((Object)val); ((Object)val).hideFlags = (HideFlags)61; watchProcess = val.AddComponent<ConfigFileWatcherBehaviour>(); Logger.LogDebug("ConfigFileWatcher initialized."); } } internal static void Register(string fullPath, Action<string> onChanged) { if (!string.IsNullOrEmpty(fullPath)) { DateTime lastWriteUTC = DateTime.MinValue; long fileLength = 0L; if (File.Exists(fullPath)) { FileInfo fileInfo = new FileInfo(fullPath); lastWriteUTC = fileInfo.LastWriteTimeUtc; fileLength = fileInfo.Length; } WatchedFiles[fullPath] = new WatchEntry { LastWriteUTC = lastWriteUTC, FileLength = fileLength, Callback = onChanged }; Logger.LogDebug("ConfigFileWatcher watching " + fullPath); } } internal static void RefreshStamp(string fullPath) { if (string.IsNullOrEmpty(fullPath) || !WatchedFiles.TryGetValue(fullPath, out var value)) { return; } try { FileInfo fileInfo = new FileInfo(fullPath); value.LastWriteUTC = fileInfo.LastWriteTimeUtc; value.FileLength = fileInfo.Length; } catch (Exception) { value.LastWriteUTC = DateTime.MinValue; value.FileLength = 0L; } } } internal static class Logger { public static LogLevel Level = (LogLevel)16; public static void enableDebugLogging(object sender, EventArgs e) { toggleDebug(); } public static void toggleDebug() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) if (ValConfig.EnableDebugMode.Value) { Level = (LogLevel)32; } else { Level = (LogLevel)16; } } public static void LogDebug(string message) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 if ((int)Level >= 32) { ValheimArmory.Log.LogInfo((object)message); } } public static void LogInfo(string message) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 if ((int)Level >= 16) { ValheimArmory.Log.LogInfo((object)message); } } public static void LogWarning(string message) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Invalid comparison between Unknown and I4 if ((int)Level >= 4) { ValheimArmory.Log.LogWarning((object)message); } } public static void LogError(string message) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Invalid comparison between Unknown and I4 if ((int)Level >= 2) { ValheimArmory.Log.LogError((object)message); } } } internal class ValConfig { public static ConfigFile cfg; public static ConfigEntry<bool> EnableDebugMode; public static ConfigEntry<bool> LoadPrefabsOnServer; public static ConfigEntry<float> HybridWeaponBloodMagicSkillIncrease; public static ConfigEntry<bool> VanillaHammersHavePrimaryAttack; public static ConfigEntry<bool> ModHammersHavePrimaryAttack; public static ConfigEntry<float> StagbreakerPrimaryAttackStamina; public static ConfigEntry<float> IronSledgePrimaryAttackStamina; public static ConfigEntry<float> DemolisherPrimaryAttackStamina; public static ConfigEntry<bool> VanillaAbyssalKnifeBluntDamageConvert; public static ConfigEntry<bool> EnableVanillaSpear; public static ConfigEntry<bool> EnableVanillaFlintAxe; public static ConfigEntry<float> AbyssalKnifeBlunt; public static ConfigEntry<float> AbyssalKnifeBluntPerLevel; public static ConfigEntry<float> BloodHungerRegen; public static ConfigEntry<float> QueenHealthRegen; public static ConfigEntry<float> QueenEitrRegen; public static ConfigEntry<int> InMemoryModificationsPerTick; public static ConfigEntry<float> ConfigApplyDelay; public static ConfigEntry<float> ConfigPollIntervalSeconds; private const float SaveDelaySeconds = 1f; private static bool savePending; public ValConfig(ConfigFile Config) { cfg = Config; cfg.SaveOnConfigSet = false; CreateConfigValues(Config); Logger.toggleDebug(); } internal static void EnableDeferredSave() { cfg.SaveOnConfigSet = false; cfg.SettingChanged += delegate { savePending = true; ConfigChangeDebouncer.Schedule(cfg, SavePending, 1f); }; } internal static void SavePending() { if (!savePending) { return; } savePending = false; try { Save(); } catch (IOException ex) { savePending = true; Logger.LogWarning("Could not write the config file, will retry: " + ex.Message); } } internal static void Save() { cfg.Save(); ConfigFileWatcher.RefreshStamp(cfg.ConfigFilePath); } internal static void OnChangeDebounced<T>(ConfigEntry<T> entry, EventHandler handler) { entry.SettingChanged += delegate(object sender, EventArgs args) { ConfigChangeDebouncer.Schedule(handler, delegate { handler(sender, args); }); }; } private void CreateConfigValues(ConfigFile Config) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Expected O, but got Unknown EnableDebugMode = Config.Bind<bool>("Client config", "EnableDebugMode", false, new ConfigDescription("Enables Debug logging for Valheim Armory.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdvanced = true } })); EnableDebugMode.SettingChanged += Logger.enableDebugLogging; LoadPrefabsOnServer = Config.Bind<bool>("Server config", "LoadPrefabsOnServer", false, new ConfigDescription("Registers Valheim Armory's item prefabs on a dedicated server. Off by default since the server neither renders nor modifies them; enable it when another server side mod has to resolve Valheim Armory items (spawn/loot tables, admin spawn commands). Takes effect on server restart.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdvanced = true } })); HybridWeaponBloodMagicSkillIncrease = BindServerConfig("Blood Magic Hybrid Weapons", "HybridWeaponBloodMagicSkillIncrease", 1f, "How much experiance should one usage of a blood magic hybrid weapon provide?", advanced: true, 0f, 4f); VanillaHammersHavePrimaryAttack = BindServerConfig("Vanilla Weapons", "VanillaHammersHavePrimaryAttack", value: true, "Enables a primary swing for vanilla sledges. Moves the slam to a secondary attack."); ModHammersHavePrimaryAttack = BindServerConfig("Vanilla Weapons", "ModHammersHavePrimaryAttack", value: true, "Enables a primary swing for mod weapons, disabling makes mod added hammers like vanilla sledges."); StagbreakerPrimaryAttackStamina = BindServerConfig("Vanilla Weapons", "StagbreakerPrimaryAttackStamina", 6f, "Stamina cost of the basic attack when enabled for the stagbreaker.", advanced: true, 1f, 30f); OnChangeDebounced<float>(StagbreakerPrimaryAttackStamina, WeaponModifier.OnConfigStagbreakerValueChanged); IronSledgePrimaryAttackStamina = BindServerConfig("Vanilla Weapons", "IronSledgePrimaryAttackStamina", 10f, "Stamina cost of the basic attack when enabled for the iron sledge.", advanced: true, 1f, 30f); OnChangeDebounced<float>(IronSledgePrimaryAttackStamina, WeaponModifier.OnConfigIronSledgeValueChanged); DemolisherPrimaryAttackStamina = BindServerConfig("Vanilla Weapons", "DemolisherPrimaryAttackStamina", 14f, "Stamina cost of the basic attack when enabled for the demolisher.", advanced: true, 1f, 30f); OnChangeDebounced<float>(DemolisherPrimaryAttackStamina, WeaponModifier.OnConfigDemolisherValueChanged); VanillaAbyssalKnifeBluntDamageConvert = BindServerConfig("Vanilla Weapons", "VanillaAbyssalKnifeBluntDamageConvert", value: true, "Removes slash damage from the abyssal knife and adds blunt damage instead."); AbyssalKnifeBlunt = BindServerConfig("Vanilla Weapons", "AbyssalKnifeBlunt", 20f, "Blunt damage for the abyssal knife", advanced: true, 0f, 40f); AbyssalKnifeBluntPerLevel = BindServerConfig("Vanilla Weapons", "AbyssalKnifeBluntPerLevel", 1f, "Blunt damage per level for the abyssal knife", advanced: true, 0f, 10f); OnChangeDebounced<float>(AbyssalKnifeBlunt, WeaponModifier.OnConfigAbyssalKnifeValueChanged); OnChangeDebounced<float>(AbyssalKnifeBluntPerLevel, WeaponModifier.OnConfigAbyssalKnifeValueChanged); EnableVanillaSpear = BindServerConfig("Vanilla Weapons", "VanillaFlintSpearCraftable", value: false, "Disables or enables crafting of the vanilla spear, to be used in conjuction with the VA flint spear."); EnableVanillaSpear.SettingChanged += WeaponModifier.OnConfigChangeModifyVanillaFlintSpear; EnableVanillaFlintAxe = BindServerConfig("Vanilla Weapons", "VanillaFlintAxeCraftable", value: false, "Disables or enables crafting of the vanilla flint axe, to be used in conuction with the VA flint axe."); EnableVanillaFlintAxe.SettingChanged += WeaponModifier.OnConfigChangeModifyVanillaFlintAxe; BloodHungerRegen = BindServerConfig("Status Effects", "BloodHungerRegen", 2f, "How strong the hp regen effect for blood weapons is (2 is 200% regen).", advanced: true, 0f, 5f); OnChangeDebounced<float>(BloodHungerRegen, StatusModifiers.OnConfigBloodChanged); QueenHealthRegen = BindServerConfig("Status Effects", "QueenHealthRegen", 1.3f, "How strong the hp regen effect for the queen is (1 is 100% additional regen).", advanced: true, 0f, 5f); OnChangeDebounced<float>(QueenHealthRegen, StatusModifiers.OnConfigQueenHealthRegenChanged); QueenEitrRegen = BindServerConfig("Status Effects", "QueenEitrRegen", 2.5f, "How strong the eitr regen effect for the queen is (2 is 200% additional regen).", advanced: true, 0f, 5f); OnChangeDebounced<float>(QueenEitrRegen, StatusModifiers.OnConfigQueenHealthRegenChanged); InMemoryModificationsPerTick = BindServerConfig("General", "InMemoryModificationsPerTick", 10, "How many modifications should be processed per tick.", advanced: true, 1, 100); ConfigApplyDelay = BindServerConfig("Config", "Config Apply Delay", 1f, "Delay in seconds before a changed config entry is applied in-game. Coalesces a burst of rapid edits (typing, file reloads, server sync) into a single apply. Set to 0 to apply instantly.", advanced: true, 0f, 10f); ConfigPollIntervalSeconds = BindServerConfig("Config", "Config Poll Interval", 30f, "Seconds between checks for edits to this mod's config file while a world is running. Lower reacts faster to a hand edit, higher does less disk work.", advanced: true, 1f, 300f); } internal static void SetupMainFileWatcher() { ConfigFileWatcher.Register(cfg.ConfigFilePath, OnMainConfigFileChanged); ConfigFileWatcher.Initialize(); } private static void OnMainConfigFileChanged(string _) { if (!((Object)(object)ZNet.instance == (Object)null) && ZNet.instance.IsServer()) { Logger.LogInfo("Configuration file has been changed, reloading settings."); cfg.Reload(); } } public static ConfigEntry<bool> BindServerConfig(string catagory, string key, bool value, string description, bool advanced = false) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown return cfg.Bind<bool>(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } public static ConfigEntry<int> BindServerConfig(string catagory, string key, int value, string description, bool advanced = false, int valmin = 0, int valmax = 150) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown return cfg.Bind<int>(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)(object)new AcceptableValueRange<int>(valmin, valmax), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } public static ConfigEntry<float> BindServerConfig(string catagory, string key, float value, string description, bool advanced = false, float valmin = 0f, float valmax = 150f) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown return cfg.Bind<float>(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)(object)new AcceptableValueRange<float>(valmin, valmax), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } public static ConfigEntry<string> BindServerConfig(string catagory, string key, string value, string description, bool advanced = false, AcceptableValueList<string> allowed_values = null) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown return cfg.Bind<string>(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)(object)allowed_values, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } } [BepInPlugin("MidnightsFX.ValheimArmory", "ValheimArmory", "1.32.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] internal class ValheimArmory : BaseUnityPlugin { public const string PluginGUID = "MidnightsFX.ValheimArmory"; public const string PluginName = "ValheimArmory"; public const string PluginVersion = "1.32.0"; internal static AssetBundle EmbeddedResourceBundle; private CustomLocalization Localization; public static ManualLogSource Log; public void Awake() { //IL_00d6: Unknown result type (might be due to invalid IL or missing references) new ValConfig(((BaseUnityPlugin)this).Config); Log = ((BaseUnityPlugin)this).Logger; LoadAssets(); new ValheimArmoryItems(); PrefabManager.OnVanillaPrefabsAvailable += WeaponModifier.SetupEffects; PrefabManager.OnVanillaPrefabsAvailable += WeaponModifier.ModifyVanillaHammersToWarhammers; PrefabManager.OnVanillaPrefabsAvailable += WeaponModifier.ModifyVanillaKnife; MinimapManager.OnVanillaMapDataLoaded += WeaponModifier.ToggleVanillaFlintAxe; MinimapManager.OnVanillaMapDataLoaded += WeaponModifier.ToggleVanillaFlintSpear; PrefabManager.OnPrefabsRegistered += StatusModifiers.SyncStatusEffectsToConfig; ValConfig.OnChangeDebounced<bool>(ValConfig.VanillaHammersHavePrimaryAttack, WeaponModifier.OnConfigChangeModifyHammers); ValConfig.OnChangeDebounced<bool>(ValConfig.ModHammersHavePrimaryAttack, WeaponModifier.OnConfigChangeModifyModHammers); ValConfig.OnChangeDebounced<bool>(ValConfig.VanillaAbyssalKnifeBluntDamageConvert, WeaponModifier.OnConfigChangeModifyVanillaKnife); Assembly executingAssembly = Assembly.GetExecutingAssembly(); new Harmony("MidnightsFX.ValheimArmory").PatchAll(executingAssembly); ValConfig.EnableDeferredSave(); ValConfig.SetupMainFileWatcher(); AddLocalizations(); } public void OnDestroy() { ValConfig.SavePending(); } private void AddLocalizations() { Localization = LocalizationManager.Instance.GetLocalization(); Directory.CreateDirectory(Path.Combine(Paths.ConfigPath, "ValheimArmory", "localizations")); string[] manifestResourceNames = typeof(ValheimArmory).Assembly.GetManifestResourceNames(); foreach (string text in manifestResourceNames) { if (!text.Contains("localizations")) { continue; } string text2 = Regex.Replace(ReadEmbeddedResourceFile(text), "\\/\\/.*", ""); Dictionary<string, string> internal_localization = SimpleJson.DeserializeObject<Dictionary<string, string>>(text2); string[] array = text.Split(new char[1] { '.' }); string path = Path.Combine(Paths.ConfigPath, "ValheimArmory", "localizations", array[2] + ".json"); if (File.Exists(path)) { string text3 = File.ReadAllText(path); try { Dictionary<string, string> cached_localization = SimpleJson.DeserializeObject<Dictionary<string, string>>(text3); cached_localization = UpdateLocalizationWithMissingKeys(internal_localization, cached_localization); File.WriteAllText(path, SimpleJson.SerializeObject((object)cached_localization)); string text4 = File.ReadAllText(path); Localization.AddJsonFile(array[2], text4); } catch { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Failed to update on-disk localization, it will be overwritten."); File.WriteAllText(path, text2); Localization.AddJsonFile(array[2], text2); } } else { File.WriteAllText(path, text2); Localization.AddJsonFile(array[2], text2); } ((BaseUnityPlugin)this).Logger.LogDebug((object)("Added localization: '" + array[2] + "'")); } } private Dictionary<string, string> UpdateLocalizationWithMissingKeys(Dictionary<string, string> internal_localization, Dictionary<string, string> cached_localization) { if (internal_localization.Keys != cached_localization.Keys) { List<string> list = cached_localization.Keys.ToList(); foreach (KeyValuePair<string, string> item in internal_localization) { list.Remove(item.Key); if (!cached_localization.ContainsKey(item.Key)) { ((BaseUnityPlugin)this).Logger.LogDebug((object)("Adding missing localization key " + item.Key)); cached_localization.Add(item.Key, item.Value); } } if (list.Count > 0) { ((BaseUnityPlugin)this).Logger.LogDebug((object)("Removing extra keys " + string.Join(",", list) + ".")); foreach (string item2 in list) { cached_localization.Remove(item2); } } } return cached_localization; } private void LoadAssets() { if (ValConfig.EnableDebugMode.Value) { ((BaseUnityPlugin)this).Logger.LogInfo((object)("Embedded resources: " + string.Join(",", typeof(ValheimArmory).Assembly.GetManifestResourceNames()))); } EmbeddedResourceBundle = AssetUtils.LoadAssetBundleFromResources("ValheimArmory.AssetsEmbedded.vabundle", typeof(ValheimArmory).Assembly); if (ValConfig.EnableDebugMode.Value) { ((BaseUnityPlugin)this).Logger.LogInfo((object)("Asset Names: " + string.Join(",", EmbeddedResourceBundle.GetAllAssetNames()))); } } private void UnloadAssets() { EmbeddedResourceBundle.Unload(false); } private string ReadEmbeddedResourceFile(string filename) { using Stream stream = typeof(ValheimArmory).Assembly.GetManifestResourceStream(filename); using StreamReader streamReader = new StreamReader(stream); return streamReader.ReadToEnd(); } } internal class ValheimArmoryItems { private AssetBundle EmbeddedResourceBundle = ValheimArmory.EmbeddedResourceBundle; private JotunBatchLoader Loader; public ValheimArmoryItems() { Loader = new JotunBatchLoader(); LoadArrows(); LoadBows(); LoadSwords(); LoadAxes(); LoadHammers(); LoadAtgeirs(); LoadDaggers(); LoadShields(); LoadSpears(); LoadMaces(); LoadFists(); LoadMagic(); LoadPickaxes(); LoadNonCraftables(); Loader.BatchSetup(EmbeddedResourceBundle); } private void LoadArrows() { Logger.LogInfo("Loading Arrows"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Black Metal Arrow"; itemDefinition.Category = ItemCategory.Arrows; itemDefinition.Prefab = "VAArrowGreenMetal"; itemDefinition.Icon = "arrow_greenmetal"; itemDefinition.CraftedAt = "forge"; itemDefinition.CraftAmount = 20; itemDefinition.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.blunt, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 200f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 200f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "BlackMetal", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Bone Arrow"; itemDefinition2.Category = ItemCategory.Arrows; itemDefinition2.Prefab = "VAArrowBone"; itemDefinition2.Icon = "bone_arrow"; itemDefinition2.CraftedAt = "piece_workbench"; itemDefinition2.CraftAmount = 20; itemDefinition2.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 32f, Min = 0f, Max = 200f } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "BoneFragments", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Surtling Fire Arrow"; itemDefinition3.Category = ItemCategory.Arrows; itemDefinition3.Prefab = "VAarrow_surtling_fire"; itemDefinition3.Icon = "surtlingcore_arrow"; itemDefinition3.CraftedAt = "piece_workbench"; itemDefinition3.CraftAmount = 20; itemDefinition3.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.fire, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 200f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 200f } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Obsidian", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "SurtlingCore", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Ancient Wood Arrow"; itemDefinition4.Category = ItemCategory.Arrows; itemDefinition4.Prefab = "VAArrowAncient"; itemDefinition4.Icon = "ancient_arrow"; itemDefinition4.CraftedAt = "piece_workbench"; itemDefinition4.CraftAmount = 20; itemDefinition4.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 37f, Min = 0f, Max = 200f } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "ElderBark", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition4); ItemDefinition itemDefinition5 = new ItemDefinition(); itemDefinition5.Name = "Chitin Arrow"; itemDefinition5.Category = ItemCategory.Arrows; itemDefinition5.Prefab = "VAChitinArrow"; itemDefinition5.Icon = "arrow_chitin"; itemDefinition5.CraftedAt = "piece_workbench"; itemDefinition5.CraftAmount = 20; itemDefinition5.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 200f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 200f } } }; itemDefinition5.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Chitin", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition5); ItemDefinition itemDefinition6 = new ItemDefinition(); itemDefinition6.Name = "Wood Bolt"; itemDefinition6.Category = ItemCategory.Arrows; itemDefinition6.Prefab = "VABoltWood"; itemDefinition6.Icon = "bolt_wood"; itemDefinition6.CraftedAt = "piece_workbench"; itemDefinition6.CraftAmount = 20; itemDefinition6.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 22f, Min = 0f, Max = 200f } } }; itemDefinition6.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition6); ItemDefinition itemDefinition7 = new ItemDefinition(); itemDefinition7.Name = "Corewood Bolt"; itemDefinition7.Category = ItemCategory.Arrows; itemDefinition7.Prefab = "VABoltCoreWood"; itemDefinition7.Icon = "bolt_corewood"; itemDefinition7.CraftedAt = "piece_workbench"; itemDefinition7.CraftAmount = 20; itemDefinition7.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 37f, Min = 0f, Max = 200f } } }; itemDefinition7.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "RoundLog", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition7); ItemDefinition itemDefinition8 = new ItemDefinition(); itemDefinition8.Name = "Bronze Bolt"; itemDefinition8.Category = ItemCategory.Arrows; itemDefinition8.Prefab = "VAbolt_bronze"; itemDefinition8.Icon = "bronze_bolt"; itemDefinition8.CraftedAt = "forge"; itemDefinition8.CraftAmount = 20; itemDefinition8.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 32f, Min = 0f, Max = 200f } } }; itemDefinition8.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Bronze", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition8); ItemDefinition itemDefinition9 = new ItemDefinition(); itemDefinition9.Name = "Poison Bolt"; itemDefinition9.Category = ItemCategory.Arrows; itemDefinition9.Prefab = "VAbolt_poison"; itemDefinition9.Icon = "poison_bolt"; itemDefinition9.CraftedAt = "forge"; itemDefinition9.CraftAmount = 20; itemDefinition9.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.poison, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 200f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 200f } } }; itemDefinition9.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Iron", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Ooze", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition9); ItemDefinition itemDefinition10 = new ItemDefinition(); itemDefinition10.Name = "Obsidian Bolt"; itemDefinition10.Category = ItemCategory.Arrows; itemDefinition10.Prefab = "VAObsidianBolt"; itemDefinition10.Icon = "obsidian_bolt"; itemDefinition10.CraftedAt = "piece_workbench"; itemDefinition10.CraftAmount = 20; itemDefinition10.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 200f } } }; itemDefinition10.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Obsidian", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition10); ItemDefinition itemDefinition11 = new ItemDefinition(); itemDefinition11.Name = "Frost Bolt"; itemDefinition11.Category = ItemCategory.Arrows; itemDefinition11.Prefab = "VAbolt_frost"; itemDefinition11.Icon = "ice_bolt"; itemDefinition11.CraftedAt = "forge"; itemDefinition11.CraftAmount = 20; itemDefinition11.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.frost, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 200f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 200f } } }; itemDefinition11.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Silver", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FreezeGland", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition11); ItemDefinition itemDefinition12 = new ItemDefinition(); itemDefinition12.Name = "Surtling Core Bolt"; itemDefinition12.Category = ItemCategory.Arrows; itemDefinition12.Prefab = "VASurtlingBolt"; itemDefinition12.Icon = "surtling_bolt"; itemDefinition12.CraftedAt = "forge"; itemDefinition12.CraftAmount = 20; itemDefinition12.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.fire, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 200f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 200f } } }; itemDefinition12.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Iron", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "SurtlingCore", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition12); ItemDefinition itemDefinition13 = new ItemDefinition(); itemDefinition13.Name = "Needle Bolt"; itemDefinition13.Category = ItemCategory.Arrows; itemDefinition13.Prefab = "VABoltNeedle"; itemDefinition13.Icon = "needle_bolt"; itemDefinition13.CraftedAt = "piece_workbench"; itemDefinition13.CraftAmount = 20; itemDefinition13.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 56f, Min = 0f, Max = 200f } } }; itemDefinition13.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Needle", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition13); ItemDefinition itemDefinition14 = new ItemDefinition(); itemDefinition14.Name = "Fire Bolt"; itemDefinition14.Category = ItemCategory.Arrows; itemDefinition14.Prefab = "VAFireBolt"; itemDefinition14.Icon = "surtling_bolt"; itemDefinition14.CraftedAt = "piece_workbench"; itemDefinition14.CraftAmount = 20; itemDefinition14.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 22f, Min = 0f, Max = 200f } }, { ItemStat.fire, new ItemStatConfig { Default_value = 34f, Min = 0f, Max = 200f } } }; itemDefinition14.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Resin", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Feathers", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition14); } private void LoadBows() { Logger.LogInfo("Loading Bows"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Blackmetal Bow"; itemDefinition.Category = ItemCategory.Bows; itemDefinition.Prefab = "VABlackmetal_bow"; itemDefinition.Icon = "blackmetal_bow"; itemDefinition.CraftedAt = "forge"; itemDefinition.UpgraderResource = "Upgrader4Weapon"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 62f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 150f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 300f } }, { ItemStat.draw_stamina_drain, new ItemStatConfig { Default_value = 12f, Min = 1f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.bow_draw_speed, new ItemStatConfig { Default_value = 2f, Min = 0.01f, Max = 2f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 120f } }, { ItemStat.projectile_accuracy_max, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 100f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "FineWood", Amount = 15, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "BlackMetal", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 5, UpgradeCost = 5 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Carapace Blood Bow"; itemDefinition2.Category = ItemCategory.Bows; itemDefinition2.Prefab = "VAHeavy_Blood_Bone_Bow"; itemDefinition2.Icon = "blood_bone_bow_heavy"; itemDefinition2.CraftedAt = "piece_magetable"; itemDefinition2.UpgraderResource = "Upgrader5Weapon"; itemDefinition2.CraftAmount = 1; itemDefinition2.HybridSkills = new List<SkillType> { (SkillType)10 }; itemDefinition2.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 92f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 24f, Min = 0f, Max = 200f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 150f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 300f } }, { ItemStat.draw_stamina_drain, new ItemStatConfig { Default_value = 6f, Min = 1f, Max = 50f } }, { ItemStat.primary_attack_flat_health_cost, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_percent_health_cost, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.bow_draw_speed, new ItemStatConfig { Default_value = 2f, Min = 0.01f, Max = 2f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 120f } }, { ItemStat.projectile_accuracy_max, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 100f } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 14, UpgradeCost = 7 }, new RecipeIngredient { Prefab = "Iron", Amount = 10, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "Carapace", Amount = 24, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "TrophyTick", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Eitr", Amount = 0, UpgradeCost = 10 } } }; Loader.AddDefinition(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Blood Bone Bow"; itemDefinition3.Category = ItemCategory.Bows; itemDefinition3.Prefab = "VABlood_bone_bow"; itemDefinition3.Icon = "bone_bow"; itemDefinition3.CraftedAt = "forge"; itemDefinition3.UpgraderResource = "Upgrader3Weapon"; itemDefinition3.CraftAmount = 1; itemDefinition3.HybridSkills = new List<SkillType> { (SkillType)10 }; itemDefinition3.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 18f, Min = 0f, Max = 200f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 150f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 300f } }, { ItemStat.draw_stamina_drain, new ItemStatConfig { Default_value = 4f, Min = 1f, Max = 50f } }, { ItemStat.primary_attack_flat_health_cost, new ItemStatConfig { Default_value = 8f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_percent_health_cost, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.bow_draw_speed, new ItemStatConfig { Default_value = 2f, Min = 0.01f, Max = 2f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 120f } }, { ItemStat.projectile_accuracy_max, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 100f } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "ElderBark", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Silver", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "BoneFragments", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "TrophyUlv", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Bronze Arbelist"; itemDefinition4.Category = ItemCategory.Bows; itemDefinition4.Prefab = "VAArbalistBronze"; itemDefinition4.Icon = "bronze_crossbow_upright"; itemDefinition4.CraftedAt = "forge"; itemDefinition4.UpgraderResource = "Upgrader3Weapon"; itemDefinition4.CraftAmount = 1; itemDefinition4.Craftable = false; itemDefinition4.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 140f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 300f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.crossbow_reload_speed, new ItemStatConfig { Default_value = 3.5f, Min = 0.01f, Max = 3.5f } }, { ItemStat.crossbow_reload_stamina_drain, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "ElderBark", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Bronze", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "JuteRed", Amount = 5, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Silver", Amount = 2, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition4); ItemDefinition itemDefinition5 = new ItemDefinition(); itemDefinition5.Name = "Iron Crossbow"; itemDefinition5.Category = ItemCategory.Bows; itemDefinition5.Prefab = "VACrossbowIron"; itemDefinition5.Icon = "iron_crossbow"; itemDefinition5.CraftedAt = "forge"; itemDefinition5.UpgraderResource = "Upgrader2Weapon"; itemDefinition5.CraftAmount = 1; itemDefinition5.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 120f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 300f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.crossbow_reload_speed, new ItemStatConfig { Default_value = 3.5f, Min = 0.01f, Max = 3.5f } }, { ItemStat.crossbow_reload_stamina_drain, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } } }; itemDefinition5.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "ElderBark", Amount = 5, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "FineWood", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Iron", Amount = 10, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "IronNails", Amount = 2, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition5); ItemDefinition itemDefinition6 = new ItemDefinition(); itemDefinition6.Name = "Silver Crossbow"; itemDefinition6.Category = ItemCategory.Bows; itemDefinition6.Prefab = "VACrossbowSilver"; itemDefinition6.Icon = "silver_crossbow"; itemDefinition6.CraftedAt = "forge"; itemDefinition6.UpgraderResource = "Upgrader3Weapon"; itemDefinition6.CraftAmount = 1; itemDefinition6.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 140f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 300f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 300f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 300f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.crossbow_reload_speed, new ItemStatConfig { Default_value = 3.5f, Min = 0.01f, Max = 3.5f } }, { ItemStat.crossbow_reload_stamina_drain, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } } }; itemDefinition6.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Guck", Amount = 5, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "ElderBark", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Silver", Amount = 12, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "IronNails", Amount = 2, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition6); ItemDefinition itemDefinition7 = new ItemDefinition(); itemDefinition7.Name = "Blackmetal Crossbow"; itemDefinition7.Category = ItemCategory.Bows; itemDefinition7.Prefab = "VACrossbowBlackmetal"; itemDefinition7.Icon = "blackmetal_crossbow"; itemDefinition7.CraftedAt = "forge"; itemDefinition7.UpgraderResource = "Upgrader4Weapon"; itemDefinition7.CraftAmount = 1; itemDefinition7.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 180f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 300f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.crossbow_reload_speed, new ItemStatConfig { Default_value = 3.5f, Min = 0.01f, Max = 3.5f } }, { ItemStat.crossbow_reload_stamina_drain, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } } }; itemDefinition7.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "FineWood", Amount = 16, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "BlackMetal", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 6, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "Iron", Amount = 4, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition7); ItemDefinition itemDefinition8 = new ItemDefinition(); itemDefinition8.Name = "Eikthyrs Bow"; itemDefinition8.Category = ItemCategory.Bows; itemDefinition8.Prefab = "VAAntler_Bow"; itemDefinition8.Icon = "antler_bow"; itemDefinition8.CraftedAt = "piece_workbench"; itemDefinition8.UpgraderResource = "Upgrader1Weapon"; itemDefinition8.CraftAmount = 1; itemDefinition8.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 120f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 90f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.draw_stamina_drain, new ItemStatConfig { Default_value = 6f, Min = 1f, Max = 50f } }, { ItemStat.bow_draw_speed, new ItemStatConfig { Default_value = 2.5f, Min = 0.01f, Max = 2.5f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 300f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 120f } }, { ItemStat.projectile_accuracy_max, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 100f } } }; itemDefinition8.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "FineWood", Amount = 15, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Resin", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "HardAntler", Amount = 3, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "TrophyEikthyr", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition8); ItemDefinition itemDefinition9 = new ItemDefinition(); itemDefinition9.Name = "Bronze Crossbow"; itemDefinition9.Category = ItemCategory.Bows; itemDefinition9.Prefab = "VACrossbowBronze"; itemDefinition9.Icon = "bronze_crossbow2"; itemDefinition9.CraftedAt = "forge"; itemDefinition9.UpgraderResource = "Upgrader1Weapon"; itemDefinition9.CraftAmount = 1; itemDefinition9.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 150f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 150f, Min = 0f, Max = 300f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 300f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.crossbow_reload_speed, new ItemStatConfig { Default_value = 3.5f, Min = 0.01f, Max = 3.5f } }, { ItemStat.crossbow_reload_stamina_drain, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } } }; itemDefinition9.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "FineWood", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "RoundLog", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Bronze", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "DeerHide", Amount = 2, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition9); ItemDefinition itemDefinition10 = new ItemDefinition(); itemDefinition10.Name = "Wood Crossbow"; itemDefinition10.Category = ItemCategory.Bows; itemDefinition10.Prefab = "VACrossbowWood"; itemDefinition10.Icon = "woodCrossbow"; itemDefinition10.CraftedAt = "piece_workbench"; itemDefinition10.UpgraderResource = "Upgrader0Weapon"; itemDefinition10.CraftAmount = 1; itemDefinition10.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 150f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 150f, Min = 0f, Max = 300f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 300f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.crossbow_reload_speed, new ItemStatConfig { Default_value = 7f, Min = 0.01f, Max = 10f } }, { ItemStat.crossbow_reload_stamina_drain, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } } }; itemDefinition10.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Wood", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "Resin", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "DeerHide", Amount = 2, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition10); ItemDefinition itemDefinition11 = new ItemDefinition(); itemDefinition11.Name = "Elders Reach"; itemDefinition11.Category = ItemCategory.Bows; itemDefinition11.Prefab = "VACrossbowElder"; itemDefinition11.Icon = "elder_crossbow"; itemDefinition11.CraftedAt = "forge"; itemDefinition11.UpgraderResource = "Upgrader2Weapon"; itemDefinition11.CraftAmount = 1; itemDefinition11.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 7f, Min = 0f, Max = 300f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 150f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 150f, Min = 0f, Max = 300f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 300f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.crossbow_reload_speed, new ItemStatConfig { Default_value = 3.5f, Min = 0.01f, Max = 3.5f } }, { ItemStat.crossbow_reload_stamina_drain, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } } }; itemDefinition11.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Bronze", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "RoundLog", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "CryptKey", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyTheElder", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition11); ItemDefinition itemDefinition12 = new ItemDefinition(); itemDefinition12.Name = "Moder Crossbow"; itemDefinition12.Category = ItemCategory.Bows; itemDefinition12.Prefab = "VACrossbowModer"; itemDefinition12.Icon = "moder_crossbow"; itemDefinition12.CraftedAt = "forge"; itemDefinition12.UpgraderResource = "Upgrader4Weapon"; itemDefinition12.CraftAmount = 1; itemDefinition12.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 150f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.frost, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 300f } }, { ItemStat.frost_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 150f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 300f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.crossbow_reload_speed, new ItemStatConfig { Default_value = 3.5f, Min = 0.01f, Max = 3.5f } }, { ItemStat.crossbow_reload_stamina_drain, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } } }; itemDefinition12.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "ElderBark", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Obsidian", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "DragonTear", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyDragonQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Silver", Amount = 0, UpgradeCost = 6 } } }; Loader.AddDefinition(itemDefinition12); ItemDefinition itemDefinition13 = new ItemDefinition(); itemDefinition13.Name = "Queens Greatbow"; itemDefinition13.Category = ItemCategory.Bows; itemDefinition13.Prefab = "VAQueen_bow"; itemDefinition13.Icon = "queen_bow"; itemDefinition13.CraftedAt = "blackforge"; itemDefinition13.UpgraderResource = "Upgrader6Weapon"; itemDefinition13.CraftAmount = 1; itemDefinition13.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.pierce, new ItemStatConfig { Default_value = 72f, Min = 0f, Max = 200f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 90f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 99f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 50f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 300f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.draw_stamina_drain, new ItemStatConfig { Default_value = 12f, Min = 1f, Max = 50f } }, { ItemStat.bow_draw_speed, new ItemStatConfig { Default_value = 3f, Min = 0.01f, Max = 3f } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 120f } }, { ItemStat.projectile_accuracy_max, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 100f } } }; itemDefinition13.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Eitr", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "JuteBlue", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophySeekerQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Carapace", Amount = 0, UpgradeCost = 4 } } }; Loader.AddDefinition(itemDefinition13); } private void LoadSwords() { Logger.LogInfo("Loading Swords"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Faders Sword"; itemDefinition.Category = ItemCategory.Swords; itemDefinition.Prefab = "VASwordFader"; itemDefinition.Icon = "fader_sword"; itemDefinition.CraftedAt = "blackforge"; itemDefinition.UpgraderResource = "Upgrader7Weapon"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.slash, new ItemStatConfig { Default_value = 145f, Min = 0f, Max = 250f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.fire, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 250f } }, { ItemStat.fire_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 250f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 18f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, Min = 1f, Max = 50f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "FlametalNew", Amount = 30, UpgradeCost = 30 }, new RecipeIngredient { Prefab = "CharredBone", Amount = 30, UpgradeCost = 30 }, new RecipeIngredient { Prefab = "TrophyFader", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FaderDrop", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Faders Greatsword"; itemDefinition2.Category = ItemCategory.Swords; itemDefinition2.Prefab = "VAGreatswordFader"; itemDefinition2.Icon = "fader_greatsword"; itemDefinition2.CraftedAt = "blackforge"; itemDefinition2.UpgraderResource = "Upgrader7Weapon"; itemDefinition2.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.slash, new ItemStatConfig { Default_value = 180f, Min = 0f, Max = 250f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.fire, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 250f } }, { ItemStat.fire_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 250f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 18f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, Min = 1f, Max = 50f } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "FlametalNew", Amount = 40, UpgradeCost = 20 }, new RecipeIngredient { Prefab = "CharredBone", Amount = 20, UpgradeCost = 20 }, new RecipeIngredient { Prefab = "TrophyFader", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FaderDrop", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Blackmetal Greatsword"; itemDefinition3.Category = ItemCategory.Swords; itemDefinition3.Prefab = "VABlackmetal_greatsword"; itemDefinition3.Icon = "blackmetal_greatsword"; itemDefinition3.CraftedAt = "forge"; itemDefinition3.UpgraderResource = "Upgrader4Weapon"; itemDefinition3.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.slash, new ItemStatConfig { Default_value = 125f, Min = 0f, Max = 250f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 18f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 36f, Min = 1f, Max = 50f } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "BlackMetal", Amount = 30, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "FineWood", Amount = 6, UpgradeCost = 3 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Abyssal Sword"; itemDefinition4.Category = ItemCategory.Swords; itemDefinition4.Prefab = "VASwordChitin"; itemDefinition4.Icon = "chitin_sword"; itemDefinition4.CraftedAt = "piece_workbench"; itemDefinition4.UpgraderResource = "Upgrader3Weapon"; itemDefinition4.CraftAmount = 1; itemDefinition4.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.blunt, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 90f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 120f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 18f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 10f, Min = 1f, Max = 30f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 20f, Min = 1f, Max = 50f } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "FineWood", Amount = 2, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "Chitin", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "DeerHide", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition4); ItemDefinition itemDefinition5 = new ItemDefinition(); itemDefinition5.Name = "Eikthyrs Sword"; itemDefinition5.Category = ItemCategory.Swords; itemDefinition5.Prefab = "VAAntler_Sword"; itemDefinition5.Icon = "antler_sword"; itemDefinition5.CraftedAt = "piece_workbench"; itemDefinition5.UpgraderResource = "Upgrader1Weapon"; itemDefinition5.CraftAmount = 1; itemDefinition5.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.slash, new ItemStatConfig { Default_value = 16f, Min = 0f, Max = 90f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 8f, Min = 0f, Max = 90f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 120f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 8f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 8f, Min = 1f, Max = 30f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 16f, Min = 1f, Max = 50f } } }; itemDefinition5.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "FineWood", Amount = 3, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "Resin", Amount = 16, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "HardAntler", Amount = 3, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "TrophyEikthyr", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition5); ItemDefinition itemDefinition6 = new ItemDefinition(); itemDefinition6.Name = "Elders Balance"; itemDefinition6.Category = ItemCategory.Swords; itemDefinition6.Prefab = "VAVine_Sword"; itemDefinition6.Icon = "vine_sword"; itemDefinition6.CraftedAt = "forge"; itemDefinition6.UpgraderResource = "Upgrader2Weapon"; itemDefinition6.CraftAmount = 1; itemDefinition6.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.slash, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 90f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 120f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 8f, Min = 1f, Max = 30f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 16f, Min = 1f, Max = 50f } } }; itemDefinition6.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Bronze", Amount = 2, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "Stone", Amount = 16, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "CryptKey", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyTheElder", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "RoundLog", Amount = 0, UpgradeCost = 4 } } }; Loader.AddDefinition(itemDefinition6); ItemDefinition itemDefinition7 = new ItemDefinition(); itemDefinition7.Name = "Moders Grasp"; itemDefinition7.Category = ItemCategory.Swords; itemDefinition7.Prefab = "VASwordModer"; itemDefinition7.Icon = "moder_sword"; itemDefinition7.CraftedAt = "forge"; itemDefinition7.UpgraderResource = "Upgrader4Weapon"; itemDefinition7.CraftAmount = 1; itemDefinition7.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.slash, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 90f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 90f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.frost, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 120f } }, { ItemStat.frost_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 12f, Min = 1f, Max = 30f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 24f, Min = 1f, Max = 50f } } }; itemDefinition7.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "ElderBark", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Obsidian", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "DragonTear", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyDragonQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Silver", Amount = 0, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "JuteRed", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition7); ItemDefinition itemDefinition8 = new ItemDefinition(); itemDefinition8.Name = "Moders Greatsword"; itemDefinition8.Category = ItemCategory.Swords; itemDefinition8.Prefab = "VAModer_greatsword"; itemDefinition8.Icon = "moder_greatsword"; itemDefinition8.CraftedAt = "forge"; itemDefinition8.UpgraderResource = "Upgrader4Weapon"; itemDefinition8.CraftAmount = 1; itemDefinition8.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.slash, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 90f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 90f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.frost, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 120f } }, { ItemStat.frost_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 48f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 17f, Min = 1f, Max = 30f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 34f, Min = 1f, Max = 50f } } }; itemDefinition8.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "Crystal", Amount = 25, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Obsidian", Amount = 15, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "DragonTear", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyDragonQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Silver", Amount = 0, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "JuteRed", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition8); ItemDefinition itemDefinition9 = new ItemDefinition(); itemDefinition9.Name = "Bronze Greatsword"; itemDefinition9.Category = ItemCategory.Swords; itemDefinition9.Prefab = "VAbronze_greatsword"; itemDefinition9.Icon = "bronze_greatsword_reforged"; itemDefinition9.CraftedAt = "forge"; itemDefinition9.UpgraderResource = "Upgrader1Weapon"; itemDefinition9.CraftAmount = 1; itemDefinition9.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.slash, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 160f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 16f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 12f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 24f, Min = 1f, Max = 50f } } }; itemDefinition9.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "RoundLog", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Bronze", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "DeerHide", Amount = 3, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition9); ItemDefinition itemDefinition10 = new ItemDefinition(); itemDefinition10.Name = "Iron Greatsword"; itemDefinition10.Category = ItemCategory.Swords; itemDefinition10.Prefab = "VAiron_greatsword"; itemDefinition10.Icon = "iron_greatsword_reforged"; itemDefinition10.CraftedAt = "forge"; itemDefinition10.UpgraderResource = "Upgrader2Weapon"; itemDefinition10.CraftAmount = 1; itemDefinition10.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.slash, new ItemStatConfig { Default_value = 75f, Min = 0f, Max = 250f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 160f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 28f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 28f, Min = 1f, Max = 50f } } }; itemDefinition10.Recipe = new RecipeDefinition { RecipeItems = new List<RecipeIngredient> { new RecipeIngredient { Prefab = "ElderBark", Amount = 15, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Iron", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 4, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition10); ItemDefinition itemDefinition11 = new ItemDefinition(); itemDefinition11.Name = "Silver Greatsword"; itemDefinition11.Category = ItemCategory.Swords; itemDefinition11.Prefab = "VAsilver_greatsword"; itemDefinition11.Icon = "silver_greatsword_reforged"; itemDefinition11.CraftedAt = "forge"; itemDefinition11.UpgraderResource = "Upgrader3Weapon"; itemDefinition11.CraftAmount = 1; itemDefinition11.ModifableStats = new Dictionary<ItemStat, ItemStatConfig> { { ItemStat.slash, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 300f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.at