diff --git a/Projects/UOContent/Engines/Craft/Core/CraftGumpItem.cs b/Projects/UOContent/Engines/Craft/Core/CraftGumpItem.cs index e1994e1db..d4e24ea9b 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftGumpItem.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftGumpItem.cs @@ -153,7 +153,7 @@ namespace Server.Engines.Craft { var type = m_CraftItem.ItemType; - AddItem(20, 50, m_CraftItem.NameNumber, m_CraftItem.ItemHue); + AddItem(20, 50, m_CraftItem.ItemId, m_CraftItem.ItemHue); if (m_CraftItem.IsMarkable(type)) { diff --git a/Projects/UOContent/Engines/Craft/Core/CraftItem.cs b/Projects/UOContent/Engines/Craft/Core/CraftItem.cs index cbbe57768..e993749e7 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftItem.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftItem.cs @@ -116,8 +116,13 @@ namespace Server.Engines.Craft private int m_ResHue; private CraftSystem m_System; + private int _itemId; - public CraftItem(Type type, TextDefinition groupName, TextDefinition name) + public CraftItem(Type type, TextDefinition groupName, TextDefinition name) : this(type, groupName, name, -1) + { + } + + public CraftItem(Type type, TextDefinition groupName, TextDefinition name, int itemId) { Resources = new List(); Skills = new List(); @@ -131,6 +136,7 @@ namespace Server.Engines.Craft NameNumber = name; RequiredBeverage = BeverageType.Water; + _itemId = itemId; } public bool ForceNonExceptional { get; set; } @@ -169,6 +175,8 @@ namespace Server.Engines.Craft public int NameNumber { get; } + public int ItemId => _itemId == -1 ? _itemId = ItemIDOf(ItemType) : _itemId; + public List Resources { get; } public List Skills { get; } diff --git a/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs b/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs index 1c36b558e..58124baa9 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs @@ -128,16 +128,31 @@ namespace Server.Engines.Craft Type typeRes, TextDefinition nameRes, int amount ) => AddCraft(typeItem, group, name, MainSkill, minSkill, maxSkill, typeRes, nameRes, amount, ""); + public int AddCraft( + Type typeItem, TextDefinition group, TextDefinition name, int itemId, double minSkill, double maxSkill, + Type typeRes, TextDefinition nameRes, int amount + ) => AddCraft(typeItem, group, name, itemId, MainSkill, minSkill, maxSkill, typeRes, nameRes, amount, ""); + public int AddCraft( Type typeItem, TextDefinition group, TextDefinition name, double minSkill, double maxSkill, Type typeRes, TextDefinition nameRes, int amount, TextDefinition message ) => AddCraft(typeItem, group, name, MainSkill, minSkill, maxSkill, typeRes, nameRes, amount, message); + public int AddCraft( + Type typeItem, TextDefinition group, TextDefinition name, int itemId, double minSkill, double maxSkill, + Type typeRes, TextDefinition nameRes, int amount, TextDefinition message + ) => AddCraft(typeItem, group, name, itemId, MainSkill, minSkill, maxSkill, typeRes, nameRes, amount, message); + public int AddCraft( Type typeItem, TextDefinition group, TextDefinition name, SkillName skillToMake, double minSkill, double maxSkill, Type typeRes, TextDefinition nameRes, int amount ) => AddCraft(typeItem, group, name, skillToMake, minSkill, maxSkill, typeRes, nameRes, amount, ""); + public int AddCraft( + Type typeItem, TextDefinition group, TextDefinition name, int itemId, SkillName skillToMake, double minSkill, + double maxSkill, Type typeRes, TextDefinition nameRes, int amount + ) => AddCraft(typeItem, group, name, itemId, skillToMake, minSkill, maxSkill, typeRes, nameRes, amount, ""); + public int AddCraft( Type typeItem, TextDefinition group, TextDefinition name, SkillName skillToMake, double minSkill, double maxSkill, Type typeRes, TextDefinition nameRes, int amount, TextDefinition message @@ -152,6 +167,20 @@ namespace Server.Engines.Craft return CraftItems.Count - 1; } + public int AddCraft( + Type typeItem, TextDefinition group, TextDefinition name, int itemId, SkillName skillToMake, double minSkill, + double maxSkill, Type typeRes, TextDefinition nameRes, int amount, TextDefinition message + ) + { + var craftItem = new CraftItem(typeItem, group, name, itemId); + craftItem.AddRes(typeRes, nameRes, amount, message); + craftItem.AddSkill(skillToMake, minSkill, maxSkill); + + DoGroup(group, craftItem); + CraftItems.Add(craftItem); + return CraftItems.Count - 1; + } + private void DoGroup(TextDefinition groupName, CraftItem craftItem) { var index = CraftGroups.SearchFor(groupName);