Esempio n. 1
0
 public EditSkillGump(Mobile from, Mobile target, Skill skill, SkillsGumpGroup selected)
     : base(from, skill)
 {
     m_From     = from;
     m_Target   = target;
     m_Skill    = skill;
     m_Selected = selected;
 }
Esempio n. 2
0
		public EditSkillGump(Mobile from, Mobile target, Skill skill, SkillsGumpGroup selected)
			: base(from, skill)
		{
			m_From = from;
			m_Target = target;
			m_Skill = skill;
			m_Selected = selected;
		}
Esempio n. 3
0
        public EditSkillGump(Mobile from, Mobile target, Skill skill, bool caps, SkillsGumpGroup selected)
            : base(GumpOffsetX, GumpOffsetY)
        {
            m_From     = from;
            m_Target   = target;
            m_Skill    = skill;
            m_Caps     = caps;
            m_Selected = selected;

            string initialText = "";

            if (caps)
            {
                initialText = m_Skill.Cap.ToString("F1");
            }
            else
            {
                initialText = m_Skill.Base.ToString("F1");
            }

            AddPage(0);

            AddBackground(0, 0, BackWidth, BackHeight, BackGumpID);
            AddImageTiled(BorderSize, BorderSize, TotalWidth - (OldStyle ? SetWidth + OffsetSize : 0), TotalHeight, OffsetGumpID);

            int x = BorderSize + OffsetSize;
            int y = BorderSize + OffsetSize;

            AddImageTiled(x, y, EntryWidth, EntryHeight, EntryGumpID);
            AddLabelCropped(x + TextOffsetX, y, EntryWidth - TextOffsetX, EntryHeight, TextHue, skill.Name);
            x += EntryWidth + OffsetSize;

            if (SetGumpID != 0)
            {
                AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID);
            }

            x  = BorderSize + OffsetSize;
            y += EntryHeight + OffsetSize;

            AddImageTiled(x, y, EntryWidth, EntryHeight, EntryGumpID);
            AddTextEntry(x + TextOffsetX, y, EntryWidth - TextOffsetX, EntryHeight, TextHue, 0, initialText);
            x += EntryWidth + OffsetSize;

            if (SetGumpID != 0)
            {
                AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID);
            }

            AddButton(x + SetOffsetX, y + SetOffsetY, SetButtonID1, SetButtonID2, 1, GumpButtonType.Reply, 0);
        }
Esempio n. 4
0
        public EditSkillGump( Mobile from, Mobile target, Skill skill, SkillsGumpGroup selected )
            : base(GumpOffsetX, GumpOffsetY)
        {
            m_From = from;
            m_Target = target;
            m_Skill = skill;
            m_Selected = selected;

            string initialText = m_Skill.Base.ToString( "F1" );

            AddPage( 0 );

            AddBackground( 0, 0, BackWidth, BackHeight, BackGumpID );
            AddImageTiled( BorderSize, BorderSize, TotalWidth - (OldStyle ? SetWidth + OffsetSize : 0), TotalHeight, OffsetGumpID );

            int x = BorderSize + OffsetSize;
            int y = BorderSize + OffsetSize;

            AddImageTiled( x, y, EntryWidth, EntryHeight, EntryGumpID );
            AddLabelCropped( x + TextOffsetX, y, EntryWidth - TextOffsetX, EntryHeight, TextHue, skill.Name );
            x += EntryWidth + OffsetSize;

            if ( SetGumpID != 0 )
                AddImageTiled( x, y, SetWidth, EntryHeight, SetGumpID );

            x = BorderSize + OffsetSize;
            y += EntryHeight + OffsetSize;

            AddImageTiled( x, y, EntryWidth, EntryHeight, EntryGumpID );
            AddTextEntry( x + TextOffsetX, y, EntryWidth - TextOffsetX, EntryHeight, TextHue, 0, initialText );
            x += EntryWidth + OffsetSize;

            if ( SetGumpID != 0 )
                AddImageTiled( x, y, SetWidth, EntryHeight, SetGumpID );

            AddButton( x + SetOffsetX, y + SetOffsetY, SetButtonID1, SetButtonID2, 1, GumpButtonType.Reply, 0 );
        }
