public SkillMasteryGump(Mobile player, SkillMasteryPageType skillMasteryPageType, Item item) : base(10, 10)
        {
            m_Player           = player as PlayerMobile;
            m_SkillMasteryPage = skillMasteryPageType;
            m_Item             = item;

            if (m_Player == null)
            {
                return;
            }

            switch (skillMasteryPageType)
            {
            case SkillMasteryPageType.Overview:
                break;

            case SkillMasteryPageType.Orb:
                if (!(item is SkillMasteryOrb))
                {
                    return;
                }
                if (item == null)
                {
                    return;
                }
                if (item.Deleted)
                {
                    return;
                }

                m_SkillMasteryOrb = item as SkillMasteryOrb;
                break;

            case SkillMasteryPageType.Scroll:
                if (!(item is SkillMasteryScroll))
                {
                    return;
                }
                if (item == null)
                {
                    return;
                }
                if (item.Deleted)
                {
                    return;
                }

                m_SkillMasteryScroll = item as SkillMasteryScroll;
                break;
            }

            #region Images

            AddImage(5, 5, 103, 2499);
            AddImage(140, 5, 103, 2499);
            AddImage(266, 5, 103, 2499);
            AddImage(140, 92, 103, 2499);
            AddImage(5, 92, 103, 2499);
            AddImage(266, 92, 103, 2499);
            AddImage(140, 180, 103, 2499);
            AddImage(5, 180, 103, 2499);
            AddImage(266, 180, 103, 2499);
            AddImage(140, 264, 103, 2499);
            AddImage(5, 264, 103, 2499);
            AddImage(266, 264, 103, 2499);
            AddImage(400, 5, 103, 2499);
            AddImage(400, 92, 103, 2499);
            AddImage(400, 180, 103, 2499);
            AddImage(400, 265, 103, 2499);
            AddImage(400, 362, 103, 2499);
            AddImage(266, 361, 103, 2499);
            AddImage(140, 361, 103, 2499);
            AddImage(5, 361, 103, 2499);
            AddImage(100, 361, 5104, 2052);
            AddImage(19, 361, 5104, 2052);
            AddImage(164, 361, 5104, 2052);
            AddImage(253, 361, 5104, 2052);
            AddImage(312, 361, 5104, 2052);
            AddImage(398, 361, 5104, 2052);
            AddImage(442, 361, 5104, 2052);
            AddImage(273, 83, 2081, 2499);
            AddImage(271, 282, 2081, 2499);
            AddImage(272, 149, 2081, 2499);
            AddImage(272, 13, 2081, 2499);
            AddImage(272, 214, 2081, 2499);
            AddImage(15, 14, 2081, 2499);
            AddImage(15, 83, 2081, 2499);
            AddImage(14, 149, 2081, 2499);
            AddImage(14, 214, 2081, 2499);
            AddImage(14, 282, 2081, 2499);
            AddImageTiled(272, 10, 6, 341, 2701);

            AddItem(48, 390, 2942);
            AddItem(23, 376, 2943);
            AddItem(43, 381, 2507);
            AddItem(42, 397, 4030);
            AddItem(55, 376, 7716);
            AddItem(23, 368, 7717, 2652);
            AddItem(45, 387, 4031);

            AddImage(184, 12, 2446, 2401);
            AddLabel(232, 12, 2599, "Skill Mastery");

            AddLabel(65, 41, 149, "Skill");
            AddLabel(151, 41, 149, "Value");
            AddLabel(199, 41, 149, "Cap");

            AddLabel(324, 40, 149, "Skill");
            AddLabel(410, 40, 149, "Value");
            AddLabel(458, 40, 149, "Cap");

            AddLabel(95, 379, 149, "Total Skills");
            AddLabel(95, 405, 149, "Total Skill Cap");

            #endregion

            List <SkillName> m_SkillList = new List <SkillName>();

            foreach (SkillName skillName in SkillMasteryScroll.Skills)
            {
                m_SkillList.Add(skillName);
            }

            int leftStartY  = 60;
            int rightStartY = 60;

            int spacingY = 20;

            bool canUseOrb    = false;
            bool canUseScroll = false;

            if (m_Player.SkillsCap < PlayerMobile.MaxSkillCap)
            {
                canUseOrb = true;
            }

            for (int a = 0; a < m_SkillList.Count; a++)
            {
                int textHue = WhiteTextHue;

                SkillName skillName      = m_SkillList[a];
                string    skillValueText = m_Player.Skills[skillName].Base.ToString();
                string    skillCapText   = (m_Player.Skills[skillName].CapFixedPoint / 10).ToString();
                int       skillCap       = m_Player.Skills[skillName].CapFixedPoint / 10;

                if ((m_Player.Skills[skillName].CapFixedPoint / 10) > 100)
                {
                    textHue = 2599;
                }

                bool canIncrease = false;

                if (skillMasteryPageType == SkillMasteryPageType.Scroll)
                {
                    if (skillName == m_SkillMasteryScroll.Skill)
                    {
                        if (m_Player.Skills[skillName].Cap < 120)
                        {
                            canUseScroll = true;
                            canIncrease  = true;
                            textHue      = 63;

                            skillCapText = ((m_Player.Skills[skillName].CapFixedPoint / 10) + 1).ToString();
                        }
                    }
                }

                //Left Side
                if (a < EntriesPerSide)
                {
                    AddLabel(25, leftStartY, textHue, SkillCheck.GetSkillName(skillName));
                    AddLabel(Utility.CenteredTextOffset(165, skillValueText), leftStartY, textHue, skillValueText);
                    AddLabel(Utility.CenteredTextOffset(210, skillCapText), leftStartY, textHue, skillCapText);

                    if (canUseScroll && canIncrease)
                    {
                        AddImage(232, leftStartY + 1, 5600, 63);
                        AddLabel(252, leftStartY, 63, "+1");
                    }

                    leftStartY += spacingY;
                }

                //Right Side
                else
                {
                    AddLabel(285, rightStartY, textHue, SkillCheck.GetSkillName(skillName));
                    AddLabel(Utility.CenteredTextOffset(426, skillValueText), rightStartY, textHue, skillValueText);
                    AddLabel(Utility.CenteredTextOffset(470, skillCapText), rightStartY, textHue, skillCapText);

                    if (canUseScroll && canIncrease)
                    {
                        AddImage(488, rightStartY + 1, 5600, 63);
                        AddLabel(508, rightStartY, 63, "+1");
                    }

                    rightStartY += spacingY;
                }
            }

            //Guide
            AddButton(19, 15, 2094, 2095, 1, GumpButtonType.Reply, 0);
            AddLabel(15, 1, 149, "Guide");

            string actionText = "";
            string resultText = "";

            int totalSkills   = (m_Player.SkillsTotal / 10);
            int totalSkillCap = (m_Player.SkillsCap / 10);

            int totalSkillsHue   = WhiteTextHue;
            int totalSkillCapHue = WhiteTextHue;

            if (totalSkills > 700)
            {
                totalSkillsHue = 2599;
            }

            if (totalSkillCap > 700)
            {
                totalSkillCapHue = 2599;
            }

            switch (m_SkillMasteryPage)
            {
            case SkillMasteryPageType.Overview:
                AddLabel(199, 379, totalSkillsHue, totalSkills.ToString());
                AddLabel(199, 405, totalSkillCapHue, totalSkillCap.ToString());
                break;

            case SkillMasteryPageType.Orb:
                if (canUseOrb)
                {
                    int newSkillCap = totalSkillCap + 1;

                    AddLabel(199, 379, totalSkillsHue, totalSkills.ToString());
                    AddLabel(199, 405, 63, newSkillCap.ToString());
                    AddImage(232, 406, 5600, 63);
                    AddLabel(252, 405, 63, "+1");

                    actionText = "Use Mastery Orb?";
                    resultText = "(Increase Total Skill Cap to " + newSkillCap + ")";

                    AddLabel(Utility.CenteredTextOffset(400, actionText), 364, 63, actionText);
                    AddLabel(Utility.CenteredTextOffset(410, resultText), 382, 2599, resultText);
                    AddItem(375, 415, 22336, 2966);     //Orb
                    AddButton(423, 411, 247, 248, 2, GumpButtonType.Reply, 0);
                }

                else
                {
                    AddLabel(199, 379, totalSkillsHue, totalSkills.ToString());
                    AddLabel(199, 405, totalSkillCapHue, totalSkillCap.ToString());

                    actionText = "Mastery Orb Unusable";
                    resultText = "(Already at Maximum Total Skill Cap)";

                    AddLabel(Utility.CenteredTextOffset(400, actionText), 364, 149, actionText);
                    AddLabel(Utility.CenteredTextOffset(410, resultText), 382, 149, resultText);
                }

                break;

            case SkillMasteryPageType.Scroll:
                if (canUseScroll)
                {
                    AddLabel(199, 379, totalSkillsHue, totalSkills.ToString());
                    AddLabel(199, 405, totalSkillCapHue, totalSkillCap.ToString());

                    string skillName   = SkillCheck.GetSkillName(m_SkillMasteryScroll.Skill);
                    int    newSkillCap = (m_Player.Skills[m_SkillMasteryScroll.Skill].CapFixedPoint / 10) + 1;

                    actionText = "Use Mastery Scroll?";
                    resultText = "(Increase " + skillName + " Skill Cap to " + newSkillCap + ")";

                    AddLabel(Utility.CenteredTextOffset(400, actionText), 364, 63, actionText);
                    AddLabel(Utility.CenteredTextOffset(410, resultText), 382, 2599, resultText);
                    AddItem(372, 406, 5360, 2963);     //Scroll
                    AddButton(423, 411, 247, 248, 2, GumpButtonType.Reply, 0);
                }

                else
                {
                    AddLabel(199, 379, totalSkillsHue, totalSkills.ToString());
                    AddLabel(199, 405, totalSkillCapHue, totalSkillCap.ToString());

                    actionText = "Mastery Scroll Unusable";
                    resultText = "(Already At Skill's Maximum Cap)";

                    AddLabel(Utility.CenteredTextOffset(400, actionText), 364, 149, actionText);
                    AddLabel(Utility.CenteredTextOffset(410, resultText), 382, 149, resultText);
                }
                break;
            }
        }
