public override void OnDoubleClick(Mobile from) { Container pack = from.Backpack; if (pack == null) { return; } if (Parent != pack) { from.SendMessage("That must be in your pack to use it."); return; } if (from.Map != MapSource) { from.SendMessage("You must be in {0} to use this map fragment.", MapSource.Name); return; } ShardTravelMap map = pack.FindItemByType <ShardTravelMap>(); if (map == null) { from.SendMessage("You must have a Shard Travel Map in your pack to use this map fragment."); return; } if (UnSet) { List <ShardTravelEntry> entries = new List <ShardTravelEntry>(); foreach (ShardTravelEntry entry in map.Entries) { if (entry.Map == MapSource && !entry.Discovered) { entries.Add(entry); // Add Locked entries that match the Map source } } if (entries.Count > 0) // If one or more was found... { int token = Utility.Random(entries.Count); m_Index = entries[token].Index; // Pick a random entry and store the Index } else { from.SendMessage("All locations on this map have been discovered."); } } if (m_Index > 0) { if (map.GetEntry(m_Index).Discovered) { from.SendMessage("You have already discovered this location: {0}.", map.GetEntry(m_Index).Name); } map.GetEntry(m_Index).Discovered = true; // Mark the location as discovered (but not unlocked) from.SendMessage("You note the location of the {0}: {1} for future reference.", MapNames[map.GetEntry(m_Index).MapIndex], map.GetEntry(m_Index).Name); from.SendMessage("The fragment crumbles to dust in your hands."); Delete(); } }
public ShardTravelGump(Mobile from, int page, int x, int y, ShardTravelMap travelmap, int detail, string message) : base(x, y) { m_Page = page; m_From = from; m_TravelMap = travelmap; m_Detail = detail; bool GM = m_From.AccessLevel >= AccessLevel.GameMaster; GumpButtonType Reply = GumpButtonType.Reply; if (m_TravelMap == null) { return; } if (m_TravelMap.Entries == null || m_TravelMap.Entries.Count <= 0) { m_TravelMap.Entries = m_TravelMap.GetDefaultEntries(); } if (m_TravelMap.Entries == null || m_TravelMap.Entries.Count <= 0) { from.SendMessage("No entries were found on this map."); m_From.CloseGump(typeof(ShardTravelGump)); return; } AddPage(0); AddBackground(0, 0, 600, 460, 3600); // Grey Stone Background AddBackground(20, 20, 560, 420, 3000); // Paper Background AddBackground(36, 28, 387, 387, 2620); // Black Background behind map switch (m_Page) { case 1: // Trammel Cities case 2: // Trammel Dungeons case 3: // Trammel Moongates case 4: // Trammel Shrines AddImage(38, 30, 0x15DA); break; case 5: // Felucca Cities case 6: // Felucca Dungeons case 7: // Felucca Moongates case 8: // Felucca Shrines AddImage(38, 30, 0x15D9); break; case 9: // Ilshenar Cities case 10: // Ilshenar Dungeons case 11: // Ilshenar Shrines AddImage(38, 30, 0x15DB); break; case 12: // Malas Locations AddImage(38, 30, 0x15DC); break; case 13: // Tokuno Moongates case 14: // Tokuno Locations AddImage(38, 30, 0x15DD); break; case 15: // TerMur Locations AddImage(38, 30, 0x15DE); break; } AddImage(34, 26, 0x15DF); // Border around the map AddLabel(206, 417, 0, MapPages[m_Page]); if (m_Page > 1) { AddButton(21, 29, 0x15E3, 0x15E7, 2, Reply, 0); // Previous Page } if (m_Page < 15) { AddButton(427, 29, 0x15E1, 0x15E5, 3, Reply, 0); // Next Page } foreach (ShardTravelEntry entry in m_TravelMap.Entries) { bool found = entry.Discovered; bool open = entry.Unlocked; if (entry.MapIndex == m_Page && (found || GM)) { AddButton(entry.XposButton, entry.YposButton, 1210, 1209, entry.Index, Reply, 0); AddLabel(entry.XposLabel, entry.YposLabel, open ? 0x480: found? 0x40 : 0x20, entry.Name); } } if (m_Detail > 0) { ShardTravelEntry entry = m_TravelMap.GetEntry(m_Detail); AddLabel(433, 64, 0, entry.Name); AddLabel(433, 84, 0, string.Format("X: {0}", entry.Destination.X)); AddLabel(433, 104, 0, string.Format("Y: {0}", entry.Destination.Y)); AddLabel(433, 124, 0, string.Format("Z: {0}", entry.Destination.Z)); AddLabel(433, 144, 0, string.Format("Map: {0}", entry.Map)); AddLabel(433, 164, entry.Unlocked ? 0x2A5 : 0x14D, string.Format("Status: {0}", entry.Unlocked ? "Unlocked" : "Locked")); if (entry.Unlocked || GM) { AddButton(434, 204, 4006, 4007, entry.Index + 10000, Reply, 0); // Teleport Now AddLabel(480, 204, 0x2A5, "Teleport Now"); } if (!entry.Unlocked && (entry.Discovered || GM)) { if (m_From.Map == entry.Map) { AddButton(434, 244, 4027, 4028, entry.Index + 30000, Reply, 0); // Explore This AddLabel(480, 244, 0x2A5, "Explore This"); } } } if (message.Length > 0) { AddHtml(434, 284, 120, 170, message, false, false); } AddButton(561, 21, 22153, 22155, 4, Reply, 0); // Help Button }
public ShardTravelGump(Mobile from, int page, int x, int y, ShardTravelMap travelmap, int detail, string message) : base(x, y) { m_Page = page; m_From = from; m_TravelMap = travelmap; m_Detail = detail; bool GM = m_From.AccessLevel >= AccessLevel.GameMaster; GumpButtonType Reply = GumpButtonType.Reply; if (m_TravelMap == null) return; if (m_TravelMap.Entries == null || m_TravelMap.Entries.Count <= 0) { m_TravelMap.Entries = m_TravelMap.GetDefaultEntries(); } if (m_TravelMap.Entries == null || m_TravelMap.Entries.Count <= 0) { from.SendMessage("No entries were found on this map."); m_From.CloseGump(typeof (ShardTravelGump)); return; } AddPage(0); AddBackground(0, 0, 600, 460, 3600); // Grey Stone Background AddBackground(20, 20, 560, 420, 3000); // Paper Background AddBackground(36, 28, 387, 387, 2620); // Black Background behind map switch (m_Page) { case 1: // Trammel Cities case 2: // Trammel Dungeons case 3: // Trammel Moongates case 4: // Trammel Shrines AddImage(38, 30, 0x15DA); break; case 5: // Felucca Cities case 6: // Felucca Dungeons case 7: // Felucca Moongates case 8: // Felucca Shrines AddImage(38, 30, 0x15D9); break; case 9: // Ilshenar Cities case 10: // Ilshenar Dungeons case 11: // Ilshenar Shrines AddImage(38, 30, 0x15DB); break; case 12: // Malas Locations AddImage(38, 30, 0x15DC); break; case 13: // Tokuno Moongates case 14: // Tokuno Locations AddImage(38, 30, 0x15DD); break; case 15: // TerMur Locations AddImage(38, 30, 0x15DE); break; } AddImage(34, 26, 0x15DF); // Border around the map AddLabel(206, 417, 0, MapPages[m_Page]); if (m_Page > 1) AddButton(21, 29, 0x15E3, 0x15E7, 2, Reply, 0); // Previous Page if (m_Page < 15) AddButton(427, 29, 0x15E1, 0x15E5, 3, Reply, 0); // Next Page foreach (ShardTravelEntry entry in m_TravelMap.Entries) { bool found = entry.Discovered; bool open = entry.Unlocked; if (entry.MapIndex == m_Page && (found || GM)) { AddButton(entry.XposButton, entry.YposButton, 1210, 1209, entry.Index, Reply, 0); AddLabel(entry.XposLabel, entry.YposLabel, open ? 0x480: found? 0x40 : 0x20, entry.Name); } } if (m_Detail > 0) { ShardTravelEntry entry = m_TravelMap.GetEntry(m_Detail); AddLabel(433, 64, 0, entry.Name); AddLabel(433, 84, 0, string.Format("X: {0}", entry.Destination.X)); AddLabel(433, 104, 0, string.Format("Y: {0}", entry.Destination.Y)); AddLabel(433, 124, 0, string.Format("Z: {0}", entry.Destination.Z)); AddLabel(433, 144, 0, string.Format("Map: {0}", entry.Map)); AddLabel(433, 164, entry.Unlocked ? 0x2A5 : 0x14D, string.Format("Status: {0}", entry.Unlocked ? "Unlocked" : "Locked")); if (entry.Unlocked || GM) { AddButton(434, 204, 4006, 4007, entry.Index + 10000, Reply, 0); // Teleport Now AddLabel(480, 204, 0x2A5, "Teleport Now"); } if (!entry.Unlocked && (entry.Discovered || GM)) { if (m_From.Map == entry.Map) { AddButton(434, 244, 4027, 4028, entry.Index + 30000, Reply, 0); // Explore This AddLabel(480, 244, 0x2A5, "Explore This"); } } } if (message.Length > 0) { AddHtml(434, 284, 120, 170, message, false, false); } AddButton(561, 21, 22153, 22155, 4, Reply, 0); // Help Button }
public ShardTravelGump(Mobile from, int page, int x, int y, ShardTravelMap travelmap, int detail) : this(from, page, x, y, travelmap, detail, "") { }