Esempio n. 5
0
		public SkillsGump( Mobile from, Mobile target, SkillsGumpGroup selected ) : base( GumpOffsetX, GumpOffsetY )
		{
			m_From = from;
			m_Target = target;

			m_Groups = SkillsGumpGroup.Groups;
			m_Selected = selected;

			int count = m_Groups.Length;

			if ( selected != null )
				count += selected.Skills.Length;

			int totalHeight = OffsetSize + ((EntryHeight + OffsetSize) * (count + 1));

			AddPage( 0 );

			AddBackground( 0, 0, BackWidth, BorderSize + totalHeight + BorderSize, BackGumpID );
			AddImageTiled( BorderSize, BorderSize, TotalWidth - (OldStyle ? SetWidth + OffsetSize : 0), totalHeight, OffsetGumpID );

			int x = BorderSize + OffsetSize;
			int y = BorderSize + OffsetSize;

			int emptyWidth = TotalWidth - PrevWidth - NextWidth - (OffsetSize * 4) - (OldStyle ? SetWidth + OffsetSize : 0);

			if ( OldStyle )
				AddImageTiled( x, y, TotalWidth - (OffsetSize * 3) - SetWidth, EntryHeight, HeaderGumpID );
			else
				AddImageTiled( x, y, PrevWidth, EntryHeight, HeaderGumpID );

			x += PrevWidth + OffsetSize;

			if ( !OldStyle )
				AddImageTiled( x - (OldStyle ? OffsetSize : 0), y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0), EntryHeight, HeaderGumpID );

			x += emptyWidth + OffsetSize;

			if ( !OldStyle )
				AddImageTiled( x, y, NextWidth, EntryHeight, HeaderGumpID );

			for ( int i = 0; i < m_Groups.Length; ++i )
			{
				x = BorderSize + OffsetSize;
				y += EntryHeight + OffsetSize;

				SkillsGumpGroup group = m_Groups[i];

				AddImageTiled( x, y, PrevWidth, EntryHeight, HeaderGumpID );

				if ( group == selected )
					AddButton( x + PrevOffsetX, y + PrevOffsetY, 0x15E2, 0x15E6, GetButtonID( 0, i ), GumpButtonType.Reply, 0 );
				else
					AddButton( x + PrevOffsetX, y + PrevOffsetY, 0x15E1, 0x15E5, GetButtonID( 0, i ), GumpButtonType.Reply, 0 );

				x += PrevWidth + OffsetSize;

				x -= (OldStyle ? OffsetSize : 0);

				AddImageTiled( x, y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0), EntryHeight, EntryGumpID );
				AddLabel( x + TextOffsetX, y, TextHue, group.Name );

				x += emptyWidth + (OldStyle ? OffsetSize * 2 : 0);
				x += OffsetSize;

				if ( SetGumpID != 0 )
					AddImageTiled( x, y, SetWidth, EntryHeight, SetGumpID );

				if ( group == selected )
				{
					int indentMaskX = BorderSize;
					int indentMaskY = y + EntryHeight + OffsetSize;

					for ( int j = 0; j < group.Skills.Length; ++j )
					{
						Skill sk = target.Skills[group.Skills[j]];

						x = BorderSize + OffsetSize;
						y += EntryHeight + OffsetSize;

						x += OffsetSize;
						x += IndentWidth;

						AddImageTiled( x, y, PrevWidth, EntryHeight, HeaderGumpID );

						AddButton( x + PrevOffsetX, y + PrevOffsetY, 0x15E1, 0x15E5, GetButtonID( 1, j ), GumpButtonType.Reply, 0 );

						x += PrevWidth + OffsetSize;

						x -= (OldStyle ? OffsetSize : 0);

						AddImageTiled( x, y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0) - OffsetSize - IndentWidth, EntryHeight, EntryGumpID );
						AddLabel( x + TextOffsetX, y, TextHue, sk == null ? "(null)" : sk.Name );

						x += emptyWidth + (OldStyle ? OffsetSize * 2 : 0) - OffsetSize - IndentWidth;
						x += OffsetSize;

						if ( SetGumpID != 0 )
							AddImageTiled( x, y, SetWidth, EntryHeight, SetGumpID );

						if ( sk != null )
						{
							int buttonID1, buttonID2;
							int xOffset, yOffset;

							switch ( sk.Lock )
							{
								default:
								case SkillLock.Up: buttonID1 = 0x983; buttonID2 = 0x983; xOffset = 6; yOffset = 4; break;
								case SkillLock.Down: buttonID1 = 0x985; buttonID2 = 0x985; xOffset = 6; yOffset = 4; break;
								case SkillLock.Locked: buttonID1 = 0x82C; buttonID2 = 0x82C; xOffset = 5; yOffset = 2; break;
							}

							AddButton( x + xOffset, y + yOffset, buttonID1, buttonID2, GetButtonID( 2, j ), GumpButtonType.Reply, 0 );

							y += 1;
							x -= OffsetSize;
							x -= 1;
							x -= 50;

							AddImageTiled( x, y, 50, EntryHeight - 2, OffsetGumpID );

							x += 1;
							y += 1;

							AddImageTiled( x, y, 48, EntryHeight - 4, EntryGumpID );

							AddLabelCropped( x + TextOffsetX, y - 1, 48 - TextOffsetX, EntryHeight - 3, TextHue, sk.Base.ToString( "F1" ) );

							y -= 2;
						}
					}

					AddImageTiled( indentMaskX, indentMaskY, IndentWidth + OffsetSize, (group.Skills.Length * (EntryHeight + OffsetSize)) - (i < (m_Groups.Length - 1) ? OffsetSize : 0), BackGumpID + 4 );
				}
			}
		}
