/// <summary>
        /// Creates an ItemEquip based on the template and an existing ItemEquip.
        /// </summary>
        /// <param name="BaseItem">The ItemEquip to be upgraded.</param>
        /// <returns>The new ItemEquip.</returns>
        public Items.ItemEquip CreateResult(Items.ItemEquip BaseItem)
        {
            Items.ItemEquip result = CreateResult();

            result.SocketCount   = BaseItem.SocketCount;
            result.Sockets       = (Interfaces.ISocketable[])BaseItem.Sockets.Clone();
            result.RefiningLevel = BaseItem.RefiningLevel;
            return(result);
        }
        /// <summary>
        /// Creates an ItemEquip based on the template.
        /// </summary>
        /// <returns>The created ItemEquip.</returns>
        public Items.ItemEquip CreateResult()
        {
            Items.ItemEquip result = new Items.ItemEquip
            {
                Name       = Name,
                NameColour = Item.GradeToColour(this.Grade)
            };
            result.StatValues = this.MainStats;


            foreach (Items.ItemBonus add in this.Adds)
            {
                Items.ItemBonus bonus = (Items.ItemBonus)add.Clone();
                result.Bonuses.Add(bonus);
            }
            result.SubType = Type;
            result.Variant = Variant;


            return(result);
        }