示例#2
0
        //Invitations

        //TEST: NEED TO CREATE OBJECT TO SEND PUBLIC PROPERTIES BACK TO GUMP
        //TEST
        public GuildGump(Mobile from, int guildTabPage) : base(10, 10)
        {
            m_Player       = from as PlayerMobile;
            m_GuildTabPage = guildTabPage;

            if (m_Player == null)
            {
                return;
            }

            Guilds.CheckCreateGuildGuildSettings(m_Player);

            m_GumpPageType = m_Player.m_GuildGumpSettings.m_GuildGumpPage;

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;

            int WhiteTextHue  = 2655;
            int GreenTextHue  = 63;
            int YellowTextHue = 2550;
            int GreyTextHue   = 2401;

            #region Background

            AddImage(132, 193, 103, 2499);
            AddImage(131, 98, 103, 2499);
            AddImage(132, 288, 103, 2499);
            AddImage(528, 369, 103, 2499);
            AddImage(395, 369, 103, 2499);
            AddImage(265, 369, 103, 2499);
            AddImage(132, 369, 103, 2499);
            AddImage(528, 3, 103, 2499);
            AddImage(528, 98, 103, 2499);
            AddImage(528, 193, 103, 2499);
            AddImage(527, 288, 103, 2499);
            AddImage(132, 3, 103, 2499);
            AddImage(265, 3, 103, 2499);
            AddImage(395, 3, 103, 2499);
            AddImage(395, 98, 103, 2499);
            AddImage(395, 193, 103, 2499);
            AddImage(394, 288, 103, 2499);
            AddImage(265, 98, 103, 2499);
            AddImage(265, 193, 103, 2499);
            AddImage(264, 288, 103, 2499);
            AddImage(3, 194, 103, 2499);
            AddImage(3, 272, 103, 2499);
            AddImage(3, 369, 103, 2499);
            AddImage(2, 3, 103, 2499);
            AddImage(2, 97, 103, 2499);
            AddImage(10, 15, 3604, 2052);
            AddImage(10, 108, 3604, 2052);
            AddImage(10, 213, 3604, 2052);
            AddImage(10, 330, 3604, 2052);
            AddImage(147, 15, 3604, 2052);
            AddImage(147, 108, 3604, 2052);
            AddImage(147, 213, 3604, 2052);
            AddImage(147, 330, 3604, 2052);
            AddImage(286, 15, 3604, 2052);
            AddImage(286, 108, 3604, 2052);
            AddImage(286, 213, 3604, 2052);
            AddImage(286, 330, 3604, 2052);
            AddImage(411, 15, 3604, 2052);
            AddImage(411, 108, 3604, 2052);
            AddImage(411, 213, 3604, 2052);
            AddImage(411, 330, 3604, 2052);
            AddImage(531, 15, 3604, 2052);
            AddImage(531, 108, 3604, 2052);
            AddImage(531, 213, 3604, 2052);
            AddImage(531, 330, 3604, 2052);
            AddImage(184, 15, 3604, 2052);
            AddImage(184, 108, 3604, 2052);
            AddImage(184, 213, 3604, 2052);
            AddImage(184, 330, 3604, 2052);

            #endregion

            #region Sidebar

            List <GuildGumpPageType> m_GuildTabs = Guilds.GetGuildPageTypeList(m_Player);

            int GuildTabsPerPage   = 4;
            int TotalGuildTabs     = m_GuildTabs.Count;
            int TotalGuildTabPages = (int)(Math.Ceiling((double)TotalGuildTabs / (double)GuildTabsPerPage));

            if (m_GuildTabPage >= TotalGuildTabPages)
            {
                m_GuildTabPage = TotalGuildTabPages - 1;
            }

            if (m_GuildTabPage < 0)
            {
                m_GuildTabPage = 0;
            }

            int guildTabStartIndex = m_GuildTabPage * GuildTabsPerPage;
            int guildTabEndIndex   = (m_GuildTabPage * GuildTabsPerPage) + (GuildTabsPerPage - 1);

            if (guildTabEndIndex >= TotalGuildTabs)
            {
                guildTabEndIndex = TotalGuildTabs - 1;
            }

            int guildTabCount = guildTabEndIndex - guildTabStartIndex;

            int startX = 12;
            int startY = 50;

            int tabSpacing = 90;

            for (int a = 0; a < guildTabCount + 1; a++)
            {
                int guildTabIndex = guildTabStartIndex + a;
                int buttonIndex   = 20 + guildTabIndex;

                GuildGumpPageType gumpPageType = m_GuildTabs[guildTabIndex];

                #region Guild Tab Images

                int pressedId = 9721;
                int releaseId = 9724;

                if (gumpPageType == m_Player.m_GuildGumpSettings.m_GuildGumpPage)
                {
                    pressedId = 9724;
                    releaseId = 9721;
                }

                switch (gumpPageType)
                {
                case GuildGumpPageType.Messages:
                    AddLabel(startX + 36, startY + 5, 2526, "Messages");
                    AddImage(startX + 60, startY + 32, 10550, 55);
                    AddImage(startX + 88, startY + 32, 10552, 55);
                    AddButton(startX + 74, startY + 46, pressedId, releaseId, buttonIndex, GumpButtonType.Reply, 0);
                    AddItem(startX + -1, startY + 18, 7774);
                    break;

                case GuildGumpPageType.Overview:
                    AddLabel(startX + 34, startY + 5, 2401, "Overview");
                    AddImage(startX + 60, startY + 32, 10550, 2401);
                    AddImage(startX + 88, startY + 32, 10552, 2401);
                    AddButton(startX + 74, startY + 46, pressedId, releaseId, buttonIndex, GumpButtonType.Reply, 0);
                    AddImage(startX + 13, startY + 35, 11016);
                    break;

                case GuildGumpPageType.Invitations:
                    AddItem(startX + 21, startY + 41, 2942);
                    AddItem(startX + -3, startY + 25, 2943);
                    AddLabel(startX + 12, startY + 5, 2564, "Guild Invitations");
                    AddImage(startX + 60, startY + 32, 10550, 2566);
                    AddImage(startX + 88, startY + 32, 10552, 2566);
                    AddButton(startX + 74, startY + 46, pressedId, releaseId, buttonIndex, GumpButtonType.Reply, 0);
                    AddItem(startX + 9, startY + 31, 5359);
                    AddItem(startX + 23, startY + 24, 4031);
                    AddItem(startX + 23, startY + 50, 5357);
                    AddItem(startX + 27, startY + 52, 5357);
                    break;

                case GuildGumpPageType.Members:
                    AddLabel(startX + 35, startY + 5, 64, "Members");
                    AddItem(startX + 69, startY + 46, 6877);
                    AddImage(startX + 60, startY + 32, 10550, 2551);
                    AddImage(startX + 88, startY + 32, 10552, 2551);
                    AddButton(startX + 74, startY + 46, pressedId, releaseId, buttonIndex, GumpButtonType.Reply, 0);
                    AddItem(startX + 20, startY + 29, 10905);
                    AddItem(startX + 19, startY + 33, 3746);
                    break;

                case GuildGumpPageType.Candidates:
                    AddLabel(startX + 27, startY + 4, 2553, "Candidates");
                    AddImage(startX + 60, startY + 32, 10550, 2566);
                    AddImage(startX + 88, startY + 32, 10552, 2566);
                    AddButton(startX + 74, startY + 45, pressedId, releaseId, buttonIndex, GumpButtonType.Reply, 0);
                    AddItem(startX + 28, startY + 45, 4647, 2563);
                    AddItem(startX + 11, startY + 36, 4645, 2563);
                    AddItem(startX + -5, startY + 42, 5018, 2563);
                    break;

                case GuildGumpPageType.CreateGuild:
                    AddImage(startX + 88, startY + 32, 10552, 2401);
                    AddLabel(startX + 25, startY + 5, 2401, "Create Guild");
                    AddImage(startX + 60, startY + 32, 10550, 2401);
                    AddButton(startX + 74, startY + 46, pressedId, releaseId, buttonIndex, GumpButtonType.Reply, 0);
                    AddItem(startX + 15, startY + 29, 3796);
                    break;

                case GuildGumpPageType.Faction:
                    AddLabel(startX + 44, startY + 5, 1256, "Faction");
                    AddItem(startX + -15, startY + 20, 3936);
                    AddItem(startX + 18, startY + 21, 18194);
                    AddItem(startX + 10, startY + 13, 5129);
                    AddItem(startX + 32, startY + 31, 18196);
                    AddItem(startX + 9, startY + 30, 5050);
                    AddItem(startX + 26, startY + 22, 5135, 2500);
                    AddImage(startX + 60, startY + 32, 10550, 1256);
                    AddImage(startX + 88, startY + 32, 10552, 1256);
                    AddItem(startX + 26, startY + 47, 7034);
                    AddButton(startX + 74, startY + 46, pressedId, releaseId, buttonIndex, GumpButtonType.Reply, 0);
                    AddItem(startX + -4, startY + 33, 543);
                    AddItem(startX + 14, startY + 45, 543);
                    break;

                case GuildGumpPageType.Diplomacy:
                    AddItem(startX + 21, startY + 42, 2942);
                    AddItem(startX + -4, startY + 28, 2943);
                    AddItem(startX + 11, startY + 20, 4031);
                    AddItem(startX + 13, startY + 38, 4030);
                    AddItem(startX + 20, startY + 59, 2507);
                    AddItem(startX + 22, startY + 44, 2459);
                    AddLabel(startX + 35, startY + 5, 2606, "Diplomacy");
                    AddImage(startX + 60, startY + 32, 10550, 2606);
                    AddImage(startX + 88, startY + 32, 10552, 2606);
                    AddButton(startX + 74, startY + 46, pressedId, releaseId, buttonIndex, GumpButtonType.Reply, 0);
                    break;
                }

                #endregion

                startY += tabSpacing;
            }

            AddButton(3, 3, 2094, 2095, 1, GumpButtonType.Reply, 0);
            AddLabel(24, -2, 149, "Guide");

            if (m_GuildTabPage > 0)
            {
                AddButton(65, 22, 9900, 9900, 2, GumpButtonType.Reply, 0);
            }

            if (m_GuildTabPage < TotalGuildTabPages - 1)
            {
                AddButton(65, 432, 9906, 9906, 3, GumpButtonType.Reply, 0);
            }

            #endregion

            //-----

            #region Create Guild

            if (m_Player.m_GuildGumpSettings.m_GuildGumpPage == GuildGumpPageType.CreateGuild)
            {
                #region Images

                AddImage(326, 116, 2328, 0);
                AddImage(159, 165, 9809, 0);
                AddItem(485, 115, 1928);
                AddItem(507, 136, 1928);
                AddItem(529, 158, 1928);
                AddItem(551, 180, 1928);
                AddItem(573, 202, 1928);
                AddItem(589, 219, 1928);
                AddItem(466, 134, 1928);
                AddItem(488, 155, 1928);
                AddItem(510, 177, 1928);
                AddItem(532, 199, 1928);
                AddItem(555, 220, 1928);
                AddItem(571, 237, 1928);
                AddItem(445, 154, 1928);
                AddItem(467, 175, 1928);
                AddItem(489, 197, 1928);
                AddItem(511, 219, 1928);
                AddItem(534, 240, 1928);
                AddItem(550, 257, 1928);
                AddItem(424, 176, 1928);
                AddItem(446, 197, 1928);
                AddItem(468, 219, 1928);
                AddItem(490, 241, 1928);
                AddItem(513, 262, 1928);
                AddItem(529, 279, 1928);
                AddItem(606, 235, 1930);
                AddItem(586, 255, 1930);
                AddItem(564, 276, 1930);
                AddItem(544, 295, 1930);
                AddItem(403, 198, 1929);
                AddItem(422, 217, 1929);
                AddItem(443, 238, 1929);
                AddItem(462, 256, 1929);
                AddItem(482, 275, 1929);
                AddItem(504, 295, 1929);
                AddItem(524, 315, 1934);
                AddLabel(212, 86, 149, "Guild Abbreviation");
                AddLabel(212, 46, 149, "Guild Name");
                AddImage(286, 44, 1141, 2400);
                AddImage(335, 85, 2444, 2401);
                AddItem(163, 43, 3796);
                AddLabel(212, 134, 149, "Guild Symbol");
                AddItem(156, 123, 7776);
                AddLabel(369, 16, 149, "Create Guild");
                AddLabel(319, 406, 63, "Confirm and Create Guild");
                AddItem(160, 187, 3823);
                AddLabel(212, 185, 149, "Registration Fee");
                AddItem(470, 146, 6918);
                AddItem(497, 267, 6914);
                AddItem(550, 202, 6916);
                AddItem(516, 291, 6920);
                AddItem(577, 289, 6915);
                AddItem(555, 214, 6917);
                AddItem(523, 344, 6918);
                AddItem(464, 279, 6913);
                AddItem(399, 229, 6916);
                AddItem(486, 158, 6916);
                AddItem(499, 161, 16645);
                AddItem(497, 193, 3823);
                AddItem(592, 232, 6913);
                AddItem(527, 207, 6918);
                AddItem(504, 113, 17074);
                AddItem(412, 170, 633, 2419);
                AddItem(585, 198, 635, 2419);
                AddItem(429, 142, 636, 2419);
                AddItem(604, 153, 16119);
                AddItem(563, 264, 634, 2419);
                AddItem(547, 274, 633, 2419);
                AddItem(592, 252, 6915);
                AddItem(471, 341, 3791);
                AddItem(463, 154, 3786);
                AddItem(378, 214, 3792);
                AddItem(609, 197, 3814);
                AddItem(562, 236, 3790);
                AddItem(442, 144, 3812);
                AddItem(243, 303, 3816);
                AddItem(265, 320, 3808);
                AddItem(276, 275, 3816);
                AddItem(298, 292, 3808);
                AddItem(243, 303, 3816);
                AddItem(265, 320, 3808);
                AddItem(308, 243, 3816);
                AddItem(331, 259, 3808);
                AddItem(297, 230, 3799);
                AddItem(206, 331, 3816);
                AddItem(228, 346, 3808);
                AddItem(199, 313, 4455);
                AddItem(287, 343, 2322);
                AddItem(312, 293, 2322);
                AddItem(208, 355, 2322);
                AddItem(351, 263, 7685, 2401);
                AddItem(330, 325, 7685, 2401);
                AddItem(252, 360, 7685, 2401);
                AddItem(379, 272, 7684, 2401);
                AddItem(475, 310, 7684, 2401);
                AddItem(231, 388, 7684, 2401);
                AddItem(385, 348, 7684, 2401);
                AddItem(447, 321, 7684, 2401);
                AddItem(421, 321, 7682, 2401);
                AddItem(243, 338, 7684, 1107);
                AddItem(292, 326, 7682, 2401);
                AddItem(469, 254, 7684, 2401);
                AddItem(331, 244, 7681, 2415);
                AddItem(232, 324, 7684, 2401);
                AddItem(269, 291, 7684, 2401);
                AddItem(224, 305, 7684, 2401);
                AddItem(331, 287, 7682, 2401);
                AddItem(365, 300, 7684, 2401);
                AddItem(418, 271, 7684, 2401);
                AddItem(601, 178, 7574);
                AddItem(496, 309, 7570);
                AddItem(240, 271, 4465);
                AddItem(272, 253, 4479);
                AddItem(505, 335, 4651);
                AddItem(441, 258, 6937);
                AddItem(397, 288, 6927);
                AddItem(311, 289, 6925);
                AddItem(348, 341, 6922);
                AddItem(214, 346, 6930);
                AddItem(226, 353, 6938);
                AddItem(276, 353, 3786);
                AddItem(391, 254, 6938);
                AddItem(472, 228, 3793);
                AddItem(295, 371, 7684, 2401);
                AddItem(196, 367, 7685, 2401);
                AddItem(368, 241, 7684, 2401);
                AddItem(368, 324, 7685, 2401);
                AddItem(492, 199, 2507, 2415);
                AddItem(507, 199, 3880);
                AddItem(493, 208, 4234, 2499);
                AddItem(436, 92, 3938);
                AddItem(476, 102, 18236);
                AddItem(470, 96, 5128, 2401);
                AddItem(457, 124, 7032);
                AddItem(549, 150, 18194);

                AddItem(541, 142, 5135, 2500);

                AddItem(530, 152, 5114);
                AddItem(532, 248, 18196);
                AddItem(531, 268, 7034);

                AddItem(522, 240, 5133, 2413);

                AddItem(513, 253, 5178);

                AddItem(442, 211, 18210, 2500);
                AddItem(445, 208, 5049, 2500);
                AddItem(437, 199, 5138, 2500);
                AddItem(426, 221, 7028, 2500);

                AddItem(550, 163, 7030);
                AddItem(345, 312, 6930);
                AddItem(261, 330, 6934);
                AddItem(400, 332, 6924);
                AddItem(424, 312, 6883);
                AddItem(310, 352, 6881);
                AddItem(405, 217, 7684, 2401);
                AddItem(341, 273, 3788);
                AddItem(441, 350, 7685, 2401);
                AddItem(467, 336, 7684, 2401);
                AddItem(518, 298, 17075);
                AddItem(538, 205, 3788);
                AddItem(334, 304, 3788);
                AddItem(369, 259, 3790);
                AddItem(263, 331, 6930);
                AddItem(298, 295, 6938);
                AddItem(276, 294, 6883);
                AddItem(480, 293, 7684, 2401);
                AddItem(405, 235, 7684, 2401);
                AddItem(453, 185, 7684, 2401);
                AddItem(304, 325, 3793);

                #endregion

                AddTextEntry(295, 46, 248, 20, WhiteTextHue, 7, "Guild Name", Guilds.GuildNameCharacterLimit);
                AddTextEntry(355, 86, 47, 20, WhiteTextHue, 8, "ABC", Guilds.GuildNameCharacterLimit);

                AddButton(300, 137, 2223, 2223, 4, GumpButtonType.Reply, 0); //Previous Symbol
                AddItem(341, 123, 4014);                                     // Symbol
                AddButton(413, 137, 2224, 2224, 5, GumpButtonType.Reply, 0); //Next Symbol

                AddLabel(341, 185, GreenTextHue, Utility.CreateCurrencyString(Guilds.GuildRegistrationFee));

                AddButton(366, 429, 247, 249, 6, GumpButtonType.Reply, 0); //Create Guild
            }

            #endregion

            #region Invitations

            else if (m_Player.m_GuildGumpSettings.m_GuildGumpPage == GuildGumpPageType.Invitations)
            {
                #region Images

                AddLabel(345, 15, 2563, "Guild Invitations");
                AddLabel(188, 429, WhiteTextHue, "Previous Page");
                AddLabel(552, 429, WhiteTextHue, "Next Page");
                AddImage(299, 39, 2446, 2401);
                AddLabel(508, 39, 149, "Search for Guild Name");
                AddLabel(360, 400, 149, "Page");
                AddLabel(356, 429, 63, "Ignore Guild Invitations");
                AddLabel(157, 400, 2599, "Total Invitations");
                AddLabel(289, 70, 149, "Guild Name");
                AddLabel(605, 70, 149, "Decline");
                AddLabel(534, 70, 149, "Guild Info");
                AddLabel(158, 70, 149, "Accept");
                AddLabel(458, 70, 149, "Expires In");

                #endregion

                AddButton(271, 40, 9909, 9909, 3, GumpButtonType.Reply, 0); //Search Left
                AddTextEntry(308, 40, 158, 20, WhiteTextHue, 10, "Guild Name", Guilds.GuildNameCharacterLimit);
                AddButton(483, 39, 9903, 9903, 4, GumpButtonType.Reply, 0); //Search Right

                AddButton(268, 73, 2117, 2118, 5, GumpButtonType.Reply, 0); //Guild Name Sort

                AddButton(438, 73, 5602, 5606, 6, GumpButtonType.Reply, 0); //Expiration Sort

                //List
                AddButton(165, 90, 9721, 9724, 0, GumpButtonType.Reply, 0);
                AddLabel(218, 97, WhiteTextHue, "Outlands Shipping Company (OSC)");
                AddLabel(448, 95, WhiteTextHue, "24d 18h 20m");
                AddButton(550, 95, 4011, 4013, 0, GumpButtonType.Reply, 0);
                AddButton(614, 90, 2472, 2473, 0, GumpButtonType.Reply, 0);
                //--

                AddLabel(270, 400, WhiteTextHue, "1");                       //Total Invitations
                AddLabel(397, 400, WhiteTextHue, "1/1");                     //Page

                AddButton(154, 429, 4014, 4016, 7, GumpButtonType.Reply, 0); //Previous Page
                AddButton(620, 429, 4005, 4007, 8, GumpButtonType.Reply, 0); //Next Page
                AddButton(322, 426, 9721, 9724, 9, GumpButtonType.Reply, 0); //Ignore Guild Invites
            }

            #endregion

            #region Overview

            else if (m_Player.m_GuildGumpSettings.m_GuildGumpPage == GuildGumpPageType.Overview)
            {
                #region Images

                AddImage(285, 90, 2328, 0);
                AddItem(155, 384, 4647);
                AddItem(156, 191, 8900);
                AddItem(153, 150, 4810, 2563);
                AddLabel(197, 159, 149, "Guildmaster");
                AddLabel(197, 61, 149, "Guild Abbreviation");
                AddLabel(197, 25, 149, "Guild Name");
                AddImage(271, 23, 1141, 2400);
                AddImage(320, 60, 2444, 2401);
                AddItem(151, 22, 3796);
                AddImage(278, 160, 2446, 2401);
                AddLabel(197, 109, 149, "Guild Symbol");
                AddItem(144, 98, 7776);
                AddLabel(197, 203, 149, "Guildhouse");
                AddImage(269, 202, 2446, 2401);
                AddLabel(515, 109, 149, "Faction");
                AddBackground(158, 347, 493, 23, 5100);

                AddLabel(197, 324, 149, "Website");
                AddLabel(197, 392, 149, "My Rank");
                AddImage(256, 391, 2446, 2401);

                AddLabel(503, 392, 149, "Show Guild Title");
                AddItem(454, 397, 3034, 2562);
                AddItem(458, 380, 2978);
                AddLabel(310, 429, 2115, "Resign from Guild");
                AddItem(482, 80, 5402);

                AddLabel(299, 257, 2502, "Players");
                AddLabel(382, 257, 2506, "Characters");
                AddLabel(493, 257, 1256, "Wars");
                AddLabel(553, 257, 2599, "Alliances");

                AddLabel(197, 257, 149, "Guild Age");

                AddItem(164, 250, 3103);
                AddItem(296, 281, 8454, 2500);
                AddItem(383, 281, 8454, 2515);

                AddItem(404, 281, 8455, 2515);
                AddItem(493, 292, 3914);
                AddItem(479, 293, 5049);
                AddItem(558, 295, 4030);
                AddItem(558, 287, 4031);

                #endregion

                Guild guild = m_Player.Guild;

                if (guild == null)
                {
                    return;
                }

                AddLabel(Utility.CenteredTextOffset(405, guild.Name), 25, WhiteTextHue, guild.Name);
                AddLabel(Utility.CenteredTextOffset(354, guild.m_Abbreviation), 61, WhiteTextHue, guild.m_Abbreviation);

                //Get Guild Symbol Detail
                int guildIcon        = guild.m_Icon;
                int guildIconHue     = guild.m_IconHue;
                int guildIconOffsetX = 0;
                int guildIconOffsetY = 0;

                AddItem(300 + guildIconOffsetX, 97 + guildIconOffsetY, guildIcon, guildIconHue); //Guild Symbol

                //Faction
                AddItem(555, 58, 17099, 2603); //Flag
                AddItem(600, 91, 11009, 2603); //Shield
                AddLabel(586, 144, 2603, "Order");

                string guildmasterName = "";

                if (guild.m_Guildmaster != null)
                {
                    guildmasterName = guild.m_Guildmaster.RawName;
                }

                AddLabel(Utility.CenteredTextOffset(365, guildmasterName), 161, WhiteTextHue, guildmasterName);

                string guildHouseOwner    = "";
                string guildHouseLocation = "";

                bool guildHouseExists = false;

                if (guild.m_Guildhouse != null)
                {
                    guildHouseExists = true;

                    if (guild.m_Guildhouse.Owner != null)
                    {
                        guildHouseOwner = "Owned by " + guild.m_Guildhouse.Owner.RawName;
                    }

                    else
                    {
                        guildHouseOwner = "Unknown Owner";
                    }

                    guildHouseLocation = "(Located at " + guild.m_Guildhouse.Location.X.ToString() + "," + guild.m_Guildhouse.Location.Y.ToString() + ")";
                }

                else
                {
                    guildHouseOwner = "-";
                }

                AddLabel(Utility.CenteredTextOffset(358, guildHouseOwner), 203, WhiteTextHue, guildHouseOwner);
                if (guildHouseLocation != "")
                {
                    AddLabel(282, 226, 2599, "(located at 2500, 2500)");
                }

                if (guild.m_Guildhouse != null)
                {
                    AddLabel(473, 203, 2550, "Show Location");
                    AddButton(453, 206, 2117, 2118, 4, GumpButtonType.Reply, 0); //Show Guildhouse Location
                }

                int guildAge = (int)(Math.Floor((DateTime.UtcNow - guild.m_CreationTime).TotalDays));

                string guildAgeText = "";

                if (guildAge > 1)
                {
                    guildAgeText = guildAge.ToString() + " Days";
                }

                else if (guildAge == 1)
                {
                    guildAgeText = "1 Day";
                }

                else
                {
                    guildAgeText = "Brand New";
                }

                int activePlayers    = 25;
                int activeCharacters = 125;
                int wars             = 1;
                int alliances        = 1;

                AddLabel(196, 282, WhiteTextHue, guildAgeText);                //Guild Age
                AddLabel(332, 296, WhiteTextHue, activePlayers.ToString());    //Players
                AddLabel(443, 297, WhiteTextHue, activeCharacters.ToString()); //Characters
                AddLabel(529, 297, WhiteTextHue, wars.ToString());             //Wars
                AddLabel(599, 297, WhiteTextHue, alliances.ToString());        //Alliances

                AddButton(165, 327, 30008, 30009, 5, GumpButtonType.Reply, 0); //Launch Website
                AddLabel(167, 348, WhiteTextHue, guild.m_Website);             //Website

                string rankName = "";

                int rankHue = WhiteTextHue;

                if (m_Player.m_GuildMemberEntry != null)
                {
                    rankName = guild.GetRankName(m_Player.m_GuildMemberEntry.m_Rank);
                    rankHue  = guild.GetRankHue(m_Player.m_GuildMemberEntry.m_Rank);
                }

                AddLabel(Utility.CenteredTextOffset(347, rankName), 392, rankHue, rankName); //Guild Rank

                if (m_Player.m_GuildGumpSettings.m_ShowGuildTitle)
                {
                    AddButton(611, 389, 9724, 9721, 6, GumpButtonType.Reply, 0); //Show Guild Title
                }
                else
                {
                    AddButton(611, 389, 9721, 9724, 6, GumpButtonType.Reply, 0); //Show Guild Title
                }
                AddButton(425, 425, 2472, 2473, 7, GumpButtonType.Reply, 0);     //Resign from Guild
            }

            #endregion

            #region Members

            else if (m_Player.m_GuildGumpSettings.m_GuildGumpPage == GuildGumpPageType.Members)
            {
                #region Images

                AddLabel(365, 15, 2563, "Members");
                AddLabel(280, 70, 149, "Player Name");
                AddLabel(407, 70, 149, "Guild Rank");
                AddLabel(188, 429, WhiteTextHue, "Previous Page");
                AddLabel(552, 429, WhiteTextHue, "Next Page");
                AddLabel(373, 429, 63, "Invite Player to Guild");
                AddLabel(170, 70, 149, "Last Online");
                AddLabel(556, 70, 149, "Fealty");
                AddLabel(604, 70, 149, "Dismiss");
                AddLabel(503, 70, 149, "Manage");
                AddImage(299, 39, 2446, 2401);
                AddLabel(508, 39, 149, "Search for Player");
                AddLabel(360, 400, 149, "Page");
                AddLabel(526, 400, 2550, "Total Members");
                AddLabel(157, 400, 2599, "Online Members");

                #endregion

                AddButton(271, 40, 9909, 9909, 4, GumpButtonType.Reply, 0); //Search Left
                AddTextEntry(308, 40, 158, 20, WhiteTextHue, 12, "Player Name", Guilds.GuildNameCharacterLimit);
                AddButton(483, 39, 9903, 9903, 5, GumpButtonType.Reply, 0); //Search Right

                AddButton(151, 73, 5602, 5606, 6, GumpButtonType.Reply, 0); //Sort Last Online
                AddButton(259, 73, 2117, 2118, 7, GumpButtonType.Reply, 0); //Sort Player Name
                AddButton(387, 73, 2117, 2118, 8, GumpButtonType.Reply, 0); //Sort Rank

                //List
                AddButton(163, 101, 2361, 2361, 0, GumpButtonType.Reply, 0); //Online Icon
                AddLabel(185, 97, 63, "Online");
                AddLabel(272, 97, WhiteTextHue, "Merrill Calder");
                AddLabel(401, 97, 2603, "Guildmaster");
                AddButton(512, 95, 4011, 4013, 0, GumpButtonType.Reply, 0); //Manage Player
                AddButton(564, 92, 9721, 9724, 0, GumpButtonType.Reply, 0); //Declare Fealty
                AddButton(614, 92, 2472, 2473, 0, GumpButtonType.Reply, 0); //Dismiss
                //

                AddLabel(263, 400, WhiteTextHue, "8");                        //Online Members
                AddLabel(397, 400, WhiteTextHue, "10/10");                    //Page
                AddLabel(623, 400, WhiteTextHue, "50");                       //Total Members

                AddButton(154, 429, 4014, 4016, 9, GumpButtonType.Reply, 0);  //Previous Page
                AddButton(620, 429, 4005, 4007, 10, GumpButtonType.Reply, 0); //Next Page
                AddButton(337, 429, 4002, 4004, 11, GumpButtonType.Reply, 0); //Invite Player
            }

            #endregion

            #region Candidates

            else if (m_Player.m_GuildGumpSettings.m_GuildGumpPage == GuildGumpPageType.Candidates)
            {
                AddLabel(365, 15, 2563, "Candidates");
                AddLabel(267, 70, 149, "Player Name");
                AddLabel(188, 429, WhiteTextHue, "Previous Page");
                AddLabel(552, 429, WhiteTextHue, "Next Page");
                AddLabel(373, 429, 63, "Invite Player to Guild");
                AddLabel(548, 70, 149, "Approve");
                AddLabel(605, 70, 149, "Decline");
                AddLabel(466, 70, 149, "Player Info");
                AddLabel(174, 70, 149, "Accepted");
                AddLabel(387, 70, 149, "Expires In");
                AddImage(299, 39, 2446, 2401);
                AddLabel(508, 39, 149, "Search for Player");
                AddLabel(360, 400, 149, "Page");
                AddLabel(513, 400, 2550, "Total Candidates");
                AddLabel(157, 400, 2599, "Total Accepted");

                AddButton(271, 40, 9909, 9909, 4, GumpButtonType.Reply, 0); //Search Left
                AddTextEntry(308, 40, 158, 20, WhiteTextHue, 12, "Player Name", Guilds.GuildNameCharacterLimit);
                AddButton(483, 39, 9903, 9903, 5, GumpButtonType.Reply, 0); //Search Right

                AddButton(154, 73, 2117, 2118, 6, GumpButtonType.Reply, 0); //Sort Accepted
                AddButton(246, 73, 2117, 2118, 7, GumpButtonType.Reply, 0); //Sort Player Name
                AddButton(367, 73, 5602, 5606, 8, GumpButtonType.Reply, 0); //Sort Expiration

                //List
                AddButton(185, 90, 9723, 2151, 0, GumpButtonType.Reply, 0); //Accepted
                AddLabel(260, 95, WhiteTextHue, "Merrill Calder");
                AddLabel(377, 95, WhiteTextHue, "24d 18h 20m");
                AddButton(485, 95, 4011, 4013, 0, GumpButtonType.Reply, 0); //Player Info
                AddButton(559, 90, 2151, 2154, 0, GumpButtonType.Reply, 0); //Approve
                AddButton(614, 90, 2472, 2473, 0, GumpButtonType.Reply, 0); //Decline
                //

                AddLabel(262, 400, WhiteTextHue, "1");   //Total Accepted
                AddLabel(397, 400, WhiteTextHue, "1/1"); //Page
                AddLabel(625, 400, WhiteTextHue, "1");   //Total Candidates

                AddButton(154, 429, 4014, 4016, 9, GumpButtonType.Reply, 0);
                AddButton(620, 429, 4005, 4007, 10, GumpButtonType.Reply, 0);
                AddButton(337, 429, 4002, 4004, 11, GumpButtonType.Reply, 0); //Invite Player
            }

            #endregion

            #region Diplomacy

            else if (m_Player.m_GuildGumpSettings.m_GuildGumpPage == GuildGumpPageType.Diplomacy)
            {
                #region Images

                AddLabel(365, 15, 2606, "Diplomacy");
                AddLabel(244, 70, 149, "Guild Name");
                AddLabel(422, 70, 149, "Relationship");
                AddLabel(188, 429, WhiteTextHue, "Previous Page");
                AddLabel(552, 429, WhiteTextHue, "Next Page");
                AddLabel(373, 429, 63, "Add New Guild");
                AddLabel(609, 70, 149, "Manage");
                AddImage(299, 39, 2446, 2401);
                AddLabel(508, 39, 149, "Search for Guild Name");
                AddLabel(360, 400, 149, "Page");
                AddLabel(546, 70, 149, "Players");

                #endregion

                AddButton(271, 40, 9909, 9909, 4, GumpButtonType.Reply, 0); //Search Left
                AddTextEntry(308, 40, 158, 20, WhiteTextHue, 14, "Guild Name", Guilds.GuildNameCharacterLimit);
                AddButton(483, 39, 9903, 9903, 5, GumpButtonType.Reply, 0); //Search Right

                AddButton(223, 73, 2117, 2118, 6, GumpButtonType.Reply, 0); //Sort Guild Name
                AddButton(400, 73, 5602, 5606, 7, GumpButtonType.Reply, 0); //Sort Relationship
                AddButton(526, 73, 2117, 2118, 8, GumpButtonType.Reply, 0); //Sort Players

                //List
                AddLabel(192, 95, WhiteTextHue, "God's Wrath Clan (GoD)");
                AddLabel(398, 95, 2599, "Alliance Requested");
                AddLabel(561, 95, WhiteTextHue, "5");                       //Players
                AddButton(617, 95, 4011, 4013, 0, GumpButtonType.Reply, 0); //Manage Relationship
                //--

                AddButton(295, 379, 2223, 2223, 9, GumpButtonType.Reply, 0);  //Previous Relationship Filter
                AddLabel(326, 375, 2603, "Show All Relationships");
                AddButton(473, 379, 2224, 2224, 10, GumpButtonType.Reply, 0); //Next Relationship Filter

                AddLabel(158, 400, 1256, "War Requests");
                AddLabel(251, 400, WhiteTextHue, "10");

                AddLabel(397, 400, WhiteTextHue, "1/1"); //Page

                AddLabel(533, 400, 2599, "Ally Requests");
                AddLabel(625, 400, WhiteTextHue, "10");

                AddButton(154, 429, 4014, 4016, 11, GumpButtonType.Reply, 0); //Previous Page
                AddButton(620, 429, 4005, 4007, 12, GumpButtonType.Reply, 0); //Next Page
                AddButton(337, 429, 4002, 4004, 13, GumpButtonType.Reply, 0); //Add New Guild
            }

            #endregion

            #region Faction

            else if (m_Player.m_GuildGumpSettings.m_GuildGumpPage == GuildGumpPageType.Faction)
            {
            }

            #endregion

            #region Messages

            else if (m_Player.m_GuildGumpSettings.m_GuildGumpPage == GuildGumpPageType.Messages)
            {
            }

            #endregion
        }
        public AspectGearGump(Mobile player, AspectMould aspectMould, Item item, AspectEnum selectedAspect) : base(10, 10)
        {
            m_Player         = player as PlayerMobile;
            m_AspectMould    = aspectMould;
            m_Item           = item;
            m_SelectedAspect = selectedAspect;

            if (m_Player == null)
            {
                return;
            }
            if (m_Player.Deleted || !m_Player.Alive)
            {
                return;
            }
            if (m_AspectMould == null)
            {
                return;
            }
            if (m_AspectMould.Deleted)
            {
                return;
            }
            if (m_Item == null)
            {
                return;
            }
            if (m_Item.Deleted)
            {
                return;
            }

            if (!m_AspectMould.IsChildOf(m_Player.Backpack))
            {
                m_Player.SendMessage("The mould you wish to use must be in your backpack in order to use it.");
                return;
            }

            Item targetItem = m_Item as Item;

            if (targetItem == null)
            {
                m_Player.SendMessage("You cannot improve that.");
                return;
            }

            if (!(targetItem is BaseWeapon || targetItem is BaseArmor))
            {
                m_Player.SendMessage("You may only improve weapons and armor.");
                return;
            }

            if (targetItem is BaseShield)
            {
                m_Player.SendMessage("You may only improve weapons and armor.");
                return;
            }

            if (!(targetItem.IsChildOf(m_Player.Backpack) || targetItem.RootParent == m_Player))
            {
                m_Player.SendMessage("The item you wish to improve must be equipped or in your backpack.");
                return;
            }

            Type      itemType  = targetItem.GetType();
            CraftItem craftItem = null;

            switch (m_AspectMould.MouldType)
            {
            case AspectMould.MouldSkillType.Blacksmithy:
                craftItem = DefBlacksmithy.CraftSystem.CraftItems.SearchFor(itemType);

                if (craftItem == null)
                {
                    m_Player.SendMessage("You may only improve items craftable through blacksmithing with this mould.");
                    return;
                }
                break;

            case AspectMould.MouldSkillType.Carpentry:
                craftItem = DefCarpentry.CraftSystem.CraftItems.SearchFor(itemType);

                if (craftItem == null)
                {
                    m_Player.SendMessage("You may only improve items craftable through carpentry with this mould.");
                    return;
                }
                break;

            case AspectMould.MouldSkillType.Tailoring:
                craftItem = DefTailoring.CraftSystem.CraftItems.SearchFor(itemType);

                if (craftItem == null)
                {
                    m_Player.SendMessage("You may only improve items craftable through tailoring with this mould.");
                    return;
                }
                break;
            }

            if (targetItem.DecorativeEquipment)
            {
                m_Player.SendMessage("Decorative equipment may not be improved.");
                return;
            }

            if (targetItem.LootType == LootType.Newbied)
            {
                m_Player.SendMessage("Newbied equipment may not be improved.");
                return;
            }

            if (targetItem.LootType == LootType.Blessed && targetItem.Aspect == AspectEnum.None)
            {
                m_Player.SendMessage("Blessed equipment may not be improved.");
                return;
            }

            BaseWeapon weapon = targetItem as BaseWeapon;
            BaseArmor  armor  = targetItem as BaseArmor;

            if (weapon != null)
            {
                if (weapon.TrainingWeapon)
                {
                    m_Player.SendMessage("Training weapons may not be improved.");
                    return;
                }

                if (weapon.DurabilityLevel != WeaponDurabilityLevel.Regular || weapon.AccuracyLevel != WeaponAccuracyLevel.Regular || weapon.DamageLevel != WeaponDamageLevel.Regular)
                {
                    m_Player.SendMessage("Magical weapons may not be improved.");
                    return;
                }
            }

            if (armor != null)
            {
                if (armor.DurabilityLevel != ArmorDurabilityLevel.Regular || armor.ProtectionLevel != ArmorProtectionLevel.Regular)
                {
                    m_Player.SendMessage("Magical weapons may not be improved.");
                    return;
                }
            }

            //Aspect Item
            if (targetItem.Aspect != AspectEnum.None && targetItem.TierLevel >= 1 && targetItem.TierLevel <= 10)
            {
                if (targetItem.TierLevel == 10)
                {
                    m_Player.SendMessage("That item is already at it's maximum tier level.");
                    return;
                }
            }

            else if (targetItem.Aspect == AspectEnum.None)
            {
                if (!(targetItem.Quality == Quality.Exceptional && targetItem.DisplayCrafter))
                {
                    m_Player.SendMessage("Only mastermarked items may be improved.");
                    return;
                }
            }

            #region Images

            AddImage(256, 251, 103);
            AddImage(127, 251, 103);
            AddImage(4, 251, 103);
            AddImage(4, 329, 103);
            AddImage(129, 329, 103);
            AddImage(69, 97, 103);
            AddImage(4, 97, 103);
            AddImage(128, 2, 103);
            AddImage(4, 2, 103);
            AddImage(256, 97, 103);
            AddImage(256, 2, 103);
            AddImage(127, 183, 103);
            AddImage(4, 183, 103);
            AddImage(256, 329, 103);
            AddImage(256, 183, 103);
            AddImage(128, 380, 103);
            AddImage(4, 380, 103);
            AddImage(256, 380, 103);
            AddImage(16, 15, 3604, 2052);
            AddImage(133, 15, 3604, 2052);
            AddImage(260, 15, 3604, 2052);
            AddImage(16, 137, 3604, 2052);
            AddImage(133, 135, 3604, 2052);
            AddImage(260, 137, 3604, 2052);
            AddImage(16, 203, 3604, 2052);
            AddImage(133, 203, 3604, 2052);
            AddImage(260, 203, 3604, 2052);
            AddImage(17, 342, 3604, 2052);
            AddImage(134, 342, 3604, 2052);
            AddImage(260, 342, 3604, 2052);

            #endregion

            int WhiteTextHue  = 2499;
            int DetailTextHue = 2603;

            //Guide
            AddButton(18, 16, 2094, 2095, 1, GumpButtonType.Reply, 0);
            AddLabel(16, 3, 149, "Guide");

            if (targetItem.Aspect != AspectEnum.None && targetItem.TierLevel > 0)
            {
                m_SelectedAspect = targetItem.Aspect;
            }

            int newTier = targetItem.TierLevel + 1;

            string requiredMouldName = "";

            #region Mould Names

            switch (m_AspectMould.MouldType)
            {
            case AspectMould.MouldSkillType.Blacksmithy:
                switch (newTier)
                {
                case 1: requiredMouldName = "Basic Smithing Mould"; break;

                case 2: requiredMouldName = "Basic Smithing Mould"; break;

                case 3: requiredMouldName = "Advanced Smithing Mould"; break;

                case 4: requiredMouldName = "Advanced Smithing Mould"; break;

                case 5: requiredMouldName = "Expert Smithing Mould"; break;

                case 6: requiredMouldName = "Expert Smithing Mould"; break;

                case 7: requiredMouldName = "Master Smithing Mould"; break;

                case 8: requiredMouldName = "Master Smithing Mould"; break;

                case 9: requiredMouldName = "Legendary Smithing Mould"; break;

                case 10: requiredMouldName = "Legendary Smithing Mould"; break;
                }
                break;

            case AspectMould.MouldSkillType.Carpentry:
                switch (newTier)
                {
                case 1: requiredMouldName = "Basic Carpentry Mould"; break;

                case 2: requiredMouldName = "Basic Carpentry Mould"; break;

                case 3: requiredMouldName = "Advanced Carpentry Mould"; break;

                case 4: requiredMouldName = "Advanced Carpentry Mould"; break;

                case 5: requiredMouldName = "Expert Carpentry Mould"; break;

                case 6: requiredMouldName = "Expert Carpentry Mould"; break;

                case 7: requiredMouldName = "Master Carpentry Mould"; break;

                case 8: requiredMouldName = "Master Carpentry Mould"; break;

                case 9: requiredMouldName = "Legendary Carpentry Mould"; break;

                case 10: requiredMouldName = "Legendary Carpentry Mould"; break;
                }
                break;

            case AspectMould.MouldSkillType.Tailoring:
                switch (newTier)
                {
                case 1: requiredMouldName = "Basic Tailoring Mould"; break;

                case 2: requiredMouldName = "Basic Tailoring Mould"; break;

                case 3: requiredMouldName = "Advanced Tailoring Mould"; break;

                case 4: requiredMouldName = "Advanced Tailoring Mould"; break;

                case 5: requiredMouldName = "Expert Tailoring Mould"; break;

                case 6: requiredMouldName = "Expert Tailoring Mould"; break;

                case 7: requiredMouldName = "Master Tailoring Mould"; break;

                case 8: requiredMouldName = "Master Tailoring Mould"; break;

                case 9: requiredMouldName = "Legendary Tailoring Mould"; break;

                case 10: requiredMouldName = "Legendary Tailoring Mould"; break;
                }
                break;
            }

            #endregion

            string itemName       = "";
            string itemAspectName = "";

            string aspectName    = AspectGear.GetAspectName(m_SelectedAspect);
            int    aspectHue     = AspectGear.GetAspectHue(m_SelectedAspect);
            int    aspectTextHue = AspectGear.GetAspectTextHue(m_SelectedAspect);

            int itemOffsetX     = 0;
            int itemOffsetY     = 0;
            int itemIconItemdId = 0;

            if (weapon != null)
            {
                AspectWeaponDetail aspectWeaponDetail = AspectGear.GetAspectWeaponDetail(m_SelectedAspect);

                if (weapon.TierLevel == 0)
                {
                    AddLabel(129, 25, 149, "Create Aspect Weapon");
                }

                else
                {
                    AddLabel(129, 25, 149, "Upgrade Aspect Tier");
                }

                itemName = weapon.Name;

                if (itemName == null)
                {
                    itemName = "";
                }

                itemName       = Utility.Capitalize(itemName);
                itemAspectName = aspectName + " Tier " + newTier.ToString();

                itemOffsetX     = weapon.IconOffsetX;
                itemOffsetY     = weapon.IconOffsetY;
                itemIconItemdId = weapon.IconItemId;

                AddLabel(Utility.CenteredTextOffset(195, itemName), 49, aspectTextHue, itemName);
                AddLabel(Utility.CenteredTextOffset(195, itemAspectName), 74, aspectTextHue, itemAspectName);
                AddItem(120 + itemOffsetX, 75 + itemOffsetY, itemIconItemdId, aspectHue); //Image

                int newDurability = AspectGear.BaselineDurability + (AspectGear.IncreasedDurabilityPerTier * newTier);

                int adjustedBlessedCharges = AspectGear.ArcaneMaxCharges;

                double accuracy = 100 * (AspectGear.BaseAccuracy + (AspectGear.AccuracyPerTier * (double)newTier));
                double tactics  = AspectGear.BaseTactics + (AspectGear.TacticsPerTier * (double)newTier);

                double effectChance = 11111; // AspectGear.BaseEffectChance + (AspectGear.BaseEffectChancePerTier * (double)newTier);

                effectChance *= AspectGear.GetEffectWeaponSpeedScalar(weapon);

                AddLabel(137, 168, WhiteTextHue, "Durability:");
                AddLabel(214, 168, aspectTextHue, newDurability.ToString() + "/" + newDurability.ToString());
                AddLabel(142, 188, WhiteTextHue, "Accuracy:");
                AddLabel(214, 188, aspectTextHue, "+" + accuracy.ToString() + "%");
                AddLabel(153, 208, WhiteTextHue, "Tactics:");
                AddLabel(214, 208, aspectTextHue, "+" + tactics.ToString());
                AddLabel(110, 228, WhiteTextHue, "Effect Chance:");
                AddLabel(214, 228, aspectTextHue, Utility.CreateDecimalPercentageString(effectChance, 1));
                AddLabel(109, 248, WhiteTextHue, "(scaled for weapon speed)");
                AddLabel(149, 273, WhiteTextHue, "Special Effect");
                AddLabel(169, 293, aspectTextHue, aspectWeaponDetail.m_EffectDisplayName);
                AddButton(149, 297, 1209, 1210, 2, GumpButtonType.Reply, 0);
            }

            if (armor != null)
            {
                if (armor.TierLevel == 0)
                {
                    AddLabel(135, 25, 149, "Create Aspect Armor");
                }

                else
                {
                    AddLabel(135, 25, 149, "Upgrade Aspect Tier");
                }

                itemName = armor.Name;

                if (itemName == null)
                {
                    itemName = "";
                }

                itemName       = Utility.Capitalize(itemName);
                itemAspectName = aspectName + " Tier " + (targetItem.TierLevel + 1).ToString();

                itemOffsetX     = armor.IconOffsetX;
                itemOffsetY     = armor.IconOffsetY;
                itemIconItemdId = armor.IconItemId;

                AddLabel(Utility.CenteredTextOffset(200, itemName), 49, aspectTextHue, itemName);
                AddLabel(Utility.CenteredTextOffset(200, itemAspectName), 74, aspectTextHue, itemAspectName);
                AddItem(120 + itemOffsetX, 75 + itemOffsetY, itemIconItemdId, aspectHue); //Image

                //TEST: FINISH!!!

                //Armor Details
                AddLabel(39, 165, WhiteTextHue, "Total Armor:");
                AddLabel(126, 165, DetailTextHue, "20");
                AddLabel(60, 185, WhiteTextHue, "Dex Loss:");
                AddLabel(126, 185, DetailTextHue, "-5");
                AddLabel(47, 205, WhiteTextHue, "Meditation:");
                AddLabel(126, 205, DetailTextHue, "0%");

                //Effects Loop
                int startY   = 165;
                int spacingY = 40;

                for (int a = 0; a < 4; a++)
                {
                    string effectName    = "Effect";
                    string effectPercent = "25%";

                    AddLabel(Utility.CenteredTextOffset(260, effectName), startY, WhiteTextHue, effectName);
                    AddLabel(Utility.CenteredTextOffset(260, effectPercent), startY + 20, DetailTextHue, effectPercent);

                    startY += spacingY;
                }
            }

            //Change Aspect

            AddLabel(73, 347, 149, "Aspect");
            AddLabel(Utility.CenteredTextOffset(94, aspectName), 376, aspectTextHue, aspectName);

            if (m_Item.TierLevel == 0)
            {
                AddButton(25, 376, 9909, 9909, 3, GumpButtonType.Reply, 0);  //Left
                AddButton(139, 376, 9903, 9903, 4, GumpButtonType.Reply, 0); //Right
            }

            //Create or Upgrade
            AddButton(38, 432, 2152, 2154, 5, GumpButtonType.Reply, 0);

            if (targetItem.TierLevel == 0)
            {
                AddLabel(76, 436, 63, "Create");
            }
            else
            {
                AddLabel(76, 436, 63, "Upgrade");
            }

            //Materials Required
            int distillationNeeded = 0;
            int coresNeeded        = 0;

            if (targetItem.TierLevel == 0)
            {
                if (weapon != null)
                {
                    distillationNeeded = AspectGear.DistillationNeededForWeaponCreation;
                    coresNeeded        = AspectGear.CoresNeededForWeaponCreation;
                }

                if (armor != null)
                {
                    distillationNeeded = AspectGear.DistillationNeededForArmorCreation;
                    coresNeeded        = AspectGear.CoresNeededForArmorCreation;
                }
            }

            else
            {
                if (weapon != null)
                {
                    distillationNeeded = AspectGear.DistillationNeededForWeaponUpgrade;
                    coresNeeded        = AspectGear.CoresNeededForWeaponUpgrade;
                }

                if (armor != null)
                {
                    distillationNeeded = AspectGear.DistillationNeededForArmorUpgrade;
                    coresNeeded        = AspectGear.CoresNeededForArmorUpgrade;
                }
            }

            AddLabel(228, 347, 149, "Required Materials");

            AddItem(174, 368, 4323);
            AddLabel(226, 373, WhiteTextHue, requiredMouldName);

            AddItem(181, 403, 17686, aspectHue);
            AddLabel(225, 406, aspectTextHue, distillationNeeded.ToString() + " " + aspectName + " Distillation");

            AddItem(184, 439, 3985, aspectHue);
            AddLabel(225, 436, aspectTextHue, coresNeeded.ToString() + " " + aspectName + " Cores");
        }