Esempio n. 6
0
        public SkillsGump(Mobile from, Mobile target, SkillsGumpGroup selected) : base(GumpOffsetX, GumpOffsetY)
        {
            m_From   = from;
            m_Target = target;

            m_Groups   = SkillsGumpGroup.Groups;
            m_Selected = selected;

            int count = m_Groups.Length;

            if (selected != null)
            {
                count += selected.Skills.Length;
            }

            int totalHeight = OffsetSize + ((EntryHeight + OffsetSize) * (count + 1));

            AddPage(0);

            AddBackground(0, 0, BackWidth, BorderSize + totalHeight + BorderSize, BackGumpID);
            AddImageTiled(BorderSize, BorderSize, TotalWidth - (OldStyle ? SetWidth + OffsetSize : 0), totalHeight, OffsetGumpID);

            int x = BorderSize + OffsetSize;
            int y = BorderSize + OffsetSize;

            int emptyWidth = TotalWidth - PrevWidth - NextWidth - (OffsetSize * 4) - (OldStyle ? SetWidth + OffsetSize : 0);

            if (OldStyle)
            {
                AddImageTiled(x, y, TotalWidth - (OffsetSize * 3) - SetWidth, EntryHeight, HeaderGumpID);
            }
            else
            {
                AddImageTiled(x, y, PrevWidth, EntryHeight, HeaderGumpID);
            }

            x += PrevWidth + OffsetSize;

            if (!OldStyle)
            {
                AddImageTiled(x - (OldStyle ? OffsetSize : 0), y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0), EntryHeight, HeaderGumpID);
            }

            x += emptyWidth + OffsetSize;

            if (!OldStyle)
            {
                AddImageTiled(x, y, NextWidth, EntryHeight, HeaderGumpID);
            }

            for (int i = 0; i < m_Groups.Length; ++i)
            {
                x  = BorderSize + OffsetSize;
                y += EntryHeight + OffsetSize;

                SkillsGumpGroup group = m_Groups[i];

                AddImageTiled(x, y, PrevWidth, EntryHeight, HeaderGumpID);

                if (group == selected)
                {
                    AddButton(x + PrevOffsetX, y + PrevOffsetY, 0x15E2, 0x15E6, GetButtonID(0, i), GumpButtonType.Reply, 0);
                }
                else
                {
                    AddButton(x + PrevOffsetX, y + PrevOffsetY, 0x15E1, 0x15E5, GetButtonID(0, i), GumpButtonType.Reply, 0);
                }

                x += PrevWidth + OffsetSize;

                x -= (OldStyle ? OffsetSize : 0);

                AddImageTiled(x, y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0), EntryHeight, EntryGumpID);
                AddLabel(x + TextOffsetX, y, TextHue, group.Name);

                x += emptyWidth + (OldStyle ? OffsetSize * 2 : 0);
                x += OffsetSize;

                if (SetGumpID != 0)
                {
                    AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID);
                }

                if (group == selected)
                {
                    int indentMaskX = BorderSize;
                    int indentMaskY = y + EntryHeight + OffsetSize;

                    for (int j = 0; j < group.Skills.Length; ++j)
                    {
                        Skill sk = target.Skills[group.Skills[j]];

                        x  = BorderSize + OffsetSize;
                        y += EntryHeight + OffsetSize;

                        x += OffsetSize;
                        x += IndentWidth;

                        AddImageTiled(x, y, PrevWidth, EntryHeight, HeaderGumpID);

                        AddButton(x + PrevOffsetX, y + PrevOffsetY, 0x15E1, 0x15E5, GetButtonID(1, j), GumpButtonType.Reply, 0);

                        x += PrevWidth + OffsetSize;

                        x -= (OldStyle ? OffsetSize : 0);

                        AddImageTiled(x, y, emptyWidth + (OldStyle ? OffsetSize * 2 : 0) - OffsetSize - IndentWidth, EntryHeight, EntryGumpID);
                        AddLabel(x + TextOffsetX, y, TextHue, sk == null ? "(null)" : sk.Name);

                        x += emptyWidth + (OldStyle ? OffsetSize * 2 : 0) - OffsetSize - IndentWidth;
                        x += OffsetSize;

                        if (SetGumpID != 0)
                        {
                            AddImageTiled(x, y, SetWidth, EntryHeight, SetGumpID);
                        }

                        if (sk != null)
                        {
                            int buttonID1, buttonID2;
                            int xOffset, yOffset;

                            switch (sk.Lock)
                            {
                            default:
                            case SkillLock.Up: buttonID1 = 0x983; buttonID2 = 0x983; xOffset = 6; yOffset = 4; break;

                            case SkillLock.Down: buttonID1 = 0x985; buttonID2 = 0x985; xOffset = 6; yOffset = 4; break;

                            case SkillLock.Locked: buttonID1 = 0x82C; buttonID2 = 0x82C; xOffset = 5; yOffset = 2; break;
                            }

                            AddButton(x + xOffset, y + yOffset, buttonID1, buttonID2, GetButtonID(2, j), GumpButtonType.Reply, 0);

                            y += 1;
                            x -= OffsetSize;
                            x -= 1;
                            x -= 50;

                            AddImageTiled(x, y, 50, EntryHeight - 2, OffsetGumpID);

                            x += 1;
                            y += 1;

                            AddImageTiled(x, y, 48, EntryHeight - 4, EntryGumpID);

                            AddLabelCropped(x + TextOffsetX, y - 1, 48 - TextOffsetX, EntryHeight - 3, TextHue, sk.Base.ToString("F1"));

                            y -= 2;
                        }
                    }

                    AddImageTiled(indentMaskX, indentMaskY, IndentWidth + OffsetSize, (group.Skills.Length * (EntryHeight + OffsetSize)) - (i < (m_Groups.Length - 1) ? OffsetSize : 0), BackGumpID + 4);
                }
            }
        }
