Decompiled source of ShogunEra v1.0.6

plugins/ShogunEra.dll

Decompiled a month ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
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 Jotunn;
using Jotunn.Configs;
using Jotunn.Entities;
using Jotunn.Managers;
using Jotunn.Utils;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("ShogunEra")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ShogunEra")]
[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")]
public class ShogunCrafting
{
	private AssetBundle SecondaryResourceBundle;

	public ShogunCrafting(AssetBundle secondaryResourceBundle)
	{
		SecondaryResourceBundle = secondaryResourceBundle;
		PrefabManager.OnVanillaPrefabsAvailable += RegisterForgeShogun;
	}

	private void RegisterForgeShogun()
	{
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0035: Unknown result type (might be due to invalid IL or missing references)
		//IL_0041: Unknown result type (might be due to invalid IL or missing references)
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0059: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Expected O, but got Unknown
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_0091: Expected O, but got Unknown
		//IL_009b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a5: Expected O, but got Unknown
		//IL_00af: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b9: Expected O, but got Unknown
		//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cd: Expected O, but got Unknown
		//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d7: Expected O, but got Unknown
		//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f9: 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_0111: Unknown result type (might be due to invalid IL or missing references)
		//IL_011d: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Expected O, but got Unknown
		//IL_0133: Unknown result type (might be due to invalid IL or missing references)
		//IL_014e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0158: Expected O, but got Unknown
		//IL_0163: Unknown result type (might be due to invalid IL or missing references)
		//IL_016d: Expected O, but got Unknown
		//IL_0179: Unknown result type (might be due to invalid IL or missing references)
		//IL_0183: Expected O, but got Unknown
		//IL_0188: Unknown result type (might be due to invalid IL or missing references)
		//IL_018f: Expected O, but got Unknown
		//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e5: Expected O, but got Unknown
		//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_0209: Unknown result type (might be due to invalid IL or missing references)
		//IL_0213: Expected O, but got Unknown
		//IL_021f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0229: Expected O, but got Unknown
		//IL_022f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0236: Expected O, but got Unknown
		//IL_0255: Unknown result type (might be due to invalid IL or missing references)
		//IL_025a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0266: Unknown result type (might be due to invalid IL or missing references)
		//IL_0272: Unknown result type (might be due to invalid IL or missing references)
		//IL_027e: Unknown result type (might be due to invalid IL or missing references)
		//IL_028c: Expected O, but got Unknown
		//IL_0295: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ba: Expected O, but got Unknown
		//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d0: Expected O, but got Unknown
		//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02dd: Expected O, but got Unknown
		//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0301: Unknown result type (might be due to invalid IL or missing references)
		//IL_030d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0319: Unknown result type (might be due to invalid IL or missing references)
		//IL_0325: Unknown result type (might be due to invalid IL or missing references)
		//IL_0333: Expected O, but got Unknown
		//IL_033c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0357: Unknown result type (might be due to invalid IL or missing references)
		//IL_0361: Expected O, but got Unknown
		//IL_036d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0377: Expected O, but got Unknown
		//IL_0382: Unknown result type (might be due to invalid IL or missing references)
		//IL_038c: Expected O, but got Unknown
		//IL_0392: Unknown result type (might be due to invalid IL or missing references)
		//IL_0399: Expected O, but got Unknown
		//IL_03b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_03bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ef: Expected O, but got Unknown
		//IL_03f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0413: Unknown result type (might be due to invalid IL or missing references)
		//IL_041d: Expected O, but got Unknown
		//IL_0429: Unknown result type (might be due to invalid IL or missing references)
		//IL_0433: Expected O, but got Unknown
		//IL_043e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0448: Expected O, but got Unknown
		//IL_044e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0455: Expected O, but got Unknown
		//IL_0474: Unknown result type (might be due to invalid IL or missing references)
		//IL_0479: Unknown result type (might be due to invalid IL or missing references)
		//IL_0485: Unknown result type (might be due to invalid IL or missing references)
		//IL_0491: Unknown result type (might be due to invalid IL or missing references)
		//IL_049d: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ab: Expected O, but got Unknown
		//IL_04b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_04cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_04d9: Expected O, but got Unknown
		//IL_04e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ef: Expected O, but got Unknown
		//IL_04fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0504: Expected O, but got Unknown
		//IL_050a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0511: Expected O, but got Unknown
		//IL_0530: Unknown result type (might be due to invalid IL or missing references)
		//IL_0535: Unknown result type (might be due to invalid IL or missing references)
		//IL_0541: Unknown result type (might be due to invalid IL or missing references)
		//IL_054d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0559: Unknown result type (might be due to invalid IL or missing references)
		//IL_0567: Expected O, but got Unknown
		//IL_0570: Unknown result type (might be due to invalid IL or missing references)
		//IL_058b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0595: Expected O, but got Unknown
		//IL_05a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ab: Expected O, but got Unknown
		//IL_05b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_05c0: Expected O, but got Unknown
		//IL_05c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_05cd: Expected O, but got Unknown
		//IL_05ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_05f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_05fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0609: Unknown result type (might be due to invalid IL or missing references)
		//IL_0615: Unknown result type (might be due to invalid IL or missing references)
		//IL_0623: Expected O, but got Unknown
		//IL_062c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0646: Unknown result type (might be due to invalid IL or missing references)
		//IL_0650: Expected O, but got Unknown
		//IL_065c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0666: Expected O, but got Unknown
		//IL_0671: Unknown result type (might be due to invalid IL or missing references)
		//IL_067b: Expected O, but got Unknown
		//IL_0686: Unknown result type (might be due to invalid IL or missing references)
		//IL_0690: Expected O, but got Unknown
		//IL_0696: Unknown result type (might be due to invalid IL or missing references)
		//IL_069d: Expected O, but got Unknown
		GameObject val = SecondaryResourceBundle.LoadAsset<GameObject>("forgeshogun");
		if ((Object)(object)val == (Object)null)
		{
			Logger.LogError((object)"Failed to load prefab: forgeshogun");
			return;
		}
		PieceConfig val2 = new PieceConfig
		{
			Name = "Forja Oriental",
			Description = "Compuesta de una Tatara y un Kanazuchi-dai esta forja te permitira poner a prueba tus habilidades como un legendario forjador",
			PieceTable = "Hammer",
			Category = "Crafting"
		};
		val2.Icon = RenderManager.Instance.Render(val, RenderManager.IsometricRotation);
		val2.AddRequirement(new RequirementConfig("Wood", 10, 0, true));
		val2.AddRequirement(new RequirementConfig("Stone", 5, 0, true));
		val2.AddRequirement(new RequirementConfig("Coal", 4, 0, true));
		val2.AddRequirement(new RequirementConfig("Copper", 6, 0, true));
		CustomPiece val3 = new CustomPiece(val, true, val2);
		PieceManager.Instance.AddPiece(val3);
		GameObject val4 = SecondaryResourceBundle.LoadAsset<GameObject>("Shogunforgeext1");
		PieceConfig val5 = new PieceConfig
		{
			Name = "Bonsai",
			Description = "Un Bonsái cuidadosamente cultivado que simboliza la paciencia y la dedicación. Aunque humilde en su presencia, inspira a los forjadores a perfeccionar su arte con equilibrio y serenidad",
			PieceTable = "Hammer",
			Category = "Crafting"
		};
		val5.Icon = RenderManager.Instance.Render(val4, RenderManager.IsometricRotation);
		val5.AddRequirement(new RequirementConfig("Wood", 10, 0, true));
		val5.AddRequirement(new RequirementConfig("Bronze", 5, 0, true));
		val5.AddRequirement(new RequirementConfig("Dandelion", 15, 0, true));
		CustomPiece val6 = new CustomPiece(val4, true, val5);
		PieceManager.Instance.AddPiece(val6);
		GameObject val7 = SecondaryResourceBundle.LoadAsset<GameObject>("Shogunext2");
		PieceConfig val8 = new PieceConfig
		{
			Name = "Katana kake",
			Description = "Un Katana Kake tradicional que sostiene con orgullo las hojas del forjador. Este soporte no solo organiza, sino que refleja el respeto por el arte de la espada y la dedicación del maestro forjador",
			PieceTable = "Hammer",
			Category = "Crafting"
		};
		val8.Icon = RenderManager.Instance.Render(val7, RenderManager.IsometricRotation);
		val8.AddRequirement(new RequirementConfig("Iron", 10, 0, true));
		val8.AddRequirement(new RequirementConfig("ElderBark", 10, 0, true));
		CustomPiece val9 = new CustomPiece(val7, true, val8);
		PieceManager.Instance.AddPiece(val9);
		GameObject val10 = SecondaryResourceBundle.LoadAsset<GameObject>("Shogunext46");
		PieceConfig val11 = new PieceConfig
		{
			Name = "Yakiire no Sō",
			Description = "Un contenedor sagrado de aguas puras, donde el acero al rojo vivo se templa para alcanzar su dureza perfecta. Aquí, la unión del fuego y el agua otorga a las armas nacientes el temple heredado de antiguas tradiciones",
			PieceTable = "Hammer",
			Category = "Crafting"
		};
		val11.Icon = RenderManager.Instance.Render(val10, RenderManager.IsometricRotation);
		val11.AddRequirement(new RequirementConfig("Iron", 10, 0, true));
		val11.AddRequirement(new RequirementConfig("ElderBark", 10, 0, true));
		CustomPiece val12 = new CustomPiece(val10, true, val11);
		PieceManager.Instance.AddPiece(val12);
		GameObject val13 = SecondaryResourceBundle.LoadAsset<GameObject>("Shogunext3");
		PieceConfig val14 = new PieceConfig
		{
			Name = "Shimenawa",
			Description = "Un Shimenawa sagrado tejido con fibras ancestrales, que marca un espacio de pureza y protección. Este adorno espiritual conecta al forjador con las fuerzas divinas, guiando su camino en la creación de obras maestras",
			PieceTable = "Hammer",
			Category = "Crafting"
		};
		val14.Icon = RenderManager.Instance.Render(val13, RenderManager.IsometricRotation);
		val14.AddRequirement(new RequirementConfig("RoundLog", 10, 0, true));
		val14.AddRequirement(new RequirementConfig("Silver", 15, 0, true));
		val14.AddRequirement(new RequirementConfig("FreezeGland", 6, 0, true));
		CustomPiece val15 = new CustomPiece(val13, true, val14);
		PieceManager.Instance.AddPiece(val15);
		GameObject val16 = SecondaryResourceBundle.LoadAsset<GameObject>("Shogunext45");
		PieceConfig val17 = new PieceConfig
		{
			Name = "Togishi",
			Description = "Mesa utilizada para afilar y pulir armas, mejorando su filo y estética. De la inspiración, puedes descubrir nuevas técnicas para forjar",
			PieceTable = "Hammer",
			Category = "Crafting"
		};
		val17.Icon = RenderManager.Instance.Render(val16, RenderManager.IsometricRotation);
		val17.AddRequirement(new RequirementConfig("RoundLog", 10, 0, true));
		val17.AddRequirement(new RequirementConfig("BlackMetal", 15, 0, true));
		val17.AddRequirement(new RequirementConfig("Needle", 6, 0, true));
		CustomPiece val18 = new CustomPiece(val16, true, val17);
		PieceManager.Instance.AddPiece(val18);
		GameObject val19 = SecondaryResourceBundle.LoadAsset<GameObject>("forgeshogunblack");
		PieceConfig val20 = new PieceConfig
		{
			Name = "Forja Kurogane",
			Description = "Una forja de tradición japonesa, donde el acero oscuro cobra vida bajo el martilleo del maestro herrero. Su caldera mística forja armas con el honor de un samurái y la templanza de un sabio kajishi.",
			PieceTable = "Hammer",
			Category = "Crafting"
		};
		val20.Icon = RenderManager.Instance.Render(val19, RenderManager.IsometricRotation);
		val20.AddRequirement(new RequirementConfig("YggdrasilWood", 10, 0, true));
		val20.AddRequirement(new RequirementConfig("BlackMarble", 10, 0, true));
		val20.AddRequirement(new RequirementConfig("BlackCore", 5, 0, true));
		CustomPiece val21 = new CustomPiece(val19, true, val20);
		PieceManager.Instance.AddPiece(val21);
		GameObject val22 = SecondaryResourceBundle.LoadAsset<GameObject>("Shogunext4");
		PieceConfig val23 = new PieceConfig
		{
			Name = "Seishin Tōrō",
			Description = "Simboliza el enfoque espiritual y la profunda conexión del forjador con su arte. Deja que esta luz te inspire, reflejando todo lo que has vivido hasta ahora",
			PieceTable = "Hammer",
			Category = "Crafting"
		};
		val23.Icon = RenderManager.Instance.Render(val22, RenderManager.IsometricRotation);
		val23.AddRequirement(new RequirementConfig("YggdrasilWood", 10, 0, true));
		val23.AddRequirement(new RequirementConfig("BlackMarble", 10, 0, true));
		val23.AddRequirement(new RequirementConfig("BlackCore", 5, 0, true));
		CustomPiece val24 = new CustomPiece(val22, true, val23);
		PieceManager.Instance.AddPiece(val24);
		GameObject val25 = SecondaryResourceBundle.LoadAsset<GameObject>("Shogunext5");
		PieceConfig val26 = new PieceConfig
		{
			Name = "Himitsu no Hashira",
			Description = "Representa el último escalón en el arte de la forja, donde las leyendas se convierten en realidad",
			PieceTable = "Hammer",
			Category = "Crafting"
		};
		val26.Icon = RenderManager.Instance.Render(val25, RenderManager.IsometricRotation);
		val26.AddRequirement(new RequirementConfig("Blackwood", 5, 0, true));
		val26.AddRequirement(new RequirementConfig("BlackMarble", 10, 0, true));
		val26.AddRequirement(new RequirementConfig("FlametalNew", 5, 0, true));
		val26.AddRequirement(new RequirementConfig("CharredBone", 5, 0, true));
		CustomPiece val27 = new CustomPiece(val25, true, val26);
		PieceManager.Instance.AddPiece(val27);
		val5.ExtendStation = "forgeshogun";
		val8.ExtendStation = "forgeshogun";
		val14.ExtendStation = "forgeshogun";
		val11.ExtendStation = "forgeshogun";
		val17.ExtendStation = "forgeshogun";
		val23.ExtendStation = "forgeshogunblack";
		val26.ExtendStation = "forgeshogunblack";
		Logger.LogInfo((object)"ForgeShogun added to the Hammer as a new crafting station.");
		PrefabManager.OnVanillaPrefabsAvailable -= RegisterForgeShogun;
	}
}
namespace ShogunEra;

internal class ShogunEramobs
{
	private AssetBundle SecondaryResourceBundle;

	private AssetBundle TerceroResourceBundle;

	public ShogunEramobs(AssetBundle secondaryBundle, AssetBundle terceroBundle)
	{
		SecondaryResourceBundle = secondaryBundle;
		TerceroResourceBundle = terceroBundle;
		AddCustomCreaturesAndSpawns();
	}

	private void AddCustomCreaturesAndSpawns()
	{
		GameObject val = TerceroResourceBundle.LoadAsset<GameObject>("Samurai");
		if ((Object)(object)val == (Object)null)
		{
			Logger.LogError((object)"Failed to load Samurai prefab from TerceroResourceBundle.");
			return;
		}
		RegisterMob("Samurai", val, 3500f, "TsubaFragment", 5f, 1, 1, "AshLands", 10f, 1, 10f, 80f, 20f, 0f, 0f, 0f, 0f, null, new string[5] { "KatanaSamurai1", "KatanaSamurai2", "KatanaSamurai3", "KatanaSamurai4", "KatanaSamurai5" }, new string[3] { "SuneateRed", "YoroiRed", "KabutoRed" });
		GameObject val2 = TerceroResourceBundle.LoadAsset<GameObject>("RoninBoss");
		if ((Object)(object)val2 == (Object)null)
		{
			Logger.LogError((object)"Failed to load RoninBoss prefab from TerceroResourceBundle.");
			return;
		}
		RegisterMob("Ronin", val2, 26000f, "TsukaHiltFragment", 5f, 1, 1, "AshLands", 10f, 1, 70f, 80f, 80f, 0f, 0f, 0f, 0f, null, new string[7] { "KatanaSamurai1", "KatanaSamurai2", "KatanaSamurai3", "KatanaSamurai4", "KatanaSamurai5", "KatanaRonnin", "KatanaRonnin1" }, new string[3] { "SugoArmor", "SugoArmorLegs", "SER_HatJingasa" });
	}

	private void RegisterMob(string mobName, GameObject prefab, float defaultHealth, string defaultLootItem, float defaultLootChance, int defaultLootMin, int defaultLootMax, string defaultBiome1, float defaultSpawnChance1, int defaultMaxSpawn1, float weaponDamageBlunt, float weaponDamageSlash, float weaponDamagePierce, float weaponDamageFire, float weaponDamageFrost, float weaponDamagePoison, float weaponDamageLightning, string[] fixedRandomWeapons = null, string[] fixedDefaultWeapons = null, string[] fixedArmors = null)
	{
		//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_01db: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f2: Expected O, but got Unknown
		//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0201: Unknown result type (might be due to invalid IL or missing references)
		//IL_0209: Unknown result type (might be due to invalid IL or missing references)
		//IL_0212: Unknown result type (might be due to invalid IL or missing references)
		//IL_0220: Expected O, but got Unknown
		//IL_0233: Unknown result type (might be due to invalid IL or missing references)
		//IL_0238: Unknown result type (might be due to invalid IL or missing references)
		//IL_024a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0253: Unknown result type (might be due to invalid IL or missing references)
		//IL_025c: Unknown result type (might be due to invalid IL or missing references)
		//IL_025d: Unknown result type (might be due to invalid IL or missing references)
		//IL_026a: Expected O, but got Unknown
		//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b5: Expected O, but got Unknown
		if (!ShogunConfig.BindEnableMob(mobName).Value)
		{
			Logger.LogInfo((object)(mobName + " está deshabilitado en la configuración. No será registrado ni generado."));
			return;
		}
		float value = ShogunConfig.BindServerConfig(mobName, "Health", defaultHealth, "Salud del " + mobName).Value;
		string value2 = ShogunConfig.BindServerConfig(mobName, "LootItem", defaultLootItem, "Botín que deja " + mobName).Value;
		float value3 = ShogunConfig.BindServerConfig(mobName, "LootChance", defaultLootChance, "Probabilidad de drop de " + mobName).Value;
		int value4 = ShogunConfig.BindServerConfig(mobName, "LootMinAmount", defaultLootMin, "Cantidad mínima de botín").Value;
		int value5 = ShogunConfig.BindServerConfig(mobName, "LootMaxAmount", defaultLootMax, "Cantidad máxima de botín").Value;
		string value6 = ShogunConfig.BindServerConfig(mobName, "SpawnBiome1", defaultBiome1, "Primer bioma para " + mobName).Value;
		float value7 = ShogunConfig.BindServerConfig(mobName, "SpawnChance1", defaultSpawnChance1, "Probabilidad de aparición en bioma 1 para " + mobName).Value;
		int value8 = ShogunConfig.BindServerConfig(mobName, "MaxSpawn1", defaultMaxSpawn1, "Cantidad máxima en bioma 1 para " + mobName).Value;
		Humanoid component = prefab.GetComponent<Humanoid>();
		if ((Object)(object)component != (Object)null)
		{
			((Character)component).m_health = value;
			if (fixedDefaultWeapons != null)
			{
				foreach (string weaponName in fixedDefaultWeapons)
				{
					ConfigureWeaponDamage(weaponName, weaponDamageBlunt, weaponDamageSlash, weaponDamagePierce, weaponDamageFire, weaponDamageFrost, weaponDamagePoison, weaponDamageLightning);
				}
			}
			CreatureConfig val = new CreatureConfig
			{
				Name = mobName,
				Faction = (Faction)4
			};
			val.AddDropConfig(new DropConfig
			{
				Item = value2,
				Chance = value3,
				MinAmount = value4,
				MaxAmount = value5
			});
			if (Enum.TryParse<Biome>(value6, out Biome result))
			{
				val.AddSpawnConfig(new SpawnConfig
				{
					Name = mobName + "Spawn1",
					SpawnChance = value7,
					MaxSpawned = value8,
					Biome = result
				});
			}
			else
			{
				Logger.LogError((object)("Biome '" + value6 + "' no es válido para " + mobName + "."));
			}
			CreatureManager.Instance.AddCreature(new CustomCreature(prefab, true, val));
			if ((fixedRandomWeapons != null && fixedRandomWeapons.Length != 0) || (fixedDefaultWeapons != null && fixedDefaultWeapons.Length != 0) || (fixedArmors != null && fixedArmors.Length != 0))
			{
				EquipMobWithFixedGear(prefab, fixedRandomWeapons, fixedDefaultWeapons, fixedArmors);
			}
		}
		else
		{
			Logger.LogError((object)("Humanoid component not found on prefab " + ((Object)prefab).name + "."));
		}
	}

	private void ConfigureWeaponDamage(string weaponName, float blunt, float slash, float pierce, float fire, float frost, float poison, float lightning)
	{
		CustomItem item = ItemManager.Instance.GetItem(weaponName);
		if (item != null && (Object)(object)item.ItemDrop != (Object)null)
		{
			SharedData shared = item.ItemDrop.m_itemData.m_shared;
			shared.m_damages.m_blunt = blunt;
			shared.m_damages.m_slash = slash;
			shared.m_damages.m_pierce = pierce;
			shared.m_damages.m_fire = fire;
			shared.m_damages.m_frost = frost;
			shared.m_damages.m_poison = poison;
			shared.m_damages.m_lightning = lightning;
			Logger.LogInfo((object)$"Daños configurados para el arma {weaponName}: Blunt={blunt}, Slash={slash}, Pierce={pierce}, Fire={fire}, Frost={frost}, Poison={poison}, Lightning={lightning}");
		}
		else
		{
			Logger.LogError((object)("El arma " + weaponName + " no se encontró o no tiene un ItemDrop válido."));
		}
	}

	private void EquipMobWithFixedGear(GameObject creaturePrefab, string[] fixedRandomWeapons, string[] fixedDefaultWeapons, string[] fixedArmors)
	{
		Humanoid component = creaturePrefab.GetComponent<Humanoid>();
		if ((Object)(object)component == (Object)null)
		{
			Logger.LogError((object)("Humanoid component not found on the prefab " + ((Object)creaturePrefab).name + "."));
			return;
		}
		if (fixedRandomWeapons != null && fixedRandomWeapons.Length != 0)
		{
			List<GameObject> list = new List<GameObject>();
			foreach (string text in fixedRandomWeapons)
			{
				CustomItem item = ItemManager.Instance.GetItem(text);
				if (item != null && (Object)(object)item.ItemDrop != (Object)null && item.ItemDrop.m_itemData != null)
				{
					list.Add(((Component)item.ItemDrop).gameObject);
					Logger.LogInfo((object)("Weapon '" + text + "' added to the random weapons list."));
				}
				else
				{
					Logger.LogError((object)("Weapon '" + text + "' not found in ItemManager or ItemDrop is null."));
				}
			}
			if (list.Count > 0)
			{
				component.m_randomWeapon = list.ToArray();
				Logger.LogInfo((object)("Humanoid '" + ((Object)creaturePrefab).name + "' assigned custom random weapons."));
			}
			else
			{
				Logger.LogWarning((object)("No valid custom random weapons found for " + ((Object)creaturePrefab).name + ". Using prefab's weapons."));
			}
		}
		else
		{
			Logger.LogInfo((object)("No custom random weapons provided for " + ((Object)creaturePrefab).name + ", using prefab's weapons."));
		}
		if (fixedDefaultWeapons != null && fixedDefaultWeapons.Length != 0)
		{
			List<GameObject> list2 = new List<GameObject>();
			foreach (string text2 in fixedDefaultWeapons)
			{
				CustomItem item2 = ItemManager.Instance.GetItem(text2);
				if (item2 != null && (Object)(object)item2.ItemDrop != (Object)null && item2.ItemDrop.m_itemData != null)
				{
					list2.Add(((Component)item2.ItemDrop).gameObject);
					Logger.LogInfo((object)("Weapon '" + text2 + "' added to the default weapons list."));
				}
				else
				{
					Logger.LogError((object)("Default Weapon '" + text2 + "' not found in ItemManager or ItemDrop is null."));
				}
			}
			if (list2.Count > 0)
			{
				List<GameObject> list3 = new List<GameObject>();
				list3.AddRange(list2);
				if (fixedArmors != null && fixedArmors.Length != 0)
				{
					foreach (string text3 in fixedArmors)
					{
						CustomItem item3 = ItemManager.Instance.GetItem(text3);
						if (item3 != null && (Object)(object)item3.ItemDrop != (Object)null && item3.ItemDrop.m_itemData != null)
						{
							list3.Add(((Component)item3.ItemDrop).gameObject);
							Logger.LogInfo((object)("Armor '" + text3 + "' added to the default items list."));
						}
						else
						{
							Logger.LogError((object)("Armor '" + text3 + "' not found in ItemManager or ItemDrop is null."));
						}
					}
				}
				component.m_defaultItems = list3.ToArray();
				Logger.LogInfo((object)("Humanoid '" + ((Object)creaturePrefab).name + "' assigned custom default weapons and armors."));
			}
			else
			{
				Logger.LogWarning((object)("No valid default weapons found for " + ((Object)creaturePrefab).name + ". Skipping default weapon assignment."));
			}
		}
		else if (fixedArmors != null && fixedArmors.Length != 0)
		{
			List<GameObject> list4 = new List<GameObject>();
			foreach (string text4 in fixedArmors)
			{
				CustomItem item4 = ItemManager.Instance.GetItem(text4);
				if (item4 != null && (Object)(object)item4.ItemDrop != (Object)null && item4.ItemDrop.m_itemData != null)
				{
					list4.Add(((Component)item4.ItemDrop).gameObject);
					Logger.LogInfo((object)("Armor '" + text4 + "' added to the default items list."));
				}
				else
				{
					Logger.LogError((object)("Armor '" + text4 + "' not found in ItemManager or ItemDrop is null."));
				}
			}
			if (list4.Count > 0)
			{
				component.m_defaultItems = list4.ToArray();
				Logger.LogInfo((object)("Humanoid '" + ((Object)creaturePrefab).name + "' assigned custom armors as default items."));
			}
			else
			{
				Logger.LogWarning((object)("No valid custom armors found for " + ((Object)creaturePrefab).name + ". Using prefab's armors."));
			}
		}
		else
		{
			Logger.LogInfo((object)("No custom default weapons or armors provided for " + ((Object)creaturePrefab).name + ", using prefab's default items."));
		}
		Logger.LogInfo((object)(((Object)creaturePrefab).name + " equipped with configured or default weapons and armors."));
	}
}
public static class ShogunConfig
{
	private static ConfigFile _config;

	public static ConfigEntry<bool> EnableDebugMode { get; private set; }

	public static void Initialize(ConfigFile config)
	{
		_config = config;
		_config.SaveOnConfigSet = true;
		CreateConfigValues();
	}

	private static void CreateConfigValues()
	{
		//IL_001f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Expected O, but got Unknown
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: Expected O, but got Unknown
		EnableDebugMode = _config.Bind<bool>("Client config", "EnableDebugMode", false, new ConfigDescription("Habilita el registro de depuración para Shogun Era.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
		{
			IsAdvanced = true
		} }));
	}

	public static ConfigEntry<bool> BindEnableMob(string mobName)
	{
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: 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 _config.Bind<bool>(mobName, "Enabled", true, new ConfigDescription("Habilita o deshabilita el mob " + mobName + ".", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
		{
			IsAdminOnly = true
		} }));
	}

	public static ConfigEntry<bool> BindServerConfig(string category, string key, bool defaultValue, string description, bool isAdvanced = false)
	{
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Expected O, but got Unknown
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Expected O, but got Unknown
		return _config.Bind<bool>(category, key, defaultValue, new ConfigDescription(description, (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
		{
			IsAdminOnly = true,
			IsAdvanced = isAdvanced
		} }));
	}

	public static ConfigEntry<int> BindServerConfig(string category, string key, int defaultValue, string description, bool isAdvanced = false, int minValue = 0, int maxValue = 99000)
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: 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
		return _config.Bind<int>(category, key, defaultValue, new ConfigDescription(description, (AcceptableValueBase)(object)new AcceptableValueRange<int>(minValue, maxValue), new object[1] { (object)new ConfigurationManagerAttributes
		{
			IsAdminOnly = true,
			IsAdvanced = isAdvanced
		} }));
	}

	public static ConfigEntry<float> BindServerConfig(string category, string key, float defaultValue, string description, bool isAdvanced = false, float minValue = 0f, float maxValue = 99000f)
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: 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
		return _config.Bind<float>(category, key, defaultValue, new ConfigDescription(description, (AcceptableValueBase)(object)new AcceptableValueRange<float>(minValue, maxValue), new object[1] { (object)new ConfigurationManagerAttributes
		{
			IsAdminOnly = true,
			IsAdvanced = isAdvanced
		} }));
	}

	public static ConfigEntry<string> BindServerConfig(string category, string key, string defaultValue, string description, bool isAdvanced = false)
	{
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Expected O, but got Unknown
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Expected O, but got Unknown
		return _config.Bind<string>(category, key, defaultValue, new ConfigDescription(description, (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
		{
			IsAdminOnly = true,
			IsAdvanced = isAdvanced
		} }));
	}
}
[BepInPlugin("Azathoth18.ShogunEra", "ShogunEra", "1.0.6")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
internal class ShogunEra : BaseUnityPlugin
{
	public const string PluginGUID = "Azathoth18.ShogunEra";

	public const string PluginName = "ShogunEra";

	public const string PluginVersion = "1.0.6";

	internal static AssetBundle EmbeddedResourceBundle;

	internal static AssetBundle SecondaryResourceBundle;

	internal static AssetBundle TerceroResourceBundle;

	private CustomLocalization Localization;

	private void Awake()
	{
		ShogunConfig.Initialize(((BaseUnityPlugin)this).Config);
		LoadAssets();
		new ShogunEraItems(EmbeddedResourceBundle, SecondaryResourceBundle, TerceroResourceBundle);
		new ShogunEramobs(SecondaryResourceBundle, TerceroResourceBundle);
		new ShogunCrafting(SecondaryResourceBundle);
		AddLocalizations();
	}

	private void Start()
	{
	}

	private void AddLocalizations()
	{
		Localization = LocalizationManager.Instance.GetLocalization();
		string[] manifestResourceNames = typeof(ShogunEra).Assembly.GetManifestResourceNames();
		foreach (string text in manifestResourceNames)
		{
			if (text.Contains("localizations"))
			{
				if (ShogunConfig.EnableDebugMode.Value)
				{
					((BaseUnityPlugin)this).Logger.LogInfo((object)("Reading " + text));
				}
				string input = ReadEmbeddedResourceFile(text);
				string text2 = Regex.Replace(input, "\\/\\/.*", "");
				string[] array = text.Split(new char[1] { '.' });
				if (ShogunConfig.EnableDebugMode.Value)
				{
					((BaseUnityPlugin)this).Logger.LogInfo((object)("Adding localization: '" + array[2] + "'"));
				}
				Localization.AddJsonFile(array[2], text2);
			}
		}
	}

	private void LoadAssets()
	{
		if (ShogunConfig.EnableDebugMode.Value)
		{
			((BaseUnityPlugin)this).Logger.LogInfo((object)("Embedded resources: " + string.Join(",", typeof(ShogunEra).Assembly.GetManifestResourceNames())));
		}
		EmbeddedResourceBundle = AssetUtils.LoadAssetBundleFromResources("ShogunEra.AssetsEmbedded.shogunera", typeof(ShogunEra).Assembly);
		if ((Object)(object)EmbeddedResourceBundle == (Object)null)
		{
			((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load the main AssetBundle: shogunera");
			return;
		}
		if (ShogunConfig.EnableDebugMode.Value)
		{
			((BaseUnityPlugin)this).Logger.LogInfo((object)("Main Asset Names: " + string.Join(",", EmbeddedResourceBundle.GetAllAssetNames())));
		}
		SecondaryResourceBundle = AssetUtils.LoadAssetBundleFromResources("ShogunEra.AssetsEmbedded.shogunera2", typeof(ShogunEra).Assembly);
		if ((Object)(object)SecondaryResourceBundle == (Object)null)
		{
			((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load the secondary AssetBundle: shogunera2");
			return;
		}
		if (ShogunConfig.EnableDebugMode.Value)
		{
			((BaseUnityPlugin)this).Logger.LogInfo((object)("Secondary Asset Names: " + string.Join(",", SecondaryResourceBundle.GetAllAssetNames())));
		}
		TerceroResourceBundle = AssetUtils.LoadAssetBundleFromResources("ShogunEra.AssetsEmbedded.shogunera3", typeof(ShogunEra).Assembly);
		if ((Object)(object)TerceroResourceBundle == (Object)null)
		{
			((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load the terciario AssetBundle: shogunera3");
		}
		else if (ShogunConfig.EnableDebugMode.Value)
		{
			((BaseUnityPlugin)this).Logger.LogInfo((object)("Terciario Asset Names: " + string.Join(",", TerceroResourceBundle.GetAllAssetNames())));
		}
	}

	private void UnloadAssets()
	{
		if ((Object)(object)EmbeddedResourceBundle != (Object)null)
		{
			EmbeddedResourceBundle.Unload(false);
			EmbeddedResourceBundle = null;
		}
		if ((Object)(object)SecondaryResourceBundle != (Object)null)
		{
			SecondaryResourceBundle.Unload(false);
			SecondaryResourceBundle = null;
		}
	}

	private string ReadEmbeddedResourceFile(string filename)
	{
		using Stream stream = typeof(ShogunEra).Assembly.GetManifestResourceStream(filename);
		using StreamReader streamReader = new StreamReader(stream);
		return streamReader.ReadToEnd();
	}
}
internal class ShogunEraItems
{
	private AssetBundle EmbeddedResourceBundle;

	private AssetBundle SecondaryResourceBundle;

	private AssetBundle TerceroResourceBundle;

	public ShogunEraItems(AssetBundle embeddedResourceBundle, AssetBundle secondaryResourceBundle, AssetBundle terceroResourceBundle)
	{
		EmbeddedResourceBundle = embeddedResourceBundle;
		SecondaryResourceBundle = secondaryResourceBundle;
		TerceroResourceBundle = terceroResourceBundle;
		InitializeItems();
	}

	private void InitializeItems()
	{
		ShogunSwords();
		ShogunNotcrafteables();
		ShogunSpears();
		ShogunPolearms();
		ShogunKnifes();
		ShogunClubs();
		ShogunHelmets();
		ShogunArmors();
	}

	private void RegisterItem(string name, string category, string prefabPath, AssetBundle assetBundle, List<(string material, int baseAmount, int perLevelAmount)> recipe, string craftingStation, int stationRequiredLevel, float armorValue = 0f, float armorPerLevel = 0f, float weight = 0f, float durability = 0f, float durabilityPerLevel = 0f, float Heatresistance = 0f, float movementModifier = 0f, List<(string damageType, float baseValue, float increment)> stats = null)
	{
		//IL_002e: 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_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a2: Expected O, but got Unknown
		//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cf: Expected O, but got Unknown
		//IL_0658: Unknown result type (might be due to invalid IL or missing references)
		//IL_066b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0671: Expected O, but got Unknown
		GameObject val = assetBundle.LoadAsset<GameObject>(prefabPath);
		if ((Object)(object)val == (Object)null)
		{
			Logger.LogError((object)("Prefab not found: " + prefabPath));
			return;
		}
		ItemConfig val2 = new ItemConfig
		{
			Amount = 1,
			CraftingStation = ShogunConfig.BindServerConfig(category, name + "_CraftingStation", craftingStation, "Mesa de crafteo para " + name + ".").Value,
			MinStationLevel = ShogunConfig.BindServerConfig(category, name + "_MinStationLevel", stationRequiredLevel, "Nivel mínimo de la mesa de crafteo para " + name + ".").Value
		};
		foreach (var item in recipe)
		{
			string value = ShogunConfig.BindServerConfig(category, name + "_Recipe_" + item.material + "_Material", item.material, "Material requerido para " + name + ".").Value;
			int value2 = ShogunConfig.BindServerConfig(category, name + "_Recipe_" + item.material + "_BaseAmount", item.baseAmount, "Cantidad base de " + item.material + " para " + name + ".").Value;
			int value3 = ShogunConfig.BindServerConfig(category, name + "_Recipe_" + item.material + "_PerLevelAmount", item.perLevelAmount, "Cantidad de " + item.material + " por nivel para " + name + ".").Value;
			val2.AddRequirement(new RequirementConfig(value, value2, value3, false));
		}
		ItemDrop component = val.GetComponent<ItemDrop>();
		if ((Object)(object)component != (Object)null)
		{
			if (stats != null && stats.Count > 0)
			{
				foreach (var stat in stats)
				{
					switch (stat.damageType)
					{
					case "m_blunt":
						component.m_itemData.m_shared.m_damages.m_blunt = stat.baseValue;
						component.m_itemData.m_shared.m_damagesPerLevel.m_blunt = stat.increment;
						continue;
					case "m_slash":
						component.m_itemData.m_shared.m_damages.m_slash = stat.baseValue;
						component.m_itemData.m_shared.m_damagesPerLevel.m_slash = stat.increment;
						continue;
					case "m_pierce":
						component.m_itemData.m_shared.m_damages.m_pierce = stat.baseValue;
						component.m_itemData.m_shared.m_damagesPerLevel.m_pierce = stat.increment;
						continue;
					case "m_fire":
						component.m_itemData.m_shared.m_damages.m_fire = stat.baseValue;
						component.m_itemData.m_shared.m_damagesPerLevel.m_fire = stat.increment;
						continue;
					case "m_frost":
						component.m_itemData.m_shared.m_damages.m_frost = stat.baseValue;
						component.m_itemData.m_shared.m_damagesPerLevel.m_frost = stat.increment;
						continue;
					case "m_poison":
						component.m_itemData.m_shared.m_damages.m_poison = stat.baseValue;
						component.m_itemData.m_shared.m_damagesPerLevel.m_poison = stat.increment;
						continue;
					case "m_lightning":
						component.m_itemData.m_shared.m_damages.m_lightning = stat.baseValue;
						component.m_itemData.m_shared.m_damagesPerLevel.m_lightning = stat.increment;
						continue;
					case "m_spirit":
						component.m_itemData.m_shared.m_damages.m_spirit = stat.baseValue;
						component.m_itemData.m_shared.m_damagesPerLevel.m_spirit = stat.increment;
						continue;
					}
					Logger.LogWarning((object)("Unknown damage type '" + stat.damageType + "' for item '" + name + "'."));
				}
			}
			else
			{
				component.m_itemData.m_shared.m_armor = armorValue;
				component.m_itemData.m_shared.m_armorPerLevel = armorPerLevel;
				component.m_itemData.m_shared.m_weight = weight;
				component.m_itemData.m_shared.m_heatResistanceModifier = Heatresistance;
				component.m_itemData.m_shared.m_maxDurability = durability;
				component.m_itemData.m_shared.m_durabilityPerLevel = durabilityPerLevel;
				component.m_itemData.m_shared.m_movementModifier = movementModifier;
			}
		}
		val2.Icon = RenderManager.Instance.Render(val, RenderManager.IsometricRotation);
		CustomItem val3 = new CustomItem(val, true, val2);
		ItemManager.Instance.AddItem(val3);
	}

	private void RegisterArmor(string name, string category, string prefabPath, AssetBundle assetBundle, List<(string material, int baseAmount, int perLevelAmount)> recipe, string craftingStation, int stationRequiredLevel, float armorValue, float armorPerLevel, float weight, float durability, float durabilityPerLevel, float Heatresistance, float movementModifier)
	{
		RegisterItem(name, category, prefabPath, assetBundle, recipe, craftingStation, stationRequiredLevel, armorValue, armorPerLevel, weight, durability, durabilityPerLevel, Heatresistance, movementModifier);
	}

	private void RegisterNonCraftableItem(string name, string category, string prefabPath, AssetBundle assetBundle)
	{
		RegisterItem(name, category, prefabPath, assetBundle, new List<(string, int, int)>(), "", 0);
	}

	private void ShogunSwords()
	{
		RegisterItem("Ser_Bokken", "ShogunSwords", "ser_bokken.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("Wood", 10, 5),
			("LeatherScraps", 2, 2)
		}, "piece_workbench", 1, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_blunt", 17f, 6f) });
		RegisterItem("Ser_Shinai", "ShogunSwords", "assets/creaciones/eras/shogunera/listos/ser_shinai.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("Wood", 20, 10),
			("Dandelion", 10, 5),
			("LeatherScraps", 4, 2)
		}, "piece_workbench", 2, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_blunt", 25f, 5f) });
		RegisterItem("SER_NINJATO", "ShogunSwords", "SER_NINJATO.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 2, 1),
			("Tin", 12, 6),
			("DeerHide", 2, 2)
		}, "forgeshogun", 2, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 20f, 3f),
			("m_pierce", 20f, 3f)
		});
		RegisterItem("SER_Katana1", "ShogunSwords", "SER_Katana1.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 2, 1),
			("Tin", 20, 10),
			("DeerHide", 2, 1)
		}, "forgeshogun", 2, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_slash", 40f, 6f) });
		RegisterItem("SER_Katana2", "ShogunSwords", "SER_Katana2.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("ElderBark", 4, 2),
			("TrollHide", 4, 2),
			("Iron", 40, 20)
		}, "forgeshogun", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 70f, 7f),
			("m_pierce", 10f, 2f)
		});
		RegisterItem("SER_KatanaDefuego1", "ShogunSwords", "SER_KatanaDefuego1.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("ElderBark", 4, 2),
			("Iron", 40, 20),
			("SurtlingCore", 20, 10),
			("TrophySurtling", 4, 2)
		}, "forgeshogun", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 60f, 7f),
			("m_pierce", 15f, 2f),
			("m_fire", 20f, 5f)
		});
		RegisterItem("SER_KATANAVALKYRIE", "ShogunSwords", "SER_KATANAVALKYRIE.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("ElderBark", 4, 2),
			("Iron", 30, 15),
			("TrollHide", 4, 2)
		}, "forgeshogun", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 60f, 5f),
			("m_pierce", 10f, 1f)
		});
		RegisterItem("SER_KatanadelCielo", "ShogunSwords", "SER_KatanadelCielo.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 4, 2),
			("Iron", 10, 5),
			("Silver", 50, 25),
			("WolfPelt", 4, 2)
		}, "forgeshogun", 4, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 75f, 7f),
			("m_pierce", 10f, 1f),
			("m_lightning", 15f, 3f),
			("m_spirit", 15f, 3f)
		});
		RegisterItem("SER_Katana3", "ShogunSwords", "SER_Katana3.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 4, 2),
			("Iron", 10, 5),
			("Silver", 60, 30),
			("WolfPelt", 4, 2)
		}, "forgeshogun", 4, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 65f, 6f),
			("m_pierce", 20f, 2f),
			("m_lightning", 15f, 3f),
			("m_spirit", 15f, 3f)
		});
		RegisterItem("SER_GiganteKatana", "ShogunSwords", "SER_GiganteKatana.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("RoundLog", 10, 5),
			("Iron", 40, 20),
			("Silver", 40, 20),
			("WolfPelt", 10, 5)
		}, "forgeshogun", 4, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 45f, 5f),
			("m_pierce", 45f, 5f)
		});
		RegisterItem("SER_KatanaDefuego", "ShogunSwords", "SER_KatanaDefuego.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 8, 4),
			("BlackMetal", 50, 25),
			("SurtlingCore", 20, 10),
			("TrophyCultist", 4, 2)
		}, "forgeshogun", 5, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 70f, 8f),
			("m_pierce", 30f, 3f),
			("m_fire", 25f, 5f)
		});
		RegisterItem("SER_Katanadehielo", "ShogunSwords", "SER_Katanadehielo.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 8, 4),
			("BlackMetal", 50, 25),
			("FreezeGland", 30, 15),
			("TrophyCultist", 4, 2)
		}, "forgeshogun", 5, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 70f, 5f),
			("m_pierce", 30f, 5f),
			("m_frost", 30f, 5f),
			("m_spirit", 30f, 5f)
		});
		RegisterItem("SER_KatanaMurasama1", "ShogunSwords", "SER_KatanaMurasama1.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("YggdrasilWood", 8, 4),
			("Carapace", 50, 25),
			("Eitr", 16, 8),
			("TrophyGoblinKing", 4, 2)
		}, "forgeshogunblack", 1, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 45f, 5f),
			("m_pierce", 45f, 5f),
			("m_fire", 30f, 5f),
			("m_lightning", 30f, 5f)
		});
		RegisterItem("SER_Katanamusashi", "ShogunSwords", "SER_Katanamusashi.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("YggdrasilWood", 8, 4),
			("Carapace", 50, 25),
			("Eitr", 16, 8),
			("TrophyGoblinKing", 4, 2)
		}, "forgeshogunblack", 1, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 45f, 5f),
			("m_pierce", 45f, 5f),
			("m_fire", 30f, 5f),
			("m_lightning", 30f, 5f)
		});
		RegisterItem("SER_RyuseiKurogane", "ShogunSwords", "SER_RyuseiKurogane.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("CharredBone", 3, 0),
			("FlametalNew", 12, 10),
			("AskHide", 2, 2)
		}, "forgeshogunblack", 2, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_slash", 135f, 6f) });
		RegisterItem("SER_IkazuchiRyusei", "ShogunSwords", "SER_IkazuchiRyusei.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("SER_RyuseiKurogane", 1, 0),
			("FlametalNew", 6, 6),
			("GemstoneBlue", 1, 1)
		}, "forgeshogunblack", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 135f, 6f),
			("m_lightning", 10f, 0f)
		});
		RegisterItem("SER_ShizenRyusei", "ShogunSwords", "SER_ShizenRyusei.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("SER_RyuseiKurogane", 1, 0),
			("FlametalNew", 6, 6),
			("GemstoneGreen", 1, 1)
		}, "forgeshogunblack", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 135f, 6f),
			("m_poison", 10f, 0f)
		});
		RegisterItem("SER_ChishioRyusei", "ShogunSwords", "SER_ChishioRyusei.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("SER_RyuseiKurogane", 1, 0),
			("FlametalNew", 6, 6),
			("GemstoneRed", 1, 1)
		}, "forgeshogunblack", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_slash", 135f, 6f) });
		RegisterItem("SER_ShinkenKurogane", "ShogunSwords", "SER_ShinkenKurogane.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 50),
			("TsubaFragment", 1, 0),
			("TsukaHiltFragment", 1, 0),
			("KamiFragment", 1, 0)
		}, "forgeshogunblack", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_slash", 135f, 6f) });
	}

	private void ShogunNotcrafteables()
	{
		RegisterNonCraftableItem("TsubaFragment", "ShogunFragments", "TsubaFragment.prefab", SecondaryResourceBundle);
		RegisterNonCraftableItem("TsukaHiltFragment", "ShogunFragments", "TsukaHiltFragment.prefab", SecondaryResourceBundle);
		RegisterNonCraftableItem("KamiFragment", "ShogunFragments", "KamiFragment.prefab", SecondaryResourceBundle);
		RegisterNonCraftableItem("KatanaSamurai1", "ShogunFragments", "KatanaSamurai1.prefab", TerceroResourceBundle);
		RegisterNonCraftableItem("KatanaSamurai2", "ShogunFragments", "KatanaSamurai2.prefab", TerceroResourceBundle);
		RegisterNonCraftableItem("KatanaSamurai3", "ShogunFragments", "KatanaSamurai3.prefab", TerceroResourceBundle);
		RegisterNonCraftableItem("KatanaSamurai4", "ShogunFragments", "KatanaSamurai4.prefab", TerceroResourceBundle);
		RegisterNonCraftableItem("KatanaSamurai5", "ShogunFragments", "KatanaSamurai5.prefab", TerceroResourceBundle);
		RegisterNonCraftableItem("KatanaRonnin", "ShogunFragments", "KatanaRonnin.prefab", TerceroResourceBundle);
		RegisterNonCraftableItem("KatanaRonnin1", "ShogunFragments", "KatanaRonnin1.prefab", TerceroResourceBundle);
	}

	private void ShogunSpears()
	{
		RegisterItem("SE_NAGATINA", "ShogunSpears", "SE_NAGATINA.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 8, 4),
			("Tin", 16, 8),
			("DeerHide", 2, 1)
		}, "forgeshogun", 2, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_pierce", 40f, 6f) });
	}

	private void ShogunPolearms()
	{
		RegisterItem("SER_Bo", "ShogunPolearms", "SER_Bo.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("Wood", 20, 5),
			("LeatherScraps", 4, 2)
		}, "piece_workbench", 2, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_blunt", 30f, 5f) });
		RegisterItem("SER_Shakujo", "ShogunPolearms", "SER_Shakujo.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 8, 4),
			("Bronze", 12, 6),
			("DeerHide", 2, 1)
		}, "forgeshogun", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_pierce", 50f, 6f) });
		RegisterItem("SER_Kamayari", "ShogunPolearms", "SER_Kamayari.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 10, 5),
			("Iron", 40, 20),
			("DeerHide", 2, 1)
		}, "forgeshogun", 4, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_pierce", 80f, 7f) });
	}

	private void ShogunKnifes()
	{
		RegisterItem("SER_TantoKnife", "ShogunKnifes", "SER_TantoKnife.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("ElderBark", 2, 1),
			("Iron", 20, 10),
			("TrollHide", 2, 1)
		}, "forgeshogun", 4, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 25f, 2f),
			("m_pierce", 25f, 2f)
		});
		RegisterItem("SER_SAI", "ShogunKnifes", "SER_SAI.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 2, 2),
			("Silver", 20, 15),
			("Iron", 6, 15),
			("WolfPelt", 2, 2)
		}, "forgeshogun", 5, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_slash", 35f, 4f),
			("m_pierce", 35f, 4f),
			("m_spirit", 30f, 5f)
		});
	}

	private void ShogunClubs()
	{
		RegisterItem("SER_Kanobo", "ShogunClubs", "SER_Kanobo.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("ElderBark", 10, 5),
			("Iron", 40, 20),
			("TrollHide", 8, 4)
		}, "forgeshogun", 4, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_blunt", 80f, 7f) });
		RegisterItem("SER_RyuuseinoKanobo", "ShogunClubs", "SER_RyuuseinoKanobo.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("CharredBone", 10, 5),
			("FlametalNew", 15, 8),
			("SulfurStone", 5, 3),
			("AskHide", 3, 2)
		}, "forgeshogunblack", 2, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_blunt", 135f, 6f) });
		RegisterItem("SER_KigennoKanobo", "ShogunClubs", "SER_KigennoKanobo.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("SER_RyuuseinoKanobo", 1, 0),
			("FlametalNew", 8, 8),
			("GemstoneGreen", 1, 1)
		}, "forgeshogunblack", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_blunt", 135f, 6f),
			("m_poison", 10f, 0f)
		});
		RegisterItem("SER_ChinoKanobo", "ShogunClubs", "SER_ChinoKanobo.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("SER_RyuuseinoKanobo", 1, 0),
			("FlametalNew", 6, 6),
			("GemstoneRed", 1, 1)
		}, "forgeshogunblack", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)> { ("m_blunt", 135f, 6f) });
		RegisterItem("SER_InazumanoKanobo", "ShogunClubs", "SER_InazumanoKanobo.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("SER_RyuuseinoKanobo", 1, 0),
			("FlametalNew", 6, 6),
			("GemstoneBlue", 1, 1)
		}, "forgeshogunblack", 3, 0f, 0f, 0f, 0f, 0f, 0f, 0f, new List<(string, float, float)>
		{
			("m_blunt", 135f, 6f),
			("m_lightning", 10f, 0f)
		});
	}

	private void ShogunHelmets()
	{
		RegisterArmor("SER_CiberHat", "ShogunHelmets", "ser_ciberhat.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 10f, 2f, 5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_HatJingasa", "ShogunHelmets", "ser_hatjingasa.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 12f, 3f, 6f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_MempoMask", "ShogunHelmets", "ser_mempomask.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 15f, 4f, 6.5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_SamuraiHelmetKabuto", "ShogunHelmets", "assets/creaciones/eras/shogunera/listos/ser_samuraihelmetkabuto.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 15f, 3f, 6f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_SamuraiKabuto", "ShogunHelmets", "ser_samuraikabuto.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 15f, 3f, 6f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_SamuraiKabuto1", "ShogunHelmets", "ser_samuraikabuto1.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 15f, 3f, 6f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_SamuraiKabutoMabizashi", "ShogunHelmets", "assets/creaciones/eras/shogunera/listos/ser_samuraikabutomabizashi.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 15f, 3f, 6f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_TengouMask", "ShogunHelmets", "ser_tengoumask.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 12f, 3f, 5.5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_CascoSamuraiConPelo", "ShogunHelmets", "SER_CascoSamuraiConpelo.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 15f, 4f, 6.5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_SabioShifu", "ShogunHelmets", "SER_sabioshifu.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 13f, 3f, 5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_Komuso", "ShogunHelmets", "ser_Komuso.prefab", EmbeddedResourceBundle, new List<(string, int, int)>
		{
			("FineWood", 40, 2),
			("Bronze", 50, 25)
		}, "forgeshogun", 1, 12f, 3f, 5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_KabutoBlack", "ShogunHelmets", "KabutoBlack.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 14f, 3f, 6.5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_KabutoRed", "ShogunHelmets", "KabutoRed.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 14f, 3f, 6.5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_NinjaT2", "ShogunHelmets", "NinjaT2.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 13f, 3f, 5.5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SER_HannyaTekt", "ShogunHelmets", "HannyaTekt.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 13f, 3f, 5.5f, 1200f, 150f, 0f, -0.05f);
	}

	private void ShogunArmors()
	{
		RegisterArmor("SuneateRed", "ShogunArmors", "SuneateRed.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 20f, 5f, 8f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("Suneate", "ShogunArmors", "Suneate.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 18f, 4f, 7.5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("YoroiBlack", "ShogunArmors", "YoroiBlack.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 22f, 6f, 9f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("YoroiRed", "ShogunArmors", "YoroiRed.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 22f, 6f, 9f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("Daimohakama", "ShogunArmors", "Daimohakama.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 25f, 5f, 10f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("DaimohakamaV1", "ShogunArmors", "DaimohakamaV1.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 27f, 6f, 10.5f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("DaimohakamaV2", "ShogunArmors", "DaimohakamaV2.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 30f, 7f, 11f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("DaimohakamaV3", "ShogunArmors", "DaimohakamaV3.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 35f, 8f, 12f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("NinjaChestT1", "ShogunArmors", "NinjaChestT1.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 15f, 4f, 8f, 800f, 100f, 0f, -0.05f);
		RegisterArmor("NinjaLegsT1", "ShogunArmors", "NinjaLegsT1.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 12f, 3f, 7f, 700f, 90f, 0f, -0.05f);
		RegisterArmor("SugoArmor", "ShogunArmors", "SugoArmor.prefab", EmbeddedResourceBundle, new List<(string, int, int)> { ("Bronze", 50, 25) }, "forgeshogun", 1, 20f, 5f, 9f, 1000f, 120f, 0f, -0.05f);
		RegisterArmor("SugoArmorLegs", "ShogunArmors", "SugoArmorLegs.prefab", SecondaryResourceBundle, new List<(string, int, int)> { ("Bronze", 40, 20) }, "forgeshogun", 1, 18f, 4.5f, 8.5f, 900f, 110f, 0f, -0.05f);
		RegisterArmor("ArmorNinjaLegsT4", "ShogunArmors", "ArmorNinjaLegsT4.prefab", SecondaryResourceBundle, new List<(string, int, int)> { ("Iron", 50, 20) }, "forgeshogun", 2, 22f, 5f, 10f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("ArmorNinjaLegsT5", "ShogunArmors", "ArmorNinjaLegst5.prefab", SecondaryResourceBundle, new List<(string, int, int)> { ("Silver", 60, 30) }, "forgeshogun", 3, 25f, 6f, 12f, 1400f, 160f, 0f, -0.05f);
		RegisterArmor("ArmorNinjaT3Legs", "ShogunArmors", "ArmorNinjaT3legs.prefab", SecondaryResourceBundle, new List<(string, int, int)> { ("Bronze", 40, 20) }, "forgeshogun", 1, 18f, 4.5f, 9f, 1000f, 120f, 0f, -0.05f);
		RegisterArmor("ArmorNinjaT4Chest", "ShogunArmors", "ArmorNinjaT4Chest.prefab", SecondaryResourceBundle, new List<(string, int, int)> { ("Iron", 50, 20) }, "forgeshogun", 2, 24f, 5.5f, 11f, 1300f, 140f, 0f, -0.05f);
		RegisterArmor("ArmorNinjaT5Chest", "ShogunArmors", "ArmorNinjaT5Chest.prefab", SecondaryResourceBundle, new List<(string, int, int)> { ("Silver", 60, 30) }, "forgeshogun", 3, 28f, 6.5f, 13f, 1500f, 180f, 0f, -0.05f);
		RegisterArmor("NinjaArmorT3Chest", "ShogunArmors", "NijaArmorT3Chest.prefab", SecondaryResourceBundle, new List<(string, int, int)> { ("Bronze", 40, 20) }, "forgeshogun", 1, 20f, 4.5f, 9.5f, 1100f, 130f, 0f, -0.05f);
		RegisterArmor("SoheiChest", "ShogunArmors", "SoheiChest.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 1, 35f, 7f, 12f, 2000f, 300f, 0f, -0.05f);
		RegisterArmor("Sandal", "ShogunArmors", "Sandal.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 1, 15f, 5f, 6f, 1200f, 200f, 0f, -0.05f);
		RegisterArmor("ArmadurShogun", "ShogunArmors", "ArmadurShogun.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 2, 50f, 10f, 20f, 3000f, 400f, 0f, -0.05f);
		RegisterArmor("ArmadurShogunMurakami", "ShogunArmors", "ArmadurShogunMurakami.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 2, 55f, 11f, 22f, 3200f, 450f, 0f, -0.05f);
		RegisterArmor("ArmadurShogunSanada", "ShogunArmors", "ArmadurShogunSanada.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 2, 60f, 12f, 24f, 3500f, 500f, 0f, -0.05f);
		RegisterArmor("ArmadurShogunUesugi", "ShogunArmors", "ArmadurShogunUesugi.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 2, 30f, 6f, 12f, 1500f, 200f, 0f, -0.05f);
		RegisterArmor("ArmadurShogunYamato", "ShogunArmors", "ArmadurShogunYamato.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 2, 32f, 6.5f, 13f, 1600f, 220f, 0f, -0.05f);
		RegisterArmor("SuneateShogunArmor", "ShogunArmors", "SuneateShogunArmor.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 2, 28f, 5.5f, 11f, 1400f, 180f, 0f, -0.05f);
		RegisterArmor("SuneateShogunMurakami1", "ShogunArmors", "SuneateShogunMurakami1.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 2, 29f, 5.8f, 11.5f, 1450f, 190f, 0f, -0.05f);
		RegisterArmor("SuneateShogunSanada", "ShogunArmors", "SuneateShogunSanada.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 2, 31f, 6f, 12.5f, 1550f, 210f, 0f, -0.05f);
		RegisterArmor("SuneateShogunUesugi", "ShogunLegs", "SuneateShogunUesugi.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 2, 45f, 12f, 15f, 1200f, 150f, 0f, -0.05f);
		RegisterArmor("SuneateShogunYamato", "ShogunLegs", "SuneateShogunYamato.prefab", SecondaryResourceBundle, new List<(string, int, int)>
		{
			("FlametalNew", 200, 10),
			("AskHide", 2, 10),
			("GemstoneRed", 1, 2)
		}, "forgeshogunblack", 2, 50f, 13f, 16f, 1300f, 160f, 0f, -0.05f);
	}
}