示例#4
0
        public ShipUpgradeGump(PlayerMobile player, ShipUpgradeGumpObject shipUpgradeGumpObject) : base(325, 150)
        {
            m_Player = player;
            m_ShipUpgradeGumpObject = shipUpgradeGumpObject;

            if (m_Player == null)
            {
                return;
            }
            if (m_Player.Deleted)
            {
                return;
            }
            if (m_ShipUpgradeGumpObject == null)
            {
                return;
            }

            BaseShip     ship     = m_ShipUpgradeGumpObject.m_Ship;
            BaseShipDeed shipDeed = m_ShipUpgradeGumpObject.m_ShipDeed;

            ShipStatsProfile shipStatsProfile = ShipUniqueness.GetShipStatsProfile(shipDeed, ship, true, true);

            int startX = 0;
            int startY = 0;

            #region Background

            AddImage(275, 9, 103);
            AddImage(275, 106, 103);
            AddImage(275, 149, 103);
            AddImage(145, 9, 103);
            AddImage(145, 106, 103);
            AddImage(146, 149, 103);
            AddImage(10, 148, 103);
            AddImage(10, 9, 103);
            AddImage(10, 106, 103);

            AddImage(20, 108, 3604, 2052);
            AddImage(145, 109, 3604, 2052);
            AddImage(20, 19, 3604, 2052);
            AddImage(140, 19, 3604, 2052);
            AddImage(236, 18, 3604, 2052);
            AddImage(280, 18, 3604, 2052);
            AddImage(236, 109, 3604, 2052);
            AddImage(280, 109, 3604, 2052);

            AddImage(33, 68, 2328);
            AddItem(82, 173, 2539);

            #endregion

            ShipUpgradeDetail upgradeDetail = null;

            bool replaceExistingUpgrade = false;

            #region Upgrade Type

            switch (m_ShipUpgradeGumpObject.m_UpgradeType)
            {
            case ShipUpgrades.UpgradeType.Theme:
                if (ship != null)
                {
                    if (ship.m_ThemeUpgrade != ShipUpgrades.ThemeType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                if (shipDeed != null)
                {
                    if (shipDeed.m_ThemeUpgrade != ShipUpgrades.ThemeType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                upgradeDetail = ShipUpgrades.GetThemeDetail(m_ShipUpgradeGumpObject.m_Theme);
                break;

            case ShipUpgrades.UpgradeType.Paint:
                if (ship != null)
                {
                    if (ship.m_PaintUpgrade != ShipUpgrades.PaintType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                if (shipDeed != null)
                {
                    if (shipDeed.m_PaintUpgrade != ShipUpgrades.PaintType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                upgradeDetail = ShipUpgrades.GetPaintDetail(m_ShipUpgradeGumpObject.m_Paint);
                break;

            case ShipUpgrades.UpgradeType.CannonMetal:
                if (ship != null)
                {
                    if (ship.m_CannonMetalUpgrade != ShipUpgrades.CannonMetalType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                if (shipDeed != null)
                {
                    if (shipDeed.m_CannonMetalUpgrade != ShipUpgrades.CannonMetalType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                upgradeDetail = ShipUpgrades.GetCannonMetalDetail(m_ShipUpgradeGumpObject.m_CannonMetal);
                break;

            case ShipUpgrades.UpgradeType.Outfitting:
                if (ship != null)
                {
                    if (ship.m_OutfittingUpgrade != ShipUpgrades.OutfittingType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                if (shipDeed != null)
                {
                    if (shipDeed.m_OutfittingUpgrade != ShipUpgrades.OutfittingType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                upgradeDetail = ShipUpgrades.GetOutfittingDetail(m_ShipUpgradeGumpObject.m_Outfitting);
                break;

            case ShipUpgrades.UpgradeType.Banner:
                if (ship != null)
                {
                    if (ship.m_BannerUpgrade != ShipUpgrades.BannerType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                if (shipDeed != null)
                {
                    if (shipDeed.m_BannerUpgrade != ShipUpgrades.BannerType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                upgradeDetail = ShipUpgrades.GetBannerDetail(m_ShipUpgradeGumpObject.m_Banner);
                break;

            case ShipUpgrades.UpgradeType.Charm:
                if (ship != null)
                {
                    if (ship.m_CharmUpgrade != ShipUpgrades.CharmType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                if (shipDeed != null)
                {
                    if (shipDeed.m_CharmUpgrade != ShipUpgrades.CharmType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                upgradeDetail = ShipUpgrades.GetCharmDetail(m_ShipUpgradeGumpObject.m_Charm);
                break;

            case ShipUpgrades.UpgradeType.MinorAbility:
                if (ship != null)
                {
                    if (ship.m_MinorAbilityUpgrade != ShipUpgrades.MinorAbilityType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                if (shipDeed != null)
                {
                    if (shipDeed.m_MinorAbilityUpgrade != ShipUpgrades.MinorAbilityType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                upgradeDetail = ShipUpgrades.GetMinorAbilityDetail(m_ShipUpgradeGumpObject.m_MinorAbility);
                break;

            case ShipUpgrades.UpgradeType.MajorAbility:
                if (ship != null)
                {
                    if (ship.m_MajorAbilityUpgrade != ShipUpgrades.MajorAbilityType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                if (shipDeed != null)
                {
                    if (shipDeed.m_MajorAbilityUpgrade != ShipUpgrades.MajorAbilityType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                upgradeDetail = ShipUpgrades.GetMajorAbilityDetail(m_ShipUpgradeGumpObject.m_MajorAbility);
                break;

            case ShipUpgrades.UpgradeType.EpicAbility:
                if (ship != null)
                {
                    if (ship.m_EpicAbilityUpgrade != ShipUpgrades.EpicAbilityType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                if (shipDeed != null)
                {
                    if (shipDeed.m_EpicAbilityUpgrade != ShipUpgrades.EpicAbilityType.None)
                    {
                        replaceExistingUpgrade = true;
                    }
                }

                upgradeDetail = ShipUpgrades.GetEpicAbilityDetail(m_ShipUpgradeGumpObject.m_EpicAbility);
                break;
            }

            #endregion

            if (upgradeDetail == null)
            {
                return;
            }

            int doubloonBaseCost = ShipUniqueness.GetShipUpgradeBaseDoubloonCost(upgradeDetail.m_UpgradeType);

            AddLabel(143, 20, 149, "Ship Outfitting Upgrade");
            AddLabel(Utility.CenteredTextOffset(210, upgradeDetail.m_UpgradeName), 40, WhiteTextHue, upgradeDetail.m_UpgradeName);

            AddLabel(26, 170, 149, "Base Cost:");
            AddLabel(114, 170, WhiteTextHue, doubloonBaseCost.ToString());

            double doubloonMultiplier = shipStatsProfile.UpgradeDoubloonMultiplier;

            if (m_ShipUpgradeGumpObject.m_UpgradeDisplayMode == UpgradeDisplayMode.DeedAttemptInstall || m_ShipUpgradeGumpObject.m_UpgradeDisplayMode == UpgradeDisplayMode.InstalledOnShip)
            {
                if (replaceExistingUpgrade && m_ShipUpgradeGumpObject.m_UpgradeDisplayMode == UpgradeDisplayMode.DeedAttemptInstall)
                {
                    AddLabel(26, 190, 149, "Will Replace Existing Upgrade");
                    AddLabel(213, 190, 2550, "(at no cost)");
                }

                else
                {
                    AddLabel(26, 190, 149, "Ship Type Multiplier:");
                    AddLabel(151, 190, WhiteTextHue, Utility.CreateDecimalString(doubloonMultiplier, 1) + "x");
                }

                int doubloonAdjustedCost = (int)(Math.Round((double)doubloonBaseCost * (double)doubloonMultiplier));

                if (replaceExistingUpgrade && m_ShipUpgradeGumpObject.m_UpgradeDisplayMode == UpgradeDisplayMode.DeedAttemptInstall)
                {
                    doubloonAdjustedCost = 0;
                }

                AddLabel(26, 210, 149, "Adjusted Cost:");
                AddItem(112, 213, 2539);
                AddLabel(143, 210, 63, doubloonAdjustedCost.ToString());
            }

            startY = 65;
            int rowSpacing = 20;

            for (int a = 0; a < upgradeDetail.m_SpecialEffects.Count; a++)
            {
                KeyValuePair <string, ShipUpgradeDetail.UpgradeEffectType> descriptionLine = upgradeDetail.m_SpecialEffects[a];

                AddLabel(125, startY, upgradeDetail.GetHue(descriptionLine.Value), descriptionLine.Key);
                startY += rowSpacing;
            }

            int offsetX = -32;
            int offsetY = -22;

            AddGumpCollection(GumpCollections.GetGumpCollection(upgradeDetail.GumpCollectionId, -1), offsetX + 33, offsetY + 68);

            //Guide
            AddButton(6, 7, 2094, 2095, 0, GumpButtonType.Reply, 0);
            AddLabel(1, -2, 149, "Guide");

            switch (m_ShipUpgradeGumpObject.m_UpgradeDisplayMode)
            {
            case UpgradeDisplayMode.DeedUse:
                AddLabel(250, 209, 63, "Select Target Ship");
                AddButton(372, 206, 2151, 2151, 2, GumpButtonType.Reply, 0);
                break;

            case UpgradeDisplayMode.DeedAttemptInstall:
                AddLabel(211, 209, 63, "Confirm Ship Installation");
                AddButton(372, 206, 2151, 2151, 2, GumpButtonType.Reply, 0);
                break;

            case UpgradeDisplayMode.InstalledOnShip:
                break;
            }
        }
示例#5
0
        public StableGump(Mobile vendor, PlayerMobile player, int page) : base(10, 10)
        {
            if (vendor == null)
            {
                return;
            }
            if (player == null)
            {
                return;
            }

            m_Vendor = vendor;
            m_Player = player;

            m_Page = page;

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;

            #region Images

            AddPage(0);

            AddImage(3, 369, 103);
            AddImage(2, 262, 103);
            AddImage(2, 3, 103);
            AddImage(131, 3, 103);
            AddImage(2, 97, 103);
            AddImage(134, 97, 103);
            AddImage(264, 288, 103);
            AddImage(133, 368, 103);
            AddImage(265, 3, 103);
            AddImage(265, 98, 103);
            AddImage(265, 193, 103);
            AddImage(2, 194, 103);
            AddImage(265, 368, 103);
            AddImage(394, 288, 103);
            AddImage(395, 3, 103);
            AddImage(395, 98, 103);
            AddImage(395, 193, 103);
            AddImage(395, 368, 103);
            AddImage(527, 288, 103);
            AddImage(528, 3, 103);
            AddImage(528, 98, 103);
            AddImage(528, 193, 103);
            AddImage(528, 368, 103);

            AddBackground(11, 106, 647, 352, 3000);
            AddBackground(11, 14, 647, 84, 3000);

            AddItem(133, 10, 3892);
            AddItem(142, 43, 3892);
            AddItem(142, 43, 3892);
            AddItem(113, 49, 3892);
            AddItem(101, 15, 3892);
            AddItem(71, 47, 3892);
            AddItem(71, 47, 3892);
            AddItem(96, 29, 3892);
            AddItem(177, 60, 3899);
            AddItem(114, 12, 3896);
            AddItem(177, 19, 3894);
            AddItem(120, 15, 3898);
            AddItem(100, 84, 3899);
            AddItem(77, 32, 3894);
            AddItem(139, 28, 5368);
            AddItem(580, 30, 2604);
            AddItem(586, 29, 4030);
            AddItem(599, 36, 4031);
            AddItem(479, 48, 2602);
            AddItem(550, 15, 2651);
            AddItem(534, 42, 2650);
            AddItem(537, 35, 2707, 2118);
            AddItem(496, 17, 2868);
            AddItem(499, 21, 2479);
            AddItem(485, 24, 2542);
            AddItem(493, 28, 2575);

            #endregion

            int usedStableSlots = Stables.GetUsedStableSlots(m_Player);
            int maxStableSlots  = Stables.GetMaxStableSlots(m_Player);

            int totalFollowers = m_Player.Stabled.Count;
            int totalPages     = (int)(Math.Ceiling((double)totalFollowers / (double)FollowersPerPage));

            if (m_Page >= totalPages)
            {
                m_Page = 0;
            }

            if (m_Page < 0)
            {
                m_Page = 0;
            }

            int creatureStartIndex = m_Page * FollowersPerPage;
            int creatureEndIndex   = (m_Page * FollowersPerPage) + (FollowersPerPage - 1);

            if (creatureEndIndex >= totalFollowers)
            {
                creatureEndIndex = totalFollowers - 1;
            }

            int WhiteTextHue = 2655; //2036

            AddLabel(24, 112, 2599, "Claim");
            AddLabel(75, 112, 2599, "Slots");
            AddLabel(126, 112, 2599, "Claim Cost");
            AddLabel(310, 112, 2599, "Follower");
            AddLabel(455, 112, 2599, "Lore");
            AddLabel(498, 112, 2599, "Level");
            AddLabel(556, 112, 2599, "Exp");
            AddLabel(602, 112, 2599, "Dismiss");

            //Guide
            AddButton(10, 11, 2094, 2095, 1, GumpButtonType.Reply, 0);
            AddLabel(7, 0, 149, "Guide");

            AddLabel(304, 27, 2201, "Claim Followers");
            AddLabel(282, 62, 2610, "Stable Slots Used:");
            AddLabel(402, 62, WhiteTextHue, usedStableSlots.ToString() + " / " + maxStableSlots.ToString());

            int startY      = 142;
            int itemSpacing = 40;

            int creatureCount = creatureEndIndex - creatureStartIndex;

            for (int a = 0; a < creatureCount + 1; a++)
            {
                int creatureIndex       = creatureStartIndex + a;
                int creatureButtonIndex = (10 * (creatureIndex + 1));

                if (creatureIndex >= m_Player.Stabled.Count)
                {
                    continue;
                }

                BaseCreature bc_Creature = m_Player.Stabled[creatureIndex] as BaseCreature;

                if (bc_Creature == null)
                {
                    continue;
                }

                string controlSlots = bc_Creature.ControlSlots.ToString();
                string claimCost    = Stables.GetClaimCost(m_Vendor, m_Player, bc_Creature).ToString();
                string followerName = bc_Creature.GetTamedDisplayName();

                int aliveTextHue     = WhiteTextHue;
                int claimCostTextHue = WhiteTextHue;

                string experienceLevel = bc_Creature.ExperienceLevel.ToString();
                string experience      = bc_Creature.Experience.ToString() + "/" + BaseCreature.GetMaxLevelExperience(bc_Creature.ExperienceLevel);

                AddButton(24, startY - 5, 2151, 2152, creatureButtonIndex, GumpButtonType.Reply, 0);        //Claim Button
                AddLabel(Utility.CenteredTextOffset(90, controlSlots), startY, WhiteTextHue, controlSlots); //Slots
                AddItem(117, startY - 5, 3823);                                                             //Gold Image
                AddLabel(160, startY, claimCostTextHue, claimCost.ToString());                              //Claim Cost
                AddLabel(Utility.CenteredTextOffset(335, followerName), startY, 2603, followerName);        //Follower Name

                AddButton(455, startY - 5, 9721, 9724, creatureButtonIndex + 1, GumpButtonType.Reply, 0);

                AddLabel(Utility.CenteredTextOffset(515, experienceLevel), startY, WhiteTextHue, experienceLevel);
                AddLabel(Utility.CenteredTextOffset(565, experience), startY, WhiteTextHue, experience);
                AddButton(611, startY - 5, 2472, 2473, creatureButtonIndex + 2, GumpButtonType.Reply, 0);

                startY += itemSpacing;
            }

            //Previous Page
            if (m_Page > 0)
            {
                AddButton(24, 408, 4014, 4016, 2, GumpButtonType.Reply, 0);
                AddLabel(61, 409, WhiteTextHue, "Previous Page");
            }

            //Stable Follower
            AddButton(180, 408, 4002, 4004, 3, GumpButtonType.Reply, 0);
            AddLabel(217, 409, 63, "Stable Follower");

            //Retrieve Lost Followers
            AddButton(343, 408, 4029, 4031, 5, GumpButtonType.Reply, 0);
            AddLabel(380, 409, 2606, "Retrieve Lost Followers");

            //Next Page
            if (m_Page < totalPages - 1)
            {
                AddLabel(547, 408, WhiteTextHue, "Next Page");
                AddButton(616, 409, 4005, 4007, 4, GumpButtonType.Reply, 0);
            }

            AddLabel(19, 433, 149, "Claim Cost:");
            AddLabel(96, 433, 2550, "Days Housed X Control Slots X " + Stables.GoldCostPerControlSlotPerDay.ToString());

            AddLabel(358, 433, 149, "Retrieval Cost:");
            AddLabel(457, 433, 2550, "Adds " + Stables.RetireveFollowerDaysAdded.ToString() + " Days Worth of Housing");
        }
示例#6
0
        public AnimalLoreGump(PlayerMobile player, AnimalLoreGumpObject animalLoreGumpObject) : base(50, 50)
        {
            m_Player = player;
            m_AnimalLoreGumpObject = animalLoreGumpObject;

            if (m_Player == null)
            {
                return;
            }
            if (m_AnimalLoreGumpObject == null)
            {
                return;
            }
            if (m_AnimalLoreGumpObject.bc_Creature == null)
            {
                return;
            }
            if (m_AnimalLoreGumpObject.bc_Creature.Deleted)
            {
                return;
            }
            if (!m_AnimalLoreGumpObject.bc_Creature.Alive && !m_AnimalLoreGumpObject.bc_Creature.IsBonded)
            {
                return;
            }

            BaseCreature bc_Creature = m_AnimalLoreGumpObject.bc_Creature;

            int traitsEarned    = FollowerTraits.GetFollowerTraitsEarned(bc_Creature);
            int traitsAvailable = FollowerTraits.GetFollowerTraitsAvailable(bc_Creature);
            int totalTraits     = (int)((double)bc_Creature.TraitsList.Count / 2);

            //Populate Trait Selection
            if (m_AnimalLoreGumpObject.m_TraitGumpSelections.Count == 0)
            {
                for (int a = 0; a < totalTraits; a++)
                {
                    m_AnimalLoreGumpObject.m_TraitGumpSelections.Add(TraitSelectionType.None);
                }
            }

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;

            AddPage(0);

            int HeaderTextHue      = 2603;
            int WhiteTextHue       = 2655;
            int GreyTextHue        = 1102; //2036
            int MainTextHue        = 149;
            int BlueTextHue        = 2603;
            int GreenTextHue       = 0x3F;
            int RedTextHue         = 1256;
            int ValueTextHue       = 2655;
            int DifficultyTextHue  = 2114;
            int SlayerGroupTextHue = 2606;

            AddImage(8, 4, 1250, 2499); //Background

            string creatureDisplayName = bc_Creature.GetTamedDisplayName();

            AddLabel(Utility.CenteredTextOffset(170, creatureDisplayName), 15, HeaderTextHue, creatureDisplayName);

            AddLabel(10, 0, 149, "Guide");
            AddButton(14, 15, 2094, 2095, 1, GumpButtonType.Reply, 0);

            switch (m_AnimalLoreGumpObject.m_AnimalLorePage)
            {
                #region Stats

            case AnimalLoreGumpPage.Stats:
                if (bc_Creature.Tameable)
                {
                    AddLabel(78, 370, WhiteTextHue, "Traits");
                    AddButton(45, 369, 4011, 4013, 2, GumpButtonType.Reply, 0);

                    if (traitsAvailable > 0)
                    {
                        AddLabel(123, 370, GreenTextHue, "(" + traitsAvailable.ToString() + " Available)");
                    }

                    if (bc_Creature.RessPenaltyCount > 0)
                    {
                        AddItem(172, 363, 6227, 0);
                        AddLabel(206, 370, 2116, bc_Creature.RessPenaltyCount.ToString());

                        AddButton(221, 369, 4029, 4031, 3, GumpButtonType.Reply, 0);
                        AddLabel(259, 370, 2116, "Info");
                    }

                    else
                    {
                        AddButton(221, 369, 4029, 4031, 3, GumpButtonType.Reply, 0);
                        AddLabel(259, 370, WhiteTextHue, "Info");
                    }
                }

                int shrinkTableIcon = ShrinkTable.Lookup(bc_Creature);

                if (shrinkTableIcon == 6256)
                {
                    shrinkTableIcon = 7960;
                }

                if (bc_Creature.IsHenchman)
                {
                    Custom.BaseHenchman henchman = bc_Creature as Custom.BaseHenchman;

                    int henchmanIcon = 8454;
                    int henchmanHue  = 0;

                    if (bc_Creature.Female)
                    {
                        henchmanIcon = 8455;
                    }

                    if (!henchman.HenchmanHumanoid)
                    {
                        henchmanIcon = bc_Creature.TamedItemId;
                        henchmanHue  = bc_Creature.TamedItemHue;
                    }

                    AddItem(74 + bc_Creature.TamedItemXOffset, 62 + bc_Creature.TamedItemYOffset, henchmanIcon, henchmanHue);
                }

                else
                {
                    if (bc_Creature.TamedItemId != -1)     //Creature Icon
                    {
                        AddItem(74 + bc_Creature.TamedItemXOffset, 62 + bc_Creature.TamedItemYOffset, bc_Creature.TamedItemId, bc_Creature.TamedItemHue);
                    }

                    else
                    {
                        AddItem(74 + bc_Creature.TamedItemXOffset, 62 + bc_Creature.TamedItemYOffset, shrinkTableIcon, 0);
                    }
                }

                string creatureDifficulty = Utility.CreateDecimalString(bc_Creature.InitialDifficulty, 2);
                string slayerGroup        = bc_Creature.SlayerGroup.ToString();

                int level         = bc_Creature.ExperienceLevel;
                int experience    = bc_Creature.Experience;
                int maxExperience = 0;

                if (bc_Creature.ExperienceLevel < BaseCreature.MaxExperienceLevel)
                {
                    maxExperience = BaseCreature.ExperiencePerLevel[bc_Creature.ExperienceLevel];
                }

                double passiveTamingSkillGainRemaining = player.m_PassiveSkillGainRemaining;

                if (!bc_Creature.InPassiveTamingSkillGainRange(player))
                {
                    passiveTamingSkillGainRemaining = 0;
                }

                string passiveTamingSkillGainRemainingText = Utility.CreateDecimalString(passiveTamingSkillGainRemaining, 1);

                if (!(bc_Creature.IsStabled || bc_Creature.ControlMaster == player))
                {
                    passiveTamingSkillGainRemainingText = "-";
                }

                int hitsAdjusted    = bc_Creature.Hits;
                int hitsMaxAdjusted = bc_Creature.HitsMax;

                int stamAdjusted    = bc_Creature.Stam;
                int stamMaxAdjusted = bc_Creature.StamMax;

                int manaAdjusted    = bc_Creature.Mana;
                int manaMaxAdjusted = bc_Creature.ManaMax;

                int minDamageAdjusted = bc_Creature.DamageMin;
                int maxDamageAdjusted = bc_Creature.DamageMax;

                double wrestlingAdjusted   = bc_Creature.Skills.Wrestling.Value;
                double evalIntAdjusted     = bc_Creature.Skills.EvalInt.Value;
                double mageryAdjusted      = bc_Creature.Skills.Magery.Value;
                double magicResistAdjusted = bc_Creature.Skills.MagicResist.Value;
                double poisoningAdjusted   = bc_Creature.Skills.Poisoning.Value;

                int virtualArmorAdjusted = bc_Creature.VirtualArmor;

                //Tamed Scalars
                string hitsTamedScalar = Utility.CreateDecimalPercentageString((bc_Creature.TamedBaseMaxHitsCreationScalar - 1), 1);
                int    hitsTamedColor  = RedTextHue;
                if ((bc_Creature.TamedBaseMaxHitsCreationScalar - 1) >= 0)
                {
                    hitsTamedScalar = "+" + hitsTamedScalar;
                    hitsTamedColor  = GreenTextHue;
                }
                if (hitsTamedScalar.Length == 3)
                {
                    hitsTamedScalar = hitsTamedScalar.Insert(2, ".0");
                }

                string stamTamedScalar = Utility.CreateDecimalPercentageString((bc_Creature.TamedBaseDexCreationScalar - 1), 1);
                int    stamTamedColor  = RedTextHue;
                if ((bc_Creature.TamedBaseDexCreationScalar - 1) >= 0)
                {
                    stamTamedScalar = "+" + stamTamedScalar;
                    stamTamedColor  = GreenTextHue;
                }
                if (stamTamedScalar.Length == 3)
                {
                    stamTamedScalar = stamTamedScalar.Insert(2, ".0");
                }

                string manaTamedScalar = Utility.CreateDecimalPercentageString((bc_Creature.TamedBaseMaxManaCreationScalar - 1), 1);
                int    manaTamedColor  = RedTextHue;
                if ((bc_Creature.TamedBaseMaxManaCreationScalar - 1) >= 0)
                {
                    manaTamedScalar = "+" + manaTamedScalar;
                    manaTamedColor  = GreenTextHue;
                }
                if (manaTamedScalar.Length == 3)
                {
                    manaTamedScalar = manaTamedScalar.Insert(2, ".0");
                }

                string damageTamedScalar = Utility.CreateDecimalPercentageString((bc_Creature.TamedBaseMaxDamageCreationScalar - 1), 1);
                int    damageTamedColor  = RedTextHue;
                if ((bc_Creature.TamedBaseMaxDamageCreationScalar - 1) >= 0)
                {
                    damageTamedScalar = "+" + damageTamedScalar;
                    damageTamedColor  = GreenTextHue;
                }
                if (damageTamedScalar.Length == 3)
                {
                    damageTamedScalar = damageTamedScalar.Insert(2, ".0");
                }

                string virtualArmorTamedScalar = Utility.CreateDecimalPercentageString((bc_Creature.TamedBaseVirtualArmorCreationScalar - 1), 1);
                int    virtualArmorTamedColor  = RedTextHue;
                if ((bc_Creature.TamedBaseVirtualArmorCreationScalar - 1) >= 0)
                {
                    virtualArmorTamedScalar = "+" + virtualArmorTamedScalar;
                    virtualArmorTamedColor  = GreenTextHue;
                }
                if (virtualArmorTamedScalar.Length == 3)
                {
                    virtualArmorTamedScalar = virtualArmorTamedScalar.Insert(2, ".0");
                }

                string wrestlingTamedScalar = Utility.CreateDecimalPercentageString((bc_Creature.TamedBaseWrestlingCreationScalar - 1), 1);
                int    wrestlingTamedColor  = RedTextHue;
                if ((bc_Creature.TamedBaseWrestlingCreationScalar - 1) >= 0)
                {
                    wrestlingTamedScalar = "+" + wrestlingTamedScalar;
                    wrestlingTamedColor  = GreenTextHue;
                }
                if (wrestlingTamedScalar.Length == 3)
                {
                    wrestlingTamedScalar = wrestlingTamedScalar.Insert(2, ".0");
                }

                string evalIntTamedScalar = Utility.CreateDecimalPercentageString((bc_Creature.TamedBaseEvalIntCreationScalar - 1), 1);
                int    evalIntTamedColor  = RedTextHue;
                if ((bc_Creature.TamedBaseEvalIntCreationScalar - 1) >= 0)
                {
                    evalIntTamedScalar = "+" + evalIntTamedScalar;
                    evalIntTamedColor  = GreenTextHue;
                }
                if (evalIntTamedScalar.Length == 3)
                {
                    evalIntTamedScalar = evalIntTamedScalar.Insert(2, ".0");
                }

                string mageryTamedScalar = Utility.CreateDecimalPercentageString((bc_Creature.TamedBaseMageryCreationScalar - 1), 1);
                int    mageryTamedColor  = RedTextHue;
                if ((bc_Creature.TamedBaseMageryCreationScalar - 1) >= 0)
                {
                    mageryTamedScalar = "+" + mageryTamedScalar;
                    mageryTamedColor  = GreenTextHue;
                }
                if (mageryTamedScalar.Length == 3)
                {
                    mageryTamedScalar = mageryTamedScalar.Insert(2, ".0");
                }

                string magicResistTamedScalar = Utility.CreateDecimalPercentageString((bc_Creature.TamedBaseMagicResistCreationScalar - 1), 1);
                int    magicResistTamedColor  = RedTextHue;
                if ((bc_Creature.TamedBaseMagicResistCreationScalar - 1) >= 0)
                {
                    magicResistTamedScalar = "+" + magicResistTamedScalar;
                    magicResistTamedColor  = GreenTextHue;
                }
                if (magicResistTamedScalar.Length == 3)
                {
                    magicResistTamedScalar = magicResistTamedScalar.Insert(2, ".0");
                }

                string poisoningTamedScalar = Utility.CreateDecimalPercentageString((bc_Creature.TamedBasePoisoningCreationScalar - 1), 1);
                int    poisoningTamedColor  = RedTextHue;
                if ((bc_Creature.TamedBasePoisoningCreationScalar - 1) >= 0)
                {
                    poisoningTamedScalar = "+" + poisoningTamedScalar;
                    poisoningTamedColor  = GreenTextHue;
                }
                if (poisoningTamedScalar.Length == 3)
                {
                    poisoningTamedScalar = poisoningTamedScalar.Insert(2, ".0");
                }

                if (bc_Creature.IsStabled || (bc_Creature.Controlled && bc_Creature.ControlMaster is PlayerMobile))
                {
                    AddLabel(166, 50, MainTextHue, "Level:");
                    if (traitsAvailable > 0)
                    {
                        AddLabel(210, 50, GreenTextHue, level.ToString());
                    }
                    else
                    {
                        AddLabel(210, 50, ValueTextHue, level.ToString());
                    }

                    if (bc_Creature.ExperienceLevel < BaseCreature.MaxExperienceLevel)
                    {
                        AddLabel(175, 70, MainTextHue, "Exp:");
                        AddLabel(210, 70, ValueTextHue, experience.ToString() + " / " + maxExperience.ToString());
                    }

                    else
                    {
                        AddLabel(175, 70, MainTextHue, "Exp:");
                        AddLabel(210, 70, ValueTextHue, "Maxed");
                    }

                    AddLabel(160, 90, MainTextHue, "Passive Taming");
                    AddLabel(130, 105, MainTextHue, "Skill Gain Remaining");
                    if (passiveTamingSkillGainRemaining > 0)
                    {
                        AddLabel(260, 100, 2603, passiveTamingSkillGainRemainingText);
                    }
                    else
                    {
                        AddLabel(260, 100, 2401, passiveTamingSkillGainRemainingText);
                    }
                }

                else
                {
                    AddLabel(170, 45, MainTextHue, "Creature Difficulty");
                    AddLabel(Utility.CenteredTextOffset(220, creatureDifficulty), 65, DifficultyTextHue, creatureDifficulty);

                    AddLabel(185, 85, MainTextHue, "Slayer Group");
                    AddLabel(205, 105, SlayerGroupTextHue, slayerGroup);

                    hitsAdjusted    = (int)((double)bc_Creature.TamedBaseMaxHits * bc_Creature.TamedBaseMaxHitsCreationScalar);
                    hitsMaxAdjusted = hitsAdjusted;

                    stamAdjusted    = (int)((double)bc_Creature.TamedBaseDex * bc_Creature.TamedBaseDexCreationScalar);
                    stamMaxAdjusted = stamAdjusted;

                    manaAdjusted    = (int)((double)bc_Creature.TamedBaseMaxMana * bc_Creature.TamedBaseMaxManaCreationScalar);
                    manaMaxAdjusted = manaAdjusted;

                    minDamageAdjusted = (int)((double)bc_Creature.TamedBaseMinDamage * bc_Creature.TamedBaseMinDamageCreationScalar);
                    maxDamageAdjusted = (int)((double)bc_Creature.TamedBaseMaxDamage * bc_Creature.TamedBaseMaxDamageCreationScalar);

                    virtualArmorAdjusted = (int)((double)bc_Creature.TamedBaseVirtualArmor * bc_Creature.TamedBaseVirtualArmorCreationScalar);

                    wrestlingAdjusted   = bc_Creature.TamedBaseWrestling * bc_Creature.TamedBaseWrestlingCreationScalar;
                    evalIntAdjusted     = bc_Creature.TamedBaseEvalInt * bc_Creature.TamedBaseEvalIntCreationScalar;
                    mageryAdjusted      = bc_Creature.TamedBaseMagery * bc_Creature.TamedBaseMageryCreationScalar;
                    magicResistAdjusted = bc_Creature.TamedBaseMagicResist * bc_Creature.TamedBaseMagicResistCreationScalar;
                    poisoningAdjusted   = bc_Creature.TamedBasePoisoning * bc_Creature.TamedBasePoisoningCreationScalar;
                }

                int labelX        = 45;
                int valuesX       = 140;
                int tamedScalarsX = 245;

                int startY = 125;

                int rowHeight = 18;
                int rowSpacer = 0;

                bool showTamedScalars = false;

                if (bc_Creature.Tameable)
                {
                    showTamedScalars = true;

                    if (bc_Creature.IsHenchman)
                    {
                        AddLabel(labelX, startY, MainTextHue, "Min Begging:");
                    }
                    else
                    {
                        AddLabel(labelX, startY, MainTextHue, "Min Taming:");
                    }

                    AddLabel(valuesX, startY, ValueTextHue, bc_Creature.MinTameSkill.ToString());
                    startY += rowHeight;

                    AddLabel(labelX, startY, MainTextHue, "Control Slots:");
                    AddLabel(valuesX, startY, ValueTextHue, bc_Creature.ControlSlots.ToString());

                    AddLabel(242, startY, MainTextHue, "vs Avg.");

                    startY += rowHeight;
                    startY += rowSpacer;
                }

                AddLabel(labelX, startY, MainTextHue, "Hits:");
                AddLabel(valuesX, startY, ValueTextHue, hitsAdjusted + " / " + hitsMaxAdjusted);
                if (showTamedScalars)
                {
                    AddLabel(tamedScalarsX, startY, hitsTamedColor, hitsTamedScalar);
                }

                startY += rowHeight;

                AddLabel(labelX, startY, MainTextHue, "Dex:");
                AddLabel(valuesX, startY, ValueTextHue, stamMaxAdjusted.ToString());
                if (showTamedScalars)
                {
                    AddLabel(tamedScalarsX, startY, stamTamedColor, stamTamedScalar);
                }

                startY += rowHeight;

                /*
                 * AddLabel(labelX, startY, MainTextHue, "Mana:");
                 * AddLabel(valuesX, startY, ValueTextHue, manaAdjusted + " / " + manaMaxAdjusted);
                 * if (showTamedScalars && manaAdjusted > 0 && manaMaxAdjusted > 0)
                 *  AddLabel(tamedScalarsX, startY, manaTamedColor, manaTamedScalar);
                 *
                 * startY += rowHeight;
                 */

                startY += rowSpacer;

                AddLabel(labelX, startY, MainTextHue, "Damage:");
                AddLabel(valuesX, startY, ValueTextHue, minDamageAdjusted + " - " + maxDamageAdjusted);
                if (showTamedScalars)
                {
                    AddLabel(tamedScalarsX, startY, damageTamedColor, damageTamedScalar);
                }

                startY += rowHeight;

                AddLabel(labelX, startY, MainTextHue, "Armor:");
                AddLabel(valuesX, startY, ValueTextHue, virtualArmorAdjusted.ToString());
                if (showTamedScalars)
                {
                    AddLabel(tamedScalarsX, startY, virtualArmorTamedColor, virtualArmorTamedScalar);
                }

                startY += rowHeight;
                startY += rowSpacer;

                if (bc_Creature.IsHenchman)
                {
                    AddLabel(labelX, startY, MainTextHue, "Combat Skill:");
                }
                else
                {
                    AddLabel(labelX, startY, MainTextHue, "Wrestling:");
                }
                AddLabel(valuesX, startY, ValueTextHue, RoundToTenth(wrestlingAdjusted).ToString());
                if (showTamedScalars)
                {
                    AddLabel(tamedScalarsX, startY, wrestlingTamedColor, wrestlingTamedScalar);
                }

                startY += rowHeight;

                AddLabel(labelX, startY, MainTextHue, "Magery:");
                if (mageryAdjusted == 0)
                {
                    AddLabel(valuesX, startY, ValueTextHue, "-");
                }
                else
                {
                    AddLabel(valuesX, startY, ValueTextHue, RoundToTenth(mageryAdjusted).ToString());
                    if (showTamedScalars)
                    {
                        AddLabel(tamedScalarsX, startY, mageryTamedColor, mageryTamedScalar);
                    }
                }

                startY += rowHeight;

                AddLabel(labelX, startY, MainTextHue, "Eval Int:");
                if (evalIntAdjusted == 0)
                {
                    AddLabel(valuesX, startY, ValueTextHue, "-");
                }
                else
                {
                    AddLabel(valuesX, startY, ValueTextHue, RoundToTenth(evalIntAdjusted).ToString());
                    if (showTamedScalars)
                    {
                        AddLabel(tamedScalarsX, startY, evalIntTamedColor, evalIntTamedScalar);
                    }
                }

                startY += rowHeight;

                AddLabel(labelX, startY, MainTextHue, "Magic Resist:");
                AddLabel(valuesX, startY, ValueTextHue, RoundToTenth(magicResistAdjusted).ToString());
                if (showTamedScalars)
                {
                    AddLabel(tamedScalarsX, startY, magicResistTamedColor, magicResistTamedScalar);
                }

                startY += rowHeight;

                AddLabel(labelX, startY, MainTextHue, "Poisoning:");
                if (bc_Creature.HitPoison != null)
                {
                    AddLabel(valuesX, startY, ValueTextHue, RoundToTenth(poisoningAdjusted).ToString() + " (" + bc_Creature.HitPoison.Name + ")");
                    if (showTamedScalars)
                    {
                        AddLabel(tamedScalarsX, startY, poisoningTamedColor, poisoningTamedScalar);
                    }
                }

                else
                {
                    AddLabel(valuesX, startY, ValueTextHue, "-");
                }

                startY += rowHeight;

                AddLabel(labelX, startY, MainTextHue, "Poison Resist:");
                if (bc_Creature.PoisonResistance > 0)
                {
                    if (bc_Creature.PoisonResistance > 1)
                    {
                        AddLabel(valuesX, startY, ValueTextHue, "Reduced " + bc_Creature.PoisonResistance.ToString() + " Levels");
                    }
                    else
                    {
                        AddLabel(valuesX, startY, ValueTextHue, "Reduced " + bc_Creature.PoisonResistance.ToString() + " Level");
                    }
                }

                else
                {
                    AddLabel(valuesX, startY, ValueTextHue, "-");
                }

                startY += rowHeight;
                break;

                #endregion

                #region Traits

            case AnimalLoreGumpPage.Traits:
                AddLabel(78, 370, WhiteTextHue, "Stats");
                AddButton(45, 369, 4011, 4013, 2, GumpButtonType.Reply, 0);

                AddButton(221, 369, 4029, 4031, 3, GumpButtonType.Reply, 0);
                AddLabel(259, 370, WhiteTextHue, "Info");

                string traitsText = "Traits";

                if ((bc_Creature.IsStabled || (bc_Creature.Controlled && bc_Creature.ControlMaster == m_Player)) && traitsAvailable > 0)
                {
                    if (traitsAvailable == 1)
                    {
                        traitsText = traitsAvailable.ToString() + " Trait Available";
                    }

                    else
                    {
                        traitsText = traitsAvailable.ToString() + " Traits Available";
                    }

                    AddLabel(Utility.CenteredTextOffset(175, traitsText), 45, 2606, traitsText);
                }

                else
                {
                    AddLabel(145, 45, 2606, traitsText);
                }

                int traitIndex = 0;

                int iStartY    = 60;
                int rowSpacing = 57;

                for (int a = 0; a < bc_Creature.TraitsList.Count; a++)
                {
                    int traitLevelIndex = (int)(Math.Floor((double)a / 2));
                    int buttonBaseIndex = 10 + (10 * traitLevelIndex);

                    FollowerTraitType   traitOption         = bc_Creature.TraitsList[a];
                    FollowerTraitDetail followerTraitDetail = FollowerTraits.GetFollowerTraitDetail(traitOption);

                    bool controlled     = false;
                    bool traitAvailable = false;

                    if (bc_Creature.IsStabled || bc_Creature.Controlled && bc_Creature.ControlMaster == m_Player)
                    {
                        controlled = true;
                    }

                    if ((traitLevelIndex <= (traitsEarned - 1)) && bc_Creature.m_SelectedTraits[traitLevelIndex] == FollowerTraitType.None)
                    {
                        traitAvailable = true;
                    }

                    //Left Side
                    if (a % 2 == 0)
                    {
                        if (traitAvailable && controlled && m_AnimalLoreGumpObject.m_TraitGumpSelections[traitLevelIndex] == TraitSelectionType.Left)
                        {
                            AddItem(40 + followerTraitDetail.IconOffsetX, iStartY + 20 + followerTraitDetail.IconOffsetY, followerTraitDetail.IconItemId, followerTraitDetail.IconHue);
                            AddLabel(Utility.CenteredTextOffset(85, followerTraitDetail.Name), iStartY, GreenTextHue, followerTraitDetail.Name);

                            AddButton(85, iStartY + 33, 2118, 2117, buttonBaseIndex, GumpButtonType.Reply, 0);
                            AddLabel(105, iStartY + 30, 2550, "Info");

                            AddButton(145, iStartY + 30, 9909, 9910, buttonBaseIndex + 1, GumpButtonType.Reply, 0);
                        }

                        else if (traitAvailable && controlled && m_AnimalLoreGumpObject.m_TraitGumpSelections[traitLevelIndex] != TraitSelectionType.Left)
                        {
                            AddItem(40 + followerTraitDetail.IconOffsetX, iStartY + 20 + followerTraitDetail.IconOffsetY, followerTraitDetail.IconItemId, followerTraitDetail.IconHue);
                            AddLabel(Utility.CenteredTextOffset(85, followerTraitDetail.Name), iStartY, WhiteTextHue, followerTraitDetail.Name);

                            AddButton(85, iStartY + 33, 2118, 2117, buttonBaseIndex, GumpButtonType.Reply, 0);
                            AddLabel(105, iStartY + 30, 2550, "Info");

                            AddButton(145, iStartY + 30, 9910, 9909, buttonBaseIndex + 1, GumpButtonType.Reply, 0);
                        }

                        else if (bc_Creature.m_SelectedTraits[traitLevelIndex] == traitOption)
                        {
                            AddItem(40 + followerTraitDetail.IconOffsetX, iStartY + 20 + followerTraitDetail.IconOffsetY, followerTraitDetail.IconItemId, followerTraitDetail.IconHue);
                            AddLabel(Utility.CenteredTextOffset(85, followerTraitDetail.Name), iStartY, 149, followerTraitDetail.Name);

                            AddButton(85, iStartY + 33, 2118, 2117, buttonBaseIndex, GumpButtonType.Reply, 0);
                            AddLabel(105, iStartY + 30, 2550, "Info");
                        }

                        else
                        {
                            AddItem(40 + followerTraitDetail.IconOffsetX, iStartY + 20 + followerTraitDetail.IconOffsetY, followerTraitDetail.IconItemId, followerTraitDetail.IconHue);
                            AddLabel(Utility.CenteredTextOffset(85, followerTraitDetail.Name), iStartY, 1102, followerTraitDetail.Name);

                            AddButton(85, iStartY + 33, 2118, 2117, buttonBaseIndex, GumpButtonType.Reply, 0);
                            AddLabel(105, iStartY + 30, 2401, "Info");
                        }
                    }

                    //Right Side
                    else
                    {
                        if (traitAvailable && controlled && m_AnimalLoreGumpObject.m_TraitGumpSelections[traitLevelIndex] == TraitSelectionType.Right)
                        {
                            AddItem(195 + followerTraitDetail.IconOffsetX, iStartY + 20 + followerTraitDetail.IconOffsetY, followerTraitDetail.IconItemId, followerTraitDetail.IconHue);
                            AddLabel(Utility.CenteredTextOffset(240, followerTraitDetail.Name), iStartY, GreenTextHue, followerTraitDetail.Name);

                            AddButton(240, iStartY + 33, 2118, 2117, buttonBaseIndex, GumpButtonType.Reply, 0);
                            AddLabel(260, iStartY + 30, 2550, "Info");

                            AddButton(172, iStartY + 30, 9903, 9904, buttonBaseIndex + 2, GumpButtonType.Reply, 0);
                        }

                        else if (traitAvailable && controlled && m_AnimalLoreGumpObject.m_TraitGumpSelections[traitLevelIndex] != TraitSelectionType.Right)
                        {
                            AddItem(195 + followerTraitDetail.IconOffsetX, iStartY + 20 + followerTraitDetail.IconOffsetY, followerTraitDetail.IconItemId, followerTraitDetail.IconHue);
                            AddLabel(Utility.CenteredTextOffset(240, followerTraitDetail.Name), iStartY, WhiteTextHue, followerTraitDetail.Name);

                            AddButton(240, iStartY + 33, 2118, 2117, buttonBaseIndex, GumpButtonType.Reply, 0);
                            AddLabel(260, iStartY + 30, 2550, "Info");

                            AddButton(172, iStartY + 30, 9904, 9903, buttonBaseIndex + 2, GumpButtonType.Reply, 0);
                        }

                        else if (bc_Creature.m_SelectedTraits[traitLevelIndex] == traitOption)
                        {
                            AddItem(195 + followerTraitDetail.IconOffsetX, iStartY + 20 + followerTraitDetail.IconOffsetY, followerTraitDetail.IconItemId, followerTraitDetail.IconHue);
                            AddLabel(Utility.CenteredTextOffset(240, followerTraitDetail.Name), iStartY, 149, followerTraitDetail.Name);

                            AddButton(240, iStartY + 33, 2118, 2117, buttonBaseIndex, GumpButtonType.Reply, 0);
                            AddLabel(260, iStartY + 30, 2550, "Info");
                        }

                        else
                        {
                            AddItem(195 + followerTraitDetail.IconOffsetX, iStartY + 20 + followerTraitDetail.IconOffsetY, followerTraitDetail.IconItemId, followerTraitDetail.IconHue);
                            AddLabel(Utility.CenteredTextOffset(240, followerTraitDetail.Name), iStartY, 1102, followerTraitDetail.Name);

                            AddButton(240, iStartY + 33, 2118, 2117, buttonBaseIndex, GumpButtonType.Reply, 0);
                            AddLabel(260, iStartY + 30, 2401, "Info");
                        }

                        iStartY += rowSpacing;
                    }
                }

                bool selectionsMade = false;

                for (int a = 0; a < m_AnimalLoreGumpObject.m_TraitGumpSelections.Count; a++)
                {
                    if (m_AnimalLoreGumpObject.m_TraitGumpSelections[a] != TraitSelectionType.None)
                    {
                        selectionsMade = true;
                    }
                }

                if (selectionsMade && traitsAvailable > 0 && (bc_Creature.IsStabled || (bc_Creature.Controlled && bc_Creature.ControlMaster == m_Player)))
                {
                    AddLabel(90, 345, 68, "Confirm Trait Selection");
                    AddButton(140, 370, 2076, 2075, 9, GumpButtonType.Reply, 0);
                }
                break;

                #endregion

                #region Info

            case AnimalLoreGumpPage.Info:
                AddLabel(78, 370, WhiteTextHue, "Traits");
                AddButton(45, 369, 4011, 4013, 2, GumpButtonType.Reply, 0);

                if (traitsAvailable > 0)
                {
                    AddLabel(120, 370, GreenTextHue, "(" + traitsAvailable.ToString() + " Available)");
                }

                AddButton(221, 369, 4029, 4031, 3, GumpButtonType.Reply, 0);
                AddLabel(259, 370, WhiteTextHue, "Stats");

                if (bc_Creature.RessPenaltyCount > 0)
                {
                    AddLabel(73, 47, 149, "Current Ress Penalty");
                    AddItem(198, 42, 6227, 0);
                    AddLabel(232, 47, 2116, "x" + bc_Creature.RessPenaltyCount.ToString());

                    string timeRemainingText = "Expires in " + Utility.CreateTimeRemainingString(DateTime.UtcNow, bc_Creature.RessPenaltyExpiration, true, false, true, true, true);
                    string textA             = "-" + Utility.CreateDecimalPercentageString(bc_Creature.GetRessPenaltyDamageDealtModifier(), 0) + " Damage Dealt";
                    string textB             = "+" + Utility.CreateDecimalPercentageString(bc_Creature.GetRessPenaltyDamageReceivedModifier(), 0) + " Damage Received";

                    AddLabel(Utility.CenteredTextOffset(165, timeRemainingText), 67, 2550, timeRemainingText);
                    AddLabel(Utility.CenteredTextOffset(165, textA), 87, 1256, textA);
                    AddLabel(Utility.CenteredTextOffset(165, textB), 107, 1256, textB);
                }
                break;

                #endregion
            }
        }
示例#7
0
        public ShipHotbarGump(PlayerMobile player, ShipHotbarGumpObject shipHotbarGumpObject) : base(10, 10)
        {
            m_Player = player;
            m_ShipHotbarGumpObject = shipHotbarGumpObject;

            if (player == null)
            {
                return;
            }
            if (m_ShipHotbarGumpObject == null)
            {
                return;
            }

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;

            AddPage(0);

            int WhiteTextHue = 2499; //2036

            //-----

            BaseShip m_Ship = m_Player.ShipOccupied;

            if (m_Ship != null)
            {
                if (m_Ship.Deleted)
                {
                    m_Ship = null;
                }
            }

            #region Ship Property Values

            string shipNameText = "";

            int    hullPoints    = -1;
            int    maxHullPoints = -1;
            double hullPercent   = 0;

            int    sailPoints    = -1;
            int    maxSailPoints = -1;
            double sailPercent   = 0;

            int    gunPoints    = -1;
            int    maxGunPoints = -1;
            double gunPercent   = 0;

            string minorAbilityText          = "";
            string minorAbilityTimeRemaining = "";
            bool   minorAbilityReady         = false;

            string majorAbilityText          = "";
            string majorAbilityTimeRemaining = "";
            bool   majorAbilityReady         = false;

            string epicAbilityText          = "";
            string epicAbilityTimeRemaining = "";
            bool   epicAbilityReady         = false;

            string movementModeText      = "";
            string actionText            = "";
            int    actionButtonID        = 4029;
            int    actionButtonPressedID = 4029;

            string targetingModeText = "";

            int  leftCannonsAmmunition = -1;
            bool leftCannonsReady      = false;

            int  rightCannonsAmmunition = -1;
            bool rightCannonsReady      = false;

            #endregion

            #region Populate Values

            switch (m_ShipHotbarGumpObject.m_MovementMode)
            {
            case MovementMode.Single: movementModeText = "Single"; break;

            case MovementMode.Full: movementModeText = "Full"; break;
            }

            if (m_Ship != null)
            {
                shipNameText = "The Rebellion"; //TEST: OK

                hullPoints    = m_Ship.HitPoints;
                maxHullPoints = m_Ship.MaxHitPoints;
                hullPercent   = (double)hullPoints / (double)maxHullPoints;

                sailPoints    = m_Ship.SailPoints;
                maxSailPoints = m_Ship.MaxSailPoints;
                sailPercent   = (double)sailPoints / (double)maxSailPoints;

                gunPoints    = m_Ship.GunPoints;
                maxGunPoints = m_Ship.MaxGunPoints;
                gunPercent   = (double)gunPoints / (double)maxGunPoints;

                leftCannonsAmmunition = 10; //TEST: FIX
                leftCannonsReady      = true;

                rightCannonsAmmunition = 10; //TEST: FIX
                rightCannonsReady      = false;

                minorAbilityText          = "Expedite Repairs"; //TEST: FIX
                minorAbilityTimeRemaining = "1m 59s";           //TEST: FIX
                minorAbilityReady         = false;

                majorAbilityText          = "Smokescreen"; //TEST: FIX
                majorAbilityTimeRemaining = "4m 59s";      //TEST: FIX
                majorAbilityReady         = false;

                epicAbilityText          = "Hellfire"; //TEST: FIX
                epicAbilityTimeRemaining = "9m 59s";   //TEST: FIX
                epicAbilityReady         = false;

                switch (m_Ship.m_TargetingMode)
                {
                case TargetingMode.Random: targetingModeText = "Random"; break;

                case TargetingMode.Hull: targetingModeText = "Hull"; break;

                case TargetingMode.Sails: targetingModeText = "Sails"; break;

                case TargetingMode.Guns: targetingModeText = "Guns"; break;
                }
            }

            switch (m_ShipHotbarGumpObject.m_ShipAction)
            {
            case ShipAction.RaiseAnchor:
                actionText            = "Raise Anchor";
                actionButtonID        = 4014;
                actionButtonPressedID = 4016;
                break;

            case ShipAction.LowerAnchor:
                actionText            = "Lower Anchor";
                actionButtonID        = 4005;
                actionButtonPressedID = 4007;
                break;

            case ShipAction.Embark:
                actionText            = "Embark";
                actionButtonID        = 4002;
                actionButtonPressedID = 4004;
                break;

            case ShipAction.EmbarkFollowers:
                actionText            = "Embark Followers";
                actionButtonID        = 4008;
                actionButtonPressedID = 4010;
                break;

            case ShipAction.Disembark:
                actionText            = "Disembark";
                actionButtonID        = 4002;
                actionButtonPressedID = 4004;
                break;

            case ShipAction.DisembarkFollowers:
                actionText            = "Disembark Followers";
                actionButtonID        = 4008;
                actionButtonPressedID = 4010;
                break;

            case ShipAction.Dock:
                actionText            = "Dock The Ship";
                actionButtonID        = 4017;
                actionButtonPressedID = 4019;
                break;

            case ShipAction.ClearDeck:
                actionText            = "Clear The Deck";
                actionButtonID        = 4020;
                actionButtonPressedID = 4022;
                break;

            case ShipAction.AddFriend:
                actionText            = "Add Friend";
                actionButtonID        = 4003;
                actionButtonPressedID = 4002;
                break;

            case ShipAction.AddCoOwner:
                actionText            = "Add Co-Owner";
                actionButtonID        = 4003;
                actionButtonPressedID = 4002;
                break;

            case ShipAction.ThrowTargetOverboard:
                actionText            = "Throw Target Overboard";
                actionButtonID        = 4014;
                actionButtonPressedID = 4016;
                break;
            }

            #endregion

            #region Gump Areas

            bool showStats     = false;
            bool showAbilities = false;
            bool showNavigator = false;

            int startX = 0;
            int startY = 12;

            int statsHeight     = 102;
            int abilitiesHeight = 55;

            switch (m_ShipHotbarGumpObject.m_DisplayMode)
            {
            case DisplayModeType.Stats:
                showStats = true;
                break;

            case DisplayModeType.StatsAbilities:
                showStats     = true;
                showAbilities = true;
                break;

            case DisplayModeType.StatsAbilitiesNavigator:
                showStats     = true;
                showAbilities = true;
                showNavigator = true;
                break;

            case DisplayModeType.StatsNavigator:
                showStats     = true;
                showNavigator = true;
                break;

            case DisplayModeType.Navigator:
                showNavigator = true;
                startX        = 18;
                break;
            }

            #endregion

            if (m_ShipHotbarGumpObject.m_CollapseMode)
            {
                AddAlphaRegion(12, 12, 30, 75);

                AddButton(17, 12, 9906, 9906, 24, GumpButtonType.Reply, 0); //Collapse
                AddItem(6, 39, 5363);
                AddButton(20, 69, 1210, 1209, 27, GumpButtonType.Reply, 0); //Ship Selection
            }

            else
            {
                AddButton(17, 12, 9900, 9900, 24, GumpButtonType.Reply, 0); //Collapse
                AddItem(6, 39, 5363);
                AddButton(20, 69, 1210, 1209, 27, GumpButtonType.Reply, 0); //Ship Selection
                AddButton(20, 93, 2224, 2224, 26, GumpButtonType.Reply, 0); //Change Display Mode

                #region Stats

                if (showStats)
                {
                    //Add Background
                    AddImage(48, startY, 103);
                    AddImage(185, startY, 103);
                    AddImageTiled(62, startY + 14, 257, 77, 2624);

                    //Add Header: shipNameText
                    AddImage(52, startY + 3, 1141);
                    AddLabel(Utility.CenteredTextOffset(190, shipNameText), startY + 5, 149, shipNameText);

                    AddLabel(71, startY + 30, 149, "Hull");
                    AddImage(102, startY + 35, 2057);
                    AddImageTiled(102 + Utility.ProgressBarX(hullPercent), startY + 38, Utility.ProgressBarWidth(hullPercent), 7, 2488);
                    if (maxHullPoints > -1)
                    {
                        AddLabel(219, startY + 30, WhiteTextHue, hullPoints.ToString() + "/" + maxHullPoints.ToString());
                    }

                    AddLabel(66, startY + 50, 187, "Sails");
                    AddImage(102, startY + 55, 2054);
                    AddImageTiled(102 + Utility.ProgressBarX(sailPercent), startY + 58, Utility.ProgressBarWidth(sailPercent), 7, 2488);
                    if (maxSailPoints > -1)
                    {
                        AddLabel(219, startY + 50, WhiteTextHue, sailPoints.ToString() + "/" + maxSailPoints.ToString());
                    }

                    AddLabel(66, startY + 70, WhiteTextHue, "Guns");
                    AddImage(102, startY + 75, 2057, 2499);
                    AddImageTiled(102 + Utility.ProgressBarX(gunPercent), startY + 78, Utility.ProgressBarWidth(gunPercent), 7, 2488);
                    if (maxGunPoints > -1)
                    {
                        AddLabel(219, startY + 70, WhiteTextHue, gunPoints.ToString() + "/" + maxGunPoints.ToString());
                    }


                    startY += statsHeight;
                }

                #endregion

                #region Abilities

                if (showAbilities)
                {
                    if (minorAbilityText != "")
                    {
                        if (minorAbilityReady)
                        {
                            AddLabel(Utility.CenteredTextOffset(61, minorAbilityText), startY, 2599, minorAbilityText);
                            AddButton(44, startY + 21, 2151, 2154, 21, GumpButtonType.Reply, 0);
                            AddLabel(76, startY + 25, WhiteTextHue, "Ready");
                        }

                        else
                        {
                            AddLabel(Utility.CenteredTextOffset(61, minorAbilityText), startY, 2599, minorAbilityText);
                            AddButton(44, startY + 21, 9721, 9721, 21, GumpButtonType.Reply, 0);
                            AddLabel(76, startY + 25, WhiteTextHue, minorAbilityTimeRemaining);
                        }
                    }

                    if (majorAbilityText != "")
                    {
                        if (majorAbilityReady)
                        {
                            AddLabel(Utility.CenteredTextOffset(185, majorAbilityText), startY, 2603, majorAbilityText);
                            AddButton(168, startY + 21, 2151, 2154, 22, GumpButtonType.Reply, 0);
                            AddLabel(201, startY + 25, WhiteTextHue, "Ready");
                        }

                        else
                        {
                            AddLabel(Utility.CenteredTextOffset(185, majorAbilityText), startY, 2603, majorAbilityText);
                            AddButton(168, startY + 21, 9721, 9721, 22, GumpButtonType.Reply, 0);
                            AddLabel(201, startY + 25, WhiteTextHue, majorAbilityTimeRemaining);
                        }
                    }

                    if (epicAbilityText != "")
                    {
                        if (epicAbilityReady)
                        {
                            AddLabel(Utility.CenteredTextOffset(305, epicAbilityText), startY, 2606, epicAbilityText);
                            AddButton(287, startY + 21, 2151, 2154, 23, GumpButtonType.Reply, 0);
                            AddLabel(321, startY + 25, WhiteTextHue, "Ready");
                        }

                        else
                        {
                            AddLabel(Utility.CenteredTextOffset(305, epicAbilityText), startY, 2606, epicAbilityText);
                            AddButton(287, startY + 21, 9721, 9721, 23, GumpButtonType.Reply, 0);
                            AddLabel(321, startY + 25, WhiteTextHue, epicAbilityTimeRemaining);
                        }
                    }

                    startY += abilitiesHeight;
                }

                #endregion

                #region Navigator

                if (showNavigator)
                {
                    //Background
                    AddImage(startX + 33, startY + 50, 103);
                    AddImage(startX + 120, startY + 50, 103);
                    AddImage(startX + 196, startY + 50, 103);

                    AddImage(startX + 33, startY + 136, 103);
                    AddImage(startX + 197, startY + 141, 103);

                    AddImage(startX + 33, startY + 160, 103);
                    AddImage(startX + 175, startY + 160, 103);
                    AddImage(startX + 197, startY + 160, 103);

                    AddImageTiled(startX + 46, startY + 61, 280, 190, 2624);

                    //Movement Mode
                    AddLabel(startX + 63, startY + 0, 187, "Movement Mode");
                    AddLabel(Utility.CenteredTextOffset(startX + 115, movementModeText), startY + 20, WhiteTextHue, movementModeText);
                    AddButton(startX + 60, startY + 25, 2223, 2223, 12, GumpButtonType.Reply, 0);
                    AddButton(startX + 140, startY + 25, 2224, 2224, 13, GumpButtonType.Reply, 0);

                    //Action
                    AddLabel(Utility.CenteredTextOffset(startX + 263, actionText), startY + 0, 63, actionText);
                    AddButton(startX + 215, startY + 25, 2223, 2223, 14, GumpButtonType.Reply, 0);
                    AddButton(startX + 285, startY + 25, 2224, 2224, 15, GumpButtonType.Reply, 0);
                    AddButton(startX + 246, startY + 20, actionButtonID, actionButtonPressedID, 16, GumpButtonType.Reply, 0);

                    //Left Cannon
                    AddItem(startX + 33, startY + 46, 733);
                    AddItem(startX + 88, startY + 92, 3700);

                    if (leftCannonsAmmunition > -1)
                    {
                        if (leftCannonsReady && leftCannonsAmmunition > 0)
                        {
                            AddButton(startX + 59, startY + 113, 2151, 2154, 17, GumpButtonType.Reply, 0);
                            AddLabel(startX + 96, startY + 74, WhiteTextHue, leftCannonsAmmunition.ToString());
                        }

                        else if (!leftCannonsReady && leftCannonsAmmunition > 0)
                        {
                            AddButton(startX + 59, startY + 113, 9721, 9721, 17, GumpButtonType.Reply, 0);
                            AddLabel(startX + 96, startY + 74, WhiteTextHue, leftCannonsAmmunition.ToString());
                        }

                        else
                        {
                            AddButton(startX + 59, startY + 113, 2472, 2474, 17, GumpButtonType.Reply, 0);
                            AddLabel(startX + 96, startY + 74, 2115, leftCannonsAmmunition.ToString());
                        }
                    }

                    //Right Cannon
                    AddItem(startX + 284, startY + 49, 709);
                    AddItem(startX + 255, startY + 92, 3700);

                    if (rightCannonsAmmunition > -1)
                    {
                        if (rightCannonsReady && rightCannonsAmmunition > 0)
                        {
                            AddButton(startX + 287, startY + 115, 2151, 2154, 18, GumpButtonType.Reply, 0);
                            AddLabel(startX + 263, startY + 74, WhiteTextHue, rightCannonsAmmunition.ToString());
                        }

                        else if (!rightCannonsReady && rightCannonsAmmunition > 0)
                        {
                            AddButton(startX + 287, startY + 115, 9721, 9721, 18, GumpButtonType.Reply, 0);
                            AddLabel(startX + 263, startY + 74, WhiteTextHue, rightCannonsAmmunition.ToString());
                        }

                        else
                        {
                            AddButton(startX + 287, startY + 115, 2472, 2474, 18, GumpButtonType.Reply, 0);
                            AddLabel(startX + 263, startY + 74, 2115, rightCannonsAmmunition.ToString());
                        }
                    }

                    //Targeting Mode
                    if (targetingModeText != "")
                    {
                        AddLabel(startX + 136, startY + 65, 2115, "Targeting Mode");
                        AddLabel(Utility.CenteredTextOffset(startX + 186, targetingModeText), startY + 85, WhiteTextHue, targetingModeText);

                        AddButton(startX + 127, startY + 88, 2223, 2223, 19, GumpButtonType.Reply, 0);
                        AddButton(startX + 221, startY + 88, 2224, 2224, 20, GumpButtonType.Reply, 0);
                    }

                    //Directions
                    AddButton(startX + 160, startY + 109, 4500, 4500, 1, GumpButtonType.Reply, 0); //Forward
                    AddButton(startX + 220, startY + 109, 4501, 4501, 2, GumpButtonType.Reply, 0); //Forward Right
                    AddButton(startX + 267, startY + 152, 4502, 4502, 3, GumpButtonType.Reply, 0); //Right
                    AddButton(startX + 220, startY + 197, 4503, 4503, 4, GumpButtonType.Reply, 0); //Backwards Right
                    AddButton(startX + 160, startY + 197, 4504, 4504, 5, GumpButtonType.Reply, 0); //Backwards
                    AddButton(startX + 100, startY + 197, 4505, 4505, 6, GumpButtonType.Reply, 0); //Backwards Left
                    AddButton(startX + 55, startY + 152, 4506, 4506, 7, GumpButtonType.Reply, 0);  //Left
                    AddButton(startX + 100, startY + 109, 4507, 4507, 8, GumpButtonType.Reply, 0); //Forward Right

                    //Center Controls
                    AddButton(startX + 114, startY + 167, 4014, 4016, 9, GumpButtonType.Reply, 0);  //Turn Left
                    AddButton(startX + 171, startY + 167, 4017, 4019, 10, GumpButtonType.Reply, 0); //Stop
                    AddButton(startX + 227, startY + 167, 4005, 4007, 11, GumpButtonType.Reply, 0); //Turn Right
                }

                #endregion
            }
        }
示例#8
0
        public DamageTrackerGump(PlayerMobile player) : base(10, 10)
        {
            if (player == null)
            {
                return;
            }
            if (player.Deleted)
            {
                return;
            }
            if (player.m_DamageTracker == null)
            {
                return;
            }

            m_Player = player;

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;

            int textHue = 2036;

            int totalDamage = 0;

            if (player.m_DamageTracker.AddMeleeDamageToTotal)
            {
                totalDamage += player.m_DamageTracker.MeleeDamage;
            }

            if (player.m_DamageTracker.AddSpellDamageToTotal)
            {
                totalDamage += player.m_DamageTracker.SpellDamage;
            }

            if (player.m_DamageTracker.AddFollowerDamageToTotal)
            {
                totalDamage += player.m_DamageTracker.FollowerDamage;
            }

            if (player.m_DamageTracker.AddProvocationDamageToTotal)
            {
                totalDamage += player.m_DamageTracker.ProvocationDamage;
            }

            if (player.m_DamageTracker.AddPoisonDamageToTotal)
            {
                totalDamage += player.m_DamageTracker.PoisonDamage;
            }

            string timeElapsed = Utility.CreateTimeRemainingString(DateTime.UtcNow, DateTime.UtcNow + m_Player.m_DamageTracker.RunningTime, true, false, true, true, true);

            if (m_Player.m_DamageTracker.RunningTime == TimeSpan.FromSeconds(0))
            {
                timeElapsed = "0s";
            }

            string autostopHours   = m_Player.m_DamageTracker.AutoStopDuration.Hours.ToString() + "h";
            string autostopMinutes = m_Player.m_DamageTracker.AutoStopDuration.Minutes.ToString() + "m";
            string autostopSeconds = m_Player.m_DamageTracker.AutoStopDuration.Seconds.ToString() + "s";

            if (player.m_DamageTracker.m_Collapsed)
            {
                AddAlphaRegion(9, 7, 150, 90);

                AddButton(16, 18, 9900, 9900, 1, GumpButtonType.Reply, 0); //Expand Gump

                AddLabel(42, 17, 2577, "Total Damage");
                AddLabel(130, 17, textHue, Utility.CreateCurrencyString(totalDamage));

                AddItem(39, 38, 6160);                                     //Hour Glass

                AddButton(46, 69, 4017, 4019, 2, GumpButtonType.Reply, 0); //Reset

                //Running
                if (m_Player.m_DamageTracker.m_Running)
                {
                    AddLabel(72, 43, 63, timeElapsed);
                    AddButton(88, 69, 4020, 4022, 3, GumpButtonType.Reply, 0); //Pause
                }

                //Paused
                else
                {
                    AddLabel(72, 43, 2213, timeElapsed);
                    AddButton(88, 69, 4005, 4007, 3, GumpButtonType.Reply, 0); //Start
                }
            }

            else
            {
                AddAlphaRegion(3, 9, 169, 376);

                //Collapse
                AddButton(16, 20, 9906, 9906, 1, GumpButtonType.Reply, 0); //Collapse Gump

                //Damage Dealt
                AddImage(40, 17, 2445, 2425);
                AddLabel(52, 18, textHue, "Damage Dealt");
                AddLabel(49, 45, 34, "Melee");
                if (player.m_DamageTracker.AddMeleeDamageToTotal)
                {
                    AddButton(91, 45, 211, 210, 20, GumpButtonType.Reply, 0);
                }
                else
                {
                    AddButton(91, 45, 210, 211, 20, GumpButtonType.Reply, 0);
                }
                AddLabel(117, 45, textHue, Utility.CreateCurrencyString(player.m_DamageTracker.MeleeDamage));

                AddLabel(52, 65, 117, "Spell");
                if (player.m_DamageTracker.AddSpellDamageToTotal)
                {
                    AddButton(91, 65, 211, 210, 21, GumpButtonType.Reply, 0);
                }
                else
                {
                    AddButton(91, 65, 210, 211, 21, GumpButtonType.Reply, 0);
                }
                AddLabel(117, 65, textHue, Utility.CreateCurrencyString(player.m_DamageTracker.SpellDamage));

                AddLabel(42, 85, 63, "Poison");
                if (player.m_DamageTracker.AddPoisonDamageToTotal)
                {
                    AddButton(91, 85, 211, 210, 22, GumpButtonType.Reply, 0);
                }
                else
                {
                    AddButton(91, 85, 210, 211, 22, GumpButtonType.Reply, 0);
                }
                AddLabel(117, 85, textHue, Utility.CreateCurrencyString(player.m_DamageTracker.PoisonDamage));

                AddLabel(11, 105, 2417, "Provocation");
                if (player.m_DamageTracker.AddProvocationDamageToTotal)
                {
                    AddButton(91, 105, 211, 210, 23, GumpButtonType.Reply, 0);
                }
                else
                {
                    AddButton(91, 105, 210, 211, 23, GumpButtonType.Reply, 0);
                }

                AddLabel(117, 105, textHue, Utility.CreateCurrencyString(player.m_DamageTracker.ProvocationDamage));

                AddLabel(26, 125, 89, "Followers");
                if (player.m_DamageTracker.AddFollowerDamageToTotal)
                {
                    AddButton(91, 125, 211, 210, 24, GumpButtonType.Reply, 0);
                }
                else
                {
                    AddButton(91, 125, 210, 211, 24, GumpButtonType.Reply, 0);
                }
                AddLabel(117, 125, textHue, Utility.CreateCurrencyString(player.m_DamageTracker.FollowerDamage));

                AddLabel(48, 144, 2577, "Total");
                AddLabel(117, 144, textHue, Utility.CreateCurrencyString(totalDamage));

                //Damage Taken
                AddImage(40, 169, 2445, 2425);
                AddLabel(50, 171, textHue, "Damage Taken");
                AddLabel(82, 198, 2603, "Self");
                AddLabel(117, 198, textHue, Utility.CreateCurrencyString(player.m_DamageTracker.DamageTaken));

                AddLabel(52, 219, 2562, "Followers");
                AddLabel(117, 219, textHue, Utility.CreateCurrencyString(player.m_DamageTracker.FollowerDamageTaken));

                //Stop Timer At
                AddImage(40, 243, 2445, 2425);
                AddLabel(49, 245, textHue, "Stop Timer At");
                if (m_Player.m_DamageTracker.AutoStopEnabled)
                {
                    AddButton(18, 283, 2154, 2151, 4, GumpButtonType.Reply, 0);
                }
                else
                {
                    AddButton(18, 283, 2151, 2154, 4, GumpButtonType.Reply, 0);
                }

                //Hours
                AddButton(58, 273, 5600, 5600, 5, GumpButtonType.Reply, 0);
                AddLabel(Utility.CenteredTextOffset(65, autostopHours), 288, textHue, autostopHours);
                AddButton(58, 308, 5606, 5606, 6, GumpButtonType.Reply, 0);

                AddButton(91, 273, 5600, 5600, 7, GumpButtonType.Reply, 0);
                AddLabel(Utility.CenteredTextOffset(98, autostopMinutes), 288, textHue, autostopMinutes);
                AddButton(91, 308, 5606, 5606, 8, GumpButtonType.Reply, 0);

                AddButton(122, 273, 5600, 5600, 9, GumpButtonType.Reply, 0);
                AddLabel(Utility.CenteredTextOffset(130, autostopSeconds), 288, textHue, autostopSeconds);
                AddButton(122, 308, 5606, 5606, 10, GumpButtonType.Reply, 0);

                //Reset
                AddLabel(8, 330, 2116, "Reset");
                AddButton(50, 330, 4017, 4019, 2, GumpButtonType.Reply, 0);

                //Running
                if (m_Player.m_DamageTracker.m_Running)
                {
                    AddLabel(77, 361, 63, timeElapsed); //Time Elapsed

                    AddLabel(93, 331, 2599, "Pause");
                    AddButton(134, 329, 4020, 4022, 3, GumpButtonType.Reply, 0);
                }

                //Paused
                else
                {
                    AddLabel(77, 361, 2213, timeElapsed); //Time Elapsed

                    AddLabel(93, 331, 2599, "Start");
                    AddButton(134, 329, 4005, 4007, 3, GumpButtonType.Reply, 0);
                }

                AddItem(44, 356, 6160); //Hourglass
            }
        }
示例#9
0
        public BoatHotbarGump(PlayerMobile player) : base(10, 10)
        {
            if (player == null)
            {
                return;
            }

            m_Player = player;

            if (m_Player.m_ShipControlSettings == null)
            {
                m_Player.m_ShipControlSettings = new ShipPlayerControlSettings();
            }

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;

            AddPage(0);

            int textHue = 2036;

            //-----

            BaseBoat m_Boat = m_Player.BoatOccupied;

            if (m_Boat != null)
            {
                if (m_Boat.Deleted || m_Boat.m_SinkTimer != null)
                {
                    m_Boat = null;
                }
            }

            if (m_Player.m_ShipControlSettings.m_CollapseMode)
            {
                //Gump Controls
                AddAlphaRegion(0, 0, 30, 85);
                AddButton(3, 0, 9906, 9906, 27, GumpButtonType.Reply, 0);  //Collapse
                AddItem(-8, 29, 5363);
                AddButton(6, 62, 1210, 1209, 28, GumpButtonType.Reply, 0); //Ship Selection
            }

            else
            {
                int    hullPoints    = -1;
                int    maxHullPoints = -1;
                double hullPercent   = 0;

                int    sailPoints    = -1;
                int    maxSailPoints = -1;
                double sailPercent   = 0;

                int    gunPoints    = -1;
                int    maxGunPoints = -1;
                double gunPercent   = 0;

                int  leftCannons      = -1;
                bool leftCannonsReady = false;

                int  rightCannons      = -1;
                bool rightCannonsReady = false;

                string targetingMode = "-";
                string movementMode  = "Full";

                switch (m_Player.m_ShipControlSettings.m_MovementMode)
                {
                case MovementMode.Single: movementMode = "Single"; break;

                case MovementMode.Full: movementMode = "Full"; break;
                }

                string minorAbilityText1         = "";
                string minorAbilityText2         = "";
                string minorAbilityTimeRemaining = "";
                bool   minorAbilityReady         = false;

                string epicAbilityText1         = "";
                string epicAbilityText2         = "";
                string epicAbilityTimeRemaining = "";
                bool   epicAbilityReady         = false;

                if (m_Boat != null)
                {
                    hullPoints    = m_Boat.HitPoints;
                    maxHullPoints = m_Boat.MaxHitPoints;
                    hullPercent   = (double)hullPoints / (double)maxHullPoints;

                    sailPoints    = m_Boat.SailPoints;
                    maxSailPoints = m_Boat.MaxSailPoints;
                    sailPercent   = (double)sailPoints / (double)maxSailPoints;

                    gunPoints    = m_Boat.GunPoints;
                    maxGunPoints = m_Boat.MaxGunPoints;
                    gunPercent   = (double)gunPoints / (double)maxGunPoints;

                    leftCannons      = 10;
                    leftCannonsReady = true;

                    rightCannons      = 10;
                    rightCannonsReady = false;

                    //TEST: Add Ability Display Names and Descriptions
                    //public ActiveAbilityType m_ActiveAbility = ActiveAbilityType.None;
                    minorAbilityText1         = "Mastercraft";
                    minorAbilityText2         = "Cannons";
                    minorAbilityTimeRemaining = "Ready";
                    minorAbilityReady         = true;

                    //TEST: Add Ability Display Names and Descriptions
                    //public EpicAbilityType m_EpicAbility = EpicAbilityType.None;
                    epicAbilityText1         = "Hellfire";
                    epicAbilityText2         = "Ammunition";
                    epicAbilityTimeRemaining = "4m 30s";
                    epicAbilityReady         = false;

                    switch (m_Boat.TargetingMode)
                    {
                    case TargetingMode.Random: targetingMode = "Random"; break;

                    case TargetingMode.Hull: targetingMode = "Hull"; break;

                    case TargetingMode.Sails: targetingMode = "Sails"; break;

                    case TargetingMode.Guns: targetingMode = "Guns"; break;
                    }
                }

                AddAlphaRegion(0, 0, 304, 392);

                //Gump Controls
                AddAlphaRegion(0, 0, 30, 85);
                AddButton(3, 0, 9900, 9900, 27, GumpButtonType.Reply, 0);
                AddItem(-8, 29, 5363);
                AddButton(6, 62, 1210, 1209, 28, GumpButtonType.Reply, 0);

                //Directions
                AddButton(129, 269, 4500, 4500, 1, GumpButtonType.Reply, 0); //Forward
                AddButton(189, 269, 4501, 4501, 2, GumpButtonType.Reply, 0); //Forward Right
                AddButton(236, 312, 4502, 4502, 3, GumpButtonType.Reply, 0); //Right
                AddButton(236, 357, 4503, 4503, 4, GumpButtonType.Reply, 0); //Backwards Right //x=189
                AddButton(129, 357, 4504, 4504, 5, GumpButtonType.Reply, 0); //Backwards
                AddButton(24, 357, 4505, 4505, 6, GumpButtonType.Reply, 0);  //Backwards Left //x=69
                AddButton(24, 312, 4506, 4506, 7, GumpButtonType.Reply, 0);  //Left
                AddButton(69, 269, 4507, 4507, 8, GumpButtonType.Reply, 0);  //Forward Right

                //Center Controls
                AddButton(83, 328, 4014, 4016, 9, GumpButtonType.Reply, 0);
                AddButton(140, 328, 4017, 4019, 10, GumpButtonType.Reply, 0);
                AddButton(196, 328, 4005, 4007, 11, GumpButtonType.Reply, 0);

                //Movement Mode
                AddLabel(34, 167, 187, "Movement Mode");
                AddLabel(Utility.CenteredTextOffset(85, movementMode), 189, textHue, movementMode);
                AddButton(33, 194, 2223, 2223, 12, GumpButtonType.Reply, 0);
                AddButton(109, 194, 2224, 2224, 13, GumpButtonType.Reply, 0);

                //Action
                string actionText      = "Embark/Disembark";
                int    buttonID        = 4029;
                int    buttonPressedID = 4029;

                switch (m_Player.m_ShipControlSettings.m_ShipAction)
                {
                case ShipAction.RaiseAnchor:
                    actionText      = "Raise Anchor";
                    buttonID        = 4014;
                    buttonPressedID = 4016;
                    break;

                case ShipAction.LowerAnchor:
                    actionText      = "Lower Anchor";
                    buttonID        = 4005;
                    buttonPressedID = 4007;
                    break;

                case ShipAction.Embark:
                    actionText      = "Embark";
                    buttonID        = 4002;
                    buttonPressedID = 4004;
                    break;

                case ShipAction.EmbarkFollowers:
                    actionText      = "Embark Followers";
                    buttonID        = 4008;
                    buttonPressedID = 4010;
                    break;

                case ShipAction.Disembark:
                    actionText      = "Disembark";
                    buttonID        = 4002;
                    buttonPressedID = 4004;
                    break;

                case ShipAction.DisembarkFollowers:
                    actionText      = "Disembark Followers";
                    buttonID        = 4008;
                    buttonPressedID = 4010;
                    break;

                case ShipAction.Dock:
                    actionText      = "Dock The Ship";
                    buttonID        = 4017;
                    buttonPressedID = 4019;
                    break;

                case ShipAction.ClearDeck:
                    actionText      = "Clear The Deck";
                    buttonID        = 4020;
                    buttonPressedID = 4022;
                    break;

                case ShipAction.DividePlunder:
                    actionText      = "Divide The Plunder";
                    buttonID        = 4029;
                    buttonPressedID = 4031;
                    break;

                case ShipAction.AddFriend:
                    actionText      = "Add Friend";
                    buttonID        = 4003;
                    buttonPressedID = 4002;
                    break;

                case ShipAction.AddCoOwner:
                    actionText      = "Add Co-Owner";
                    buttonID        = 4003;
                    buttonPressedID = 4002;
                    break;

                case ShipAction.ThrowTargetOverboard:
                    actionText      = "Throw Target Overboard";
                    buttonID        = 4014;
                    buttonPressedID = 4016;
                    break;
                }

                AddLabel(Utility.CenteredTextOffset(232, actionText), 167, 169, actionText);
                AddButton(181, 194, 2223, 2223, 14, GumpButtonType.Reply, 0);
                AddButton(252, 194, 2224, 2224, 15, GumpButtonType.Reply, 0);
                AddButton(212, 189, buttonID, buttonPressedID, 16, GumpButtonType.Reply, 0);

                //Left Cannon
                AddItem(2, 206, 733);

                if (leftCannons > -1)
                {
                    if (leftCannonsReady)
                    {
                        AddButton(28, 273, 2152, 2151, 17, GumpButtonType.Reply, 0);
                    }
                    else
                    {
                        AddButton(28, 273, 9720, 9722, 17, GumpButtonType.Reply, 0);
                    }

                    AddLabel(10, 245, textHue, leftCannons.ToString());
                }

                else
                {
                    AddLabel(10, 245, textHue, "-");
                }

                //Right Cannon
                AddItem(253, 209, 709);

                if (rightCannons > 1)
                {
                    if (rightCannonsReady)
                    {
                        AddButton(256, 275, 2152, 2151, 18, GumpButtonType.Reply, 0);
                    }
                    else
                    {
                        AddButton(256, 275, 9720, 9722, 18, GumpButtonType.Reply, 0);
                    }


                    AddLabel(285, 248, textHue, rightCannons.ToString());
                }

                else
                {
                    AddLabel(285, 248, textHue, "-");
                }

                //Targeting Mode
                AddLabel(105, 222, 2115, "Targeting Mode");
                AddLabel(Utility.CenteredTextOffset(157, targetingMode), 241, textHue, targetingMode);

                if (m_Boat != null)
                {
                    AddButton(96, 245, 2223, 2223, 19, GumpButtonType.Reply, 0);
                    AddButton(190, 245, 2224, 2224, 20, GumpButtonType.Reply, 0);
                }

                //Minor Ability
                AddLabel(33, 75, 2603, "Ship Minor Ability");

                if (m_Boat != null)
                {
                    if (minorAbilityText2 != "")
                    {
                        AddLabel(Utility.CenteredTextOffset(89, minorAbilityText1), 94, textHue, minorAbilityText1);
                        AddLabel(Utility.CenteredTextOffset(89, minorAbilityText2), 109, textHue, minorAbilityText2);
                    }

                    else
                    {
                        AddLabel(Utility.CenteredTextOffset(89, minorAbilityText1), 101, textHue, minorAbilityText1);
                    }

                    if (minorAbilityReady)
                    {
                        AddLabel(21, 123, 169, "Ready");
                    }
                    else
                    {
                        AddLabel(21, 123, 2562, minorAbilityTimeRemaining);
                    }
                }

                else
                {
                    AddLabel(Utility.CenteredTextOffset(89, "-"), 101, textHue, "-");
                }

                if (m_Boat != null)
                {
                    AddButton(19, 104, 2223, 2223, 21, GumpButtonType.Reply, 0);
                    AddButton(132, 104, 2224, 2224, 22, GumpButtonType.Reply, 0);

                    if (minorAbilityReady)
                    {
                        AddButton(68, 130, 2152, 2151, 23, GumpButtonType.Reply, 0);
                    }
                    else
                    {
                        AddButton(68, 130, 9720, 9722, 23, GumpButtonType.Reply, 0);
                    }
                }

                //Epic Ability
                AddLabel(176, 76, 2606, "Ship Epic Ability");
                if (m_Boat != null)
                {
                    if (epicAbilityText2 != "")
                    {
                        AddLabel(Utility.CenteredTextOffset(232, epicAbilityText1), 94, textHue, epicAbilityText1);
                        AddLabel(Utility.CenteredTextOffset(232, epicAbilityText2), 109, textHue, epicAbilityText2);
                    }

                    else
                    {
                        AddLabel(Utility.CenteredTextOffset(232, epicAbilityText1), 101, textHue, epicAbilityText1);
                    }

                    if (epicAbilityReady)
                    {
                        AddLabel(244, 127, 169, "Ready");
                    }
                    else
                    {
                        AddLabel(244, 127, 2562, epicAbilityTimeRemaining);
                    }
                }

                else
                {
                    AddLabel(Utility.CenteredTextOffset(230, "-"), 101, textHue, "-");
                }

                if (m_Boat != null)
                {
                    AddButton(162, 105, 2223, 2223, 24, GumpButtonType.Reply, 0);
                    AddButton(270, 105, 2224, 2224, 25, GumpButtonType.Reply, 0);

                    if (epicAbilityReady)
                    {
                        AddButton(211, 131, 2152, 2151, 26, GumpButtonType.Reply, 0);
                    }
                    else
                    {
                        AddButton(211, 131, 9720, 9722, 26, GumpButtonType.Reply, 0);
                    }
                }

                //Stats
                AddLabel(48, 7, 149, "Hull");
                AddImage(79, 11, 2057);
                AddImageTiled(79 + Utility.ProgressBarX(hullPercent), 14, Utility.ProgressBarWidth(hullPercent), 7, 2488);
                if (maxHullPoints > -1)
                {
                    AddLabel(196, 7, textHue, hullPoints.ToString() + "/" + maxHullPoints.ToString());
                }

                AddLabel(43, 27, 187, "Sails");
                AddImage(79, 32, 2054);
                AddImageTiled(79 + Utility.ProgressBarX(sailPercent), 34, Utility.ProgressBarWidth(sailPercent), 7, 2488);
                if (maxSailPoints > -1)
                {
                    AddLabel(196, 27, textHue, sailPoints.ToString() + "/" + maxSailPoints.ToString());
                }

                AddLabel(43, 46, textHue, "Guns");
                AddImage(79, 51, 2057, 2499);
                AddImageTiled(79 + Utility.ProgressBarX(gunPercent), 54, Utility.ProgressBarWidth(gunPercent), 7, 2488);
                if (maxGunPoints > -1)
                {
                    AddLabel(196, 47, textHue, gunPoints.ToString() + "/" + maxGunPoints.ToString());
                }
            }
        }
        public AchievementsGump(Mobile from, PageType selectedPageType, int mainPage, AchievementCategory achievementCategory, int achievementListPage, int achievementSelectedIndex) : base(10, 10)
        {
            m_Player = from as PlayerMobile;

            if (m_Player == null)
            {
                return;
            }

            AchievementsPersistance.CheckAndCreateAchievementAccountEntry(m_Player);

            m_SelectedPageType         = selectedPageType;
            m_MainPage                 = mainPage;
            m_AchievementCategory      = achievementCategory;
            m_AchievementListPage      = achievementListPage;
            m_AchievementSelectedIndex = achievementSelectedIndex;

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;

            int WhiteTextHue  = 2655;
            int GreenTextHue  = 63;
            int YellowTextHue = 2550;
            int GreyTextHue   = 1102;

            int startX = 0;
            int startY = 0;

            AddPage(0);

            int totalPages;

            #region Background

            AddImage(409, 8, 103, 2401);
            AddImage(142, 105, 103);
            AddImage(143, 148, 103);
            AddImage(143, 234, 103);
            AddImage(143, 324, 103);
            AddImage(145, 410, 103, 2401);
            AddImage(8, 410, 103, 2401);
            AddImage(8, 233, 103, 2401);
            AddImage(142, 8, 103, 2401);
            AddImage(7, 147, 103, 2401);
            AddImage(8, 7, 103, 2401);
            AddImage(8, 104, 103, 2401);
            AddImage(17, 107, 3604, 2052);
            AddImage(143, 107, 3604, 2052);
            AddImage(17, 18, 3604, 2052);
            AddImage(143, 18, 3604, 2052);
            AddImage(8, 323, 103, 2401);
            AddImage(17, 194, 3604, 2052);
            AddImage(143, 194, 3604, 2052);
            AddImage(17, 286, 3604, 2052);
            AddImage(143, 286, 3604, 2052);
            AddImage(17, 370, 3604, 2052);
            AddImage(143, 370, 3604, 2052);
            AddImage(274, 105, 103);
            AddImage(275, 148, 103);
            AddImage(275, 234, 103);
            AddImage(275, 324, 103);
            AddImage(276, 410, 103, 2401);
            AddImage(274, 8, 103, 2401);
            AddImage(409, 91, 103, 2401);
            AddImage(409, 182, 103, 2401);
            AddImage(409, 261, 103, 2401);
            AddImage(409, 354, 103, 2401);
            AddImage(409, 410, 103, 2401);
            AddImage(267, 107, 3604, 2052);
            AddImage(267, 18, 3604, 2052);
            AddImage(267, 194, 3604, 2052);
            AddImage(267, 286, 3604, 2052);
            AddImage(267, 370, 3604, 2052);
            AddImage(375, 107, 3604, 2052);
            AddImage(375, 18, 3604, 2052);
            AddImage(375, 194, 3604, 2052);
            AddImage(375, 286, 3604, 2052);
            AddImage(375, 370, 3604, 2052);
            AddImage(411, 107, 3604, 2052);
            AddImage(411, 18, 3604, 2052);
            AddImage(411, 194, 3604, 2052);
            AddImage(411, 286, 3604, 2052);
            AddImage(412, 370, 3604, 2052);

            #endregion

            //Header
            AddImage(144, -2, 1143, 2499);
            AddLabel(235, 0, 2606, "Achievements");

            //Guide
            AddButton(7, 8, 2094, 2095, 1, GumpButtonType.Reply, 0);
            AddLabel(3, -2, 149, "Guide");

            switch (m_SelectedPageType)
            {
                #region Main

            case PageType.Main:
                int categoriesPerPage  = categoryRows * categoryColumns;
                int totalCategories    = Enum.GetNames(typeof(AchievementCategory)).Length;
                int totalCategoryPages = (int)(Math.Ceiling((double)totalCategories / (double)categoriesPerPage));

                if (m_MainPage >= totalCategoryPages)
                {
                    m_MainPage = 0;
                }

                if (m_MainPage < 0)
                {
                    m_MainPage = 0;
                }

                int categoryStartIndex = m_MainPage * categoriesPerPage;
                int categoryEndIndex   = (m_MainPage * categoriesPerPage) + (categoriesPerPage - 1);

                if (categoryEndIndex >= totalCategories)
                {
                    categoryEndIndex = totalCategories - 1;
                }

                int totalCompletedAchievements = Achievements.GetCompletedAchievementCount(m_Player);
                int totalAchievementsAvailable = Achievements.GetTotalAchievementsCount();

                //Previous
                if (m_MainPage > 0)
                {
                    AddLabel(57, 472, WhiteTextHue, "Previous Page");
                    AddButton(23, 471, 4014, 4016, 2, GumpButtonType.Reply, 0);
                }

                //Next
                if (m_MainPage < totalCategoryPages - 1)
                {
                    AddButton(502, 471, 4005, 4007, 3, GumpButtonType.Reply, 0);
                    AddLabel(432, 472, WhiteTextHue, "Next Page");
                }

                //Settings
                AddButton(243, 471, 4029, 4031, 4, GumpButtonType.Reply, 0);
                AddLabel(277, 472, 63, "Settings");

                int textHue = GreyTextHue;

                if (totalCompletedAchievements > 0)
                {
                    textHue = YellowTextHue;
                }

                if (totalCompletedAchievements == totalAchievementsAvailable)
                {
                    textHue = GreenTextHue;
                }

                AddLabel(175, 447, 149, "Total");
                AddLabel(332, 447, textHue, totalCompletedAchievements.ToString() + "/" + totalAchievementsAvailable.ToString());

                double totalAchievementProgress = (double)totalCompletedAchievements / (double)totalAchievementsAvailable;

                AddImage(216, 452, Achievements.GetProgressBarBackground(totalAchievementProgress));
                AddImageTiled(216 + Utility.ProgressBarX(totalAchievementProgress), 455, Utility.ProgressBarWidth(totalAchievementProgress), 7, 2488);

                int iBaseX = 25;
                int iBaseY = 30;

                startX = iBaseX;
                startY = iBaseY;

                int columnIndex = 0;
                int rowIndex    = 0;

                int rowSpacing    = 140;
                int columnSpacing = 125;

                int categoryDisplayCount = categoryEndIndex - categoryStartIndex;

                for (int a = 0; a < categoryDisplayCount + 1; a++)
                {
                    int categoryIndex = categoryStartIndex + a;
                    int buttonIndex   = 10 + categoryIndex;

                    if (categoryStartIndex >= totalCategories)
                    {
                        continue;
                    }

                    AchievementCategory       category = (AchievementCategory)categoryIndex;
                    AchievementCategoryDetail achievementCategoryDetail = Achievements.GetCategoryDetail(category);

                    AddGumpCollection(GumpCollections.GetGumpCollection(achievementCategoryDetail.GumpCollectionGroupId, achievementCategoryDetail.GumpCollectionItemId), startX - 40, startY + 8);

                    AddLabel(Utility.CenteredTextOffset(startX + 65, achievementCategoryDetail.m_CategoryName), startY + 5, achievementCategoryDetail.m_TextHue, achievementCategoryDetail.m_CategoryName);
                    AddImage(startX + 60, startY + 32, 10550, achievementCategoryDetail.m_IconHue);
                    AddImage(startX + 88, startY + 32, 10552, achievementCategoryDetail.m_IconHue);
                    AddButton(startX + 74, startY + 46, 9721, 9721, buttonIndex, GumpButtonType.Reply, 0);

                    //Category Progress
                    int completedAchievementsInCategory = Achievements.GetCompletedCategoryAchievements(m_Player, category);
                    int achievementsInCategory          = Achievements.GetCategoryAchievements(category).Count;

                    textHue = GreyTextHue;

                    if (completedAchievementsInCategory > 0)
                    {
                        textHue = YellowTextHue;
                    }

                    if (completedAchievementsInCategory == achievementsInCategory)
                    {
                        textHue = GreenTextHue;
                    }

                    double categoryAchievementProgress = (double)completedAchievementsInCategory / (double)achievementsInCategory;

                    string progressText = completedAchievementsInCategory.ToString() + "/" + achievementsInCategory.ToString();

                    AddImage(startX + 10, startY + 99, Achievements.GetProgressBarBackground(totalAchievementProgress));
                    AddImageTiled(startX + 10 + Utility.ProgressBarX(totalAchievementProgress), startY + 102, Utility.ProgressBarWidth(totalAchievementProgress), 7, 2488);
                    AddLabel(Utility.CenteredTextOffset(startX + 60, progressText), startY + 113, textHue, progressText);

                    startX += columnSpacing;
                    columnIndex++;

                    if (columnIndex >= categoryColumns)
                    {
                        columnIndex = 0;
                        rowIndex++;

                        startX  = iBaseX;
                        startY += rowSpacing;
                    }
                }
                break;

                #endregion

                #region Category

            case PageType.Category:
                List <Achievement> m_AchievementsInCategory = Achievements.GetCategoryAchievements(m_AchievementCategory);

                AchievementCategoryDetail categoryDetail = Achievements.GetCategoryDetail(m_AchievementCategory);

                if (m_AchievementsInCategory.Count == 0)
                {
                    return;
                }

                if (m_AchievementSelectedIndex >= m_AchievementsInCategory.Count)
                {
                    m_AchievementSelectedIndex = 0;
                }

                Achievement achievementSelected = m_AchievementsInCategory[m_AchievementSelectedIndex];

                int achievementsPerPage   = 12;
                int totalAchievements     = m_AchievementsInCategory.Count;
                int totalAchievementPages = (int)(Math.Ceiling((double)totalAchievements / (double)achievementsPerPage));

                if (m_AchievementListPage >= totalAchievementPages)
                {
                    m_AchievementListPage = 0;
                }

                if (m_AchievementListPage < 0)
                {
                    m_AchievementListPage = 0;
                }

                int achievementStartIndex = m_AchievementListPage * achievementsPerPage;
                int achievementEndIndex   = (m_AchievementListPage * achievementsPerPage) + (achievementsPerPage - 1);

                if (achievementEndIndex >= totalAchievements)
                {
                    achievementEndIndex = totalAchievements - 1;
                }

                int achievementCount = achievementEndIndex - achievementStartIndex;

                //Return to Categories
                AddButton(23, 471, 4014, 4016, 5, GumpButtonType.Reply, 0);
                AddLabel(57, 472, 149, "Categories");

                //Previous List Page
                if (m_AchievementListPage > 0)
                {
                    AddButton(172, 471, 9909, 9909, 3, GumpButtonType.Reply, 0);
                }

                if (m_AchievementListPage > 0 || m_AchievementListPage < totalAchievementPages - 1)
                {
                    AddLabel(201, 472, 149, "More");
                }

                //Next List Page
                if (m_AchievementListPage < totalAchievementPages - 1)
                {
                    AddButton(239, 471, 9903, 9903, 4, GumpButtonType.Reply, 0);
                }

                //Category
                startX = 25;
                startY = 30;

                int playerCompletedAchievementsInCategory = Achievements.GetCompletedCategoryAchievements(m_Player, m_AchievementCategory);
                int totalAchievementsInCategory           = m_AchievementsInCategory.Count;

                textHue = GreyTextHue;

                if (playerCompletedAchievementsInCategory > 0)
                {
                    textHue = YellowTextHue;
                }

                if (playerCompletedAchievementsInCategory == m_AchievementsInCategory.Count)
                {
                    textHue = GreenTextHue;
                }

                double playerCategoryAchievementProgress = (double)playerCompletedAchievementsInCategory / (double)totalAchievementsInCategory;

                string categoryProgressText = playerCompletedAchievementsInCategory.ToString() + "/" + totalAchievementsInCategory.ToString();

                startX = 25;
                startY = 30;

                //Category Image
                AddGumpCollection(GumpCollections.GetGumpCollection(categoryDetail.GumpCollectionGroupId, categoryDetail.GumpCollectionItemId), startX - 40, startY + 8);

                AddLabel(Utility.CenteredTextOffset(startX + 65, categoryDetail.m_CategoryName), startY + 5, categoryDetail.m_TextHue, categoryDetail.m_CategoryName);
                AddImage(startX + 60, startY + 32, 10550, categoryDetail.m_IconHue);
                AddImage(startX + 88, startY + 32, 10552, categoryDetail.m_IconHue);

                //Category Progress
                AddImage(startX + 10, startY + 99, Achievements.GetProgressBarBackground(playerCategoryAchievementProgress));
                AddImageTiled(startX + 10 + Utility.ProgressBarX(playerCategoryAchievementProgress), startY + 102, Utility.ProgressBarWidth(playerCategoryAchievementProgress), 7, 2488);
                AddLabel(Utility.CenteredTextOffset(startX + 60, categoryProgressText), startY + 113, textHue, categoryProgressText);

                startX = 3;
                startY = 165;

                int achievementSpacing = 25;

                for (int a = 0; a < achievementCount + 1; a++)
                {
                    int achievementIndex = achievementStartIndex + a;
                    int buttonIndex      = 10 + achievementIndex;

                    if (achievementStartIndex >= totalAchievements)
                    {
                        continue;
                    }

                    Achievement achievement = m_AchievementsInCategory[achievementIndex];

                    AchievementDetail achievementDetail = Achievements.GetAchievementDetail(achievement);
                    AchievementEntry  achievementEntry  = Achievements.GetAchievementEntry(m_Player, achievement);

                    if (achievementDetail != null && achievementEntry != null)
                    {
                        textHue = WhiteTextHue;
                        string completionPercentageText = "0%";

                        if (achievementEntry.m_Completed)
                        {
                            textHue = GreenTextHue;

                            if (!achievementEntry.m_Claimed)
                            {
                                AddItem(startX, startY + 5, 572);     //Green Orb
                            }
                            completionPercentageText = "100%";
                        }

                        else
                        {
                            double completionPercentage = (double)achievementEntry.m_Progress / (double)achievementDetail.m_ProgressNeeded;

                            completionPercentageText = Utility.CreateDecimalPercentageString(completionPercentage, 0);

                            if (completionPercentage > 0 && completionPercentage < .01)
                            {
                                completionPercentageText = "1%";
                            }

                            if (completionPercentage >= .99 && completionPercentage < 1.0)
                            {
                                completionPercentageText = "99%";
                            }

                            if (completionPercentage > 0)
                            {
                                textHue = YellowTextHue;
                            }
                        }

                        if (!achievementEntry.m_Unlocked)
                        {
                            textHue = GreyTextHue;
                            //AddItem(startX, startY + 5, 573); //Orange Orb
                        }

                        if (achievementSelected == achievement)
                        {
                            AddButton(startX + 33, startY, 4030, 4030, buttonIndex, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(startX + 33, startY, 4029, 4031, buttonIndex, GumpButtonType.Reply, 0);
                        }

                        AddLabel(startX + 68, startY + 1, textHue, completionPercentageText);
                        AddLabel(startX + 110, startY + 1, textHue, achievementDetail.m_DisplayName);
                    }

                    startY += achievementSpacing;
                }

                #region Achievement Window

                AddImage(408, 233, 103, 2401);
                AddImage(408, 150, 103, 2401);
                AddImage(408, 60, 103, 2401);
                AddImage(306, 150, 103);
                AddImage(303, 234, 103, 2401);
                AddImage(303, 150, 103, 2401);
                AddImage(303, 60, 103, 2401);
                AddImage(316, 72, 3604, 2052);
                AddImage(316, 195, 3604, 2052);
                AddImage(410, 72, 3604, 2052);
                AddImage(411, 195, 3604, 2052);
                AddImage(408, 322, 103, 2401);
                AddImage(303, 323, 103, 2401);
                AddImage(316, 284, 3604, 2052);
                AddImage(411, 284, 3604, 2052);
                AddImage(408, 362, 103, 2401);
                AddImage(303, 363, 103, 2401);
                AddImage(316, 324, 3604, 2052);
                AddImage(411, 324, 3604, 2052);
                AddImage(516, 49, 10441, 2401);

                #endregion

                AchievementDetail selectedAchievementDetail = Achievements.GetAchievementDetail(achievementSelected);
                AchievementEntry  selectedAchievementEntry  = Achievements.GetAchievementEntry(m_Player, achievementSelected);

                int centerTextX = 440;
                int textY       = 80;

                rowSpacing = 20;

                AddImage(349, 54, 2440, 1102);
                AddLabel(Utility.CenteredTextOffset(centerTextX, selectedAchievementDetail.m_DisplayName), 55, categoryDetail.m_TextHue, selectedAchievementDetail.m_DisplayName);

                if (selectedAchievementDetail != null && selectedAchievementEntry != null)
                {
                    if (!selectedAchievementEntry.m_Unlocked)
                    {
                        string unlockedText = "Stage " + selectedAchievementDetail.m_Stage.ToString() + " (Not Yet Unlocked)";

                        AddLabel(Utility.CenteredTextOffset(centerTextX, unlockedText), textY, GreyTextHue, unlockedText);

                        textY += rowSpacing;
                    }

                    for (int a = 0; a < selectedAchievementDetail.m_Description.Length; a++)
                    {
                        AddLabel(Utility.CenteredTextOffset(centerTextX, selectedAchievementDetail.m_Description[a]), textY, WhiteTextHue, selectedAchievementDetail.m_Description[a]);

                        textY += rowSpacing;
                    }

                    AddLabel(409, 184, 2599, "Progress");

                    double selectedAchievementProgress = (double)selectedAchievementEntry.m_Progress / (double)selectedAchievementDetail.m_ProgressNeeded;

                    textHue = GreyTextHue;

                    if (selectedAchievementEntry.m_Progress > 0)
                    {
                        textHue = YellowTextHue;
                    }

                    if (selectedAchievementEntry.m_Progress == selectedAchievementDetail.m_ProgressNeeded)
                    {
                        textHue = GreenTextHue;
                    }

                    AddImage(382, 205, Achievements.GetProgressBarBackground(selectedAchievementProgress));
                    AddImageTiled(382 + Utility.ProgressBarX(selectedAchievementProgress), 208, Utility.ProgressBarWidth(selectedAchievementProgress), 7, 2488);

                    string progressText = selectedAchievementEntry.m_Progress.ToString() + "/" + selectedAchievementDetail.m_ProgressNeeded.ToString();

                    AddLabel(Utility.CenteredTextOffset(centerTextX - 5, progressText), 220, textHue, progressText);

                    AddLabel(415, 250, 63, "Reward");

                    textY = 270;

                    for (int a = 0; a < selectedAchievementDetail.m_RewardDescription.Length; a++)
                    {
                        AddLabel(Utility.CenteredTextOffset(centerTextX, selectedAchievementDetail.m_RewardDescription[a]), textY, WhiteTextHue, selectedAchievementDetail.m_RewardDescription[a]);

                        textY += rowSpacing;
                    }

                    if (selectedAchievementDetail.m_RewardItemID != 0)
                    {
                        AddItem(360 + selectedAchievementDetail.m_RewardItemOffsetX, textY + 20 + selectedAchievementDetail.m_RewardItemOffsetY, selectedAchievementDetail.m_RewardItemID, selectedAchievementDetail.m_RewardItemHue);
                    }

                    else
                    {
                        AddGumpCollection(GumpCollections.GetGumpCollection(selectedAchievementDetail.GumpCollectionGroupId, selectedAchievementDetail.GumpCollectionItemId), 355, 350);
                    }

                    if (selectedAchievementEntry.m_Completed)
                    {
                        if (selectedAchievementEntry.m_Claimed)
                        {
                            AddLabel(426, 472, 63, "Claim");
                            AddButton(426, 442, 2151, 2154, 6, GumpButtonType.Reply, 0);
                        }

                        else
                        {
                            AddLabel(393, 462, 149, "Already Claimed");
                        }
                    }
                }
                break;

                #endregion

            case PageType.Settings:
                break;
            }
        }