Esempio n. 7
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            int buttonID = info.ButtonID - 1;

            int index = buttonID / 3;
            int type  = buttonID % 3;

            switch (type)
            {
            case 0:
            {
                if (index >= 0 && index < m_Groups.Length)
                {
                    SkillsGumpGroup newSelection = m_Groups[index];

                    if (m_Selected != newSelection)
                    {
                        m_From.SendGump(new SkillsGump(m_From, m_Target, newSelection));
                    }
                    else
                    {
                        m_From.SendGump(new SkillsGump(m_From, m_Target, null));
                    }
                }

                break;
            }

            case 1:
            {
                if (m_Selected != null && index >= 0 && index < m_Selected.Skills.Length)
                {
                    Skill sk = m_Target.Skills[m_Selected.Skills[index]];

                    if (sk != null)
                    {
                        if (m_From.AccessLevel >= AccessLevel.GameMaster)
                        {
                            m_From.SendGump(new EditSkillGump(m_From, m_Target, sk, m_Selected));
                        }
                        else
                        {
                            m_From.SendMessage("You may not change that.");
                            m_From.SendGump(new SkillsGump(m_From, m_Target, m_Selected));
                        }
                    }
                    else
                    {
                        m_From.SendGump(new SkillsGump(m_From, m_Target, m_Selected));
                    }
                }

                break;
            }

            case 2:
            {
                if (m_Selected != null && index >= 0 && index < m_Selected.Skills.Length)
                {
                    Skill sk = m_Target.Skills[m_Selected.Skills[index]];

                    if (sk != null)
                    {
                        if (m_From.AccessLevel >= AccessLevel.GameMaster)
                        {
                            switch (sk.Lock)
                            {
                            case SkillLock.Up: sk.SetLockNoRelay(SkillLock.Down); sk.Update(); break;

                            case SkillLock.Down: sk.SetLockNoRelay(SkillLock.Locked); sk.Update(); break;

                            case SkillLock.Locked: sk.SetLockNoRelay(SkillLock.Up); sk.Update(); break;
                            }
                        }
                        else
                        {
                            m_From.SendMessage("You may not change that.");
                        }

                        m_From.SendGump(new SkillsGump(m_From, m_Target, m_Selected));
                    }
                }

                break;
            }
            }
        }
