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; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using SimpleJson; using UnityEngine; using ValheimArmory.Common; using ValheimArmory.common; [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("0.0.1.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.1.0")] namespace ValheimArmory { 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 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.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 { 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.pierce, new ItemStatConfig { Default_value = 32f, Min = 0f, Max = 200f } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List { 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.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 { 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.pierce, new ItemStatConfig { Default_value = 37f, Min = 0f, Max = 200f } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List { 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.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 { 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.pierce, new ItemStatConfig { Default_value = 22f, Min = 0f, Max = 200f } } }; itemDefinition6.Recipe = new RecipeDefinition { RecipeItems = new List { 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.pierce, new ItemStatConfig { Default_value = 37f, Min = 0f, Max = 200f } } }; itemDefinition7.Recipe = new RecipeDefinition { RecipeItems = new List { 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.pierce, new ItemStatConfig { Default_value = 32f, Min = 0f, Max = 200f } } }; itemDefinition8.Recipe = new RecipeDefinition { RecipeItems = new List { 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.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 { 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.pierce, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 200f } } }; itemDefinition10.Recipe = new RecipeDefinition { RecipeItems = new List { 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.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 { 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.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 { 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.pierce, new ItemStatConfig { Default_value = 56f, Min = 0f, Max = 200f } } }; itemDefinition13.Recipe = new RecipeDefinition { RecipeItems = new List { 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.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 { 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.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition4.Craftable = false; itemDefinition4.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition5.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition6.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition7.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition8.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition9.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition10.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition11.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition12.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition13.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition4.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition5.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition6.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition7.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition8.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition9.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition10.ModifableStats = new Dictionary { { 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 { 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.CraftAmount = 1; itemDefinition11.ModifableStats = new Dictionary { { 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.attack_force, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 160f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 40f, 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 = 16f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 32f, Min = 1f, Max = 50f } } }; itemDefinition11.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Silver", Amount = 45, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Iron", Amount = 5, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 3, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition11); ItemDefinition itemDefinition12 = new ItemDefinition(); itemDefinition12.Name = "Bonemasses Sword"; itemDefinition12.Category = ItemCategory.Swords; itemDefinition12.Prefab = "VABonemassSword"; itemDefinition12.Icon = "bonemass_sword"; itemDefinition12.CraftedAt = "forge"; itemDefinition12.CraftAmount = 1; itemDefinition12.ModifableStats = new Dictionary { { ItemStat.slash, new ItemStatConfig { Default_value = 65f, Min = 0f, Max = 250f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 250f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 160f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 45f, 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 = 15f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, Min = 1f, Max = 50f } } }; itemDefinition12.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "WitheredBone", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Iron", Amount = 22, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "Wishbone", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyBonemass", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "ElderBark", Amount = 0, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition12); ItemDefinition itemDefinition13 = new ItemDefinition(); itemDefinition13.Name = "Bonemasses Greatsword"; itemDefinition13.Category = ItemCategory.Swords; itemDefinition13.Prefab = "VABonemassGreatsword"; itemDefinition13.Icon = "bonemass_greatsword"; itemDefinition13.CraftedAt = "forge"; itemDefinition13.CraftAmount = 1; itemDefinition13.ModifableStats = new Dictionary { { 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.poison, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 250f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 160f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 36f, 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 = 15f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, Min = 1f, Max = 50f } } }; itemDefinition13.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "WitheredBone", Amount = 15, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Iron", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "Wishbone", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyBonemass", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "ElderBark", Amount = 0, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition13); ItemDefinition itemDefinition14 = new ItemDefinition(); itemDefinition14.Name = "Yagluths Greatsword"; itemDefinition14.Category = ItemCategory.Swords; itemDefinition14.Prefab = "VAYagluth_greatsword"; itemDefinition14.Icon = "yagluth_greatsword"; itemDefinition14.CraftedAt = "forge"; itemDefinition14.CraftAmount = 1; itemDefinition14.ModifableStats = new Dictionary { { ItemStat.slash, new ItemStatConfig { Default_value = 125f, Min = 0f, Max = 250f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 6f, 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.attack_force, new ItemStatConfig { Default_value = 55f, Min = 0f, Max = 160f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 49f, 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 } } }; itemDefinition14.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "BlackMetal", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Iron", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "YagluthDrop", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyGoblinKing", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Tar", Amount = 0, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition14); ItemDefinition itemDefinition15 = new ItemDefinition(); itemDefinition15.Name = "Flint Sword"; itemDefinition15.Category = ItemCategory.Swords; itemDefinition15.Prefab = "VAFlint_Sword"; itemDefinition15.Icon = "flint_sword"; itemDefinition15.CraftedAt = "piece_workbench"; itemDefinition15.CraftAmount = 1; itemDefinition15.ModifableStats = new Dictionary { { ItemStat.slash, new ItemStatConfig { Default_value = 15f, Min = 0f, Max = 90f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 4f, 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 = 6f, Min = 1f, Max = 30f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 12f, Min = 1f, Max = 50f } } }; itemDefinition15.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Flint", Amount = 6, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition15); ItemDefinition itemDefinition16 = new ItemDefinition(); itemDefinition16.Name = "Flint Greatsword"; itemDefinition16.Category = ItemCategory.Swords; itemDefinition16.Prefab = "VAFlint_greatsword"; itemDefinition16.Icon = "flint_greatsword"; itemDefinition16.CraftedAt = "piece_workbench"; itemDefinition16.CraftAmount = 1; itemDefinition16.ModifableStats = new Dictionary { { ItemStat.slash, new ItemStatConfig { Default_value = 25f, 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 = 14f, 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 = 10f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 20f, Min = 1f, Max = 50f } } }; itemDefinition16.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Flint", Amount = 9, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition16); ItemDefinition itemDefinition17 = new ItemDefinition(); itemDefinition17.Name = "Queen Greatsword"; itemDefinition17.Category = ItemCategory.Swords; itemDefinition17.Prefab = "VAQueen_greatsword"; itemDefinition17.Icon = "queen_greatsword"; itemDefinition17.CraftedAt = "blackforge"; itemDefinition17.CraftAmount = 1; itemDefinition17.ModifableStats = new Dictionary { { ItemStat.slash, new ItemStatConfig { Default_value = 125f, Min = 0f, Max = 250f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 250f } }, { 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 = 55f, Min = 0f, Max = 160f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 62f, 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 = 20f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 40f, Min = 1f, Max = 50f } } }; itemDefinition17.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Eitr", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "JuteBlue", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "TrophySeekerQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Carapace", Amount = 0, UpgradeCost = 8 } } }; Loader.AddDefinition(itemDefinition17); ItemDefinition itemDefinition18 = new ItemDefinition(); itemDefinition18.Name = "Queen Sword"; itemDefinition18.Category = ItemCategory.Swords; itemDefinition18.Prefab = "VASwordQueen"; itemDefinition18.Icon = "queen_sword"; itemDefinition18.CraftedAt = "blackforge"; itemDefinition18.CraftAmount = 1; itemDefinition18.ModifableStats = new Dictionary { { ItemStat.slash, new ItemStatConfig { Default_value = 95f, Min = 0f, Max = 250f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 250f } }, { 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 = 40f, Min = 0f, Max = 160f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 52f, 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 = 16f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 32f, Min = 1f, Max = 50f } } }; itemDefinition18.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 3, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "Eitr", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "JuteBlue", Amount = 3, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "TrophySeekerQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Carapace", Amount = 0, UpgradeCost = 6 } } }; Loader.AddDefinition(itemDefinition18); } private void LoadAxes() { Logger.LogInfo("Loading Axes"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Flint axe"; itemDefinition.Category = ItemCategory.Axes; itemDefinition.Prefab = "VAFlint_Axe"; itemDefinition.Icon = "flint_axe"; itemDefinition.CraftedAt = "piece_workbench"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, 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 = 6f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 12f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.15f, Max = 0f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Flint", Amount = 6, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Flint greataxe"; itemDefinition2.Category = ItemCategory.Axes; itemDefinition2.Prefab = "VAFlint_greataxe"; itemDefinition2.Icon = "flint_greataxe"; itemDefinition2.CraftedAt = "piece_workbench"; itemDefinition2.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 14f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 70f, 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 = 6f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Flint", Amount = 9, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Flint dualaxes"; itemDefinition3.Category = ItemCategory.Axes; itemDefinition3.Prefab = "VAFlint_dualaxes"; itemDefinition3.Icon = "flint_dualaxes"; itemDefinition3.CraftedAt = "piece_workbench"; itemDefinition3.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 6f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 10, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Flint", Amount = 12, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Bronze Lumber Axe"; itemDefinition4.Category = ItemCategory.Axes; itemDefinition4.Prefab = "VAbronze_battleaxe"; itemDefinition4.Icon = "bronze_axe_rebuild"; itemDefinition4.CraftedAt = "forge"; itemDefinition4.CraftAmount = 1; itemDefinition4.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 6f, IsInt = true } }, { 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.chop, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 2.5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 18f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 70f, 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 = 7f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "RoundLog", Amount = 20, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Bronze", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "DeerHide", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition4); ItemDefinition itemDefinition5 = new ItemDefinition(); itemDefinition5.Name = "Bronze dualaxes"; itemDefinition5.Category = ItemCategory.Axes; itemDefinition5.Prefab = "VABronze_dualaxes"; itemDefinition5.Icon = "bronze_dualaxes"; itemDefinition5.CraftedAt = "forge"; itemDefinition5.CraftAmount = 1; itemDefinition5.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 16f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 16f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition5.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Bronze", Amount = 16, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 4, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition5); ItemDefinition itemDefinition6 = new ItemDefinition(); itemDefinition6.Name = "Iron dualaxes"; itemDefinition6.Category = ItemCategory.Axes; itemDefinition6.Prefab = "VAIron_dualaxes"; itemDefinition6.Icon = "iron_dualaxes"; itemDefinition6.CraftedAt = "forge"; itemDefinition6.CraftAmount = 1; itemDefinition6.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 21f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 18f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition6.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "ElderBark", Amount = 8, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Iron", Amount = 40, UpgradeCost = 20 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 4, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition6); ItemDefinition itemDefinition7 = new ItemDefinition(); itemDefinition7.Name = "Bonemasses Axe"; itemDefinition7.Category = ItemCategory.Axes; itemDefinition7.Prefab = "VABone_axe"; itemDefinition7.Icon = "bonemass_axe"; itemDefinition7.CraftedAt = "forge"; itemDefinition7.CraftAmount = 1; itemDefinition7.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition7.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "WitheredBone", Amount = 6, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Iron", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Wishbone", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyBonemass", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition7); ItemDefinition itemDefinition8 = new ItemDefinition(); itemDefinition8.Name = "Bonemasses Dualaxes"; itemDefinition8.Category = ItemCategory.Axes; itemDefinition8.Prefab = "VABone_dualaxes"; itemDefinition8.Icon = "bonerot_dualaxes"; itemDefinition8.CraftedAt = "forge"; itemDefinition8.CraftAmount = 1; itemDefinition8.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 19f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition8.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "WitheredBone", Amount = 12, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Iron", Amount = 40, UpgradeCost = 20 }, new RecipeIngredient { Prefab = "Wishbone", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyBonemass", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 4 } } }; Loader.AddDefinition(itemDefinition8); ItemDefinition itemDefinition9 = new ItemDefinition(); itemDefinition9.Name = "Crystal Axe"; itemDefinition9.Category = ItemCategory.Axes; itemDefinition9.Prefab = "VAcrystal_axe"; itemDefinition9.Icon = "silver_axe_1h_icon"; itemDefinition9.CraftedAt = "forge"; itemDefinition9.CraftAmount = 1; itemDefinition9.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition9.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "ElderBark", Amount = 15, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "Silver", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Crystal", Amount = 8, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition9); ItemDefinition itemDefinition10 = new ItemDefinition(); itemDefinition10.Name = "Crystal dualaxes"; itemDefinition10.Category = ItemCategory.Axes; itemDefinition10.Prefab = "VACrystal_dualaxes"; itemDefinition10.Icon = "crystal_dualaxes"; itemDefinition10.CraftedAt = "forge"; itemDefinition10.CraftAmount = 1; itemDefinition10.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 20f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition10.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "ElderBark", Amount = 30, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Silver", Amount = 50, UpgradeCost = 20 }, new RecipeIngredient { Prefab = "Crystal", Amount = 16, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition10); ItemDefinition itemDefinition11 = new ItemDefinition(); itemDefinition11.Name = "Dragonfrost Axe"; itemDefinition11.Category = ItemCategory.Axes; itemDefinition11.Prefab = "VAModer_Axe"; itemDefinition11.Icon = "moder_axe_1h"; itemDefinition11.CraftedAt = "forge"; itemDefinition11.CraftAmount = 1; itemDefinition11.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.frost, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.frost_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition11.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "DragonTear", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyDragonQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Silver", Amount = 15, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "FineWood", Amount = 8, UpgradeCost = 4 } } }; Loader.AddDefinition(itemDefinition11); ItemDefinition itemDefinition12 = new ItemDefinition(); itemDefinition12.Name = "Moder dualaxes"; itemDefinition12.Category = ItemCategory.Axes; itemDefinition12.Prefab = "VAModer_dualaxes"; itemDefinition12.Icon = "moder_dualaxes"; itemDefinition12.CraftedAt = "forge"; itemDefinition12.CraftAmount = 1; itemDefinition12.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.frost, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.frost_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 20f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition12.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "DragonTear", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyDragonQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Silver", Amount = 30, UpgradeCost = 30 }, new RecipeIngredient { Prefab = "FineWood", Amount = 16, UpgradeCost = 8 } } }; Loader.AddDefinition(itemDefinition12); ItemDefinition itemDefinition13 = new ItemDefinition(); itemDefinition13.Name = "Blackmetal dualaxes"; itemDefinition13.Category = ItemCategory.Axes; itemDefinition13.Prefab = "VABlackmetal_dualaxes"; itemDefinition13.Icon = "blackmetal_dualaxes"; itemDefinition13.CraftedAt = "forge"; itemDefinition13.CraftAmount = 1; itemDefinition13.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 39f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 22f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition13.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "BlackMetal", Amount = 50, UpgradeCost = 20 }, new RecipeIngredient { Prefab = "FineWood", Amount = 14, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 8, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition13); ItemDefinition itemDefinition14 = new ItemDefinition(); itemDefinition14.Name = "Blackmetal Greataxe (Legacy)"; itemDefinition14.Category = ItemCategory.Axes; itemDefinition14.Prefab = "VAblackmetal_2h_axe"; itemDefinition14.Icon = "blackmetal_2h_axe"; itemDefinition14.CraftedAt = "forge"; itemDefinition14.CraftAmount = 1; itemDefinition14.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 130f, Min = 0f, Max = 300f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 300f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 2.5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 70f, 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 = 20f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 10f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition14.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "BlackMetal", Amount = 35, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 5, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition14); ItemDefinition itemDefinition15 = new ItemDefinition(); itemDefinition15.Name = "Jotun dualaxes"; itemDefinition15.Category = ItemCategory.Axes; itemDefinition15.Prefab = "VAJotunn_dualaxes"; itemDefinition15.Icon = "jotun_dualaxes"; itemDefinition15.CraftedAt = "blackforge"; itemDefinition15.CraftAmount = 1; itemDefinition15.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 120f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 48f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 15f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 24f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition15.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Eitr", Amount = 35, UpgradeCost = 30 }, new RecipeIngredient { Prefab = "Iron", Amount = 25, UpgradeCost = 20 }, new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 14, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Bilebag", Amount = 6, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition15); ItemDefinition itemDefinition16 = new ItemDefinition(); itemDefinition16.Name = "Jotun battleaxe"; itemDefinition16.Category = ItemCategory.Axes; itemDefinition16.Prefab = "VAJotunn_2h_axe"; itemDefinition16.Icon = "jotun_2h_axe"; itemDefinition16.CraftedAt = "blackforge"; itemDefinition16.CraftAmount = 1; itemDefinition16.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 140f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 13f, Min = 0f, Max = 200f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 90f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 72f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 22f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 11f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition16.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Eitr", Amount = 30, UpgradeCost = 20 }, new RecipeIngredient { Prefab = "Iron", Amount = 20, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 14, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Bilebag", Amount = 6, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition16); ItemDefinition itemDefinition17 = new ItemDefinition(); itemDefinition17.Name = "Jotun halfblade"; itemDefinition17.Category = ItemCategory.Axes; itemDefinition17.Prefab = "VAJotunn_single_axe"; itemDefinition17.Icon = "jotunn_halfblade"; itemDefinition17.CraftedAt = "blackforge"; itemDefinition17.CraftAmount = 1; itemDefinition17.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 200f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 48f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 16f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 32f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition17.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Eitr", Amount = 10, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "Iron", Amount = 15, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Bilebag", Amount = 3, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition17); ItemDefinition itemDefinition18 = new ItemDefinition(); itemDefinition18.Name = "Eikthyrs Greataxe"; itemDefinition18.Category = ItemCategory.Axes; itemDefinition18.Prefab = "VAAntler_greataxe"; itemDefinition18.Icon = "antler_greataxe"; itemDefinition18.CraftedAt = "piece_workbench"; itemDefinition18.CraftAmount = 1; itemDefinition18.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 200f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 200f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 2.5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 18f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 70f, 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 = 7f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition18.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 15, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Resin", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "HardAntler", Amount = 3, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "TrophyEikthyr", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition18); ItemDefinition itemDefinition19 = new ItemDefinition(); itemDefinition19.Name = "Blackmetal Battleaxe"; itemDefinition19.Category = ItemCategory.Axes; itemDefinition19.Prefab = "VAblackmetal_battleaxe"; itemDefinition19.Icon = "blackmetal_battleaxe"; itemDefinition19.CraftedAt = "forge"; itemDefinition19.CraftAmount = 1; itemDefinition19.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 120f, Min = 0f, Max = 300f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 60f, Min = 0f, Max = 300f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 2.5f, Min = 0f, Max = 50f } }, { ItemStat.fire, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 160f } }, { ItemStat.fire_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 70f, 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 = 22f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 10f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition19.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "BlackMetal", Amount = 35, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "SurtlingCore", Amount = 4, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition19); ItemDefinition itemDefinition20 = new ItemDefinition(); itemDefinition20.Name = "Flametal Battleaxe"; itemDefinition20.Category = ItemCategory.Axes; itemDefinition20.Prefab = "VAFlametalAxe_2h"; itemDefinition20.Icon = "flametal_battleaxe"; itemDefinition20.CraftedAt = "blackforge"; itemDefinition20.CraftAmount = 1; itemDefinition20.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 150f, Min = 0f, Max = 300f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 90f, Min = 0f, Max = 300f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 2.5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 78f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 70f, 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 = 28f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition20.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Blackwood", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "CharredBone", Amount = 20, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "AskHide", Amount = 4, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition20); ItemDefinition itemDefinition21 = new ItemDefinition(); itemDefinition21.Name = "Flametal Primal Battleaxe"; itemDefinition21.Category = ItemCategory.Axes; itemDefinition21.Prefab = "VAFlametalAxe_primal_2h"; itemDefinition21.Icon = "flametal_battleaxe_primal"; itemDefinition21.CraftedAt = "blackforge"; itemDefinition21.CraftAmount = 1; itemDefinition21.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 150f, Min = 0f, Max = 300f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 300f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 90f, Min = 0f, Max = 300f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 2.5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 78f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 70f, 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 = 28f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition21.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAFlametalAxe_2h", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "GemstoneGreen", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition21); ItemDefinition itemDefinition22 = new ItemDefinition(); itemDefinition22.Name = "Flametal Lightning Battleaxe"; itemDefinition22.Category = ItemCategory.Axes; itemDefinition22.Prefab = "VAFlametalAxe_lightning_2h"; itemDefinition22.Icon = "flametal_battleaxe_lightning"; itemDefinition22.CraftedAt = "blackforge"; itemDefinition22.CraftAmount = 1; itemDefinition22.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 150f, Min = 0f, Max = 300f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 300f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 90f, Min = 0f, Max = 300f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 2.5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 78f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 70f, 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 = 28f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition22.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAFlametalAxe_2h", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "GemstoneBlue", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition22); ItemDefinition itemDefinition23 = new ItemDefinition(); itemDefinition23.Name = "Flametal Blood Battleaxe"; itemDefinition23.Category = ItemCategory.Axes; itemDefinition23.Prefab = "VAFlametalAxe_blood_2h"; itemDefinition23.Icon = "flametal_battleaxe_blood"; itemDefinition23.CraftedAt = "blackforge"; itemDefinition23.CraftAmount = 1; itemDefinition23.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 150f, Min = 0f, Max = 300f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 90f, Min = 0f, Max = 300f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 2.5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 78f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 70f, 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 = 28f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition23.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAFlametalAxe_2h", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "GemstoneRed", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition23); ItemDefinition itemDefinition24 = new ItemDefinition(); itemDefinition24.Name = "Flametal Axe"; itemDefinition24.Category = ItemCategory.Axes; itemDefinition24.Prefab = "VAFlametal_Axe"; itemDefinition24.Icon = "flametalAxeBase"; itemDefinition24.CraftedAt = "blackforge"; itemDefinition24.CraftAmount = 1; itemDefinition24.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 140f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 84f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition24.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FlametalNew", Amount = 12, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "AskHide", Amount = 4, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "CharredBone", Amount = 10, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition24); ItemDefinition itemDefinition25 = new ItemDefinition(); itemDefinition25.Name = "Flametal Primal Axe"; itemDefinition25.Category = ItemCategory.Axes; itemDefinition25.Prefab = "VAFlametal_Axe_Primal"; itemDefinition25.Icon = "flametal_axe_1h_primal"; itemDefinition25.CraftedAt = "blackforge"; itemDefinition25.CraftAmount = 1; itemDefinition25.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 140f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 300f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 84f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition25.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FlametalNew", Amount = 12, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "GemstoneGreen", Amount = 1, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "CharredBone", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "VAFlametal_Axe", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition25); ItemDefinition itemDefinition26 = new ItemDefinition(); itemDefinition26.Name = "Flametal Lightning Axe"; itemDefinition26.Category = ItemCategory.Axes; itemDefinition26.Prefab = "VAFlametal_Axe_Lightning"; itemDefinition26.Icon = "flametal_axe_1h_lightning"; itemDefinition26.CraftedAt = "blackforge"; itemDefinition26.CraftAmount = 1; itemDefinition26.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 140f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 300f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 84f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition26.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FlametalNew", Amount = 12, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "GemstoneBlue", Amount = 1, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "CharredBone", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "VAFlametal_Axe", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition26); ItemDefinition itemDefinition27 = new ItemDefinition(); itemDefinition27.Name = "Flametal Blood Axe"; itemDefinition27.Category = ItemCategory.Axes; itemDefinition27.Prefab = "VAFlametal_Axe_Blood"; itemDefinition27.Icon = "flametal_axe_1h_blood"; itemDefinition27.CraftedAt = "blackforge"; itemDefinition27.CraftAmount = 1; itemDefinition27.ModifableStats = new Dictionary { { ItemStat.tool_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 6f, IsInt = true } }, { ItemStat.slash, new ItemStatConfig { Default_value = 140f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.chop, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 200f } }, { ItemStat.chop_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 84f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.2f, Max = 0f } } }; itemDefinition27.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FlametalNew", Amount = 12, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "GemstoneRed", Amount = 1, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "CharredBone", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "VAFlametal_Axe", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition27); } private void LoadHammers() { Logger.LogInfo("Loading Hammers"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Flametal nature sledge"; itemDefinition.Category = ItemCategory.Hammers; itemDefinition.Prefab = "VAflametal_sledge_nature"; itemDefinition.Icon = "flametal_sledge_nature"; itemDefinition.CraftedAt = "blackforge"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 165f, Min = 0f, Max = 300f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 300f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 400f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 64f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, 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 = 24f, Min = 1f, Max = 50f } }, { ItemStat.primary_attack_force_multiply, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_force_multiply, new ItemStatConfig { Default_value = 2.5f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAflametal_sledge", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "GemstoneGreen", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Flametal lightning sledge"; itemDefinition2.Category = ItemCategory.Hammers; itemDefinition2.Prefab = "VAflametal_sledge_lightning"; itemDefinition2.Icon = "flametal_sledge_lightning"; itemDefinition2.CraftedAt = "blackforge"; itemDefinition2.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 165f, Min = 0f, Max = 300f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 300f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 400f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 64f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, 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 = 24f, Min = 1f, Max = 50f } }, { ItemStat.primary_attack_force_multiply, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_force_multiply, new ItemStatConfig { Default_value = 2.5f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAflametal_sledge", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "GemstoneBlue", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Flametal blood sledge"; itemDefinition3.Category = ItemCategory.Hammers; itemDefinition3.Prefab = "VAflametal_sledge_blood"; itemDefinition3.Icon = "flametal_sledge_blood"; itemDefinition3.CraftedAt = "blackforge"; itemDefinition3.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 175f, Min = 0f, Max = 300f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 400f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 64f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, 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 = 24f, Min = 1f, Max = 50f } }, { ItemStat.primary_attack_force_multiply, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_force_multiply, new ItemStatConfig { Default_value = 2.5f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAflametal_sledge", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "GemstoneRed", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Flametal sledge"; itemDefinition4.Category = ItemCategory.Hammers; itemDefinition4.Prefab = "VAflametal_sledge"; itemDefinition4.Icon = "flametal_sledge"; itemDefinition4.CraftedAt = "blackforge"; itemDefinition4.CraftAmount = 1; itemDefinition4.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 165f, Min = 0f, Max = 300f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 400f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 64f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, 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 = 24f, Min = 1f, Max = 50f } }, { ItemStat.primary_attack_force_multiply, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_force_multiply, new ItemStatConfig { Default_value = 2.5f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FlametalNew", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "Iron", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Eitr", Amount = 6, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 12, UpgradeCost = 6 } } }; Loader.AddDefinition(itemDefinition4); ItemDefinition itemDefinition5 = new ItemDefinition(); itemDefinition5.Name = "Blackmarble mace"; itemDefinition5.Category = ItemCategory.Hammers; itemDefinition5.Prefab = "VAmistland_mace"; itemDefinition5.Icon = "mist_mace"; itemDefinition5.CraftedAt = "blackforge"; itemDefinition5.CraftAmount = 1; itemDefinition5.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 115f, Min = 0f, Max = 300f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 400f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 48f, Min = 0f, Max = 150f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 100f, 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 = 15f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 28f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.05f, Max = 0f } } }; itemDefinition5.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 6, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "Bronze", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Eitr", Amount = 8, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "BlackMarble", Amount = 20, UpgradeCost = 10 } } }; Loader.AddDefinition(itemDefinition5); ItemDefinition itemDefinition6 = new ItemDefinition(); itemDefinition6.Name = "Blackmetal Sledge"; itemDefinition6.Category = ItemCategory.Hammers; itemDefinition6.Prefab = "VAblackmetal_sledge"; itemDefinition6.Icon = "blackmetal_hammer"; itemDefinition6.CraftedAt = "forge"; itemDefinition6.CraftAmount = 1; itemDefinition6.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 120f, Min = 0f, Max = 300f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 400f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 49f, 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 = 20f, Min = 1f, Max = 50f } }, { ItemStat.primary_attack_force_multiply, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 40f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_force_multiply, new ItemStatConfig { Default_value = 2.5f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition6.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "BlackMetal", Amount = 30, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Thunderstone", Amount = 4, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition6); ItemDefinition itemDefinition7 = new ItemDefinition(); itemDefinition7.Name = "Elders Rock"; itemDefinition7.Category = ItemCategory.Hammers; itemDefinition7.Prefab = "VAElderHammer"; itemDefinition7.Icon = "elder_hammer"; itemDefinition7.CraftedAt = "forge"; itemDefinition7.CraftAmount = 1; itemDefinition7.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 300f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 99f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 400f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 22f, 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.primary_attack_force_multiply, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 22f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_force_multiply, new ItemStatConfig { Default_value = 2.5f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition7.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Bronze", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Stone", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "CryptKey", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyTheElder", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "RoundLog", Amount = 0, UpgradeCost = 8 } } }; Loader.AddDefinition(itemDefinition7); ItemDefinition itemDefinition8 = new ItemDefinition(); itemDefinition8.Name = "Bronze Sledge"; itemDefinition8.Category = ItemCategory.Hammers; itemDefinition8.Prefab = "VABronzeSledge"; itemDefinition8.Icon = "bronze_sledge"; itemDefinition8.CraftedAt = "forge"; itemDefinition8.CraftAmount = 1; itemDefinition8.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 300f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 400f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 22f, Min = 0f, Max = 150f } }, { 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.primary_attack_force_multiply, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 22f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_force_multiply, new ItemStatConfig { Default_value = 2.5f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition8.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Bronze", Amount = 8, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "Stone", Amount = 25, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "TrollHide", Amount = 6, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "RoundLog", Amount = 4, UpgradeCost = 4 } } }; Loader.AddDefinition(itemDefinition8); ItemDefinition itemDefinition9 = new ItemDefinition(); itemDefinition9.Name = "Bonemasses Rage"; itemDefinition9.Category = ItemCategory.Hammers; itemDefinition9.Prefab = "VABonemassWarhammer"; itemDefinition9.Icon = "bonemass_warhammer"; itemDefinition9.CraftedAt = "forge"; itemDefinition9.CraftAmount = 1; itemDefinition9.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 70f, Min = 0f, Max = 300f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 99f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 90f, Min = 0f, Max = 400f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 31f, Min = 0f, Max = 150f } }, { 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.primary_attack_force_multiply, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 24f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_force_multiply, new ItemStatConfig { Default_value = 2.5f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition9.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "WitheredBone", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Iron", Amount = 30, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Wishbone", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyBonemass", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "ElderBark", Amount = 0, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition9); ItemDefinition itemDefinition10 = new ItemDefinition(); itemDefinition10.Name = "Silver Sledge"; itemDefinition10.Category = ItemCategory.Hammers; itemDefinition10.Prefab = "VASilverSledge"; itemDefinition10.Icon = "silver_sledge"; itemDefinition10.CraftedAt = "forge"; itemDefinition10.CraftAmount = 1; itemDefinition10.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 85f, Min = 0f, Max = 300f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 99f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 400f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 31f, Min = 0f, Max = 150f } }, { 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 = 15f, Min = 1f, Max = 50f } }, { ItemStat.primary_attack_force_multiply, new ItemStatConfig { Default_value = 1f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 24f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_force_multiply, new ItemStatConfig { Default_value = 2.5f, Min = 1f, Max = 50f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition10.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "RoundLog", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Silver", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "YmirRemains", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "TrophyFenring", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition10); } private void LoadAtgeirs() { Logger.LogInfo("Loading Atgeirs"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Flint Atgeir"; itemDefinition.Category = ItemCategory.Atgeirs; itemDefinition.Prefab = "VAAtgeir_Flint"; itemDefinition.Icon = "flint_atgeir"; itemDefinition.CraftedAt = "piece_workbench"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 90f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 11f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 125f, 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 = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 20f, Min = 1f, Max = 50f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Flint", Amount = 6, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Eikthyrs Atgeir"; itemDefinition2.Category = ItemCategory.Atgeirs; itemDefinition2.Prefab = "VAatgeir_antler"; itemDefinition2.Icon = "antler_atgeir"; itemDefinition2.CraftedAt = "piece_workbench"; itemDefinition2.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 90f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 50f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 14f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 15, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Resin", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "HardAntler", Amount = 3, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "TrophyEikthyr", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Abyssal Atgeir"; itemDefinition3.Category = ItemCategory.Atgeirs; itemDefinition3.Prefab = "VAAtgeirChitin"; itemDefinition3.Icon = "chitin_heavy_atgeir_small2"; itemDefinition3.CraftedAt = "piece_workbench"; itemDefinition3.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 140f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 21f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Chitin", Amount = 30, UpgradeCost = 15 }, new RecipeIngredient { Prefab = "DeerHide", Amount = 2, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Silver Atgeir"; itemDefinition4.Category = ItemCategory.Atgeirs; itemDefinition4.Prefab = "VASilverAtgeir"; itemDefinition4.Icon = "silver_atgeir"; itemDefinition4.CraftedAt = "forge"; itemDefinition4.CraftAmount = 1; itemDefinition4.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 85f, Min = 0f, Max = 250f } }, { ItemStat.pierce_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.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 16f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 32f, Min = 1f, Max = 50f } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Silver", Amount = 25, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Iron", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 3, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition4); ItemDefinition itemDefinition5 = new ItemDefinition(); itemDefinition5.Name = "Yagluths Reach"; itemDefinition5.Category = ItemCategory.Atgeirs; itemDefinition5.Prefab = "VAYagluthAtgeir"; itemDefinition5.Icon = "yagluth_atgeir"; itemDefinition5.CraftedAt = "forge"; itemDefinition5.CraftAmount = 1; itemDefinition5.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 105f, Min = 0f, Max = 250f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.fire, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 120f } }, { ItemStat.fire_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 } } }; itemDefinition5.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "BlackMetal", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Iron", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "YagluthDrop", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyGoblinKing", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Tar", Amount = 0, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition5); ItemDefinition itemDefinition6 = new ItemDefinition(); itemDefinition6.Name = "Flametal Atgeir"; itemDefinition6.Category = ItemCategory.Atgeirs; itemDefinition6.Prefab = "VAMeteorAtgeir"; itemDefinition6.Icon = "meteor_atgeir"; itemDefinition6.CraftedAt = "blackforge"; itemDefinition6.CraftAmount = 1; itemDefinition6.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 145f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 64f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 22f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 42f, Min = 1f, Max = 50f } } }; itemDefinition6.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FlametalNew", Amount = 15, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Iron", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "MorgenSinew", Amount = 2, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition6); ItemDefinition itemDefinition7 = new ItemDefinition(); itemDefinition7.Name = "Flametal primal Atgeir"; itemDefinition7.Category = ItemCategory.Atgeirs; itemDefinition7.Prefab = "VAMeteorAtgeir_nature"; itemDefinition7.Icon = "meteor_atgeir_nature"; itemDefinition7.CraftedAt = "blackforge"; itemDefinition7.CraftAmount = 1; itemDefinition7.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 145f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 300f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 64f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 22f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 42f, Min = 1f, Max = 50f } } }; itemDefinition7.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAMeteorAtgeir", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "GemstoneGreen", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition7); ItemDefinition itemDefinition8 = new ItemDefinition(); itemDefinition8.Name = "Flametal lightning Atgeir"; itemDefinition8.Category = ItemCategory.Atgeirs; itemDefinition8.Prefab = "VAMeteorAtgeir_lightning"; itemDefinition8.Icon = "meteor_atgeir_lightning"; itemDefinition8.CraftedAt = "blackforge"; itemDefinition8.CraftAmount = 1; itemDefinition8.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 145f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 300f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 64f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 22f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 42f, Min = 1f, Max = 50f } } }; itemDefinition8.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAMeteorAtgeir", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "GemstoneBlue", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition8); ItemDefinition itemDefinition9 = new ItemDefinition(); itemDefinition9.Name = "Flametal blood Atgeir"; itemDefinition9.Category = ItemCategory.Atgeirs; itemDefinition9.Prefab = "VAMeteorAtgeir_blood"; itemDefinition9.Icon = "meteor_atgeir_blood"; itemDefinition9.CraftedAt = "blackforge"; itemDefinition9.CraftAmount = 1; itemDefinition9.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 145f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 120f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 175f, 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 = 22f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 42f, Min = 1f, Max = 50f } } }; itemDefinition9.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAMeteorAtgeir", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 5, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "GemstoneRed", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition9); } private void LoadShields() { Logger.LogInfo("Loading Shields"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Serpent Scale Buckler"; itemDefinition.Category = ItemCategory.Shields; itemDefinition.Prefab = "VAserpent_buckler"; itemDefinition.Icon = "serpentscale_shield2"; itemDefinition.CraftedAt = "forge"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 48f, Min = 0f, Max = 120f } }, { ItemStat.block_armor_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 120f } }, { ItemStat.parry, new ItemStatConfig { Default_value = 2.5f, Min = 0f, Max = 3f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 250f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.3f, Max = 0f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Iron", Amount = 2, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "SerpentScale", Amount = 6, UpgradeCost = 3 } } }; itemDefinition.DamageMods = new Dictionary { { (DamageType)4, new HitCustomDamageMod { DamageModifier = (DamageModifier)1 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Elders Bulwark"; itemDefinition2.Category = ItemCategory.Shields; itemDefinition2.Prefab = "VAElderRoundShield"; itemDefinition2.Icon = "elder_roundshield"; itemDefinition2.CraftedAt = "forge"; itemDefinition2.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 28f, Min = 0f, Max = 120f } }, { ItemStat.block_armor_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_force_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 30f } }, { ItemStat.parry, new ItemStatConfig { Default_value = 1.5f, Min = 0f, Max = 3f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 250f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.3f, Max = 0f } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 16, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Bronze", Amount = 8, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "CryptKey", Amount = 1, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "TrophyTheElder", Amount = 1, UpgradeCost = 1 } } }; itemDefinition2.DamageMods = new Dictionary { { (DamageType)1, new HitCustomDamageMod { DamageModifier = (DamageModifier)1 } } }; Loader.AddDefinition(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Moders Roundshield"; itemDefinition3.Category = ItemCategory.Shields; itemDefinition3.Prefab = "VAModer_RoundShield"; itemDefinition3.Icon = "moder_roundshield"; itemDefinition3.CraftedAt = "forge"; itemDefinition3.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 62f, Min = 0f, Max = 120f } }, { ItemStat.block_armor_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 120f } }, { ItemStat.block_force_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 30f } }, { ItemStat.parry, new ItemStatConfig { Default_value = 1.5f, Min = 0f, Max = 3f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 250f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.05f, Min = -0.3f, Max = 0f } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 24, UpgradeCost = 12 }, new RecipeIngredient { Prefab = "Silver", Amount = 16, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "DragonTear", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyDragonQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Obsidian", Amount = 0, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "JuteRed", Amount = 0, UpgradeCost = 2 } } }; itemDefinition3.DamageMods = new Dictionary { { (DamageType)64, new HitCustomDamageMod { DamageModifier = (DamageModifier)1 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Moders Shield"; itemDefinition4.Category = ItemCategory.Shields; itemDefinition4.Prefab = "VAModer_shield"; itemDefinition4.Icon = "modershiled_v2"; itemDefinition4.CraftedAt = "forge"; itemDefinition4.CraftAmount = 1; itemDefinition4.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 100f, Min = 0f, Max = 180f } }, { ItemStat.block_armor_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 120f, Min = 0f, Max = 200f } }, { ItemStat.block_force_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 30f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 250f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 24, UpgradeCost = 12 }, new RecipeIngredient { Prefab = "Silver", Amount = 16, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "DragonTear", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyDragonQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Obsidian", Amount = 0, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "JuteRed", Amount = 0, UpgradeCost = 2 } } }; itemDefinition4.DamageMods = new Dictionary { { (DamageType)64, new HitCustomDamageMod { DamageModifier = (DamageModifier)1 } } }; Loader.AddDefinition(itemDefinition4); ItemDefinition itemDefinition5 = new ItemDefinition(); itemDefinition5.Name = "Silver Wolf Towershield"; itemDefinition5.Category = ItemCategory.Shields; itemDefinition5.Prefab = "VAsilver_tower"; itemDefinition5.Icon = "silver_tower_shield"; itemDefinition5.CraftedAt = "forge"; itemDefinition5.CraftAmount = 1; itemDefinition5.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 78f, Min = 0f, Max = 120f } }, { ItemStat.block_armor_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 120f, Min = 0f, Max = 200f } }, { ItemStat.block_force_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 30f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 250f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition5.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 15, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Silver", Amount = 10, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "TrophyUlv", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition5); ItemDefinition itemDefinition6 = new ItemDefinition(); itemDefinition6.Name = "Dverger Towershield"; itemDefinition6.Category = ItemCategory.Shields; itemDefinition6.Prefab = "VAdverger_tower"; itemDefinition6.Icon = "dverger_towershield"; itemDefinition6.CraftedAt = "blackforge"; itemDefinition6.CraftAmount = 1; itemDefinition6.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 122f, Min = 0f, Max = 200f } }, { ItemStat.block_armor_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.block_force, new ItemStatConfig { Default_value = 150f, Min = 0f, Max = 200f } }, { ItemStat.block_force_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 30f } }, { ItemStat.movement_speed, new ItemStatConfig { Default_value = -0.15f, Min = -0.15f, Max = 0f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition6.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "BlackMarble", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 12, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "BlackCore", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Copper", Amount = 14, UpgradeCost = 10 } } }; Loader.AddDefinition(itemDefinition6); } private void LoadDaggers() { Logger.LogInfo("Loading Daggers"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Hati Knife"; itemDefinition.Category = ItemCategory.Knives; itemDefinition.Prefab = "VAdagger_blackmetal_mistlands"; itemDefinition.Icon = "hatti_knife"; itemDefinition.CraftedAt = "blackforge"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 39f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 39f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 40f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 38f, 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 } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 4, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "BlackMetal", Amount = 8, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "Iron", Amount = 2, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Blackmetal knives"; itemDefinition2.Category = ItemCategory.Knives; itemDefinition2.Prefab = "VAknife_blackmetal"; itemDefinition2.Icon = "2h_blackmetal_knives"; itemDefinition2.CraftedAt = "forge"; itemDefinition2.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 39f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 39f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 40f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 12f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, 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 } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 8, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "BlackMetal", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 10, UpgradeCost = 5 } } }; Loader.AddDefinition(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Flint knives"; itemDefinition3.Category = ItemCategory.Knives; itemDefinition3.Prefab = "VADagger_Flint_2h"; itemDefinition3.Icon = "2h_flint_knives"; itemDefinition3.CraftedAt = "piece_workbench"; itemDefinition3.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 40f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 4f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, 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 } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Flint", Amount = 6, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 2, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Eikthyrs knife"; itemDefinition4.Category = ItemCategory.Knives; itemDefinition4.Prefab = "VAAntler_dagger"; itemDefinition4.Icon = "antler_dagger"; itemDefinition4.CraftedAt = "piece_workbench"; itemDefinition4.CraftAmount = 1; itemDefinition4.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 8f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 8f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 99f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 6f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 18f, 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 } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 3, UpgradeCost = 0 }, 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(itemDefinition4); ItemDefinition itemDefinition5 = new ItemDefinition(); itemDefinition5.Name = "Rascals knives"; itemDefinition5.Category = ItemCategory.Knives; itemDefinition5.Prefab = "VAdagger_copper_2h"; itemDefinition5.Icon = "copper_knives_2h"; itemDefinition5.CraftedAt = "forge"; itemDefinition5.CraftAmount = 1; itemDefinition5.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 8f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 40f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 6f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 18f, 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 } } }; itemDefinition5.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "RoundLog", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Copper", Amount = 16, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 4, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition5); ItemDefinition itemDefinition6 = new ItemDefinition(); itemDefinition6.Name = "Abyssal knives"; itemDefinition6.Category = ItemCategory.Knives; itemDefinition6.Prefab = "VAdagger_chitin_2h"; itemDefinition6.Icon = "chitin_knives"; itemDefinition6.CraftedAt = "piece_workbench"; itemDefinition6.CraftAmount = 1; itemDefinition6.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 24f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 24f, Min = 0f, Max = 99f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 40f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 8f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 24f, 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 } } }; itemDefinition6.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FineWood", Amount = 6, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "Chitin", Amount = 32, UpgradeCost = 12 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 8, UpgradeCost = 4 } } }; Loader.AddDefinition(itemDefinition6); ItemDefinition itemDefinition7 = new ItemDefinition(); itemDefinition7.Name = "Rogue knives"; itemDefinition7.Category = ItemCategory.Knives; itemDefinition7.Prefab = "VAdagger_iron_2h"; itemDefinition7.Icon = "iron_dagger_2h"; itemDefinition7.CraftedAt = "forge"; itemDefinition7.CraftAmount = 1; itemDefinition7.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 40f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 8f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 24f, 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 } } }; itemDefinition7.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Iron", Amount = 16, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 6, UpgradeCost = 3 } } }; Loader.AddDefinition(itemDefinition7); ItemDefinition itemDefinition8 = new ItemDefinition(); itemDefinition8.Name = "Iron knives"; itemDefinition8.Category = ItemCategory.Knives; itemDefinition8.Prefab = "VAdagger_iron"; itemDefinition8.Icon = "iron_dagger"; itemDefinition8.CraftedAt = "forge"; itemDefinition8.CraftAmount = 1; itemDefinition8.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 22f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 22f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 8f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 24f, 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 } } }; itemDefinition8.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 2, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "Iron", Amount = 12, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 4, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition8); ItemDefinition itemDefinition9 = new ItemDefinition(); itemDefinition9.Name = "Silver knives"; itemDefinition9.Category = ItemCategory.Knives; itemDefinition9.Prefab = "VAdagger_silver_2h"; itemDefinition9.Icon = "silver_dagger_2h"; itemDefinition9.CraftedAt = "forge"; itemDefinition9.CraftAmount = 1; itemDefinition9.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 16f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 34f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 34f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 99f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.frost, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 99f } }, { ItemStat.frost_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 40f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 10f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, 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 } } }; itemDefinition9.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Silver", Amount = 12, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "Iron", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 6, UpgradeCost = 3 } } }; Loader.AddDefinition(itemDefinition9); ItemDefinition itemDefinition10 = new ItemDefinition(); itemDefinition10.Name = "Moders knife"; itemDefinition10.Category = ItemCategory.Knives; itemDefinition10.Prefab = "VAdagger_moder"; itemDefinition10.Icon = "moder_dagger"; itemDefinition10.CraftedAt = "forge"; itemDefinition10.CraftAmount = 1; itemDefinition10.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 28f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 28f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 99f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.frost, new ItemStatConfig { Default_value = 8f, Min = 0f, Max = 99f } }, { ItemStat.frost_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 10f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, 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 } } }; itemDefinition10.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "ElderBark", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Obsidian", Amount = 15, UpgradeCost = 5 }, 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(itemDefinition10); ItemDefinition itemDefinition11 = new ItemDefinition(); itemDefinition11.Name = "Moders dualknives"; itemDefinition11.Category = ItemCategory.Knives; itemDefinition11.Prefab = "VAdagger_moder_2h"; itemDefinition11.Icon = "moder_dagger_2h"; itemDefinition11.CraftedAt = "forge"; itemDefinition11.CraftAmount = 1; itemDefinition11.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 18f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 32f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 32f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 99f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.frost, new ItemStatConfig { Default_value = 8f, Min = 0f, Max = 99f } }, { ItemStat.frost_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 10f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 30f, 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 } } }; itemDefinition11.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "DragonTear", Amount = 10, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyDragonQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Silver", Amount = 15, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "ElderBark", Amount = 6, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "JuteRed", Amount = 0, UpgradeCost = 4 } } }; Loader.AddDefinition(itemDefinition11); ItemDefinition itemDefinition12 = new ItemDefinition(); itemDefinition12.Name = "Bonemasses knife"; itemDefinition12.Category = ItemCategory.Knives; itemDefinition12.Prefab = "VABonemassDagger"; itemDefinition12.Icon = "bonemass_dagger"; itemDefinition12.CraftedAt = "forge"; itemDefinition12.CraftAmount = 1; itemDefinition12.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 22f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 22f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 7f, Min = 0f, Max = 99f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 9f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 28f, 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 } } }; itemDefinition12.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "WitheredBone", Amount = 2, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "Iron", Amount = 12, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "Wishbone", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyBonemass", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "ElderBark", Amount = 0, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition12); ItemDefinition itemDefinition13 = new ItemDefinition(); itemDefinition13.Name = "Queens knife"; itemDefinition13.Category = ItemCategory.Knives; itemDefinition13.Prefab = "VAdagger_queen"; itemDefinition13.Icon = "dagger_queen"; itemDefinition13.CraftedAt = "blackforge"; itemDefinition13.CraftAmount = 1; itemDefinition13.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 34f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 34f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 18f, Min = 0f, Max = 99f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 18f, Min = 0f, Max = 99f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 42f, Min = 1f, Max = 80f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition13.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 2, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Eitr", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "JuteBlue", Amount = 2, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "TrophySeekerQueen", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Carapace", Amount = 0, UpgradeCost = 4 } } }; Loader.AddDefinition(itemDefinition13); ItemDefinition itemDefinition14 = new ItemDefinition(); itemDefinition14.Name = "Flametal knife"; itemDefinition14.Category = ItemCategory.Knives; itemDefinition14.Prefab = "VAdagger_meteor"; itemDefinition14.Icon = "meteor_dagger"; itemDefinition14.CraftedAt = "blackforge"; itemDefinition14.CraftAmount = 1; itemDefinition14.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 42f, Min = 1f, Max = 80f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition14.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FlametalNew", Amount = 10, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "Iron", Amount = 2, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "MorgenSinew", Amount = 4, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition14); ItemDefinition itemDefinition15 = new ItemDefinition(); itemDefinition15.Name = "Flametal primal knife"; itemDefinition15.Category = ItemCategory.Knives; itemDefinition15.Prefab = "VAdagger_meteor_nature"; itemDefinition15.Icon = "meteor_dagger_primal"; itemDefinition15.CraftedAt = "blackforge"; itemDefinition15.CraftAmount = 1; itemDefinition15.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 99f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 42f, Min = 1f, Max = 80f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition15.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAdagger_meteor", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 4, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "GemstoneGreen", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition15); ItemDefinition itemDefinition16 = new ItemDefinition(); itemDefinition16.Name = "Flametal lightning knife"; itemDefinition16.Category = ItemCategory.Knives; itemDefinition16.Prefab = "VAdagger_meteor_lightning"; itemDefinition16.Icon = "meteor_dagger_lightning"; itemDefinition16.CraftedAt = "blackforge"; itemDefinition16.CraftAmount = 1; itemDefinition16.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 99f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 42f, Min = 1f, Max = 80f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition16.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAdagger_meteor", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 4, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "GemstoneBlue", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition16); ItemDefinition itemDefinition17 = new ItemDefinition(); itemDefinition17.Name = "Flametal blood knife"; itemDefinition17.Category = ItemCategory.Knives; itemDefinition17.Prefab = "VAdagger_meteor_blood"; itemDefinition17.Icon = "meteor_dagger_blood"; itemDefinition17.CraftedAt = "blackforge"; itemDefinition17.CraftAmount = 1; itemDefinition17.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 42f, Min = 1f, Max = 80f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition17.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAdagger_meteor", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 4, UpgradeCost = 4 }, new RecipeIngredient { Prefab = "GemstoneRed", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition17); ItemDefinition itemDefinition18 = new ItemDefinition(); itemDefinition18.Name = "Assassins knives"; itemDefinition18.Category = ItemCategory.Knives; itemDefinition18.Prefab = "VAdagger_meteor_2h"; itemDefinition18.Icon = "2h_meteor_daggers"; itemDefinition18.CraftedAt = "blackforge"; itemDefinition18.CraftAmount = 1; itemDefinition18.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 28f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 15f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 45f, Min = 1f, Max = 80f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition18.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FlametalNew", Amount = 14, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "Iron", Amount = 2, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 6, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "MorgenSinew", Amount = 4, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition18); ItemDefinition itemDefinition19 = new ItemDefinition(); itemDefinition19.Name = "Assassins primal knives"; itemDefinition19.Category = ItemCategory.Knives; itemDefinition19.Prefab = "VAdagger_meteor_2h_nature"; itemDefinition19.Icon = "meteor_dagger_primal_2h"; itemDefinition19.CraftedAt = "blackforge"; itemDefinition19.CraftAmount = 1; itemDefinition19.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 28f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 14f, Min = 0f, Max = 99f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 15f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 45f, Min = 1f, Max = 80f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition19.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAdagger_meteor_2h", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "GemstoneGreen", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition19); ItemDefinition itemDefinition20 = new ItemDefinition(); itemDefinition20.Name = "Assassins lightning knives"; itemDefinition20.Category = ItemCategory.Knives; itemDefinition20.Prefab = "VAdagger_meteor_2h_lightning"; itemDefinition20.Icon = "meteor_dagger_lightning_2h"; itemDefinition20.CraftedAt = "blackforge"; itemDefinition20.CraftAmount = 1; itemDefinition20.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 28f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.lightning, new ItemStatConfig { Default_value = 14f, Min = 0f, Max = 99f } }, { ItemStat.lightning_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 15f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 45f, Min = 1f, Max = 80f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition20.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAdagger_meteor_2h", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "GemstoneBlue", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition20); ItemDefinition itemDefinition21 = new ItemDefinition(); itemDefinition21.Name = "Assassins blood knives"; itemDefinition21.Category = ItemCategory.Knives; itemDefinition21.Prefab = "VAdagger_meteor_2h_blood"; itemDefinition21.Icon = "meteor_dagger_blood_2h"; itemDefinition21.CraftedAt = "blackforge"; itemDefinition21.CraftAmount = 1; itemDefinition21.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 28f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 99f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 52f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 30f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 15f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 45f, Min = 1f, Max = 80f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition21.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "VAdagger_meteor_2h", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FlametalNew", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "GemstoneRed", Amount = 1, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition21); } private void LoadSpears() { Logger.LogInfo("Loading Spears"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Flint Spear"; itemDefinition.Category = ItemCategory.Spears; itemDefinition.Prefab = "VASpearFlint"; itemDefinition.Icon = "flint_spear"; itemDefinition.CraftedAt = "piece_workbench"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 6f, Min = 1f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 8f, Min = 1f, 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 } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 5, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "Flint", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 2, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Moders Strike"; itemDefinition2.Category = ItemCategory.Spears; itemDefinition2.Prefab = "VASpearModer"; itemDefinition2.Icon = "moder_spear"; itemDefinition2.CraftedAt = "forge"; itemDefinition2.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 45f, Min = 0f, Max = 120f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 99f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.frost, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 99f } }, { ItemStat.frost_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, 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 = 14f, Min = 1f, 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 } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "ElderBark", Amount = 15, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Obsidian", Amount = 8, UpgradeCost = 4 }, 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(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Blackmetal Spear"; itemDefinition3.Category = ItemCategory.Spears; itemDefinition3.Prefab = "VASpearBlackmetal"; itemDefinition3.Icon = "blackmetal_spear"; itemDefinition3.CraftedAt = "forge"; itemDefinition3.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 48f } }, { ItemStat.pierce, new ItemStatConfig { Default_value = 95f, Min = 0f, Max = 120f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, 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 = 18f, Min = 1f, 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 } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "BlackMetal", Amount = 6, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "FineWood", Amount = 10, UpgradeCost = 5 }, new RecipeIngredient { Prefab = "Chain", Amount = 2, UpgradeCost = 1 }, new RecipeIngredient { Prefab = "JuteRed", Amount = 2, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Fader Spear"; itemDefinition4.Category = ItemCategory.Spears; itemDefinition4.Prefab = "VASpearFader"; itemDefinition4.Icon = "fader_spear"; itemDefinition4.CraftedAt = "blackforge"; itemDefinition4.CraftAmount = 1; itemDefinition4.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 48f } }, { 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.poison, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 300f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.fire, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 300f } }, { ItemStat.fire_per_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, 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 = 20f, Min = 1f, 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 } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FlametalNew", Amount = 24, UpgradeCost = 24 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 10, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "TrophyFader", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "FaderDrop", Amount = 1, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition4); } private void LoadFists() { Logger.LogInfo("Loading Fists"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Flint knuckles"; itemDefinition.Category = ItemCategory.Fists; itemDefinition.Prefab = "VAFist_Flint"; itemDefinition.Icon = "flint_fists"; itemDefinition.CraftedAt = "piece_workbench"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 120f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 120f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 4f, Min = 1f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 300f, Min = 0f, Max = 600f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Flint", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 2, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Bronze knuckles"; itemDefinition2.Category = ItemCategory.Fists; itemDefinition2.Prefab = "VAFist_Bronze"; itemDefinition2.Icon = "bronze_fists"; itemDefinition2.CraftedAt = "forge"; itemDefinition2.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 120f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 6f, Min = 1f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 300f, Min = 0f, Max = 600f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "RoundLog", Amount = 4, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Bronze", Amount = 6, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 4, UpgradeCost = 4 } } }; Loader.AddDefinition(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Iron knuckles"; itemDefinition3.Category = ItemCategory.Fists; itemDefinition3.Prefab = "VAFist_Iron"; itemDefinition3.Icon = "iron_fists"; itemDefinition3.CraftedAt = "forge"; itemDefinition3.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 120f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 120f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 8f, Min = 1f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 300f, Min = 0f, Max = 600f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Iron", Amount = 12, UpgradeCost = 6 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 6, UpgradeCost = 6 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Goblin king knuckles"; itemDefinition4.Category = ItemCategory.Fists; itemDefinition4.Prefab = "VAFist_Yagluth"; itemDefinition4.Icon = "yagluth_fists"; itemDefinition4.CraftedAt = "forge"; itemDefinition4.CraftAmount = 1; itemDefinition4.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 48f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 120f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 120f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.fire, new ItemStatConfig { Default_value = 25f, Min = 0f, Max = 120f } }, { ItemStat.fire_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, 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 = 36f, Min = 1f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 300f, Min = 0f, Max = 600f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "BlackMetal", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Iron", Amount = 6, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "YagluthDrop", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "TrophyGoblinKing", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Tar", Amount = 0, UpgradeCost = 3 }, new RecipeIngredient { Prefab = "LinenThread", Amount = 0, UpgradeCost = 2 } } }; Loader.AddDefinition(itemDefinition4); } private void LoadMaces() { Logger.LogInfo("Loading Maces"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Elders Fist"; itemDefinition.Category = ItemCategory.Maces; itemDefinition.Prefab = "VAElder_mace"; itemDefinition.Icon = "elder_mace"; itemDefinition.CraftedAt = "forge"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 90f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 80f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 12f, 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 } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List { 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 = 6 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Flint Mace"; itemDefinition2.Category = ItemCategory.Maces; itemDefinition2.Prefab = "VAFlintMace"; itemDefinition2.Icon = "flintMace"; itemDefinition2.CraftedAt = "piece_workbench"; itemDefinition2.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { ItemStat.blunt, new ItemStatConfig { Default_value = 16f, Min = 0f, Max = 90f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 30f, Min = 0f, Max = 120f } }, { ItemStat.block_armor, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 7f, Min = 1f, Max = 30f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 14f, Min = 1f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "Wood", Amount = 4, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Flint", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "LeatherScraps", Amount = 2, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "BoneFragments", Amount = 0, UpgradeCost = 5 } } }; Loader.AddDefinition(itemDefinition2); } private void LoadMagic() { Logger.LogInfo("Loading Magic Weapons"); ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Staff of poison"; itemDefinition.Category = ItemCategory.Magics; itemDefinition.Prefab = "VAStaff_Poison"; itemDefinition.Icon = "poison_staff"; itemDefinition.CraftedAt = "piece_magetable"; itemDefinition.CraftAmount = 1; itemDefinition.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 48f, Min = 0f, Max = 90f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 120f, Min = 0f, Max = 200f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 120f, Min = 0f, Max = 200f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_eitr, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Guck", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "Eitr", Amount = 16, UpgradeCost = 8 } } }; Loader.AddDefinition(itemDefinition); ItemDefinition itemDefinition2 = new ItemDefinition(); itemDefinition2.Name = "Staff of Spirit"; itemDefinition2.Category = ItemCategory.Magics; itemDefinition2.Prefab = "VAStaff_Spirit"; itemDefinition2.Icon = "spirit_staff"; itemDefinition2.CraftedAt = "piece_magetable"; itemDefinition2.CraftAmount = 1; itemDefinition2.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 48f, Min = 0f, Max = 90f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 90f, Min = 0f, Max = 200f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 200f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 120f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_eitr, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 400f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 150f } } }; itemDefinition2.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "YggdrasilWood", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "GreydwarfEye", Amount = 8, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "Eitr", Amount = 16, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "TrophyDvergr", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition2); ItemDefinition itemDefinition3 = new ItemDefinition(); itemDefinition3.Name = "Druidic Staff of Poison"; itemDefinition3.Category = ItemCategory.Magics; itemDefinition3.Prefab = "VAStaff_Druid_Poison"; itemDefinition3.Icon = "poison_staff_druidic"; itemDefinition3.CraftedAt = "piece_workbench"; itemDefinition3.CraftAmount = 1; itemDefinition3.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 24f, Min = 0f, Max = 48f } }, { ItemStat.poison, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.poison_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_eitr, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } } }; itemDefinition3.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "ElderBark", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Guck", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "TrophyBlob", Amount = 2, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition3); ItemDefinition itemDefinition4 = new ItemDefinition(); itemDefinition4.Name = "Druidic Staff of Spirit"; itemDefinition4.Category = ItemCategory.Magics; itemDefinition4.Prefab = "VAStaff_Druid_Spirit"; itemDefinition4.Icon = "spirit_staff_druid"; itemDefinition4.CraftedAt = "piece_workbench"; itemDefinition4.CraftAmount = 1; itemDefinition4.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 24f, Min = 0f, Max = 48f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 120f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 200f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.slash, new ItemStatConfig { Default_value = 40f, Min = 0f, Max = 200f } }, { ItemStat.slash_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_eitr, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } } }; itemDefinition4.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "ElderBark", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "GreydwarfEye", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "TrophyGreydwarfShaman", Amount = 2, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition4); ItemDefinition itemDefinition5 = new ItemDefinition(); itemDefinition5.Name = "Druidic Staff of Ice"; itemDefinition5.Category = ItemCategory.Magics; itemDefinition5.Prefab = "VAStaff_Druid_Ice"; itemDefinition5.Icon = "ice_staff_druidic"; itemDefinition5.CraftedAt = "piece_workbench"; itemDefinition5.CraftAmount = 1; itemDefinition5.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 24f, Min = 0f, Max = 48f } }, { ItemStat.frost, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 120f } }, { ItemStat.frost_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 200f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 5f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_eitr, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } } }; itemDefinition5.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "ElderBark", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "FreezeGland", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "TrophyHatchling", Amount = 2, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition5); ItemDefinition itemDefinition6 = new ItemDefinition(); itemDefinition6.Name = "Druidic Staff of Fire"; itemDefinition6.Category = ItemCategory.Magics; itemDefinition6.Prefab = "VAStaff_Druid_Fire"; itemDefinition6.Icon = "fire_staff_druidic"; itemDefinition6.CraftedAt = "piece_workbench"; itemDefinition6.CraftAmount = 1; itemDefinition6.ModifableStats = new Dictionary { { ItemStat.block_armor, new ItemStatConfig { Default_value = 24f, Min = 0f, Max = 48f } }, { ItemStat.fire, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 120f } }, { ItemStat.fire_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.blunt, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } }, { ItemStat.blunt_per_level, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 20f, Min = 0f, Max = 150f } }, { ItemStat.durability, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 500f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 150f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 35f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_eitr, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } } }; itemDefinition6.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "ElderBark", Amount = 20, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "SurtlingCore", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "TrophySurtling", Amount = 2, UpgradeCost = 1 } } }; Loader.AddDefinition(itemDefinition6); ItemDefinition itemDefinition7 = new ItemDefinition(); itemDefinition7.Name = "Soulstealer"; itemDefinition7.Category = ItemCategory.Magics; itemDefinition7.Prefab = "VASoulStealer"; itemDefinition7.Icon = "soulstealer"; itemDefinition7.CraftedAt = "piece_magetable"; itemDefinition7.CraftAmount = 1; itemDefinition7.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 3f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 100f, 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 = 2f, Min = 0.01f, Max = 3.5f } }, { ItemStat.crossbow_reload_stamina_drain, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_percent_health_cost, new ItemStatConfig { Default_value = 12f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_flat_health_cost, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 120f } }, { ItemStat.primary_attack_health_returned, new ItemStatConfig { Default_value = 10f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_projectile_count, new ItemStatConfig { Default_value = 2f, Min = 1f, Max = 10f, IsInt = true } }, { ItemStat.projectile_velocity, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 300f } } }; itemDefinition7.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "FlametalNew", Amount = 18, UpgradeCost = 10 }, new RecipeIngredient { Prefab = "Blackwood", Amount = 24, UpgradeCost = 12 }, new RecipeIngredient { Prefab = "GemstoneRed", Amount = 2, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "DvergrNeedle", Amount = 1, UpgradeCost = 0 }, new RecipeIngredient { Prefab = "Bronze", Amount = 0, UpgradeCost = 6 } } }; Loader.AddDefinition(itemDefinition7); } private void LoadPickaxes() { ItemDefinition itemDefinition = new ItemDefinition(); itemDefinition.Name = "Bone Blood Pickaxe"; itemDefinition.Category = ItemCategory.Pickaxes; itemDefinition.Prefab = "VABlood_Bones_pickaxe"; itemDefinition.Icon = "blood_bone_pickaxe"; itemDefinition.CraftedAt = "forge"; itemDefinition.CraftAmount = 1; itemDefinition.ReqStationlevel = 1; itemDefinition.ModifableStats = new Dictionary { { ItemStat.pierce, new ItemStatConfig { Default_value = 26f, Min = 0f, Max = 200f } }, { ItemStat.pierce_per_level, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.spirit, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 200f } }, { ItemStat.spirit_per_level, new ItemStatConfig { Default_value = 2f, Min = 0f, Max = 50f } }, { ItemStat.pickaxe, new ItemStatConfig { Default_value = 32f, Min = 0f, Max = 200f } }, { ItemStat.pickaxe_per_level, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.attack_force, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 100f } }, { ItemStat.primary_attack_stamina, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_flat_health_cost, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.primary_attack_percent_health_cost, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 50f } }, { ItemStat.secondary_attack_stamina, new ItemStatConfig { Default_value = 4f, Min = 0f, Max = 50f } }, { ItemStat.secondary_attack_flat_health_cost, new ItemStatConfig { Default_value = 6f, Min = 0f, Max = 50f } }, { ItemStat.secondary_attack_percent_health_cost, new ItemStatConfig { Default_value = 0f, Min = 0f, Max = 100f } }, { ItemStat.tool_level, new ItemStatConfig { Default_value = 1f, Min = 0f, Max = 5f, IsInt = true } }, { ItemStat.durability, new ItemStatConfig { Default_value = 200f, Min = 0f, Max = 800f } }, { ItemStat.durability_per_level, new ItemStatConfig { Default_value = 50f, Min = 0f, Max = 200f } } }; itemDefinition.Recipe = new RecipeDefinition { RecipeItems = new List { new RecipeIngredient { Prefab = "RoundLog", Amount = 12, UpgradeCost = 8 }, new RecipeIngredient { Prefab = "BoneFragments", Amount = 20, UpgradeCost = 14 }, new RecipeIngredient { Prefab = "Bronze", Amount = 4, UpgradeCost = 2 }, new RecipeIngredient { Prefab = "TrophySkeleton", Amount = 2, UpgradeCost = 0 } } }; Loader.AddDefinition(itemDefinition); } private void LoadNonCraftables() { NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_ancient.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_bone.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Bows/projectiles/blood_projectile.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_boltBronze.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_boltFrost.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_boltObsidian.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_boltPoison.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_boltSurtling.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_greenmetal.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_surtlingfire.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_boltWood.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_boltCorewood.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_chitin.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Arrows/VAbow_projectile_needle.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Spears/VAspearblackmetal_projectile.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Spears/VAspearmoder_projectile.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Magics/projectiles/staff_poison_projectile.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Magics/projectiles/staff_spirit_projectile.Prefab"); NonCraftablePrefab("Assets/Custom/Weapons/Magics/projectiles/vfx_spirit_explosion.Prefab"); NonCraftableItem("Assets/Custom/statuses/VABloodBuff.asset"); NonCraftableItem("Assets/Custom/statuses/VAModerShield.asset"); NonCraftableItem("Assets/Custom/statuses/VAQueen_buff.asset"); NonCraftableItem("Assets/Custom/statuses/VAVineshield_resistance.asset"); } private static void NonCraftableItem(string full_path) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown CustomStatusEffect val = new CustomStatusEffect((StatusEffect)(object)ValheimArmory.EmbeddedResourceBundle.LoadAsset(full_path ?? ""), false); ItemManager.Instance.AddStatusEffect(val); } public static void NonCraftablePrefab(string full_path) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown CustomPrefab val = new CustomPrefab(ValheimArmory.EmbeddedResourceBundle.LoadAsset(full_path ?? ""), true); PrefabManager.Instance.AddPrefab(val); } } [BepInPlugin("MidnightsFX.ValheimArmory", "ValheimArmory", "1.28.1")] [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.28.1"; 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.VanillaHammersHavePrimaryAttack.SettingChanged += WeaponModifier.OnConfigChangeModifyHammers; ValConfig.ModHammersHavePrimaryAttack.SettingChanged += WeaponModifier.OnConfigChangeModifyModHammers; ValConfig.VanillaAbyssalKnifeBluntDamageConvert.SettingChanged += WeaponModifier.OnConfigChangeModifyVanillaKnife; Assembly executingAssembly = Assembly.GetExecutingAssembly(); new Harmony("MidnightsFX.ValheimArmory").PatchAll(executingAssembly); ValConfig.SaveOnSet(enabled: true); ValConfig.SetupMainFileWatcher(); AddLocalizations(); } 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 internal_localization = SimpleJson.DeserializeObject>(text2); string[] array = text.Split('.'); string path = Path.Combine(Paths.ConfigPath, "ValheimArmory", "localizations", array[2] + ".json"); if (File.Exists(path)) { string text3 = File.ReadAllText(path); try { Dictionary cached_localization = SimpleJson.DeserializeObject>(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 UpdateLocalizationWithMissingKeys(Dictionary internal_localization, Dictionary cached_localization) { if (internal_localization.Keys != cached_localization.Keys) { List list = cached_localization.Keys.ToList(); foreach (KeyValuePair 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 ValConfig { public static ConfigFile cfg; public static ConfigEntry EnableDebugMode; public static ConfigEntry HybridWeaponBloodMagicSkillIncrease; public static ConfigEntry VanillaHammersHavePrimaryAttack; public static ConfigEntry ModHammersHavePrimaryAttack; public static ConfigEntry StagbreakerPrimaryAttackStamina; public static ConfigEntry IronSledgePrimaryAttackStamina; public static ConfigEntry DemolisherPrimaryAttackStamina; public static ConfigEntry VanillaAbyssalKnifeBluntDamageConvert; public static ConfigEntry EnableVanillaSpear; public static ConfigEntry EnableVanillaFlintAxe; public static ConfigEntry AbyssalKnifeBlunt; public static ConfigEntry AbyssalKnifeBluntPerLevel; public static ConfigEntry BloodHungerRegen; public static ConfigEntry QueenHealthRegen; public static ConfigEntry QueenEitrRegen; public static ConfigEntry InMemoryModificationsPerTick; public static ConfigEntry ConfigApplyDelay; public ValConfig(ConfigFile Config) { cfg = Config; cfg.SaveOnConfigSet = false; CreateConfigValues(Config); Logger.toggleDebug(); } public static void SaveOnSet(bool enabled) { cfg.SaveOnConfigSet = enabled; cfg.Save(); } 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 EnableDebugMode = Config.Bind("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; 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); StagbreakerPrimaryAttackStamina.SettingChanged += WeaponModifier.OnConfigStagbreakerValueChanged; IronSledgePrimaryAttackStamina = BindServerConfig("Vanilla Weapons", "IronSledgePrimaryAttackStamina", 10f, "Stamina cost of the basic attack when enabled for the iron sledge.", advanced: true, 1f, 30f); IronSledgePrimaryAttackStamina.SettingChanged += WeaponModifier.OnConfigIronSledgeValueChanged; DemolisherPrimaryAttackStamina = BindServerConfig("Vanilla Weapons", "DemolisherPrimaryAttackStamina", 14f, "Stamina cost of the basic attack when enabled for the demolisher.", advanced: true, 1f, 30f); DemolisherPrimaryAttackStamina.SettingChanged += 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); AbyssalKnifeBlunt.SettingChanged += WeaponModifier.OnConfigAbyssalKnifeValueChanged; AbyssalKnifeBluntPerLevel.SettingChanged += 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); BloodHungerRegen.SettingChanged += 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); QueenHealthRegen.SettingChanged += 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); QueenEitrRegen.SettingChanged += 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); } internal static void SetupMainFileWatcher() { FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(); fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite; fileSystemWatcher.Path = Path.GetDirectoryName(cfg.ConfigFilePath); fileSystemWatcher.Filter = "MidnightsFX.ValheimArmory.cfg"; fileSystemWatcher.Changed += OnConfigFileChanged; fileSystemWatcher.SynchronizingObject = ThreadingHelper.SynchronizingObject; fileSystemWatcher.EnableRaisingEvents = true; } private static void OnConfigFileChanged(object sender, FileSystemEventArgs e) { if (ZNet.instance.IsServer()) { Logger.LogInfo("Configuration file has been changed, reloading settings."); cfg.Reload(); } } public static ConfigEntry 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(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } public static ConfigEntry 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(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)(object)new AcceptableValueRange(valmin, valmax), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } public static ConfigEntry 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(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)(object)new AcceptableValueRange(valmin, valmax), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } public static ConfigEntry BindServerConfig(string catagory, string key, string value, string description, bool advanced = false, AcceptableValueList 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(catagory, key, value, new ConfigDescription(description, (AcceptableValueBase)(object)allowed_values, new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = advanced } })); } } } namespace ValheimArmory.patches { public static class HybridBloodWeapon { [HarmonyPatch(typeof(Skills), "RaiseSkill")] public static class BloodHybridWeaponsRaiseSkills { private static List HybridWeapons = new List { "VABlood_bone_bow", "VABlood_Bones_pickaxe", "VAHeavy_Blood_Bone_Bow" }; private static string SoulStealer = "VASoulStealer"; public static void Postfix(SkillType skillType, float factor) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Invalid comparison between Unknown and I4 //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 if (((int)skillType != 8 && (int)skillType != 12) || (Object)(object)Player.m_localPlayer == (Object)null) { return; } ItemData currentWeapon = ((Humanoid)Player.m_localPlayer).GetCurrentWeapon(); if (currentWeapon != null && !((Object)(object)currentWeapon.m_dropPrefab == (Object)null)) { string name = ((Object)((Humanoid)Player.m_localPlayer).GetCurrentWeapon().m_dropPrefab).name; if (HybridWeapons.Contains(name)) { ((Character)Player.m_localPlayer).RaiseSkill((SkillType)10, ValConfig.HybridWeaponBloodMagicSkillIncrease.Value); } if (SoulStealer == name) { ((Character)Player.m_localPlayer).RaiseSkill((SkillType)14, ValConfig.HybridWeaponBloodMagicSkillIncrease.Value); } } } } } } namespace ValheimArmory.common { internal class StatusModifiers { private static List bloodBuffPrefabs = new List { "VABlood_bone_bow", "VABlood_bone_bow(Clone)", "VAHeavy_Blood_Bone_Bow", "VAHeavy_Blood_Bone_Bow(Clone)", "VABlood_Bones_pickaxe", "VABlood_Bones_pickaxe(Clone)" }; private static List queenBuffPrefabs = new List { "VAQueen_greatsword", "VAQueen_greatsword(Clone)", "VASwordQueen", "VASwordQueen(Clone)", "VAQueen_bow", "VAQueen_bow(Clone)", "VAdagger_queen", "VAdagger_queen(Clone)" }; public static void OnConfigBloodChanged(object sender, EventArgs e) { SE_Stats equipStatusEffect = null; foreach (SE_Stats item in (from se in Resources.FindObjectsOfTypeAll() where ((Object)se).name == "VABloodBuff" select se).ToList()) { item.m_healthRegenMultiplier = ValConfig.BloodHungerRegen.Value; equipStatusEffect = item; } foreach (GameObject item2 in from obj in Resources.FindObjectsOfTypeAll() where bloodBuffPrefabs.Contains(((Object)obj).name) select obj) { ItemDrop val = null; if (item2.TryGetComponent(ref val)) { val.m_itemData.m_shared.m_equipStatusEffect = (StatusEffect)(object)equipStatusEffect; } } if ((Object)(object)Player.m_localPlayer == (Object)null) { return; } foreach (ItemData allItem in ((Humanoid)Player.m_localPlayer).m_inventory.GetAllItems()) { if (allItem != null && !bloodBuffPrefabs.Contains(((Object)allItem.m_dropPrefab).name)) { allItem.m_shared.m_equipStatusEffect = (StatusEffect)(object)equipStatusEffect; } } } public static void OnConfigQueenHealthRegenChanged(object sender, EventArgs e) { SE_Stats equipStatusEffect = null; foreach (SE_Stats item in (from se in Resources.FindObjectsOfTypeAll() where ((Object)se).name == "VAQueen_buff" select se).ToList()) { item.m_healthRegenMultiplier = ValConfig.QueenHealthRegen.Value; item.m_eitrRegenMultiplier = ValConfig.QueenEitrRegen.Value; equipStatusEffect = item; } foreach (GameObject item2 in from obj in Resources.FindObjectsOfTypeAll() where queenBuffPrefabs.Contains(((Object)obj).name) select obj) { ItemDrop val = null; if (item2.TryGetComponent(ref val)) { val.m_itemData.m_shared.m_equipStatusEffect = (StatusEffect)(object)equipStatusEffect; } } if ((Object)(object)Player.m_localPlayer == (Object)null) { return; } foreach (ItemData allItem in ((Humanoid)Player.m_localPlayer).m_inventory.GetAllItems()) { if (allItem != null && !queenBuffPrefabs.Contains(((Object)allItem.m_dropPrefab).name)) { allItem.m_shared.m_equipStatusEffect = (StatusEffect)(object)equipStatusEffect; } } } public static void SyncStatusEffectsToConfig() { OnConfigBloodChanged(null, null); OnConfigQueenHealthRegenChanged(null, null); } } internal static class WeaponModifier { internal class WeaponAttackData { public Attack primary_attack { get; set; } public Attack secondary_attack { get; set; } } private static GameObject vfx_sledge_hit; private static GameObject fx_camshake; private static GameObject sfx_sledge_hit; private static GameObject sfx_sledge_swing; private static GameObject fx_demolisher_hit; private static GameObject vfx_clubhit; private static GameObject sfx_clubhit; private static GameObject sfx_swing_wosh; private static Dictionary OriginalWeaponAttackCache = new Dictionary(); internal static WeaponAttackData CheckForWeaponData(string weapon_name) { if (OriginalWeaponAttackCache.ContainsKey(weapon_name)) { return OriginalWeaponAttackCache[weapon_name]; } foreach (GameObject item in from obj in Resources.FindObjectsOfTypeAll() where ((Object)obj).name.StartsWith(weapon_name) select obj) { ItemDrop val = null; if (item.TryGetComponent(ref val) && val.m_itemData.m_shared.m_attack.m_attackAnimation != null && val.m_itemData.m_shared.m_secondaryAttack.m_attackAnimation != null) { OriginalWeaponAttackCache.Add(weapon_name, new WeaponAttackData { primary_attack = val.m_itemData.m_shared.m_attack, secondary_attack = val.m_itemData.m_shared.m_secondaryAttack }); break; } } return OriginalWeaponAttackCache[weapon_name]; } public static void SetupEffects() { vfx_sledge_hit = PrefabManager.Instance.GetPrefab("vfx_sledge_hit"); fx_camshake = PrefabManager.Instance.GetPrefab("fx_swing_camshake"); sfx_sledge_hit = PrefabManager.Instance.GetPrefab("sfx_sledge_hit"); sfx_sledge_swing = PrefabManager.Instance.GetPrefab("sfx_sledge_swing"); fx_demolisher_hit = PrefabManager.Instance.GetPrefab("fx_sledge_demolisher_hit"); vfx_clubhit = PrefabManager.Instance.GetPrefab("vfx_clubhit"); sfx_clubhit = PrefabManager.Instance.GetPrefab("sfx_club_hit"); sfx_swing_wosh = PrefabManager.Instance.GetPrefab("sfx_battleaxe_swing_wosh"); Logger.LogDebug($"Set Effect Prefabs: vfx_sledge_hit:{vfx_sledge_hit} fx_camshake:{fx_camshake} sfx_sledge_hit:{sfx_sledge_hit} sfx_sledge_swing:{sfx_sledge_swing} fx_demolisher_hit:{fx_demolisher_hit} vfx_clubhit:{vfx_clubhit} sfx_clubhit:{sfx_clubhit} sfx_swing_wosh: {sfx_swing_wosh}"); } public static Attack SetWarhammerPrimaryAttack(float stamina_cost = 22f) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: 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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Expected O, but got Unknown return new Attack { m_attackChainLevels = 3, m_attackRandomAnimations = 0, m_hitTerrain = true, m_speedFactor = 0.3f, m_speedFactorRotation = 0.3f, m_attackStartNoise = 20f, m_attackHitNoise = 30f, m_forceMultiplier = 1f, m_staggerMultiplier = 1.5f, m_damageMultiplier = 1f, m_attackAnimation = "battleaxe_attack", m_attackType = (AttackType)0, m_attackRange = 2.5f, m_attackHeight = 1f, m_skillHitType = (DestructibleType)4, m_attackAngle = 90f, m_attackRayWidth = 0.5f, m_multiHit = true, m_raiseSkillAmount = 1f, m_lastChainDamageMultiplier = 2f, m_hitPointtype = (HitPointType)0, m_lowerDamagePerHit = true, m_resetChainIfHit = (DestructibleType)2, m_attackStamina = stamina_cost, m_lastChainDamageMultiplier = 2f }; } public static Attack SetSledgeSmash(float stamina_cost = 14f) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: 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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Expected O, but got Unknown return new Attack { m_attackChainLevels = 0, m_attackRandomAnimations = 0, m_hitTerrain = true, m_speedFactor = 0.3f, m_speedFactorRotation = 0.1f, m_attackStartNoise = 10f, m_attackHitNoise = 60f, m_forceMultiplier = 1f, m_staggerMultiplier = 1.5f, m_damageMultiplier = 1f, m_attackAnimation = "swing_sledge", m_attackType = (AttackType)4, m_attackRange = 2f, m_attackHeight = 0f, m_skillHitType = (DestructibleType)4, m_attackAngle = 90f, m_attackRayWidth = 4f, m_multiHit = true, m_raiseSkillAmount = 1f, m_lastChainDamageMultiplier = 2f, m_hitPointtype = (HitPointType)0, m_lowerDamagePerHit = true, m_resetChainIfHit = (DestructibleType)0, m_attackStamina = stamina_cost, m_lastChainDamageMultiplier = 2f }; } public static EffectList SledgeTriggerEffects(bool demolisher = false) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: 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_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Expected O, but got Unknown //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Expected O, but got Unknown //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Expected O, but got Unknown EffectData[] effectPrefabs = (EffectData[])(object)new EffectData[3] { new EffectData { m_prefab = fx_camshake, m_enabled = true, m_variant = -1 }, new EffectData { m_prefab = vfx_sledge_hit, m_enabled = true, m_variant = -1 }, new EffectData { m_prefab = sfx_sledge_hit, m_enabled = true, m_variant = -1 } }; EffectData[] array = (EffectData[])(object)new EffectData[2] { new EffectData { m_prefab = fx_camshake, m_enabled = true, m_variant = -1 }, new EffectData { m_prefab = fx_demolisher_hit, m_enabled = true, m_variant = -1 } }; if (demolisher) { effectPrefabs = array; } return new EffectList { m_effectPrefabs = effectPrefabs }; } public static EffectList SledgeStartEffects() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: 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_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown EffectData[] effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = sfx_sledge_swing, m_enabled = true, m_variant = -1 } }; return new EffectList { m_effectPrefabs = effectPrefabs }; } public static EffectList SledgeComboSwingSFX() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: 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_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown EffectData[] effectPrefabs = (EffectData[])(object)new EffectData[1] { new EffectData { m_prefab = sfx_swing_wosh, m_enabled = true, m_variant = -1 } }; return new EffectList { m_effectPrefabs = effectPrefabs }; } public static EffectList SetWarhammerAttackVFX() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: 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_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown EffectData[] effectPrefabs = (EffectData[])(object)new EffectData[2] { new EffectData { m_prefab = vfx_clubhit, m_enabled = true, m_variant = -1 }, new EffectData { m_prefab = sfx_clubhit, m_enabled = true, m_variant = -1 } }; return new EffectList { m_effectPrefabs = effectPrefabs }; } public static void ClearSecondaryAttack(ItemData id) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown id.m_shared.m_secondaryAttack = new Attack(); } public static void ClearSharedVFX(ItemData id) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown id.m_shared.m_startEffect = new EffectList(); id.m_shared.m_triggerEffect = new EffectList(); id.m_shared.m_hitEffect = new EffectList(); id.m_shared.m_hitTerrainEffect = new EffectList(); } public static void SledgeToWarhammer(string weapon_prefab, float primary_stamina, float secondary_stamina) { bool demolisher = false; if (weapon_prefab == "SledgeDemolisher") { demolisher = true; } Attack attack = SetWarhammerPrimaryAttack(primary_stamina); Attack secondaryAttack = SetSledgeSmash(secondary_stamina); EffectList hitEffect = SetWarhammerAttackVFX(); EffectList triggerEffect = SledgeTriggerEffects(demolisher); EffectList startEffect = SledgeStartEffects(); EffectList trailStartEffect = SledgeComboSwingSFX(); foreach (GameObject item in from obj in Resources.FindObjectsOfTypeAll() where ((Object)obj).name.StartsWith(weapon_prefab) select obj) { ItemDrop val = null; if (item.TryGetComponent(ref val)) { val.m_itemData.m_shared.m_attack = attack; val.m_itemData.m_shared.m_secondaryAttack = secondaryAttack; val.m_itemData.m_shared.m_attack.m_hitEffect = hitEffect; val.m_itemData.m_shared.m_attack.m_trailStartEffect = trailStartEffect; val.m_itemData.m_shared.m_secondaryAttack.m_triggerEffect = triggerEffect; val.m_itemData.m_shared.m_secondaryAttack.m_startEffect = startEffect; ClearSharedVFX(val.m_itemData); } } if (!((Object)(object)Player.m_localPlayer != (Object)null)) { return; } Logger.LogDebug("Modifying items within the players inventory."); foreach (ItemData allItem in ((Humanoid)Player.m_localPlayer).m_inventory.GetAllItems()) { if (allItem != null && !(((Object)allItem.m_dropPrefab).name != weapon_prefab)) { Logger.LogDebug(allItem.m_shared.m_name + " found in the players backpack, updating."); allItem.m_shared.m_attack = attack; allItem.m_shared.m_secondaryAttack = secondaryAttack; allItem.m_shared.m_attack.m_hitEffect = hitEffect; allItem.m_shared.m_attack.m_trailStartEffect = trailStartEffect; allItem.m_shared.m_secondaryAttack.m_triggerEffect = triggerEffect; allItem.m_shared.m_secondaryAttack.m_startEffect = startEffect; ClearSharedVFX(allItem); } } } public static void ToSledge(string weapon_prefab, float sledge_stamina) { bool demolisher = false; if (weapon_prefab == "SledgeDemolisher") { demolisher = true; } Attack attack = SetSledgeSmash(sledge_stamina); EffectList triggerEffect = SledgeTriggerEffects(demolisher); EffectList startEffect = SledgeStartEffects(); foreach (GameObject item in from obj in Resources.FindObjectsOfTypeAll() where ((Object)obj).name.StartsWith(weapon_prefab) select obj) { ItemDrop val = null; if (item.TryGetComponent(ref val)) { val.m_itemData.m_shared.m_attack = attack; ClearSharedVFX(val.m_itemData); ClearSecondaryAttack(val.m_itemData); val.m_itemData.m_shared.m_triggerEffect = triggerEffect; val.m_itemData.m_shared.m_startEffect = startEffect; val.m_itemData.m_shared.m_attack.m_trailStartEffect = null; } } if (!((Object)(object)Player.m_localPlayer != (Object)null)) { return; } Logger.LogDebug("Modifying items within the players inventory."); foreach (ItemData allItem in ((Humanoid)Player.m_localPlayer).m_inventory.GetAllItems()) { if (allItem != null && !(((Object)allItem.m_dropPrefab).name != weapon_prefab)) { Logger.LogDebug(allItem.m_shared.m_name + " found in the players backpack, updating."); allItem.m_shared.m_attack = attack; ClearSharedVFX(allItem); ClearSecondaryAttack(allItem); allItem.m_shared.m_triggerEffect = triggerEffect; allItem.m_shared.m_startEffect = startEffect; allItem.m_shared.m_attack.m_trailStartEffect = null; } } } public static void ModifyStamina(string weapon_prefab, float sledge_stamina) { foreach (GameObject item in from obj in Resources.FindObjectsOfTypeAll() where ((Object)obj).name.StartsWith(weapon_prefab) select obj) { ItemDrop val = null; if (item.TryGetComponent(ref val)) { val.m_itemData.m_shared.m_attack.m_attackStamina = sledge_stamina; } } if (!((Object)(object)Player.m_localPlayer != (Object)null)) { return; } Logger.LogDebug("Modifying items within the players inventory."); foreach (ItemData allItem in ((Humanoid)Player.m_localPlayer).m_inventory.GetAllItems()) { if (allItem != null && !(((Object)allItem.m_dropPrefab).name != weapon_prefab)) { Logger.LogDebug(allItem.m_shared.m_name + " found in the players backpack, updating."); allItem.m_shared.m_attack.m_attackStamina = sledge_stamina; } } } public static void SetWeaponPrimaryAndSecondary(string weapon_prefab, Attack primary, Attack secondary) { foreach (GameObject item in from obj in Resources.FindObjectsOfTypeAll() where ((Object)obj).name.StartsWith(weapon_prefab) select obj) { ItemDrop val = null; if (item.TryGetComponent(ref val)) { val.m_itemData.m_shared.m_attack = primary; val.m_itemData.m_shared.m_secondaryAttack = secondary; } } if (!((Object)(object)Player.m_localPlayer != (Object)null)) { return; } Logger.LogDebug("Modifying items within the players inventory."); foreach (ItemData allItem in ((Humanoid)Player.m_localPlayer).m_inventory.GetAllItems()) { if (allItem != null && !(((Object)allItem.m_dropPrefab).name != weapon_prefab)) { Logger.LogDebug(allItem.m_shared.m_name + " found in the players backpack, updating."); allItem.m_shared.m_attack = primary; allItem.m_shared.m_secondaryAttack = secondary; } } } public static void ModifyVanillaHammersToWarhammers() { if (ValConfig.VanillaHammersHavePrimaryAttack.Value) { SledgeToWarhammer("SledgeStagbreaker", ValConfig.StagbreakerPrimaryAttackStamina.Value, 12f); SledgeToWarhammer("SledgeIron", ValConfig.IronSledgePrimaryAttackStamina.Value, 20f); SledgeToWarhammer("SledgeDemolisher", ValConfig.DemolisherPrimaryAttackStamina.Value, 28f); } } public static void ModifyVanillaHammersToSledges() { ToSledge("SledgeStagbreaker", 12f); ToSledge("SledgeIron", 20f); ToSledge("SledgeDemolisher", 28f); } public static void ModifyModHammersToSledges() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Expected O, but got Unknown //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Expected O, but got Unknown //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Expected O, but got Unknown //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Expected O, but got Unknown //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Expected O, but got Unknown SetWeaponPrimaryAndSecondary("VAflametal_sledge_nature", CheckForWeaponData("VAflametal_sledge_nature").secondary_attack, new Attack()); SetWeaponPrimaryAndSecondary("VAflametal_sledge_lightning", CheckForWeaponData("VAflametal_sledge_lightning").secondary_attack, new Attack()); SetWeaponPrimaryAndSecondary("VAflametal_sledge_blood", CheckForWeaponData("VAflametal_sledge_blood").secondary_attack, new Attack()); SetWeaponPrimaryAndSecondary("VAflametal_sledge", CheckForWeaponData("VAflametal_sledge").secondary_attack, new Attack()); SetWeaponPrimaryAndSecondary("VAblackmetal_sledge", CheckForWeaponData("VAblackmetal_sledge").secondary_attack, new Attack()); SetWeaponPrimaryAndSecondary("VAElderHammer", CheckForWeaponData("VAElderHammer").secondary_attack, new Attack()); SetWeaponPrimaryAndSecondary("VABronzeSledge", CheckForWeaponData("VABronzeSledge").secondary_attack, new Attack()); SetWeaponPrimaryAndSecondary("VABonemassWarhammer", CheckForWeaponData("VABonemassWarhammer").secondary_attack, new Attack()); SetWeaponPrimaryAndSecondary("VASilverSledge", CheckForWeaponData("VASilverSledge").secondary_attack, new Attack()); } public static void ModifyModHammersToWarhammers() { SetWeaponPrimaryAndSecondary("VAflametal_sledge_nature", CheckForWeaponData("VAflametal_sledge_nature").primary_attack, CheckForWeaponData("VAflametal_sledge_nature").secondary_attack); SetWeaponPrimaryAndSecondary("VAflametal_sledge_lightning", CheckForWeaponData("VAflametal_sledge_lightning").primary_attack, CheckForWeaponData("VAflametal_sledge_lightning").secondary_attack); SetWeaponPrimaryAndSecondary("VAflametal_sledge_blood", CheckForWeaponData("VAflametal_sledge_blood").primary_attack, CheckForWeaponData("VAflametal_sledge_blood").secondary_attack); SetWeaponPrimaryAndSecondary("VAflametal_sledge", CheckForWeaponData("VAflametal_sledge").primary_attack, CheckForWeaponData("VAflametal_sledge").secondary_attack); SetWeaponPrimaryAndSecondary("VAblackmetal_sledge", CheckForWeaponData("VAblackmetal_sledge").primary_attack, CheckForWeaponData("VAblackmetal_sledge").secondary_attack); SetWeaponPrimaryAndSecondary("VAElderHammer", CheckForWeaponData("VAElderHammer").primary_attack, CheckForWeaponData("VAElderHammer").secondary_attack); SetWeaponPrimaryAndSecondary("VABronzeSledge", CheckForWeaponData("VABronzeSledge").primary_attack, CheckForWeaponData("VABronzeSledge").secondary_attack); SetWeaponPrimaryAndSecondary("VABonemassWarhammer", CheckForWeaponData("VABonemassWarhammer").primary_attack, CheckForWeaponData("VABonemassWarhammer").secondary_attack); SetWeaponPrimaryAndSecondary("VASilverSledge", CheckForWeaponData("VASilverSledge").primary_attack, CheckForWeaponData("VASilverSledge").secondary_attack); } public static void OnConfigChangeModifyHammers(object sender, EventArgs e) { if (!Game.instance.IsShuttingDown()) { if (ValConfig.VanillaHammersHavePrimaryAttack.Value) { ModifyVanillaHammersToWarhammers(); } else { ModifyVanillaHammersToSledges(); } } } public static void OnConfigChangeModifyModHammers(object sender, EventArgs e) { if (!Game.instance.IsShuttingDown()) { if (ValConfig.ModHammersHavePrimaryAttack.Value) { ModifyModHammersToWarhammers(); } else { ModifyModHammersToSledges(); } } } public static void OnConfigStagbreakerValueChanged(object sender, EventArgs e) { if (ValConfig.VanillaHammersHavePrimaryAttack.Value) { ModifyStamina("SledgeStagbreaker", ValConfig.StagbreakerPrimaryAttackStamina.Value); } } public static void OnConfigIronSledgeValueChanged(object sender, EventArgs e) { if (ValConfig.VanillaHammersHavePrimaryAttack.Value) { ModifyStamina("SledgeIron", ValConfig.IronSledgePrimaryAttackStamina.Value); } } public static void OnConfigDemolisherValueChanged(object sender, EventArgs e) { if (ValConfig.VanillaHammersHavePrimaryAttack.Value) { ModifyStamina("SledgeDemolisher", ValConfig.DemolisherPrimaryAttackStamina.Value); } } public static void ModifyVanillaKnife() { if (ValConfig.VanillaAbyssalKnifeBluntDamageConvert.Value) { KnifeToAbyssal("KnifeChitin"); } } public static void OnConfigChangeModifyVanillaKnife(object sender, EventArgs e) { if (ValConfig.VanillaAbyssalKnifeBluntDamageConvert.Value) { KnifeToAbyssal("KnifeChitin"); } else { KnifeToVanilla("KnifeChitin"); } } public static void OnConfigAbyssalKnifeValueChanged(object sender, EventArgs e) { if (ValConfig.VanillaHammersHavePrimaryAttack.Value) { KnifeToAbyssal("KnifeChitin"); } } public static void KnifeToAbyssal(string weapon_prefab) { foreach (GameObject item in from obj in Resources.FindObjectsOfTypeAll() where ((Object)obj).name.StartsWith(weapon_prefab) select obj) { ItemDrop val = null; if (item.TryGetComponent(ref val)) { val.m_itemData.m_shared.m_damages.m_slash = 0f; val.m_itemData.m_shared.m_damages.m_blunt = ValConfig.AbyssalKnifeBlunt.Value; val.m_itemData.m_shared.m_damagesPerLevel.m_slash = 0f; val.m_itemData.m_shared.m_damagesPerLevel.m_blunt = ValConfig.AbyssalKnifeBluntPerLevel.Value; } } if (!((Object)(object)Player.m_localPlayer != (Object)null)) { return; } Logger.LogDebug("Modifying items within the players inventory."); foreach (ItemData allItem in ((Humanoid)Player.m_localPlayer).m_inventory.GetAllItems()) { if (allItem != null && !(((Object)allItem.m_dropPrefab).name != weapon_prefab)) { Logger.LogDebug(allItem.m_shared.m_name + " found in the players backpack, updating."); allItem.m_shared.m_damages.m_slash = 0f; allItem.m_shared.m_damages.m_blunt = ValConfig.AbyssalKnifeBlunt.Value; allItem.m_shared.m_damagesPerLevel.m_slash = 0f; allItem.m_shared.m_damagesPerLevel.m_blunt = ValConfig.AbyssalKnifeBluntPerLevel.Value; } } } public static void KnifeToVanilla(string weapon_prefab) { foreach (GameObject item in from obj in Resources.FindObjectsOfTypeAll() where ((Object)obj).name.StartsWith(weapon_prefab) select obj) { ItemDrop val = null; if (item.TryGetComponent(ref val)) { val.m_itemData.m_shared.m_damages.m_blunt = 0f; val.m_itemData.m_shared.m_damages.m_slash = 20f; val.m_itemData.m_shared.m_damagesPerLevel.m_blunt = 0f; val.m_itemData.m_shared.m_damagesPerLevel.m_slash = 1f; } } if (!((Object)(object)Player.m_localPlayer != (Object)null)) { return; } Logger.LogDebug("Modifying items within the players inventory."); foreach (ItemData allItem in ((Humanoid)Player.m_localPlayer).m_inventory.GetAllItems()) { if (allItem != null && !(((Object)allItem.m_dropPrefab).name != weapon_prefab)) { Logger.LogDebug(allItem.m_shared.m_name + " found in the players backpack, updating."); allItem.m_shared.m_damages.m_blunt = 0f; allItem.m_shared.m_damages.m_slash = 20f; allItem.m_shared.m_damagesPerLevel.m_blunt = 0f; allItem.m_shared.m_damagesPerLevel.m_slash = 1f; } } } public static void OnConfigChangeModifyVanillaFlintAxe(object sender, EventArgs e) { ToggleVanillaFlintAxe(); } public static void ToggleVanillaFlintAxe() { if (!((Object)(object)ObjectDB.m_instance == (Object)null)) { int num = RecipeIndexForPrefab("AxeFlint"); if (num != -1) { ObjectDB.instance.m_recipes[num].m_enabled = ValConfig.EnableVanillaFlintAxe.Value; } } } public static void OnConfigChangeModifyVanillaFlintSpear(object sender, EventArgs e) { ToggleVanillaFlintSpear(); } public static void ToggleVanillaFlintSpear() { if (!((Object)(object)ObjectDB.m_instance == (Object)null)) { int num = RecipeIndexForPrefab("SpearFlint"); if (num != -1) { ObjectDB.instance.m_recipes[num].m_enabled = ValConfig.EnableVanillaSpear.Value; } } } public static int RecipeIndexForPrefab(string prefab) { return ObjectDB.instance.m_recipes.FindIndex((Recipe m) => (Object)(object)m.m_item != (Object)null && ((Object)m.m_item).name == prefab); } } } namespace ValheimArmory.Common { internal static class ConfigChangeDebouncer { private static readonly Dictionary pendingActions = new Dictionary(); private static readonly Dictionary fireAt = new Dictionary(); private static readonly HashSet running = new HashSet(); internal static void Schedule(object key, Action action) { float num = ((ValConfig.ConfigApplyDelay != null) ? ValConfig.ConfigApplyDelay.Value : 0f); if (num <= 0f) { action(); return; } pendingActions[key] = action; fireAt[key] = Time.realtimeSinceStartup + num; if (!running.Contains(key)) { running.Add(key); ((MonoBehaviour)ThreadingHelper.Instance).StartCoroutine(Run(key)); } } private static IEnumerator Run(object key) { float value; while (fireAt.TryGetValue(key, out value) && Time.realtimeSinceStartup < value) { yield return null; } pendingActions.TryGetValue(key, out var value2); pendingActions.Remove(key); fireAt.Remove(key); running.Remove(key); value2?.Invoke(); } } internal static class ConfigDrawHelpers { private static readonly Dictionary TextBuffer = new Dictionary(); private static readonly Dictionary SliderPending = new Dictionary(); private static GUIStyle _headerButton; private static GUIStyle _groupLabel; private static GUIStyle _dim; internal static GUIStyle HeaderButton => _headerButton; internal static GUIStyle Dim => _dim; internal static void EnsureStyles() { //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_002a: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected O, but got Unknown if (_headerButton == null) { _headerButton = new GUIStyle(GUI.skin.button) { alignment = (TextAnchor)3, fontStyle = (FontStyle)1 }; _groupLabel = new GUIStyle(GUI.skin.label) { fontStyle = (FontStyle)1 }; _dim = new GUIStyle(GUI.skin.label) { fontStyle = (FontStyle)2, fontSize = 11 }; } } internal static ConfigurationManagerAttributes GetAttributes(ConfigEntryBase entry) { if (entry == null) { return null; } ConfigDescription description = entry.Description; if (description == null) { return null; } return description.Tags?.OfType().FirstOrDefault(); } internal static void Hide(ConfigEntryBase entry) { ConfigurationManagerAttributes attributes = GetAttributes(entry); if (attributes != null) { attributes.Browsable = false; } } internal static void GroupHeader(string text) { GUILayout.Space(4f); GUILayout.Label(text, _groupLabel, Array.Empty()); } private static bool EnterPressed() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Invalid comparison between Unknown and I4 //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Invalid comparison between Unknown and I4 //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Invalid comparison between Unknown and I4 if ((int)Event.current.type == 4) { if ((int)Event.current.keyCode != 13) { return (int)Event.current.keyCode == 271; } return true; } return false; } internal static void DrawBool(string label, ConfigEntry cfg) { bool flag = GUILayout.Toggle(cfg.Value, " " + label, Array.Empty()); if (flag != cfg.Value) { cfg.Value = flag; } } internal static void DrawString(string label, ConfigEntry cfg) { GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label(label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(230f) }); string text = "str_" + ((object)cfg).GetHashCode(); GUI.SetNextControlName(text); bool flag = GUI.GetNameOfFocusedControl() == text; string value; string text2 = GUILayout.TextField((flag && TextBuffer.TryGetValue(cfg, out value)) ? value : cfg.Value, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(230f) }); string value2; if (flag) { TextBuffer[cfg] = text2; if (EnterPressed() && cfg.Value != text2) { cfg.Value = text2; } } else if (TextBuffer.TryGetValue(cfg, out value2)) { if (cfg.Value != value2) { cfg.Value = value2; } TextBuffer.Remove(cfg); } GUILayout.EndHorizontal(); } internal static void DrawChoice(string label, ConfigEntry cfg) { GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label(label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(230f) }); if (((ConfigEntryBase)cfg).Description.AcceptableValues is AcceptableValueList val && val.AcceptableValues.Length != 0) { string[] acceptableValues = val.AcceptableValues; int num = Array.IndexOf(acceptableValues, cfg.Value); if (num < 0) { num = 0; } if (GUILayout.Button("◄", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(26f) })) { cfg.Value = acceptableValues[(num - 1 + acceptableValues.Length) % acceptableValues.Length]; } GUILayout.Label(cfg.Value, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) }); if (GUILayout.Button("►", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(26f) })) { cfg.Value = acceptableValues[(num + 1) % acceptableValues.Length]; } } else { GUILayout.Label(cfg.Value, Array.Empty()); } GUILayout.EndHorizontal(); } internal static void DrawFloat(string label, ConfigEntry cfg) { float num = 0f; float num2 = Mathf.Max(100f, cfg.Value); if (((ConfigEntryBase)cfg).Description.AcceptableValues is AcceptableValueRange val) { num = val.MinValue; num2 = val.MaxValue; } float num3 = DrawSliderRow(label, cfg, cfg.Value, num, num2, isInt: false); if (num3 != cfg.Value) { cfg.Value = Mathf.Clamp(num3, num, num2); } } internal static void DrawInt(string label, ConfigEntry cfg) { float num = 0f; float num2 = Mathf.Max(100f, (float)cfg.Value); if (((ConfigEntryBase)cfg).Description.AcceptableValues is AcceptableValueRange val) { num = val.MinValue; num2 = val.MaxValue; } int num3 = Mathf.Clamp(Mathf.RoundToInt(DrawSliderRow(label, cfg, cfg.Value, num, num2, isInt: true)), (int)num, (int)num2); if (num3 != cfg.Value) { cfg.Value = num3; } } private static float DrawSliderRow(string label, object key, float current, float min, float max, bool isInt) { float num = current; GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label(label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(230f) }); float value; float num2 = (SliderPending.TryGetValue(key, out value) ? value : current); float num3 = GUILayout.HorizontalSlider(num2, min, max, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(150f) }); if (Mathf.Abs(num3 - num2) > Mathf.Epsilon) { SliderPending[key] = num3; } if (SliderPending.TryGetValue(key, out var value2)) { num = value2; if (!Input.GetMouseButton(0)) { SliderPending.Remove(key); } } string text = "num_" + key.GetHashCode(); GUI.SetNextControlName(text); bool flag = GUI.GetNameOfFocusedControl() == text; string text2 = (isInt ? Mathf.RoundToInt(num).ToString() : num.ToString("0.###")); string value3; string text3 = GUILayout.TextField((flag && TextBuffer.TryGetValue(key, out value3)) ? value3 : text2, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(70f) }); string value4; if (flag) { TextBuffer[key] = text3; if (EnterPressed() && float.TryParse(text3, out var result)) { num = result; } } else if (TextBuffer.TryGetValue(key, out value4)) { if (float.TryParse(value4, out var result2)) { num = result2; } TextBuffer.Remove(key); } GUILayout.Label("[" + (isInt ? min.ToString() : min.ToString("0.#")) + " - " + (isInt ? max.ToString() : max.ToString("0.#")) + "]", _dim, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(90f) }); GUILayout.EndHorizontal(); return num; } } internal static class ItemConfigDrawer { private static readonly Dictionary Expanded = new Dictionary(); private static readonly Dictionary> RecipeRows = new Dictionary>(); private static int _order = 0; private static readonly (string name, ItemStat[] stats)[] StatGroups = new(string, ItemStat[])[4] { ("Damage", new ItemStat[20] { ItemStat.slash, ItemStat.slash_per_level, ItemStat.blunt, ItemStat.blunt_per_level, ItemStat.pierce, ItemStat.pierce_per_level, ItemStat.fire, ItemStat.fire_per_level, ItemStat.lightning, ItemStat.lightning_per_level, ItemStat.frost, ItemStat.frost_per_level, ItemStat.poison, ItemStat.poison_per_level, ItemStat.spirit, ItemStat.spirit_per_level, ItemStat.pickaxe, ItemStat.pickaxe_per_level, ItemStat.chop, ItemStat.chop_per_level }), ("Combat", new ItemStat[20] { ItemStat.attack_force, ItemStat.primary_attack_force_multiply, ItemStat.secondary_attack_force_multiply, ItemStat.primary_attack_stamina, ItemStat.primary_attack_eitr, ItemStat.primary_attack_flat_health_cost, ItemStat.primary_attack_percent_health_cost, ItemStat.primary_attack_health_returned, ItemStat.primary_attack_damage_bonus_per_missing_hp, ItemStat.primary_attack_projectile_count, ItemStat.secondary_attack_stamina, ItemStat.secondary_attack_eitr, ItemStat.secondary_attack_flat_health_cost, ItemStat.secondary_attack_percent_health_cost, ItemStat.projectile_velocity, ItemStat.projectile_accuracy_max, ItemStat.bow_draw_speed, ItemStat.crossbow_reload_speed, ItemStat.crossbow_reload_stamina_drain, ItemStat.draw_stamina_drain }), ("Defense", new ItemStat[5] { ItemStat.block_armor, ItemStat.block_armor_per_level, ItemStat.parry, ItemStat.block_force, ItemStat.block_force_per_level }), ("Item", new ItemStat[6] { ItemStat.durability, ItemStat.durability_per_level, ItemStat.max_item_level, ItemStat.tool_level, ItemStat.movement_speed, ItemStat.amount }) }; internal static void Attach(ItemDefinition itemdef) { ConfigDrawHelpers.Hide((ConfigEntryBase)(object)itemdef.StationLVLCfg); ConfigDrawHelpers.Hide((ConfigEntryBase)(object)itemdef.CraftAmountCfg); ConfigDrawHelpers.Hide((ConfigEntryBase)(object)itemdef.CraftedAtCfg); ConfigDrawHelpers.Hide((ConfigEntryBase)(object)itemdef.Recipe.RecipeConfig); if (itemdef.ModifableStats != null) { foreach (ItemStatConfig value in itemdef.ModifableStats.Values) { if (value.Cfg != null) { ConfigDrawHelpers.Hide((ConfigEntryBase)(object)value.Cfg); } if (value.CfgInt != null) { ConfigDrawHelpers.Hide((ConfigEntryBase)(object)value.CfgInt); } } } if (itemdef.DamageMods != null) { foreach (HitCustomDamageMod value2 in itemdef.DamageMods.Values) { if (value2.DmgModCfg != null) { ConfigDrawHelpers.Hide((ConfigEntryBase)(object)value2.DmgModCfg); } } } ConfigurationManagerAttributes attributes = ConfigDrawHelpers.GetAttributes((ConfigEntryBase)(object)itemdef.CraftableCfg); if (attributes != null) { attributes.CustomDrawer = delegate { Draw(itemdef); }; attributes.HideSettingName = true; attributes.HideDefaultButton = true; attributes.Category = itemdef.Category.ToString(); attributes.Order = _order--; } } private static void Draw(ItemDefinition itemdef) { //IL_02b1: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) ConfigDrawHelpers.EnsureStyles(); GUILayout.BeginVertical(GUI.skin.box, Array.Empty()); bool value; bool flag = Expanded.TryGetValue(itemdef.DisplayName, out value) && value; if (GUILayout.Button((flag ? "▾ " : "▸ ") + itemdef.Name, ConfigDrawHelpers.HeaderButton, Array.Empty())) { flag = !flag; Expanded[itemdef.DisplayName] = flag; } if (flag) { int num; if (SynchronizationManager.Instance != null) { num = (SynchronizationManager.Instance.PlayerIsAdmin ? 1 : 0); if (num == 0) { GUILayout.Label("Server-controlled – admin only.", ConfigDrawHelpers.Dim, Array.Empty()); } } else { num = 1; } bool enabled = GUI.enabled; GUI.enabled = (byte)num != 0; ConfigDrawHelpers.GroupHeader("Crafting"); ConfigDrawHelpers.DrawBool("Craftable", itemdef.CraftableCfg); ConfigDrawHelpers.DrawString("Crafted at", itemdef.CraftedAtCfg); ConfigDrawHelpers.DrawInt("Station level", itemdef.StationLVLCfg); ConfigDrawHelpers.DrawInt("Craft amount", itemdef.CraftAmountCfg); DrawRecipeEditor(itemdef); HashSet drawn = new HashSet(); (string, ItemStat[])[] statGroups = StatGroups; for (int i = 0; i < statGroups.Length; i++) { (string, ItemStat[]) tuple = statGroups[i]; List list = tuple.Item2.Where((ItemStat s) => IsConfigurable(itemdef, s)).ToList(); bool flag2 = tuple.Item1 == "Damage" && itemdef.DamageMods != null && itemdef.DamageMods.Count > 0; if (list.Count == 0 && !flag2) { continue; } ConfigDrawHelpers.GroupHeader(tuple.Item1); foreach (ItemStat item in list) { DrawStat(itemdef, item); drawn.Add(item); } if (!flag2) { continue; } foreach (KeyValuePair damageMod in itemdef.DamageMods) { if (damageMod.Value.Configurable && damageMod.Value.DmgModCfg != null) { ConfigDrawHelpers.DrawChoice(((object)damageMod.Key/*cast due to .constrained prefix*/).ToString() + " resistance", damageMod.Value.DmgModCfg); } } } if (itemdef.ModifableStats != null) { List list2 = itemdef.ModifableStats.Keys.Where((ItemStat s) => !drawn.Contains(s) && IsConfigurable(itemdef, s)).ToList(); if (list2.Count > 0) { ConfigDrawHelpers.GroupHeader("Other"); foreach (ItemStat item2 in list2) { DrawStat(itemdef, item2); } } } GUI.enabled = enabled; } GUILayout.EndVertical(); } private static bool IsConfigurable(ItemDefinition itemdef, ItemStat s) { if (itemdef.ModifableStats != null && itemdef.ModifableStats.TryGetValue(s, out var value)) { return value.Configurable; } return false; } private static void DrawStat(ItemDefinition itemdef, ItemStat s) { ItemStatConfig itemStatConfig = itemdef.ModifableStats[s]; string label = s.ToString().Replace('_', ' '); if (itemStatConfig.IsInt) { ConfigDrawHelpers.DrawInt(label, itemStatConfig.CfgInt); } else { ConfigDrawHelpers.DrawFloat(label, itemStatConfig.Cfg); } } private static void DrawRecipeEditor(ItemDefinition itemdef) { ConfigEntry recipeConfig = itemdef.Recipe.RecipeConfig; ConfigDrawHelpers.GroupHeader("Recipe"); if (!RecipeRows.TryGetValue(recipeConfig, out var value)) { value = ParseCsv(recipeConfig.Value, 3); RecipeRows[recipeConfig] = value; } GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label("Resource (prefab)", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(200f) }); GUILayout.Label("Amount", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(60f) }); GUILayout.Label("Per level", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(70f) }); GUILayout.EndHorizontal(); for (int i = 0; i < value.Count; i++) { string[] array = value[i]; GUILayout.BeginHorizontal(Array.Empty()); array[0] = GUILayout.TextField(array[0] ?? "", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(200f) }); array[1] = DigitsOnly(GUILayout.TextField(array[1] ?? "", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(60f) })); array[2] = DigitsOnly(GUILayout.TextField(array[2] ?? "", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(70f) })); bool num = GUILayout.Button("✕", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(26f) }); GUILayout.EndHorizontal(); if (num) { value.RemoveAt(i); i--; } } GUILayout.BeginHorizontal(Array.Empty()); if (GUILayout.Button("Add resource", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(120f) })) { value.Add(new string[3] { "", "1", "0" }); } if (GUILayout.Button("Apply", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(80f) })) { recipeConfig.Value = SerializeCsv(value); } if (GUILayout.Button("Reload", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(80f) })) { RecipeRows[recipeConfig] = ParseCsv(recipeConfig.Value, 3); } GUILayout.EndHorizontal(); GUILayout.Label("Applied: " + recipeConfig.Value, ConfigDrawHelpers.Dim, Array.Empty()); } internal static List ParseCsv(string csv, int cols) { List list = new List(); string[] array = (csv ?? "").Split('|'); foreach (string text in array) { if (!string.IsNullOrWhiteSpace(text)) { string[] array2 = text.Split(','); string[] array3 = new string[cols]; for (int j = 0; j < cols; j++) { array3[j] = ((j < array2.Length) ? array2[j] : ""); } list.Add(array3); } } return list; } internal static string SerializeCsv(List rows) { return string.Join("|", from r in rows where !string.IsNullOrWhiteSpace(r[0]) select string.Join(",", r)); } internal static string DigitsOnly(string s) { return new string((s ?? "").Where((char ch) => char.IsDigit(ch) || ch == '-').ToArray()); } } internal enum ItemStat { slash, slash_per_level, blunt, blunt_per_level, pierce, pierce_per_level, pickaxe, pickaxe_per_level, chop, chop_per_level, attack_force, fire, fire_per_level, lightning, lightning_per_level, frost, frost_per_level, poison, poison_per_level, spirit, spirit_per_level, block_armor, block_armor_per_level, parry, block_force, block_force_per_level, primary_attack_stamina, primary_attack_eitr, primary_attack_flat_health_cost, primary_attack_percent_health_cost, primary_attack_health_returned, primary_attack_damage_bonus_per_missing_hp, primary_attack_projectile_count, primary_attack_force_multiply, secondary_attack_stamina, secondary_attack_eitr, secondary_attack_force_multiply, secondary_attack_flat_health_cost, secondary_attack_percent_health_cost, movement_speed, bow_draw_speed, crossbow_reload_speed, crossbow_reload_stamina_drain, draw_stamina_drain, projectile_velocity, projectile_accuracy_max, durability, durability_per_level, max_item_level, amount, tool_level } internal enum ItemCategory { Arrows, Atgeirs, Axes, Hammers, Shields, Swords, Bows, Spears, Knives, Maces, Fists, Pickaxes, Magics } internal class ItemDefinition { public string Name { get; set; } public string DisplayName { get; set; } public ItemCategory Category { get; set; } public string Prefab { get; set; } public string Icon { get; set; } public string CraftedAt { get; set; } public ConfigEntry CraftedAtCfg { get; set; } public bool Craftable { get; set; } = true; public ConfigEntry CraftableCfg { get; set; } public int ReqStationlevel { get; set; } public ConfigEntry StationLVLCfg { get; set; } public int CraftAmount { get; set; } public ConfigEntry CraftAmountCfg { get; set; } public Dictionary ModifableStats { get; set; } public Dictionary DamageMods { get; set; } public RecipeDefinition Recipe { get; set; } } internal class HitCustomDamageMod { public bool Configurable { get; set; } = true; public DamageModifier DamageModifier { get; set; } public ConfigEntry DmgModCfg { get; set; } } internal class ItemStatConfig { public bool Configurable { get; set; } = true; public bool IsInt { get; set; } public float Default_value { get; set; } public ConfigEntry Cfg { get; set; } public ConfigEntry CfgInt { get; set; } public float Min { get; set; } public float Max { get; set; } = 400f; } internal class RecipeDefinition { public ConfigEntry RecipeConfig { get; set; } public List RecipeItems { get; set; } public List RecipeReqs { get; set; } public Recipe ResolvedRecipe { get; set; } } internal class RecipeIngredient { public string Prefab { get; set; } public int Amount { get; set; } public int UpgradeCost { get; set; } } internal class JotunBatchLoader { internal static List resourceDefinitions = new List(); internal static bool runningQueuedChanges = false; internal static AssetBundle Assets; internal static Dictionary AddedItems = new Dictionary(); internal static List ArcheryAmmoToAdd = new List(); private static readonly List>> pendingWorldUpdates = new List>>(); private static bool worldUpdateScheduled = false; private static Dictionary recipeIndexCache = null; internal static readonly AcceptableValueList allowedModifiers = new AcceptableValueList(new string[7] { ((object)(DamageModifier)0/*cast due to .constrained prefix*/).ToString(), ((object)(DamageModifier)6/*cast due to .constrained prefix*/).ToString(), ((object)(DamageModifier)2/*cast due to .constrained prefix*/).ToString(), ((object)(DamageModifier)6/*cast due to .constrained prefix*/).ToString(), ((object)(DamageModifier)1/*cast due to .constrained prefix*/).ToString(), ((object)(DamageModifier)5/*cast due to .constrained prefix*/).ToString(), ((object)(DamageModifier)3/*cast due to .constrained prefix*/).ToString() }); public bool BatchSetup(AssetBundle assetBundle, bool reverse_order = true) { Assets = assetBundle; if (reverse_order) { resourceDefinitions.Reverse(); } WireConfigDefs(); bool flag = false; if ((Object)(object)ZNet.instance != (Object)null && ZNetExtension.IsServerInstance(ZNet.instance)) { flag = true; } if (!flag) { BatchAddItems(); SetupOnChange(); ItemManager.OnItemsRegistered += AddAmmoItemsToArcheryTarget; ItemManager.OnItemsRegistered += ReapplyAllRecipeConfig; SynchronizationManager.OnConfigurationSynchronized += OnModConfigsChanged; } ValConfig.cfg.Save(); ValConfig.SaveOnSet(enabled: true); return true; } public bool AddDefinition(ItemDefinition itemdef) { resourceDefinitions.Add(itemdef); return true; } private static bool WireConfigDefs() { //IL_035a: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Unknown result type (might be due to invalid IL or missing references) //IL_0375: Unknown result type (might be due to invalid IL or missing references) //IL_038b: Unknown result type (might be due to invalid IL or missing references) foreach (ItemDefinition resourceDefinition in resourceDefinitions) { resourceDefinition.DisplayName = string.Join("", resourceDefinition.Name.Split((string[]?)null, StringSplitOptions.RemoveEmptyEntries)); AddedItems.Add(resourceDefinition.DisplayName, resourceDefinition.Prefab); resourceDefinition.CraftableCfg = ValConfig.BindServerConfig($"{resourceDefinition.Category} - {resourceDefinition.Name}", resourceDefinition.DisplayName + "-craftable", resourceDefinition.Craftable, "Enable/Disable the crafting recipe for " + resourceDefinition.Name + "."); resourceDefinition.StationLVLCfg = ValConfig.BindServerConfig($"{resourceDefinition.Category} - {resourceDefinition.Name}", resourceDefinition.DisplayName + "-stationRequiredLevel", resourceDefinition.ReqStationlevel, "Sets the required minimum crafting station level to craft " + resourceDefinition.Name, advanced: true, 1, 4); resourceDefinition.CraftAmountCfg = ValConfig.BindServerConfig($"{resourceDefinition.Category} - {resourceDefinition.Name}", resourceDefinition.DisplayName + "-craftAmount", resourceDefinition.CraftAmount, "Sets the amount of " + resourceDefinition.Name + " crafted per recipe.", advanced: true, 1, 50); resourceDefinition.CraftedAtCfg = ValConfig.BindServerConfig($"{resourceDefinition.Category} - {resourceDefinition.Name}", resourceDefinition.DisplayName + "-craftedAt", resourceDefinition.CraftedAt, "Sets the crafting station for " + resourceDefinition.Name + "."); foreach (KeyValuePair modifableStat in resourceDefinition.ModifableStats) { if (modifableStat.Value.Configurable) { if (modifableStat.Value.IsInt) { modifableStat.Value.CfgInt = ValConfig.BindServerConfig($"{resourceDefinition.Category} - {resourceDefinition.Name}", $"{resourceDefinition.DisplayName}-{modifableStat.Key}", (int)modifableStat.Value.Default_value, $"Value for {modifableStat.Key} on {resourceDefinition.Name}", advanced: true, (int)modifableStat.Value.Min, (int)modifableStat.Value.Max); } else { modifableStat.Value.Cfg = ValConfig.BindServerConfig($"{resourceDefinition.Category} - {resourceDefinition.Name}", $"{resourceDefinition.DisplayName}-{modifableStat.Key}", modifableStat.Value.Default_value, $"Value for {modifableStat.Key} on {resourceDefinition.Name}", advanced: true, modifableStat.Value.Min, modifableStat.Value.Max); } } } if (resourceDefinition.DamageMods != null) { foreach (KeyValuePair damageMod in resourceDefinition.DamageMods) { damageMod.Value.DmgModCfg = ValConfig.BindServerConfig($"{resourceDefinition.Category} - {resourceDefinition.Name}", $"{resourceDefinition.DisplayName}-{damageMod.Key}-DamageModifier", ((object)damageMod.Value.DamageModifier/*cast due to .constrained prefix*/).ToString(), $"Damage modifier for {damageMod.Key} on {resourceDefinition.Name}", advanced: true, allowedModifiers); } } resourceDefinition.Recipe.RecipeConfig = ValConfig.BindServerConfig($"{resourceDefinition.Category} - {resourceDefinition.Name}", resourceDefinition.DisplayName + "-recipe", BuildStringRecipeFromItemDef(resourceDefinition), "Recipe for " + resourceDefinition.Name + ". Should be in the format of Prefab,Amount,AmountPerLevel|Prefab,Amount,AmountPerLevel eg: Wood,12,2|Stone,2,0"); if (!ValidateRecipeConfig(resourceDefinition)) { BuildRecipeReqsFromDefault(resourceDefinition); } ItemConfigDrawer.Attach(resourceDefinition); } return true; } private bool SetupOnChange() { foreach (ItemDefinition resourceDefinition in resourceDefinitions) { ItemDefinition itemdef = resourceDefinition; itemdef.CraftableCfg.SettingChanged += delegate { ConfigChangeDebouncer.Schedule(itemdef.CraftableCfg, delegate { EnableDisableItemInDB(itemdef, itemdef.CraftableCfg.Value); }); }; itemdef.StationLVLCfg.SettingChanged += delegate { ConfigChangeDebouncer.Schedule(itemdef.StationLVLCfg, delegate { ModifyItemRecipeLevel(itemdef, itemdef.StationLVLCfg.Value); }); }; itemdef.CraftedAtCfg.SettingChanged += delegate { ConfigChangeDebouncer.Schedule(itemdef.CraftedAtCfg, delegate { ModifyItemRecipeCraftedAt(itemdef); }); }; itemdef.CraftAmountCfg.SettingChanged += delegate { ConfigChangeDebouncer.Schedule(itemdef.CraftAmountCfg, delegate { ModifyItemRecipeCraftAmount(itemdef, itemdef.CraftAmountCfg.Value); }); }; foreach (KeyValuePair modifableStat in itemdef.ModifableStats) { KeyValuePair stat = modifableStat; object statKey; if (stat.Value.Configurable) { statKey = (stat.Value.IsInt ? ((object)stat.Value.CfgInt) : ((object)stat.Value.Cfg)); if (stat.Value.IsInt) { stat.Value.CfgInt.SettingChanged += UpdateFromConfig; } else { stat.Value.Cfg.SettingChanged += UpdateFromConfig; } } void UpdateFromConfig(object sender, EventArgs args) { ConfigChangeDebouncer.Schedule(statKey, delegate { if (((Behaviour)ZNet.instance).enabled) { if (stat.Value.IsInt) { stat.Value.Default_value = stat.Value.CfgInt.Value; } else { stat.Value.Default_value = stat.Value.Cfg.Value; } UpdateItemInPlayerInventory(itemdef.Prefab, delegate(ItemData item) { ItemDataConfigModifier(stat.Key, stat.Value.Default_value, item); }); EnqueueWorldUpdate(itemdef.Prefab, delegate(ItemData item) { ItemDataConfigModifier(stat.Key, stat.Value.Default_value, item); }); } }); } } itemdef.Recipe.RecipeConfig.SettingChanged += delegate { ConfigChangeDebouncer.Schedule(itemdef.Recipe.RecipeConfig, delegate { if (ValidateRecipeConfig(itemdef)) { ModifyItemRecipeInODB(itemdef); } }); }; if (itemdef.DamageMods == null) { continue; } foreach (KeyValuePair dmgmod in itemdef.DamageMods) { dmgmod.Value.DmgModCfg.SettingChanged += delegate { ConfigChangeDebouncer.Schedule(dmgmod.Value.DmgModCfg, delegate { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) if (((Behaviour)ZNet.instance).enabled) { DamageModifier modifier = (DamageModifier)Enum.Parse(typeof(DamageModifier), dmgmod.Value.DmgModCfg.Value); UpdateItemInPlayerInventory(itemdef.Prefab, delegate(ItemData item) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) SetItemDamageModifier(modifier, dmgmod.Key, item); }); EnqueueWorldUpdate(itemdef.Prefab, delegate(ItemData item) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) SetItemDamageModifier(modifier, dmgmod.Key, item); }); } }); }; } } return true; } private static void ReapplyAllRecipeConfig() { if ((Object)(object)ObjectDB.instance == (Object)null || ObjectDB.instance.m_recipes == null) { return; } foreach (ItemDefinition resourceDefinition in resourceDefinitions) { EnsureRecipeInDB(resourceDefinition); if (ValidateRecipeConfig(resourceDefinition)) { ModifyItemRecipeInODB(resourceDefinition); } ModifyItemRecipeLevel(resourceDefinition, resourceDefinition.StationLVLCfg.Value); ModifyItemRecipeCraftedAt(resourceDefinition); ModifyItemRecipeCraftAmount(resourceDefinition, resourceDefinition.CraftAmountCfg.Value); EnableDisableItemInDB(resourceDefinition, resourceDefinition.CraftableCfg.Value); } if ((Object)(object)Player.m_localPlayer != (Object)null) { Player.m_localPlayer.UpdateKnownRecipesList(); } } private static void OnModConfigsChanged(object sender, ConfigurationSynchronizationEventArgs e) { if (e.UpdatedPluginGUIDs == null || e.UpdatedPluginGUIDs.Count <= 0 || e.UpdatedPluginGUIDs.Contains("MidnightsFX.ValheimArmory")) { ReapplyAllRecipeConfig(); } } private static bool BatchAddItems() { //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Expected O, but got Unknown //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Expected O, but got Unknown //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) foreach (ItemDefinition resourceDefinition in resourceDefinitions) { GameObject val = Assets.LoadAsset($"Assets/Custom/Weapons/{resourceDefinition.Category}/{resourceDefinition.Prefab}.prefab"); Sprite val2 = Assets.LoadAsset("Assets/Custom/Icons/" + resourceDefinition.Icon + ".png"); ItemDrop component = val.GetComponent(); foreach (KeyValuePair modifableStat in resourceDefinition.ModifableStats) { if (!modifableStat.Value.Configurable) { ItemDataConfigModifier(modifableStat.Key, modifableStat.Value.Default_value, component.m_itemData); } else if (modifableStat.Value.IsInt) { ItemDataConfigModifier(modifableStat.Key, modifableStat.Value.CfgInt.Value, component.m_itemData); } else { ItemDataConfigModifier(modifableStat.Key, modifableStat.Value.Cfg.Value, component.m_itemData); } } if (resourceDefinition.DamageMods != null) { foreach (KeyValuePair damageMod in resourceDefinition.DamageMods) { if (damageMod.Value.Configurable && damageMod.Value.DmgModCfg != null) { SetItemDamageModifier((DamageModifier)Enum.Parse(typeof(DamageModifier), damageMod.Value.DmgModCfg.Value), damageMod.Key, component.m_itemData); } } } ItemConfig val3 = new ItemConfig(); val3.Amount = resourceDefinition.CraftAmountCfg.Value; val3.CraftingStation = resourceDefinition.CraftedAtCfg.Value ?? ""; val3.MinStationLevel = resourceDefinition.StationLVLCfg.Value; val3.Enabled = true; val3.Icons = (Sprite[])(object)new Sprite[1] { val2 }; val3.Requirements = resourceDefinition.Recipe.RecipeReqs.ToArray(); ItemConfig val4 = val3; ItemManager.Instance.AddItem(new CustomItem(val, true, val4)); if (resourceDefinition.Category == ItemCategory.Arrows) { ArcheryAmmoToAdd.Add(resourceDefinition.Prefab); } } return true; } private static void ItemDataConfigModifier(ItemStat target_attribute, float updatedValue, ItemData itemData) { if (itemData != null) { switch (target_attribute) { case ItemStat.slash: itemData.m_shared.m_damages.m_slash = updatedValue; break; case ItemStat.slash_per_level: itemData.m_shared.m_damagesPerLevel.m_slash = updatedValue; break; case ItemStat.blunt: itemData.m_shared.m_damages.m_blunt = updatedValue; break; case ItemStat.blunt_per_level: itemData.m_shared.m_damagesPerLevel.m_blunt = updatedValue; break; case ItemStat.pierce: itemData.m_shared.m_damages.m_pierce = updatedValue; break; case ItemStat.pierce_per_level: itemData.m_shared.m_damagesPerLevel.m_pierce = updatedValue; break; case ItemStat.pickaxe: itemData.m_shared.m_damages.m_pickaxe = updatedValue; break; case ItemStat.pickaxe_per_level: itemData.m_shared.m_damagesPerLevel.m_pickaxe = updatedValue; break; case ItemStat.chop: itemData.m_shared.m_damages.m_chop = updatedValue; break; case ItemStat.chop_per_level: itemData.m_shared.m_damagesPerLevel.m_chop = updatedValue; break; case ItemStat.attack_force: itemData.m_shared.m_attackForce = updatedValue; break; case ItemStat.secondary_attack_force_multiply: itemData.m_shared.m_secondaryAttack.m_forceMultiplier = updatedValue; break; case ItemStat.primary_attack_force_multiply: itemData.m_shared.m_attack.m_forceMultiplier = updatedValue; break; case ItemStat.fire: itemData.m_shared.m_damages.m_fire = updatedValue; break; case ItemStat.fire_per_level: itemData.m_shared.m_damagesPerLevel.m_fire = updatedValue; break; case ItemStat.lightning: itemData.m_shared.m_damages.m_lightning = updatedValue; break; case ItemStat.lightning_per_level: itemData.m_shared.m_damagesPerLevel.m_lightning = updatedValue; break; case ItemStat.frost: itemData.m_shared.m_damages.m_frost = updatedValue; break; case ItemStat.frost_per_level: itemData.m_shared.m_damagesPerLevel.m_frost = updatedValue; break; case ItemStat.poison: itemData.m_shared.m_damages.m_poison = updatedValue; break; case ItemStat.poison_per_level: itemData.m_shared.m_damagesPerLevel.m_poison = updatedValue; break; case ItemStat.spirit: itemData.m_shared.m_damages.m_spirit = updatedValue; break; case ItemStat.spirit_per_level: itemData.m_shared.m_damagesPerLevel.m_spirit = updatedValue; break; case ItemStat.block_armor: itemData.m_shared.m_blockPower = updatedValue; break; case ItemStat.block_armor_per_level: itemData.m_shared.m_blockPowerPerLevel = updatedValue; break; case ItemStat.parry: itemData.m_shared.m_timedBlockBonus = updatedValue; break; case ItemStat.block_force: itemData.m_shared.m_deflectionForce = updatedValue; break; case ItemStat.block_force_per_level: itemData.m_shared.m_deflectionForcePerLevel = updatedValue; break; case ItemStat.primary_attack_stamina: itemData.m_shared.m_attack.m_attackStamina = updatedValue; break; case ItemStat.primary_attack_eitr: itemData.m_shared.m_attack.m_attackEitr = updatedValue; break; case ItemStat.primary_attack_flat_health_cost: itemData.m_shared.m_attack.m_attackHealth = updatedValue; break; case ItemStat.primary_attack_percent_health_cost: itemData.m_shared.m_attack.m_attackHealthPercentage = updatedValue; break; case ItemStat.primary_attack_health_returned: itemData.m_shared.m_attack.m_attackHealthReturnHit = updatedValue; break; case ItemStat.primary_attack_damage_bonus_per_missing_hp: itemData.m_shared.m_attack.m_damageMultiplierPerMissingHP = updatedValue; break; case ItemStat.primary_attack_projectile_count: itemData.m_shared.m_attack.m_projectiles = (int)updatedValue; break; case ItemStat.secondary_attack_stamina: itemData.m_shared.m_secondaryAttack.m_attackStamina = updatedValue; break; case ItemStat.secondary_attack_eitr: itemData.m_shared.m_secondaryAttack.m_attackEitr = updatedValue; break; case ItemStat.secondary_attack_flat_health_cost: itemData.m_shared.m_secondaryAttack.m_attackHealth = updatedValue; break; case ItemStat.secondary_attack_percent_health_cost: itemData.m_shared.m_secondaryAttack.m_attackHealthPercentage = updatedValue; break; case ItemStat.movement_speed: itemData.m_shared.m_movementModifier = updatedValue; break; case ItemStat.bow_draw_speed: itemData.m_shared.m_attack.m_drawDurationMin = updatedValue; break; case ItemStat.crossbow_reload_speed: itemData.m_shared.m_attack.m_reloadTime = updatedValue; break; case ItemStat.crossbow_reload_stamina_drain: itemData.m_shared.m_attack.m_reloadStaminaDrain = updatedValue; break; case ItemStat.draw_stamina_drain: itemData.m_shared.m_attack.m_drawStaminaDrain = updatedValue; break; case ItemStat.projectile_velocity: itemData.m_shared.m_attack.m_projectileVel = updatedValue; break; case ItemStat.projectile_accuracy_max: itemData.m_shared.m_attack.m_projectileAccuracy = 100f - updatedValue; break; case ItemStat.durability: itemData.m_shared.m_maxDurability = updatedValue; break; case ItemStat.durability_per_level: itemData.m_shared.m_durabilityPerLevel = updatedValue; break; case ItemStat.max_item_level: itemData.m_shared.m_maxQuality = (int)updatedValue; break; case ItemStat.tool_level: itemData.m_shared.m_toolTier = (int)updatedValue; break; default: Logger.LogWarning($"Unknown item stat {target_attribute} for {itemData.m_shared.m_name}"); break; } } } private static bool ValidateRecipeConfig(ItemDefinition itemdef) { //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown List list = new List(); try { string[] array = itemdef.Recipe.RecipeConfig.Value.Split('|'); foreach (string text in array) { string[] array2 = text.Split(','); if (array2.Length == 1) { return false; } if (array2.Length != 3) { Logger.LogWarning("Invalid (" + itemdef.Name + ") recipe config detected: " + text + ". Needs three entries eg: Wood,1,1"); return false; } list.Add(new RequirementConfig { Item = array2[0], Amount = int.Parse(array2[1]), AmountPerLevel = int.Parse(array2[2]) }); } itemdef.Recipe.RecipeReqs = list; return true; } catch { Logger.LogWarning("Recipe is Invalid. Should have the format of Wood,1,1|Stone,2,0 - Prefab,cost,upgrade."); return false; } } private static void BuildRecipeReqsFromDefault(ItemDefinition itemdef) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown List list = new List(); foreach (RecipeIngredient recipeItem in itemdef.Recipe.RecipeItems) { list.Add(new RequirementConfig { Item = recipeItem.Prefab, Amount = recipeItem.Amount, AmountPerLevel = recipeItem.UpgradeCost }); } itemdef.Recipe.RecipeReqs = list; } private static string BuildStringRecipeFromItemDef(ItemDefinition itemdef) { List list = new List(); foreach (RecipeIngredient recipeItem in itemdef.Recipe.RecipeItems) { list.Add($"{recipeItem.Prefab},{recipeItem.Amount},{recipeItem.UpgradeCost}"); } return string.Join("|", list); } private static bool ModifyItemRecipeCraftedAt(ItemDefinition itemdef) { if ((Object)(object)ObjectDB.instance == (Object)null || ObjectDB.instance.m_recipes == null) { return false; } int recipeIndexByPrefab = GetRecipeIndexByPrefab(itemdef.Prefab); if (recipeIndexByPrefab == -1) { Logger.LogWarning("Recipe of " + itemdef.Prefab + " not found in ObjectDB, recipe will not be modified."); return false; } GameObject prefab = PrefabManager.Instance.GetPrefab(itemdef.CraftedAtCfg.Value); CraftingStation val = ((prefab != null) ? prefab.GetComponent() : null); if ((Object)(object)val == (Object)null) { Logger.LogWarning("Crafting Station " + itemdef.CraftedAtCfg.Value + " prefab not found, or does not have a crafting station componet."); return false; } ObjectDB.instance.m_recipes[recipeIndexByPrefab].m_craftingStation = val; ObjectDB.instance.m_recipes[recipeIndexByPrefab].m_repairStation = val; return true; } private static void ModifyItemRecipeInODB(ItemDefinition itemdef) { //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Expected O, but got Unknown if ((Object)(object)ObjectDB.instance == (Object)null || ObjectDB.instance.m_recipes == null) { return; } int recipeIndexByPrefab = GetRecipeIndexByPrefab(itemdef.Prefab); if (recipeIndexByPrefab == -1) { Logger.LogWarning("Recipe of " + itemdef.Prefab + " not found in ObjectDB, Recipe will not be modified."); return; } Recipe val = ObjectDB.instance.m_recipes[recipeIndexByPrefab]; Recipe val2 = val; List list = new List(); foreach (RequirementConfig recipeReq in itemdef.Recipe.RecipeReqs) { GameObject itemPrefab = ObjectDB.instance.GetItemPrefab(recipeReq.Item); if ((Object)(object)itemPrefab == (Object)null) { Logger.LogWarning("Recipe " + ((Object)itemdef.Recipe.ResolvedRecipe).name + " has an invalid requirement " + recipeReq.Item + "."); return; } list.Add(new Requirement { m_resItem = itemPrefab.GetComponent(), m_amount = recipeReq.Amount, m_amountPerLevel = recipeReq.AmountPerLevel }); } val2.m_resources = list.ToArray(); int num = ObjectDB.instance.m_recipes.IndexOf(val); if (num > -1) { ObjectDB.instance.m_recipes[num] = val2; itemdef.Recipe.ResolvedRecipe = val2; } else { Logger.LogWarning("Recipe " + ((Object)val).name + " not found in ObjectDB."); } } private static void EnsureRecipeInDB(ItemDefinition itemdef) { if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_recipes != null && GetRecipeIndexByPrefab(itemdef.Prefab) == -1 && (Object)(object)itemdef.Recipe.ResolvedRecipe != (Object)null) { ObjectDB.instance.m_recipes.Add(itemdef.Recipe.ResolvedRecipe); } } private static void EnableDisableItemInDB(ItemDefinition itemdef, bool enable) { if ((Object)(object)ObjectDB.instance == (Object)null || ObjectDB.instance.m_recipes == null) { return; } int recipeIndexByPrefab = GetRecipeIndexByPrefab(itemdef.Prefab); if (recipeIndexByPrefab == -1) { if ((Object)(object)itemdef.Recipe.ResolvedRecipe != (Object)null) { itemdef.Recipe.ResolvedRecipe.m_enabled = enable; ObjectDB.instance.m_recipes.Add(itemdef.Recipe.ResolvedRecipe); } else { Logger.LogWarning("Recipe of " + itemdef.Prefab + " not found in ObjectDB and no cached recipe to re-add."); } } else { ObjectDB.instance.m_recipes[recipeIndexByPrefab].m_enabled = enable; itemdef.Recipe.ResolvedRecipe = ObjectDB.instance.m_recipes[recipeIndexByPrefab]; } } private static void ModifyItemRecipeLevel(ItemDefinition itemdef, int level) { if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_recipes != null) { int recipeIndexByPrefab = GetRecipeIndexByPrefab(itemdef.Prefab); if (recipeIndexByPrefab == -1) { Logger.LogWarning("Recipe of " + itemdef.Prefab + " not found in ObjectDB, required level will not be modified."); return; } ObjectDB.instance.m_recipes[recipeIndexByPrefab].m_minStationLevel = level; itemdef.Recipe.ResolvedRecipe = ObjectDB.instance.m_recipes[recipeIndexByPrefab]; } } private static void ModifyItemRecipeCraftAmount(ItemDefinition itemdef, int amount) { if (!((Object)(object)ObjectDB.instance == (Object)null) && ObjectDB.instance.m_recipes != null) { int recipeIndexByPrefab = GetRecipeIndexByPrefab(itemdef.Prefab); if (recipeIndexByPrefab == -1) { Logger.LogWarning("Recipe of " + itemdef.Prefab + " not found in ObjectDB, craft amount will not be modified."); return; } ObjectDB.instance.m_recipes[recipeIndexByPrefab].m_amount = amount; itemdef.Recipe.ResolvedRecipe = ObjectDB.instance.m_recipes[recipeIndexByPrefab]; } } private static int GetRecipeIndexByPrefab(string prefab) { return ObjectDB.instance.m_recipes.FindIndex((Recipe m) => (Object)(object)m.m_item != (Object)null && ((Object)m.m_item).name == prefab); } private static void SetItemDamageModifier(DamageModifier modifier, DamageType type, ItemData itemData) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) List list = itemData.m_shared.m_damageModifiers.Where((DamageModPair entry) => entry.m_type != type).ToList(); if (list.Count == 0) { itemData.m_shared.m_damageModifiers.Clear(); itemData.m_shared.m_damageModifiers.Add(new DamageModPair { m_modifier = modifier, m_type = type }); } else { list.Add(new DamageModPair { m_modifier = modifier, m_type = type }); itemData.m_shared.m_damageModifiers = list; } } private static void UpdateItemInPlayerInventory(string prefab, Action callback) { if ((Object)(object)Player.m_localPlayer == (Object)null) { return; } foreach (ItemData allItem in ((Humanoid)Player.m_localPlayer).m_inventory.GetAllItems()) { if (allItem != null && !(((Object)allItem.m_dropPrefab).name != prefab)) { callback(allItem); } } } private static void EnqueueWorldUpdate(string prefab, Action callback) { pendingWorldUpdates.Add(new KeyValuePair>(prefab, callback)); if (!worldUpdateScheduled) { worldUpdateScheduled = true; ((MonoBehaviour)ThreadingHelper.Instance).StartCoroutine(DrainWorldUpdates()); } } private static IEnumerator DrainWorldUpdates() { yield return null; try { if (pendingWorldUpdates.Count <= 0) { yield break; } GameObject[] array = Resources.FindObjectsOfTypeAll(); ItemDrop val2 = default(ItemDrop); foreach (GameObject val in array) { if ((Object)(object)val == (Object)null || !val.TryGetComponent(ref val2)) { continue; } foreach (KeyValuePair> pendingWorldUpdate in pendingWorldUpdates) { if (((Object)val).name.StartsWith(pendingWorldUpdate.Key)) { pendingWorldUpdate.Value(val2.m_itemData); } } } } finally { pendingWorldUpdates.Clear(); worldUpdateScheduled = false; } } private static void AddAmmoItemsToArcheryTarget() { ArcheryTarget componentInChildren = PrefabManager.Instance.GetPrefab("piece_ArcheryTarget").GetComponentInChildren(true); foreach (string item in ArcheryAmmoToAdd) { Logger.LogDebug("Adding " + item + " to Archery Target Ammo Return."); ItemDrop component = PrefabManager.Instance.GetPrefab(item).GetComponent(); if ((Object)(object)component != (Object)null && !componentInChildren.m_returnAmmo.Contains(component)) { componentInChildren.m_returnAmmo.Add(component); } } } } }