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; }
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); }
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 ); }
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 ); } } }
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); } } }
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; } } }
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); } }
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)); } } }