Esempio n. 8
0
        public CharacterSheetGump(Mobile from, int page, SkillsGumpGroup skillGroup = null) : base(0, 0)
        {
            m_Groups = SkillsGumpGroup.Groups;
            if (from != null)
            {
                from.CloseGump <CharacterSheetGump>();
            }
            if (skillGroup != null)
            {
                m_SkillGroup = skillGroup;
            }
            Closable   = true;
            Disposable = true;
            Draggable  = true;
            Resizable  = false;
            AddPage(0);
            AddImage(40, 36, 500);
            from.SendSound(0x55);
            int y = 100;

            // this.AddButton(525, 50, 1058, 1058, 1001, GumpButtonType.Reply, 0);
            if (page > 1)
            {
                AddButton(40, 35, 501, 501, 1000, GumpButtonType.Reply, 0);
            }

            int x       = 90;
            int buttonX = 220;

            if (page == 3)
            {
                AddLabel(110, 60, 0, "Talents");
                AddLabel(90, 80, 0, "Talent Points: " + ((PlayerMobile)from).TalentPoints.ToString());
                y = 100;
                Type[] talentTypes = BaseTalent.TalentTypes;
                HashSet <BaseTalent> playerTalents = ((PlayerMobile)from).Talents;
                for (int i = 0; i < talentTypes.Length; i++)
                {
                    var        talent      = TalentSerializer.Construct(talentTypes[i]) as BaseTalent;
                    var        description = talentTypes[i].GetMethod("ToString").GetCustomAttribute <DescriptionAttribute>().Description;
                    int        talentLevel = 0;
                    BaseTalent used;
                    if (playerTalents.TryGetValue(talent, out used))
                    {
                        talentLevel = used.Level;
                    }
                    ;
                    AddLabel(x, y, 0, talent.ToString() + ": " + talentLevel.ToString());
                    if (talentLevel < talent.MaxLevel)
                    {
                        AddButton(buttonX, y + 2, 2223, 2223, 300 + i, GumpButtonType.Reply, 0);
                    }

                    y += 20;
                    AddHtml(x, y, 300, 300, description);
                }
            }
            else if (page == 2 && m_SkillGroup != null)
            {
                AddLabel(110, 60, 0, m_SkillGroup.Name);
                AddLabel(90, 80, 0, "Skill Points: " + ((PlayerMobile)from).SkillPoints.ToString());
                y = 100;
                for (int i = 0; i < m_SkillGroup.Skills.Length; ++i)
                {
                    buttonX = 220;
                    if (i > 6)
                    {
                        // go to next page
                        x       = 270;
                        buttonX = 390;
                    }
                    if (i == 7)
                    {
                        y = 60;
                    }
                    Skill skill = from.Skills[m_SkillGroup.Skills[i]];
                    if (skill != null)
                    {
                        string currentSkillValue = ((PlayerMobile)from).Skills[m_SkillGroup.Skills[i]].Base.ToString();
                        if (skill.Lock != SkillLock.Locked)
                        {
                            AddLabel(x, y, 0, skill.Name + " " + currentSkillValue);
                            if (((PlayerMobile)from).SkillPoints > 0)
                            {
                                AddButton(buttonX, y + 2, 2223, 2223, 200 + i, GumpButtonType.Reply, 0);
                            }
                        }
                        else
                        {
                            AddLabel(x, y, 0, skill.Name + " " + currentSkillValue + " - Locked");
                        }
                        y += 20;
                    }
                }
            }
            else
            {
                if (((PlayerMobile)from).HardCore)
                {
                    AddLabel(90, 60, 0, "Character Sheet - (Hardcore)");
                }
                else
                {
                    AddLabel(90, 60, 0, "Character Sheet");
                }
                AddLabel(90, 80, 0, "Level: " + (Array.IndexOf(Enum.GetNames(typeof(Level)), ((PlayerMobile)from).Level) + 1).ToString());
                AddLabel(90, 100, 0, "Experience Points:");
                AddLabel(90, 120, 0, ((PlayerMobile)from).Experience.ToString());
                AddLabel(90, 140, 0, "Stat Points: " + ((PlayerMobile)from).StatPoints.ToString());
                AddLabel(90, 160, 0, "Strength: " + from.RawStr.ToString());
                if (((PlayerMobile)from).StatPoints > 0)
                {
                    AddButton(190, 155, 2151, 2153, 1, GumpButtonType.Reply, 0);
                }
                AddLabel(90, 180, 0, "Dexterity: " + from.RawDex.ToString());
                if (((PlayerMobile)from).StatPoints > 0)
                {
                    AddButton(190, 175, 2151, 2153, 2, GumpButtonType.Reply, 0);
                }
                AddLabel(90, 200, 0, "Intelligence: " + from.RawInt.ToString());
                if (((PlayerMobile)from).StatPoints > 0)
                {
                    AddButton(190, 195, 2151, 2153, 3, GumpButtonType.Reply, 0);
                }
                AddLabel(270, 60, 0, "Skill Points: " + ((PlayerMobile)from).SkillPoints.ToString());
                AddLabel(270, 80, 0, "Skill Groups");
                for (int i = 0; i < m_Groups.Length; ++i)
                {
                    AddLabel(270, y, 0, m_Groups[i].Name);
                    AddButton(390, y + 2, 2223, 2223, 100 + i, GumpButtonType.Reply, 0);
                    y += 20;
                }
                AddLabel(270, y, 0, "Talents");
                AddButton(390, y + 2, 2223, 2223, 300, GumpButtonType.Reply, 0);
            }
        }
