public NewPlayerVendorCustomizeGump(PlayerVendor vendor)
            : base(50, 50)
        {
            m_Vendor = vendor;

            AddBackground(0, 0, 370, 370, 0x13BE);

            AddImageTiled(10, 10, 350, 20, 0xA40);
            AddImageTiled(10, 40, 350, 20, 0xA40);
            AddImageTiled(10, 70, 350, 260, 0xA40);
            AddImageTiled(10, 340, 350, 20, 0xA40);

            AddAlphaRegion(10, 10, 350, 350);

            AddHtmlLocalized(10, 12, 350, 18, 1011356, 0x7FFF, false, false);             // <center>VENDOR CUSTOMIZATION MENU</center>

            AddHtmlLocalized(10, 42, 150, 18, 1062459, 0x421F, false, false);             // <CENTER>HAIR</CENTER>

            for (int i = 0; i < m_HairStyles.Length; i++)
            {
                HairOrBeard hair = m_HairStyles[i];

                AddButton(10, 70 + i * 20, 0xFA5, 0xFA7, 0x100 | i, GumpButtonType.Reply, 0);
                AddHtmlLocalized(45, 72 + i * 20, 110, 18, hair.Name, 0x7FFF, false, false);
            }

            AddButton(10, 70 + m_HairStyles.Length * 20, 0xFB1, 0xFB3, 2, GumpButtonType.Reply, 0);
            AddHtmlLocalized(45, 72 + m_HairStyles.Length * 20, 110, 18, 1011403, 0x7FFF, false, false);             // Remove

            AddButton(10, 70 + (m_HairStyles.Length + 1) * 20, 0xFA5, 0xFA7, 3, GumpButtonType.Reply, 0);
            AddHtmlLocalized(45, 72 + (m_HairStyles.Length + 1) * 20, 110, 18, 1011402, 0x7FFF, false, false);             // Color

            if (vendor.Female)
            {
                AddButton(160, 290, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
                AddHtmlLocalized(195, 292, 160, 18, 1015327, 0x7FFF, false, false);                 // Male

                AddHtmlLocalized(195, 312, 160, 18, 1015328, 0x421F, false, false);                 // Female
            }
            else
            {
                AddHtmlLocalized(160, 42, 210, 18, 1062460, 0x421F, false, false);                 // <CENTER>BEARD</CENTER>

                for (int i = 0; i < m_BeardStyles.Length; i++)
                {
                    HairOrBeard beard = m_BeardStyles[i];

                    AddButton(160, 70 + i * 20, 0xFA5, 0xFA7, 0x200 | i, GumpButtonType.Reply, 0);
                    AddHtmlLocalized(195, 72 + i * 20, 160, 18, beard.Name, 0x7FFF, false, false);
                }

                AddButton(160, 70 + m_BeardStyles.Length * 20, 0xFB1, 0xFB3, 4, GumpButtonType.Reply, 0);
                AddHtmlLocalized(195, 72 + m_BeardStyles.Length * 20, 160, 18, 1011403, 0x7FFF, false, false);                 // Remove

                AddButton(160, 70 + (m_BeardStyles.Length + 1) * 20, 0xFA5, 0xFA7, 5, GumpButtonType.Reply, 0);
                AddHtmlLocalized(195, 72 + (m_BeardStyles.Length + 1) * 20, 160, 18, 1011402, 0x7FFF, false, false); // Color

                AddHtmlLocalized(195, 292, 160, 18, 1015327, 0x421F, false, false);                                  // Male

                AddButton(160, 310, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
                AddHtmlLocalized(195, 312, 160, 18, 1015328, 0x7FFF, false, false);                 // Female
            }

            AddButton(10, 340, 0xFA5, 0xFA7, 0, GumpButtonType.Reply, 0);
            AddHtmlLocalized(45, 342, 305, 18, 1060675, 0x7FFF, false, false);             // CLOSE
        }
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (!m_Vendor.CanInteractWith(from, true))
            {
                return;
            }

            switch (info.ButtonID)
            {
            case 0:                     // CLOSE
            {
                m_Vendor.Direction = m_Vendor.GetDirectionTo(from);
                m_Vendor.Animate(32, 5, 1, true, false, 0);                                 // bow
                m_Vendor.SayTo(from, 1043310 + Utility.Random(12));                         // a little random speech

                break;
            }

            case 1:                     // Female/Male
            {
                if (m_Vendor.Female)
                {
                    m_Vendor.BodyValue = 400;
                    m_Vendor.Female    = false;
                }
                else
                {
                    m_Vendor.BodyValue = 401;
                    m_Vendor.Female    = true;

                    m_Vendor.FacialHairItemID = 0;
                }

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 2:                     // Remove hair
            {
                m_Vendor.HairItemID = 0;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 3:                     // Color hair
            {
                if (m_Vendor.HairItemID > 0)
                {
                    new PVHuePicker(m_Vendor, false, from).SendTo(from.NetState);
                }
                else
                {
                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }

            case 4:                     // Remove beard
            {
                m_Vendor.FacialHairItemID = 0;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 5:                     // Color beard
            {
                if (m_Vendor.FacialHairItemID > 0)
                {
                    new PVHuePicker(m_Vendor, true, from).SendTo(from.NetState);
                }
                else
                {
                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }

            default:
            {
                int hairhue = 0;

                if ((info.ButtonID & 0x100) != 0)                                 // Hair style selected
                {
                    int index = info.ButtonID & 0xFF;

                    if (index >= m_HairStyles.Length)
                    {
                        return;
                    }

                    HairOrBeard hairStyle = m_HairStyles[index];

                    hairhue = m_Vendor.HairHue;

                    m_Vendor.HairItemID = 0;
                    m_Vendor.ProcessDelta();

                    m_Vendor.HairItemID = hairStyle.ItemID;

                    m_Vendor.HairHue = hairhue;

                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }
                else if ((info.ButtonID & 0x200) != 0)                                 // Beard style selected
                {
                    if (m_Vendor.Female)
                    {
                        return;
                    }

                    int index = info.ButtonID & 0xFF;

                    if (index >= m_BeardStyles.Length)
                    {
                        return;
                    }

                    HairOrBeard beardStyle = m_BeardStyles[index];

                    hairhue = m_Vendor.FacialHairHue;

                    m_Vendor.FacialHairItemID = 0;
                    m_Vendor.ProcessDelta();

                    m_Vendor.FacialHairItemID = beardStyle.ItemID;

                    m_Vendor.FacialHairHue = hairhue;

                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }
            }
        }
示例#3
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (!m_Vendor.CanInteractWith(from, true))
            {
                return;
            }

            switch (info.ButtonID)
            {
            case 0:     // CLOSE
            {
                m_Vendor.Direction = m_Vendor.GetDirectionTo(from);
                m_Vendor.Animate(32, 5, 1, true, false, 0);         // bow
                m_Vendor.SayTo(from, 1043310 + Utility.Random(12)); // a little random speech

                break;
            }

            case 201:     // Male
            {
                m_Vendor.BodyValue = m_Vendor.Race == Race.Elf ? 605 : 400;
                m_Vendor.Female    = false;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 202:     // Female
            {
                m_Vendor.FacialHairItemID = 0;

                m_Vendor.BodyValue = m_Vendor.Race == Race.Elf ? 606 : 401;
                m_Vendor.Female    = true;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 203:     // Human
            {
                m_Vendor.BodyValue = m_Vendor.Female ? 401 : 400;
                m_Vendor.Race      = Race.Human;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 204:     // Elf
            {
                Item beard = m_Vendor.FindItemOnLayer(Layer.FacialHair);

                if (beard != null)
                {
                    beard.Delete();
                }

                m_Vendor.BodyValue = m_Vendor.Female ? 606 : 605;
                m_Vendor.Race      = Race.Elf;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 11:     // Remove hair
            {
                m_Vendor.HairItemID = 0;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 101:     // Color hair
            {
                if (m_Vendor.HairItemID > 0)
                {
                    new PVHuePicker(m_Vendor, false, from).SendTo(from.NetState);
                }
                else
                {
                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }

            case 12:     // Remove beard
            {
                m_Vendor.FacialHairItemID = 0;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 102:     // Color beard
            {
                if (m_Vendor.FacialHairItemID > 0)
                {
                    new PVHuePicker(m_Vendor, true, from).SendTo(from.NetState);
                }
                else
                {
                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }

            default:
            {
                if ((info.ButtonID & 0x100) != 0)         // Hair style selected
                {
                    HairOrBeard[] hairstyles;

                    if (m_Vendor.Race != Race.Elf)
                    {
                        hairstyles = m_HairStyles;
                    }
                    else
                    {
                        hairstyles = m_Vendor.Female ? m_ElvenFemaleStyles : m_ElvenHairStyles;
                    }

                    int index = info.ButtonID & 0xFF;

                    if (index >= hairstyles.Length)
                    {
                        return;
                    }

                    HairOrBeard hairStyle = hairstyles[index];

                    m_Vendor.HairItemID = hairStyle.ItemID;

                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }
                else if ((info.ButtonID & 0x200) != 0)         // Beard style selected
                {
                    if (m_Vendor.Female)
                    {
                        return;
                    }

                    int index = info.ButtonID & 0xFF;

                    if (index >= m_BeardStyles.Length)
                    {
                        return;
                    }

                    HairOrBeard beardStyle = m_BeardStyles[index];

                    m_Vendor.FacialHairItemID = beardStyle.ItemID;

                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }
            }
        }
示例#4
0
        public NewPlayerVendorCustomizeGump(PlayerVendor vendor)
            : base(50, 50)
        {
            m_Vendor = vendor;

            AddPage(0);

            if (!(vendor.Race == Race.Elf && vendor.Female))
            {
                AddKRHtmlLocalized(0, 0, 0, 0, vendor.Race != Race.Elf ? vendor.Female ? -2 : -1 : -3, false, false);
            }

            AddBackground(0, 0, 370, 370, 0x13BE);

            if (vendor.Race == Race.Elf && vendor.Female)
            {
                AddKRHtmlLocalized(0, 0, 0, 0, -4, false, false);
            }

            AddImageTiled(10, 10, 350, 20, 0xA40);
            AddImageTiled(10, 40, 350, 20, 0xA40);
            AddImageTiled(10, 70, 350, 260, 0xA40);
            AddImageTiled(10, 340, 350, 20, 0xA40);

            AddAlphaRegion(10, 10, 350, 350);

            AddHtmlLocalized(10, 12, 350, 18, 1011356, 0x7FFF, false, false); // <center>VENDOR CUSTOMIZATION MENU</center>

            AddButton(10, 340, 0xFA5, 0xFA7, 0, GumpButtonType.Reply, 0);
            AddHtmlLocalized(45, 342, 305, 18, 1060675, 0x7FFF, false, false); // CLOSE

            AddHtmlLocalized(10, 42, 150, 18, 1062459, 0x421F, false, false);  // <CENTER>HAIR</CENTER>

            HairOrBeard[] hairstyles;

            if (m_Vendor.Race != Race.Elf)
            {
                hairstyles = m_HairStyles;
            }
            else
            {
                hairstyles = m_Vendor.Female ? m_ElvenFemaleStyles : m_ElvenHairStyles;
            }

            for (int i = 0; i < hairstyles.Length; i++)
            {
                HairOrBeard hair = hairstyles[i];

                AddHtmlLocalized(45, 72 + i * 20, 110, 18, hair.Name, 0x7FFF, false, false);
                AddButton(10, 70 + i * 20, 0xFA5, 0xFA7, 0x100 | i, GumpButtonType.Reply, 0);
            }

            AddHtmlLocalized(45, 252, 110, 18, 1011403, 0x7FFF, false, false); // Remove
            AddButton(10, 250, 0xFB1, 0xFB3, 11, GumpButtonType.Reply, 0);

            AddHtmlLocalized(45, 272, 110, 18, 1011402, 0x7FFF, false, false); // Color
            AddButton(10, 270, 0xFA5, 0xFA7, 101, GumpButtonType.Reply, 0);

            if (!vendor.Female && m_Vendor.Race != Race.Elf)
            {
                AddHtmlLocalized(160, 42, 210, 18, 1062460, 0x421F, false, false); // <CENTER>BEARD</CENTER>

                for (int i = 0; i < m_BeardStyles.Length; i++)
                {
                    HairOrBeard beard = m_BeardStyles[i];

                    AddHtmlLocalized(195, 72 + i * 20, 160, 18, beard.Name, 0x7FFF, false, false);
                    AddButton(160, 70 + i * 20, 0xFA5, 0xFA7, 0x200 | i, GumpButtonType.Reply, 0);
                }

                AddHtmlLocalized(195, 72 + m_BeardStyles.Length * 20, 160, 18, 1011403, 0x7FFF, false, false); // Remove
                AddButton(160, 70 + m_BeardStyles.Length * 20, 0xFB1, 0xFB3, 12, GumpButtonType.Reply, 0);

                AddHtmlLocalized(195, 72 + (m_BeardStyles.Length + 1) * 20, 160, 18, 1011402, 0x7FFF, false, false); // Color
                AddButton(160, 70 + (m_BeardStyles.Length + 1) * 20, 0xFA5, 0xFA7, 102, GumpButtonType.Reply, 0);
            }

            if (vendor.Female)
            {
                AddHtmlLocalized(195, 292, 160, 18, 1015327, 0x7FFF, false, false); // Male
                AddButton(160, 290, 0xFA5, 0xFA7, 201, GumpButtonType.Reply, 0);

                AddHtmlLocalized(195, 312, 160, 18, 1015328, 0x421F, false, false); // Female
            }
            else
            {
                AddHtmlLocalized(195, 292, 160, 18, 1015327, 0x421F, false, false); // Male
                AddHtmlLocalized(195, 312, 160, 18, 1015328, 0x7FFF, false, false); // Female

                AddButton(160, 310, 0xFA5, 0xFA7, 202, GumpButtonType.Reply, 0);
            }

            if (vendor.Race == Race.Elf)
            {
                AddHtmlLocalized(275, 292, 160, 18, 1072255, 0x7FFF, false, false); // Human
                AddButton(245, 290, 0xFA5, 0xFA7, 203, GumpButtonType.Reply, 0);
                AddHtmlLocalized(275, 312, 160, 18, 1072256, 0x421F, false, false); // Elf
            }
            else
            {
                AddHtmlLocalized(275, 292, 160, 18, 1072255, 0x421F, false, false); // Human
                AddHtmlLocalized(275, 312, 160, 18, 1072256, 0x7FFF, false, false); // Elf

                AddButton(245, 310, 0xFA5, 0xFA7, 204, GumpButtonType.Reply, 0);
            }
        }
示例#5
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (!m_Vendor.CanInteractWith(from, true))
            {
                return;
            }

            switch (info.ButtonID)
            {
            case 0:                     // CLOSE
            {
                m_Vendor.Direction = m_Vendor.GetDirectionTo(from);
                m_Vendor.Animate(32, 5, 1, true, false, 0);                                   // bow
                m_Vendor.SayTo(from, 1043310 + Utility.Random(12));                           // a little random speech

                break;
            }

            case 1:                     // Female/Male
            {
                if (m_Vendor.Female)
                {
                    m_Vendor.BodyValue = 400;
                    m_Vendor.Female    = false;
                }
                else
                {
                    Item beard = m_Vendor.FindItemOnLayer(Layer.FacialHair);
                    if (beard != null)
                    {
                        beard.Delete();
                    }

                    m_Vendor.BodyValue = 401;
                    m_Vendor.Female    = true;
                }

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 2:                     // Remove hair
            {
                Item hair = m_Vendor.FindItemOnLayer(Layer.Hair);

                if (hair != null)
                {
                    hair.Delete();
                }

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 3:                     // Color hair
            {
                if (m_Vendor.FindItemOnLayer(Layer.Hair) != null)
                {
                    new PVHuePicker(m_Vendor, false, from).SendTo(from.NetState);
                }
                else
                {
                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }

            case 4:                     // Remove beard
            {
                Item beard = m_Vendor.FindItemOnLayer(Layer.FacialHair);

                if (beard != null)
                {
                    beard.Delete();
                }

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 5:                     // Color beard
            {
                if (m_Vendor.FindItemOnLayer(Layer.FacialHair) != null)
                {
                    new PVHuePicker(m_Vendor, true, from).SendTo(from.NetState);
                }
                else
                {
                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }

            default:
            {
                if ((info.ButtonID & 0x100) != 0)                                   // Hair style selected
                {
                    int index = info.ButtonID & 0xFF;

                    if (index >= m_HairStyles.Length)
                    {
                        return;
                    }

                    Item currentHair = m_Vendor.FindItemOnLayer(Layer.Hair);
                    if (currentHair != null)
                    {
                        currentHair.Delete();
                    }

                    HairOrBeard hairStyle = m_HairStyles[index];
                    Item        newHair   = (Item)Activator.CreateInstance(hairStyle.Type);

                    m_Vendor.AddItem(newHair);

                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }
                else if ((info.ButtonID & 0x200) != 0)                                   // Beard style selected
                {
                    if (m_Vendor.Female)
                    {
                        return;
                    }

                    int index = info.ButtonID & 0xFF;

                    if (index >= m_BeardStyles.Length)
                    {
                        return;
                    }

                    Item currentBeard = m_Vendor.FindItemOnLayer(Layer.FacialHair);
                    if (currentBeard != null)
                    {
                        currentBeard.Delete();
                    }

                    HairOrBeard beardStyle = m_BeardStyles[index];
                    Item        newBeard   = (Item)Activator.CreateInstance(beardStyle.Type);

                    m_Vendor.AddItem(newBeard);

                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }
            }
        }
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (!m_Vendor.CanInteractWith(from, true))
            {
                return;
            }

            switch (info.ButtonID)
            {
            case 0:                     // CLOSE
            {
                m_Vendor.Direction = m_Vendor.GetDirectionTo(from);
                m_Vendor.Animate(32, 5, 1, true, false, 0);                           // bow
                m_Vendor.SayTo(from, 1043310 + Utility.Random(12));                   // a little random speech

                break;
            }

            case 1:                     // Female/Male
            {
                // genova: other project : Full support UO:ML rev 107
                #region Mondain's Legacy
                m_Vendor.Female    = !m_Vendor.Female;
                m_Vendor.BodyValue = m_Vendor.Race.AliveBody(m_Vendor.Female);
                #endregion

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 2:                     // Remove hair
            {
                m_Vendor.HairItemID = 0;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 3:                     // Color hair
            {
                if (m_Vendor.HairItemID > 0)
                {
                    new PVHuePicker(m_Vendor, false, from).SendTo(from.NetState);
                }
                else
                {
                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }

            case 4:                     // Remove beard
            {
                m_Vendor.FacialHairItemID = 0;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 5:                     // Color beard
            {
                if (m_Vendor.FacialHairItemID > 0)
                {
                    new PVHuePicker(m_Vendor, true, from).SendTo(from.NetState);
                }
                else
                {
                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }

                // genova: other project : Full support UO:ML rev 107
                #region Mondain's Legacy
            case 6:                     // Change race
            {
                if (m_Vendor.Race == Race.Elf)
                {
                    m_Vendor.Race = Race.Human;
                }
                else
                {
                    m_Vendor.Race = Race.Elf;
                }

                m_Vendor.Hue              = m_Vendor.Race.RandomSkinHue();
                m_Vendor.HairItemID       = m_Vendor.Race.RandomHair(m_Vendor.Female);
                m_Vendor.HairHue          = 0;
                m_Vendor.FacialHairItemID = 0;
                m_Vendor.FacialHairHue    = 0;

                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

                #endregion
            default:
            {
                if ((info.ButtonID & 0x100) != 0)                           // Hair style selected
                {
                    int index = info.ButtonID & 0xFF;

                    // genova: other project : Full support UO:ML rev 107
                    #region Mondain's Legacy
                    if (index >= m_HairStyles.Length && m_Vendor.Race == Race.Human)
                    {
                        return;
                    }
                    else if (index >= m_FemaleElfHairStyles.Length && m_Vendor.Race == Race.Elf)
                    {
                        return;
                    }

                    HairOrBeard hairStyle;

                    if (m_Vendor.Race == Race.Elf && m_Vendor.Female)
                    {
                        hairStyle = m_FemaleElfHairStyles[index];
                    }
                    else if (m_Vendor.Race == Race.Elf)
                    {
                        hairStyle = m_MaleElfHairStyles[index];
                    }
                    else
                    {
                        hairStyle = m_HairStyles[index];
                    }

                    m_Vendor.HairItemID = hairStyle.ItemID;
                    #endregion

                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }
                else if ((info.ButtonID & 0x200) != 0)                           // Beard style selected
                {
                    if (m_Vendor.Female)
                    {
                        return;
                    }

                    int index = info.ButtonID & 0xFF;

                    if (index >= m_BeardStyles.Length)
                    {
                        return;
                    }

                    HairOrBeard beardStyle = m_BeardStyles[index];

                    // genova: other project : Full support UO:ML rev 107
                    m_Vendor.FacialHairItemID = beardStyle.ItemID;

                    from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));
                }

                break;
            }
            }
        }
        public NewPlayerVendorCustomizeGump(PlayerVendor vendor) : base(50, 50)
        {
            m_Vendor = vendor;

            AddBackground(0, 0, 370, 370, 0x13BE);

            AddImageTiled(10, 10, 350, 20, 0xA40);
            AddImageTiled(10, 40, 350, 20, 0xA40);
            AddImageTiled(10, 70, 350, 260, 0xA40);
            AddImageTiled(10, 340, 350, 20, 0xA40);

            AddAlphaRegion(10, 10, 350, 350);

            AddHtmlLocalized(10, 12, 350, 18, 1011356, 0x7FFF, false, false);               // <center>VENDOR CUSTOMIZATION MENU</center>

            AddHtmlLocalized(10, 42, 150, 18, 1062459, 0x421F, false, false);               // <CENTER>HAIR</CENTER>

            // genova: other project : Full support UO:ML rev 107
            #region Mondain's Legacy
            if (vendor.Race == Race.Elf)
            {
                // Remove Hair
                AddButton(10, 70 + m_FemaleElfHairStyles.Length * 20, 0xFB1, 0xFB3, 2, GumpButtonType.Reply, 0);
                AddHtmlLocalized(45, 72 + m_FemaleElfHairStyles.Length * 20, 110, 18, 1011403, 0x7FFF, false, false);                   // Remove

                // Color Hair
                AddButton(10, 70 + (m_FemaleElfHairStyles.Length + 1) * 20, 0xFA5, 0xFA7, 3, GumpButtonType.Reply, 0);
                AddHtmlLocalized(45, 72 + (m_FemaleElfHairStyles.Length + 1) * 20, 110, 18, 1011402, 0x7FFF, false, false);                   // Color

                if (vendor.Female)
                {
                    // Hair
                    for (int i = 0; i < m_FemaleElfHairStyles.Length; i++)
                    {
                        HairOrBeard hair = m_FemaleElfHairStyles[i];

                        AddButton(10, 70 + i * 20, 0xFA5, 0xFA7, 0x100 | i, GumpButtonType.Reply, 0);
                        AddHtmlLocalized(45, 72 + i * 20, 110, 18, hair.Name, 0x7FFF, false, false);
                    }

                    // Change gender
                    AddButton(160, 290, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
                    AddHtmlLocalized(195, 292, 160, 18, 1015327, 0x7FFF, false, false);                       // Male

                    AddHtmlLocalized(195, 312, 160, 18, 1015328, 0x421F, false, false);                       // Female
                }
                else
                {
                    // Hair
                    for (int i = 0; i < m_MaleElfHairStyles.Length; i++)
                    {
                        HairOrBeard hair = m_MaleElfHairStyles[i];

                        AddButton(10, 70 + i * 20, 0xFA5, 0xFA7, 0x100 | i, GumpButtonType.Reply, 0);
                        AddHtmlLocalized(45, 72 + i * 20, 110, 18, hair.Name, 0x7FFF, false, false);
                    }

                    // Change gender
                    AddHtmlLocalized(195, 292, 160, 18, 1015327, 0x421F, false, false);                       // Male

                    AddButton(160, 310, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
                    AddHtmlLocalized(195, 312, 160, 18, 1015328, 0x7FFF, false, false);                       // Female
                }

                // Change race
                AddButton(245, 290, 0xFA5, 0xFA7, 6, GumpButtonType.Reply, 0);
                AddHtmlLocalized(275, 292, 160, 18, 1072255, 0x7FFF, false, false);                   // Human

                AddHtmlLocalized(275, 312, 160, 18, 1072256, 0x421F, false, false);                   // Elf
            }
            else
            {
                // Change hair
                for (int i = 0; i < m_HairStyles.Length; i++)
                {
                    HairOrBeard hair = m_HairStyles[i];

                    AddButton(10, 70 + i * 20, 0xFA5, 0xFA7, 0x100 | i, GumpButtonType.Reply, 0);
                    AddHtmlLocalized(45, 72 + i * 20, 110, 18, hair.Name, 0x7FFF, false, false);
                }

                // Remove Hair
                AddButton(10, 70 + m_HairStyles.Length * 20, 0xFB1, 0xFB3, 2, GumpButtonType.Reply, 0);
                AddHtmlLocalized(45, 72 + m_HairStyles.Length * 20, 110, 18, 1011403, 0x7FFF, false, false);                   // Remove

                // Color Hair
                AddButton(10, 70 + (m_HairStyles.Length + 1) * 20, 0xFA5, 0xFA7, 3, GumpButtonType.Reply, 0);
                AddHtmlLocalized(45, 72 + (m_HairStyles.Length + 1) * 20, 110, 18, 1011402, 0x7FFF, false, false);                   // Color

                // Change gender and beard
                if (vendor.Female)
                {
                    AddButton(160, 290, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
                    AddHtmlLocalized(195, 292, 160, 18, 1015327, 0x7FFF, false, false);                       // Male

                    AddHtmlLocalized(195, 312, 160, 18, 1015328, 0x421F, false, false);                       // Female
                }
                else
                {
                    AddHtmlLocalized(160, 42, 210, 18, 1062460, 0x421F, false, false);                       // <CENTER>BEARD</CENTER>

                    for (int i = 0; i < m_BeardStyles.Length; i++)
                    {
                        HairOrBeard beard = m_BeardStyles[i];

                        AddButton(160, 70 + i * 20, 0xFA5, 0xFA7, 0x200 | i, GumpButtonType.Reply, 0);
                        AddHtmlLocalized(195, 72 + i * 20, 160, 18, beard.Name, 0x7FFF, false, false);
                    }

                    AddButton(160, 70 + m_BeardStyles.Length * 20, 0xFB1, 0xFB3, 4, GumpButtonType.Reply, 0);
                    AddHtmlLocalized(195, 72 + m_BeardStyles.Length * 20, 160, 18, 1011403, 0x7FFF, false, false);                       // Remove

                    AddButton(160, 70 + (m_BeardStyles.Length + 1) * 20, 0xFA5, 0xFA7, 5, GumpButtonType.Reply, 0);
                    AddHtmlLocalized(195, 72 + (m_BeardStyles.Length + 1) * 20, 160, 18, 1011402, 0x7FFF, false, false); // Color

                    AddHtmlLocalized(195, 292, 160, 18, 1015327, 0x421F, false, false);                                  // Male

                    AddButton(160, 310, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
                    AddHtmlLocalized(195, 312, 160, 18, 1015328, 0x7FFF, false, false);                       // Female
                }

                // Change race
                AddHtmlLocalized(275, 292, 160, 18, 1072255, 0x421F, false, false);                   // Human

                AddButton(245, 310, 0xFA5, 0xFA7, 6, GumpButtonType.Reply, 0);
                AddHtmlLocalized(275, 312, 160, 18, 1072256, 0x7FFF, false, false);                   // Elf
            }
            #endregion

            AddButton(10, 340, 0xFA5, 0xFA7, 0, GumpButtonType.Reply, 0);
            AddHtmlLocalized(45, 342, 305, 18, 1060675, 0x7FFF, false, false);               // CLOSE
        }