Esempio n. 9
0
        public override void OnResponse(NetState state, RelayInfo info)
        {
            PlayerMobile player = (PlayerMobile)state.Mobile;

            if (player != null)
            {
                if (info.ButtonID > 0)
                {
                    int page = 1;
                    if (info.ButtonID >= 100 && info.ButtonID < 300)
                    {
                        page = 2;
                    }
                    else if (info.ButtonID >= 300 && info.ButtonID < 1000)
                    {
                        page = 3;
                    }

                    if (info.ButtonID == 1000)
                    {
                        page--;
                    }

                    switch (info.ButtonID)
                    {
                    case 1:
                        player.RawStr++;
                        player.StatPoints--;
                        break;

                    case 2:
                        player.RawDex++;
                        player.StatPoints--;
                        break;

                    case 3:
                        player.RawInt++;
                        player.StatPoints--;
                        break;
                    }
                    if (page == 2) // Skills
                    {
                        if (info.ButtonID < 200)
                        {
                            m_SkillGroup = m_Groups[info.ButtonID - 100];
                        }
                        else if (info.ButtonID < 300 && m_SkillGroup != null)
                        {
                            Skill skill = player.Skills[m_SkillGroup.Skills[info.ButtonID - 200]];
                            if (skill != null)
                            {
                                player.Skills[m_SkillGroup.Skills[info.ButtonID - 200]].Base++;
                                player.SkillPoints--;
                            }
                        }
                        else
                        {
                            m_SkillGroup = null;
                        }
                    }
                    else if (page == 3)   // Talents
                    {
                        var        talent = TalentSerializer.Construct(BaseTalent.TalentTypes[info.ButtonID - 300]) as BaseTalent;
                        BaseTalent used;
                        if (player.Talents.TryGetValue(talent, out used))
                        {
                            talent.Level = used.Level;
                            talent.Level++;
                            player.Talents.Remove(used);
                            player.Talents.Add(talent);
                            player.TalentPoints--;
                        }
                        ;
                    }

                    player.SendGump(new CharacterSheetGump(player, page, m_SkillGroup));
                }
            }
        }