using System;
using System.Collections;
using Server;
using Server.Items;

namespace Server.Commands
{
	public class GenTeleporterDelete
	{
		public GenTeleporterDelete()
		{
		}

		public static void Initialize()
		{
			CommandSystem.Register("TelGenDelete", AccessLevel.Administrator, new CommandEventHandler(GenTeleporterDelete_OnCommand));
		}

		[Usage("TelGenDelete")]
		[Description("Deletes world/dungeon teleporters for all facets.")]
		public static void GenTeleporterDelete_OnCommand(CommandEventArgs e)
		{
			e.Mobile.SendMessage("Deleting teleporters, please wait.");

			int count = new TeleportersCreator().CreateTeleporters();
			count += new SHGenTeleporterDelete.SHTeleporterCreator().CreateSHTeleporters();

			e.Mobile.SendMessage("Teleporter deleting complete. {0} teleporters were deleted.", count);
		}

		public class TeleportersCreator
		{
			private int m_Count;

			public TeleportersCreator()
			{
			}

			private static Queue m_Queue = new Queue();

			public static bool FindTeleporter(Map map, Point3D p)
			{
				IPooledEnumerable eable = map.GetItemsInRange(p, 0);

				foreach (Item item in eable)
				{
					if (item is Teleporter && !(item is KeywordTeleporter) && !(item is SkillTeleporter))
					{
						int delta = item.Z - p.Z;

						if (delta >= -12 && delta <= 12)
							m_Queue.Enqueue(item);
					}
				}

				eable.Free();

				while (m_Queue.Count > 0)
					((Item)m_Queue.Dequeue()).Delete();

				return false;
			}

			public void CreateTeleporter(Point3D pointLocation, Point3D pointDestination, Map mapLocation, Map mapDestination, bool back)
			{
				if (!FindTeleporter(mapLocation, pointLocation))
				{
					m_Count++;
				}

				if (back && !FindTeleporter(mapDestination, pointDestination))
				{
					m_Count++;
				}
			}

			public void CreateTeleporter(int xLoc, int yLoc, int zLoc, int xDest, int yDest, int zDest, Map map, bool back)
			{
				CreateTeleporter(new Point3D(xLoc, yLoc, zLoc), new Point3D(xDest, yDest, zDest), map, map, back);
			}

			public void CreateTeleporter(int xLoc, int yLoc, int zLoc, int xDest, int yDest, int zDest, Map mapLocation, Map mapDestination, bool back)
			{
				CreateTeleporter(new Point3D(xLoc, yLoc, zLoc), new Point3D(xDest, yDest, zDest), mapLocation, mapDestination, back);
			}

			public void DestroyTeleporter(int x, int y, int z, Map map)
			{
				Point3D p = new Point3D(x, y, z);
				IPooledEnumerable eable = map.GetItemsInRange(p, 0);

				foreach (Item item in eable)
				{
					if (item is Teleporter && !(item is KeywordTeleporter) && !(item is SkillTeleporter) && item.Z == p.Z)
						m_Queue.Enqueue(item);
				}

				eable.Free();

				while (m_Queue.Count > 0)
					((Item)m_Queue.Dequeue()).Delete();
			}

			public void CreateTeleportersMap(Map map)
			{
				// Shame
				CreateTeleporter(512, 1559, 0, 5394, 127, 0, map, true);
				CreateTeleporter(513, 1559, 0, 5395, 127, 0, map, true);
				CreateTeleporter(514, 1559, 0, 5396, 127, 0, map, true);
				CreateTeleporter(5490, 19, -25, 5514, 10, 5, map, true);
				CreateTeleporter(5875, 19, -5, 5507, 162, 5, map, true);
				CreateTeleporter(5604, 102, 5, 5514, 147, 25, map, true);

				CreateTeleporter(5513, 176, 5, 5540, 187, 0, map, false);
				CreateTeleporter(5538, 170, 5, 5517, 176, 0, map, false);

				// Hythloth
				CreateTeleporter(4721, 3813, 0, 5904, 16, 64, map, true);
				CreateTeleporter(4722, 3813, 0, 5905, 16, 64, map, true);
				CreateTeleporter(4723, 3813, 0, 5906, 16, 64, map, true);
				CreateTeleporter(6040, 192, 12, 6059, 88, 24, map, true);
				CreateTeleporter(6040, 193, 12, 6059, 89, 24, map, true);
				CreateTeleporter(6040, 194, 12, 6059, 90, 24, map, true);

				DestroyTeleporter(5920, 168, 16, map);
				DestroyTeleporter(5920, 169, 17, map);
				DestroyTeleporter(5920, 170, 16, map);

				CreateTeleporter(5920, 168, 16, 6083, 144, -20, map, false);
				CreateTeleporter(5920, 169, 16, 6083, 145, -20, map, false);
				CreateTeleporter(5920, 170, 16, 6083, 146, -20, map, false);

				CreateTeleporter(6083, 144, -20, 5920, 168, 22, map, false);
				CreateTeleporter(6083, 145, -20, 5920, 169, 22, map, false);
				CreateTeleporter(6083, 146, -20, 5920, 170, 22, map, false);

				DestroyTeleporter(5906, 96, 0, map);

				CreateTeleporter(5972, 168, 0, 5905, 100, 0, map, false);
				CreateTeleporter(5906, 96, 0, 5977, 169, 0, map, false);

				// Covetous
				CreateTeleporter(2498, 916, 0, 5455, 1864, 0, map, true);
				CreateTeleporter(2499, 916, 0, 5456, 1864, 0, map, true);
				CreateTeleporter(2500, 916, 0, 5457, 1864, 0, map, true);
				CreateTeleporter(2384, 836, 0, 5615, 1996, 0, map, true);
				CreateTeleporter(2384, 837, 0, 5615, 1997, 0, map, true);
				CreateTeleporter(2384, 838, 0, 5615, 1998, 0, map, true);
				CreateTeleporter(2420, 883, 0, 5392, 1959, 0, map, true);
				CreateTeleporter(2421, 883, 0, 5393, 1959, 0, map, true);
				CreateTeleporter(2422, 883, 0, 5394, 1959, 0, map, true);
				CreateTeleporter(2455, 858, 0, 5388, 2027, 0, map, true);
				CreateTeleporter(2456, 858, 0, 5389, 2027, 0, map, true);
				CreateTeleporter(2457, 858, 0, 5390, 2027, 0, map, true);
				CreateTeleporter(2544, 850, 0, 5578, 1927, 0, map, true);
				CreateTeleporter(2545, 850, 0, 5579, 1927, 0, map, true);
				CreateTeleporter(2546, 850, 0, 5580, 1927, 0, map, true);

				CreateTeleporter(5551, 1805, 12, 5556, 1825, -3, map, false);
				CreateTeleporter(5552, 1805, 12, 5557, 1825, -3, map, false);
				CreateTeleporter(5553, 1805, 12, 5557, 1825, -3, map, false);

				DestroyTeleporter(5551, 1807, 0, map);
				DestroyTeleporter(5552, 1807, 0, map);
				DestroyTeleporter(5553, 1807, 0, map);

				CreateTeleporter(5556, 1826, -10, 5551, 1806, 7, map, false);
				CreateTeleporter(5557, 1826, -10, 5552, 1806, 7, map, false);

				DestroyTeleporter(5556, 1825, -7, map);
				DestroyTeleporter(5556, 1827, -13, map);
				DestroyTeleporter(5557, 1825, -7, map);
				DestroyTeleporter(5557, 1827, -13, map);
				DestroyTeleporter(5558, 1825, -7, map);

				DestroyTeleporter(5468, 1804, 0, map);
				DestroyTeleporter(5468, 1805, 0, map);
				DestroyTeleporter(5468, 1806, 0, map);

				CreateTeleporter(5466, 1804, 12, 5593, 1840, -3, map, false);
				CreateTeleporter(5466, 1805, 12, 5593, 1841, -3, map, false);
				CreateTeleporter(5466, 1806, 12, 5593, 1842, -3, map, false);

				DestroyTeleporter(5595, 1840, -14, map);
				DestroyTeleporter(5595, 1840, -14, map);

				CreateTeleporter(5594, 1840, -9, 5467, 1804, 7, map, false);
				CreateTeleporter(5594, 1841, -9, 5467, 1805, 7, map, false);

				// Wrong
				CreateTeleporter(5824, 631, 5, 2041, 215, 15, map, true);
				CreateTeleporter(5825, 631, 5, 2042, 215, 15, map, true);
                //CreateTeleporter(5826, 631, 10, 2043, 215, 14, map, true);
				CreateTeleporter(5698, 662, 0, 5793, 527, 10, map, false);

				DestroyTeleporter(5863, 525, 15, map);
				DestroyTeleporter(5863, 526, 15, map);
				DestroyTeleporter(5863, 527, 15, map);
				DestroyTeleporter(5868, 537, 15, map);
				DestroyTeleporter(5868, 538, 15, map);
				DestroyTeleporter(5869, 538, 15, map);
				DestroyTeleporter(5733, 554, 20, map);
				DestroyTeleporter(5862, 527, 15, map);

				// Deceit
				CreateTeleporter(4110, 430, 5, 5187, 639, 0, map, false);
				CreateTeleporter(4111, 430, 5, 5188, 639, 0, map, false);
				CreateTeleporter(4112, 430, 5, 5189, 639, 0, map, false);
				CreateTeleporter(5187, 639, 0, 4110, 430, 5, map, false);
				CreateTeleporter(5188, 639, 0, 4111, 430, 5, map, false);
				CreateTeleporter(5189, 639, 0, 4112, 430, 5, map, false);
				CreateTeleporter(5216, 586, -13, 5304, 533, 2, map, false);
				CreateTeleporter(5217, 586, -13, 5305, 533, 2, map, false);
				CreateTeleporter(5218, 586, -13, 5306, 533, 2, map, false);
				CreateTeleporter(5304, 532, 7, 5216, 585, -8, map, false);
				CreateTeleporter(5305, 532, 7, 5217, 585, -8, map, false);
				CreateTeleporter(5306, 532, 7, 5218, 585, -8, map, false);
				CreateTeleporter(5218, 761, -28, 5305, 651, 7, map, false);
				CreateTeleporter(5219, 761, -28, 5306, 651, 7, map, false);
				CreateTeleporter(5305, 650, 12, 5218, 760, -23, map, false);
				CreateTeleporter(5306, 650, 12, 5219, 760, -23, map, false);
				CreateTeleporter(5346, 578, 5, 5137, 649, 5, map, true);

				CreateTeleporter(5186, 639, 0, 4110, 430, 5, map, false);

				// Despise
				CreateTeleporter(5504, 569, 46, 5574, 628, 37, map, false);
				CreateTeleporter(5504, 570, 46, 5574, 629, 37, map, false);
				CreateTeleporter(5504, 571, 46, 5574, 630, 37, map, false);
				CreateTeleporter(5572, 632, 17, 5521, 672, 27, map, false);
				CreateTeleporter(5572, 633, 17, 5521, 673, 27, map, false);
				CreateTeleporter(5572, 634, 17, 5521, 674, 27, map, false);
				CreateTeleporter(5573, 628, 42, 5503, 569, 51, map, false);
				CreateTeleporter(5573, 629, 42, 5503, 570, 51, map, false);
				CreateTeleporter(5573, 630, 42, 5503, 571, 51, map, false);
				CreateTeleporter(5588, 632, 30, 1296, 1082, 0, map, true);
				CreateTeleporter(5588, 630, 30, 1296, 1080, 0, map, true);
				CreateTeleporter(5588, 631, 30, 1296, 1081, 0, map, true);
				CreateTeleporter(5522, 672, 32, 5573, 632, 22, map, false);
				CreateTeleporter(5522, 673, 32, 5573, 633, 22, map, false);
				CreateTeleporter(5522, 674, 32, 5573, 634, 22, map, false);
				CreateTeleporter(5386, 756, -8, 5408, 859, 47, map, false);
				CreateTeleporter(5386, 757, -8, 5408, 860, 47, map, false);
				CreateTeleporter(5386, 755, -8, 5408, 858, 47, map, false);
				CreateTeleporter(5409, 860, 52, 5387, 757, -3, map, false);
				CreateTeleporter(5409, 858, 52, 5387, 755, -3, map, false);
				CreateTeleporter(5409, 859, 52, 5387, 756, -3, map, false);

				// Destard
				CreateTeleporter(5242, 1007, 4, 1175, 2635, 0, map, true);
				CreateTeleporter(5243, 1007, 3, 1176, 2635, 0, map, true);
				CreateTeleporter(5244, 1007, 4, 1177, 2635, 0, map, true);
				CreateTeleporter(5142, 797, 22, 5129, 908, -23, map, false);
				CreateTeleporter(5143, 797, 22, 5130, 908, -23, map, false);
				CreateTeleporter(5144, 797, 22, 5131, 908, -23, map, false);
				CreateTeleporter(5145, 797, 22, 5132, 908, -23, map, false);
				CreateTeleporter(5153, 808, -25, 5134, 984, 17, map, false);
				CreateTeleporter(5153, 809, -25, 5134, 985, 17, map, false);
				CreateTeleporter(5153, 810, -25, 5134, 986, 17, map, false);
				CreateTeleporter(5153, 811, -25, 5134, 987, 17, map, false);
				CreateTeleporter(5129, 909, -28, 5142, 798, 17, map, false);
				CreateTeleporter(5130, 909, -28, 5143, 798, 17, map, false);
				CreateTeleporter(5131, 909, -28, 5144, 798, 17, map, false);
				CreateTeleporter(5132, 909, -28, 5145, 798, 17, map, false);
				CreateTeleporter(5133, 984, 22, 5152, 808, -19, map, false);
				CreateTeleporter(5133, 985, 22, 5152, 809, -19, map, false);
				CreateTeleporter(5133, 986, 22, 5152, 810, -19, map, false);
				CreateTeleporter(5133, 987, 22, 5152, 811, -19, map, false);

				// Buccaneer's Den underground tunnels

				DestroyTeleporter(2666, 2073, 5, map);
				DestroyTeleporter(2669, 2072, -20, map);
				DestroyTeleporter(2669, 2073, -20, map);
				DestroyTeleporter(2649, 2194, 4, map);
				DestroyTeleporter(2649, 2195, -14, map);

				CreateTeleporter(2603, 2121, -20, 2605, 2130, 8, map, false);
				CreateTeleporter(2603, 2120, -20, 2605, 2130, 8, map, false);
				CreateTeleporter(2669, 2071, -20, 2666, 2099, 3, map, false);
				CreateTeleporter(2669, 2072, -20, 2666, 2099, 3, map, false);
				CreateTeleporter(2669, 2073, -20, 2666, 2099, 3, map, false);
				CreateTeleporter(2676, 2241, -18, 2691, 2234, 2, map, false);
				CreateTeleporter(2676, 2242, -18, 2691, 2234, 2, map, false);
				CreateTeleporter(2758, 2092, -20, 2756, 2097, 38, map, false);
				CreateTeleporter(2759, 2092, -20, 2756, 2097, 38, map, false);
				CreateTeleporter(2685, 2063, 39, 2685, 2063, -20, map, false); // that should not be a teleporter: on OSI you simply fall under the ground 

				// Misc
				CreateTeleporter(5217, 18, 15, 5204, 74, 17, map, false);
				CreateTeleporter(5200, 71, 17, 5211, 22, 15, map, false);
                CreateTeleporter(1997, 81, 7, 5881, 242, 0, map, false);
                CreateTeleporter(5705, 145, -45, 5705, 304, 7, map, false);
				CreateTeleporter(5705, 146, -45, 5705, 305, 7, map, false);
				CreateTeleporter(5705, 147, -45, 5705, 306, 7, map, false);
				CreateTeleporter(5874, 146, 27, 5208, 2323, 31, map, false);
				CreateTeleporter(5875, 146, 27, 5208, 2322, 32, map, false);
				CreateTeleporter(5876, 146, 27, 5208, 2322, 32, map, false);
				CreateTeleporter(5877, 146, 27, 5208, 2322, 32, map, false);
				CreateTeleporter(5923, 169, 1, 5925, 171, 22, map, false);
				CreateTeleporter(2399, 198, 0, 5753, 436, 79, map, false);
				CreateTeleporter(2400, 198, 0, 5754, 436, 80, map, false);
				DestroyTeleporter(5166, 245, 15, map);
				DestroyTeleporter(1361, 883, 0, map);
				CreateTeleporter(5191, 152, 0, 1367, 891, 0, map, false);
				CreateTeleporter(5849, 239, -25, 5831, 324, 27, map, false);
				CreateTeleporter(5850, 239, -25, 5832, 324, 26, map, false);
				CreateTeleporter(5851, 239, -25, 5833, 324, 28, map, false);
				CreateTeleporter(5852, 239, -25, 5834, 324, 27, map, false);
				CreateTeleporter(5853, 239, -23, 5835, 324, 27, map, false);
				CreateTeleporter(5882, 241, 0, 1998, 81, 5, map, false);
				CreateTeleporter(5882, 242, 0, 1998, 81, 5, map, false);
                CreateTeleporter(5882, 243, 0, 1998, 81, 5, map, false);
                CreateTeleporter(5706, 304, 12, 5706, 145, -45, map, false);
				CreateTeleporter(5706, 305, 12, 5706, 146, -45, map, false);
				CreateTeleporter(5706, 306, 12, 5706, 147, -45, map, false);
				CreateTeleporter(5748, 362, 2, 313, 786, -24, map, false);
				CreateTeleporter(5749, 362, 0, 313, 786, -24, map, false);
				CreateTeleporter(5750, 362, 3, 314, 786, -24, map, false);
				CreateTeleporter(5753, 324, 21, 5670, 2391, 40, map, false);
				CreateTeleporter(5831, 323, 34, 5849, 238, -25, map, false);
				CreateTeleporter(5832, 323, 34, 5850, 238, -25, map, false);
				CreateTeleporter(5833, 323, 33, 5851, 238, -25, map, false);
				CreateTeleporter(5834, 323, 33, 5852, 238, -25, map, false);
				CreateTeleporter(5835, 323, 33, 5853, 238, -23, map, false);
				CreateTeleporter(5658, 423, 8, 5697, 3659, 2, map, false);
				CreateTeleporter(5686, 385, 2, 2777, 894, -23, map, false);
				CreateTeleporter(5686, 386, 2, 2777, 894, -23, map, false);
				CreateTeleporter(5686, 387, 2, 2777, 895, -23, map, false);
				CreateTeleporter(5731, 445, -18, 6087, 3676, 18, map, false);
				CreateTeleporter(5753, 437, 78, 2400, 199, 0, map, false);
				CreateTeleporter(5850, 432, 0, 5127, 3143, 97, map, false);
				CreateTeleporter(5850, 433, -2, 5127, 3143, 97, map, false);
				CreateTeleporter(5850, 434, -1, 5127, 3143, 97, map, false);
				CreateTeleporter(5850, 431, 2, 5127, 3143, 97, map, false);
				CreateTeleporter(5826, 465, -1, 1987, 2063, -40, map, false);
				CreateTeleporter(5827, 465, -1, 1988, 2063, -40, map, false);
				CreateTeleporter(5828, 465, 0, 1989, 2063, -40, map, false);
				CreateTeleporter(313, 786, -24, 5748, 361, 2, map, false);
				CreateTeleporter(314, 786, -24, 5749, 361, 2, map, false);
				CreateTeleporter(2776, 895, -23, 5685, 387, 2, map, false);
				//CreateTeleporter( 4545, 851, 30, 5736, 3196, 8, map, false );
				DestroyTeleporter(4545, 851, 30, map);
				CreateTeleporter(4540, 898, 32, 4442, 1122, 5, map, false);
				CreateTeleporter(4300, 968, 5, 4442, 1122, 5, map, false);
				CreateTeleporter(4436, 1107, 5, 4300, 992, 5, map, false);
				CreateTeleporter(4443, 1137, 5, 4487, 1475, 5, map, false);
				CreateTeleporter(4449, 1107, 5, 4539, 890, 28, map, false);
				CreateTeleporter(4449, 1115, 5, 4671, 1135, 10, map, false);
				CreateTeleporter(4663, 1134, 13, 4442, 1122, 5, map, false);
				CreateTeleporter(5701, 1320, 16, 5786, 1336, -8, map, false);
				CreateTeleporter(5702, 1320, 16, 5787, 1336, -8, map, false);
				CreateTeleporter(5703, 1320, 16, 5788, 1336, -8, map, false);
				CreateTeleporter(5786, 1335, -13, 5701, 1319, 13, map, false);
				CreateTeleporter(5787, 1335, -13, 5702, 1319, 13, map, false);
				CreateTeleporter(5788, 1335, -13, 5703, 1319, 13, map, false);
				CreateTeleporter(6005, 1380, 1, 5151, 4063, 37, map, false);
				CreateTeleporter(6005, 1378, 0, 5151, 4062, 37, map, false);
				CreateTeleporter(6005, 1379, 2, 5151, 4062, 37, map, false);
				CreateTeleporter(6025, 1344, -26, 5137, 3664, 27, map, false);
				CreateTeleporter(6025, 1345, -26, 5137, 3664, 27, map, false);
				CreateTeleporter(6025, 1346, -26, 5137, 3665, 31, map, false);
				CreateTeleporter(5687, 1424, 38, 2923, 3406, 8, map, false);
				CreateTeleporter(5792, 1416, 41, 5758, 2908, 15, map, false);
				CreateTeleporter(5792, 1417, 41, 5758, 2909, 15, map, false);
				CreateTeleporter(5792, 1415, 41, 5758, 2907, 15, map, false);
				CreateTeleporter(5899, 1411, 43, 1630, 3320, 0, map, false);
				CreateTeleporter(5900, 1411, 42, 1630, 3320, 0, map, false);
				CreateTeleporter(5918, 1412, -29, 5961, 1409, 59, map, false);
				CreateTeleporter(5918, 1410, -29, 5961, 1408, 59, map, false);
				CreateTeleporter(5918, 1411, -29, 5961, 1408, 59, map, false);
				CreateTeleporter(5961, 1408, 59, 5918, 1411, -29, map, false);
				CreateTeleporter(5961, 1409, 59, 5918, 1412, -29, map, false);
				CreateTeleporter(6125, 1411, 15, 6075, 3332, 4, map, false);
				CreateTeleporter(6126, 1411, 15, 6075, 3332, 4, map, false);
				CreateTeleporter(6127, 1411, 15, 6075, 3332, 4, map, false);
				CreateTeleporter(6137, 1409, 2, 6140, 1432, 4, map, false);
				CreateTeleporter(6138, 1409, 2, 6140, 1432, 4, map, false);
				CreateTeleporter(6140, 1431, 4, 6137, 1408, 2, map, false);
				CreateTeleporter(4496, 1475, 15, 4442, 1122, 5, map, false);
				CreateTeleporter(6031, 1501, 42, 1491, 1642, 24, map, false);
				CreateTeleporter(6031, 1499, 42, 1491, 1640, 24, map, false);
				CreateTeleporter(1491, 1640, 24, 6032, 1499, 31, map, false);
				CreateTeleporter(1491, 1642, 24, 6032, 1501, 31, map, false);
				DestroyTeleporter(5341, 1602, 0, map);
				CreateTeleporter(5340, 1599, 40, 5426, 3122, -74, map, false);
				CreateTeleporter(5341, 1599, 40, 5426, 3122, -74, map, false);
				CreateTeleporter(1987, 2062, -40, 5826, 464, 0, map, false);
				CreateTeleporter(1988, 2062, -40, 5827, 464, -1, map, false);
				CreateTeleporter(1989, 2062, -40, 5828, 464, -1, map, false);
				CreateTeleporter(5203, 2327, 27, 5876, 147, 25, map, false);
				CreateTeleporter(5207, 2322, 27, 5877, 147, 25, map, false);
				CreateTeleporter(5207, 2323, 26, 5876, 147, 25, map, false);
				CreateTeleporter(5670, 2391, 40, 5753, 325, 10, map, false);
				CreateTeleporter(5974, 2697, 35, 2985, 2890, 35, map, false);
				CreateTeleporter(5267, 2757, 35, 424, 3283, 35, map, false);
				CreateTeleporter(5757, 2908, 14, 5791, 1416, 38, map, false);
				CreateTeleporter(5757, 2909, 15, 5791, 1417, 40, map, false);
				CreateTeleporter(5757, 2907, 15, 5791, 1415, 38, map, false);
				CreateTeleporter(1653, 2963, 0, 1677, 2987, 0, map, false);
				CreateTeleporter(1677, 2987, 0, 1675, 2987, 20, map, false);
				CreateTeleporter(5426, 3123, -80, 5341, 1602, 0, map, false);
				CreateTeleporter(5126, 3143, 99, 5849, 432, 1, map, false);
				//CreateTeleporter( 5736, 3196, 8, 4545, 851, 30, map, false );
				DestroyTeleporter(5736, 3196, 8, map);
				CreateTeleporter(424, 3283, 35, 5267, 2757, 35, map, false);
				CreateTeleporter(1629, 3320, 0, 5899, 1411, 43, map, false);
				CreateTeleporter(6075, 3332, 4, 6126, 1410, 15, map, false);
				CreateTeleporter(2923, 3405, 6, 5687, 1423, 39, map, false);
				CreateTeleporter(1142, 3621, 5, 1414, 3828, 5, map, false);
				CreateTeleporter(5137, 3664, 27, 6025, 1344, -26, map, false);
				CreateTeleporter(5137, 3665, 31, 6025, 1345, -26, map, false);
				CreateTeleporter(5697, 3660, -5, 5658, 424, 0, map, false);
				CreateTeleporter(6086, 3676, 16, 5731, 446, -16, map, false);
				CreateTeleporter(1409, 3824, 5, 1124, 3623, 5, map, false);
				CreateTeleporter(1419, 3832, 5, 1466, 4015, 5, map, false);
				CreateTeleporter(1406, 3996, 5, 1414, 3828, 5, map, false);
				CreateTeleporter(5150, 4062, 38, 6005, 1378, 0, map, false);
				CreateTeleporter(5150, 4063, 38, 6005, 1380, 1, map, false);
				CreateTeleporter(5906, 4069, 26, 2494, 3576, 5, map, true);
				CreateTeleporter(2985, 2890, 35, 5974, 2697, 35, map, false);

				// Mondain's Legacy dungeons

				// Sanctuary
				CreateTeleporter(6172, 21, 0, 765, 1645, 0, map, false); // Entrance gate
				CreateTeleporter(6172, 22, 0, 765, 1646, 0, map, false);
				CreateTeleporter(6172, 23, 0, 765, 1647, 0, map, false);
				CreateTeleporter(766, 1645, 0, 6174, 21, 0, map, false);
				CreateTeleporter(766, 1646, 0, 6174, 22, 0, map, false);
				CreateTeleporter(766, 1647, 0, 6174, 23, 0, map, false);

				CreateTeleporter(6173, 176, -10, 6233, 15, -10, map, false); // Zone change
				CreateTeleporter(6174, 176, -10, 6234, 15, -10, map, false);
				CreateTeleporter(6175, 176, -10, 6235, 15, -10, map, false);
				CreateTeleporter(6176, 176, -10, 6236, 15, -10, map, false);
				CreateTeleporter(6177, 176, -10, 6237, 15, -10, map, false);
				CreateTeleporter(6178, 176, -10, 6238, 15, -10, map, false);
				CreateTeleporter(6179, 176, -10, 6239, 15, -10, map, false);
				CreateTeleporter(6233, 14, -10, 6172, 174, -10, map, false);
				CreateTeleporter(6234, 14, -10, 6173, 174, -10, map, false);
				CreateTeleporter(6235, 14, -10, 6174, 174, -10, map, false);
				CreateTeleporter(6236, 14, -10, 6175, 174, -10, map, false);
				CreateTeleporter(6237, 14, -10, 6176, 174, -10, map, false);
				CreateTeleporter(6238, 14, -10, 6177, 174, -10, map, false);
				CreateTeleporter(6239, 14, -10, 6177, 174, -10, map, false);
				CreateTeleporter(6240, 14, -10, 6178, 174, -10, map, false);

				CreateTeleporter(6256, 97, -4, 6257, 95, -10, map, false); // Ladders
				CreateTeleporter(6260, 97, -4, 6260, 95, -10, map, false);
				CreateTeleporter(6263, 97, -4, 6262, 95, -10, map, false);
				CreateTeleporter(6269, 97, -4, 6269, 95, -10, map, false);
				CreateTeleporter(6273, 97, -4, 6272, 95, -10, map, false);
				CreateTeleporter(6262, 95, -10, 6262, 99, -10, map, false);

				CreateTeleporter(6159, 130, 0, 6317, 63, -20, map, false); // Holes
				CreateTeleporter(6164, 73, 0, 6320, 22, -20, map, false);
				CreateTeleporter(6161, 163, -10, 6321, 106, -20, map, false);
				CreateTeleporter(6276, 40, -10, 6374, 124, -20, map, false);
				CreateTeleporter(6211, 106, 0, 6355, 34, -20, map, false);

				CreateTeleporter(6316, 62, -5, 6160, 131, 0, map, false); // Cave ladders
				CreateTeleporter(6319, 19, -20, 6165, 74, 0, map, false); // This actually goes to (6165, 75) inside the wall...
				CreateTeleporter(6356, 32, -9, 6210, 105, 0, map, false);
				CreateTeleporter(6374, 125, -20, 6277, 41, -10, map, false);

				CreateTeleporter(6373, 49, -20, 801, 1682, 0, map, false);
				CreateTeleporter(6374, 49, -20, 801, 1682, 0, map, false);
				CreateTeleporter(6375, 49, -20, 801, 1682, 0, map, false);
				CreateTeleporter(6376, 49, -20, 801, 1682, 0, map, false);
				CreateTeleporter(6377, 49, -20, 801, 1682, 0, map, false);

				// Painted Caves
				CreateTeleporter(1714, 2996, 0, 6308, 892, 0, map, false); // Entrance
				CreateTeleporter(1714, 2997, 0, 6308, 892, 0, map, false);
				CreateTeleporter(6310, 890, 0, 1716, 2997, 0, map, false);
				CreateTeleporter(6310, 891, 0, 1716, 2997, 0, map, false);
				CreateTeleporter(6310, 892, 0, 1716, 2997, 0, map, false);
				CreateTeleporter(6310, 893, 0, 1716, 2997, 0, map, false);
			}

			public void CreateTeleportersMap2(Map map)
			{
				// Dungeon of rock
				CreateTeleporter(2186, 294, -27, 2186, 33, -27, map, true);
				CreateTeleporter(2187, 294, -27, 2187, 33, -27, map, true);
				CreateTeleporter(2188, 294, -27, 2188, 33, -27, map, true);
				CreateTeleporter(2189, 294, -27, 2189, 33, -27, map, true);
				CreateTeleporter(2189, 320, -7, 1788, 569, 74, map, true);
				CreateTeleporter(2188, 320, -7, 1787, 569, 74, map, true);
				CreateTeleporter(2187, 320, -7, 1787, 569, 74, map, false);

				// Spider Cave
				DestroyTeleporter(1783, 993, -28, map);
				DestroyTeleporter(1784, 993, -28, map);
				DestroyTeleporter(1785, 993, -28, map);
				DestroyTeleporter(1786, 993, -28, map);
				DestroyTeleporter(1787, 993, -28, map);
				DestroyTeleporter(1788, 993, -28, map);

				DestroyTeleporter(1419, 910, -10, map);
				DestroyTeleporter(1420, 910, -10, map);
				DestroyTeleporter(1421, 910, -10, map);
				DestroyTeleporter(1422, 910, -10, map);

				CreateTeleporter(1419, 909, -10, 1784, 994, -28, map, true);
				CreateTeleporter(1420, 909, -10, 1785, 994, -28, map, true);
				CreateTeleporter(1421, 909, -10, 1786, 994, -28, map, true);
				CreateTeleporter(1787, 994, -28, 1421, 909, -10, map, false);
				CreateTeleporter(1788, 994, -28, 1421, 909, -10, map, false);
				CreateTeleporter(1783, 994, -28, 1419, 909, -10, map, false);

				CreateTeleporter(1861, 980, -28, 1490, 877, 10, map, true);
				CreateTeleporter(1861, 981, -28, 1490, 878, 10, map, true);
				CreateTeleporter(1861, 982, -28, 1490, 879, 10, map, true);
				CreateTeleporter(1861, 983, -28, 1490, 880, 10, map, true);
				CreateTeleporter(1861, 984, -28, 1490, 880, 10, map, false);
				CreateTeleporter(1516, 879, 10, 1363, 1105, -26, map, true);

				// Spectre Dungeon
				CreateTeleporter(1362, 1031, -13, 1981, 1107, -16, map, true);
				CreateTeleporter(1363, 1031, -13, 1982, 1107, -16, map, true);
				CreateTeleporter(1364, 1031, -13, 1983, 1107, -16, map, true);
				CreateTeleporter(1980, 1107, -16, 1362, 1031, -13, map, false);
				CreateTeleporter(1984, 1107, -16, 1364, 1031, -13, map, false);

				// BLOOD DUNGEON
				CreateTeleporter(1745, 1236, -30, 2112, 829, -11, map, true);
				CreateTeleporter(1746, 1236, -30, 2113, 829, -11, map, true);
				CreateTeleporter(1747, 1236, -30, 2114, 829, -11, map, true);
				CreateTeleporter(1748, 1236, -30, 2115, 829, -11, map, true);
				CreateTeleporter(2116, 829, -11, 1748, 1236, -30, map, false);

				// Mushroom Cave
				CreateTeleporter(1456, 1328, -27, 1479, 1494, -28, map, true);
				CreateTeleporter(1456, 1329, -27, 1479, 1495, -28, map, true);
				CreateTeleporter(1456, 1330, -27, 1479, 1496, -28, map, true);
				CreateTeleporter(1479, 1493, -28, 1456, 1328, -27, map, false);
				CreateTeleporter(1479, 1497, -28, 1456, 1330, -27, map, false);

				// RATMAN CAVE
				CreateTeleporter(1029, 1155, -24, 1349, 1512, -3, map, true);
				CreateTeleporter(1029, 1154, -24, 1349, 1511, -3, map, true);
				CreateTeleporter(1029, 1153, -24, 1349, 1510, -3, map, true);
				CreateTeleporter(1349, 1509, -3, 1030, 1153, -24, map, false);
				CreateTeleporter(1268, 1508, -28, 1250, 1508, -28, map, true);
				CreateTeleporter(1268, 1509, -28, 1250, 1509, -28, map, true);
				CreateTeleporter(1268, 1510, -28, 1250, 1510, -28, map, true);
				CreateTeleporter(1250, 1511, -28, 1268, 1510, -28, map, false);
				CreateTeleporter(1250, 1512, -28, 1268, 1510, -28, map, false);

				// Serpentine Passage
				DestroyTeleporter(532, 1532, -7, map);
				DestroyTeleporter(533, 1532, -7, map);
				DestroyTeleporter(534, 1532, -7, map);

				CreateTeleporter(810, 874, -39, 532, 1532, -7, map, false);
				CreateTeleporter(811, 874, -39, 533, 1532, -7, map, false);
				CreateTeleporter(812, 874, -39, 534, 1532, -7, map, false);
				CreateTeleporter(531, 1533, -4, 810, 875, -40, map, false);
				CreateTeleporter(532, 1533, -4, 811, 875, -39, map, false);
				CreateTeleporter(533, 1533, -4, 812, 875, -39, map, false);
				CreateTeleporter(534, 1533, -4, 813, 875, -40, map, false);

				CreateTeleporter(393, 1587, -13, 78, 1366, -36, map, false);
				CreateTeleporter(394, 1587, -13, 79, 1366, -36, map, false);
				CreateTeleporter(395, 1587, -13, 80, 1366, -36, map, false);
				CreateTeleporter(396, 1587, -13, 81, 1366, -36, map, false);
				CreateTeleporter(78, 1365, -41, 393, 1586, -16, map, false);
				CreateTeleporter(79, 1365, -41, 394, 1586, -16, map, false);
				CreateTeleporter(80, 1365, -41, 395, 1586, -16, map, false);
				CreateTeleporter(81, 1365, -41, 396, 1586, -16, map, false);
				DestroyTeleporter(82, 1365, -38, map);

				// ANKH DUNGEON
				DestroyTeleporter(4, 1267, -11, map);
				DestroyTeleporter(4, 1268, -11, map);
				DestroyTeleporter(4, 1269, -11, map);
				CreateTeleporter(668, 928, -84, 3, 1267, -8, map, true);
				CreateTeleporter(668, 929, -84, 3, 1268, -8, map, true);
				CreateTeleporter(668, 930, -82, 3, 1269, -8, map, true);

				DestroyTeleporter(154, 1473, -8, map);
				DestroyTeleporter(155, 1473, -8, map);
				DestroyTeleporter(156, 1473, -8, map);
				CreateTeleporter(575, 1156, -121, 154, 1473, -8, map, false);
				CreateTeleporter(576, 1156, -121, 155, 1473, -8, map, false);
				CreateTeleporter(577, 1156, -121, 156, 1473, -8, map, false);
				CreateTeleporter(154, 1472, -8, 575, 1155, -121, map, false);
				CreateTeleporter(155, 1472, -8, 576, 1155, -120, map, false);
				CreateTeleporter(156, 1472, -8, 577, 1155, -120, map, false);

				DestroyTeleporter(10, 1518, -28, map);
				DestroyTeleporter(10, 1518, -27, map);
				DestroyTeleporter(10, 1518, -27, map);
				CreateTeleporter(10, 872, -28, 10, 1518, -27, map, false);
				CreateTeleporter(11, 872, -28, 11, 1518, -28, map, false);
				CreateTeleporter(12, 872, -27, 12, 1518, -28, map, false);
				CreateTeleporter(10, 1519, -28, 10, 873, -28, map, false);
				CreateTeleporter(11, 1519, -27, 11, 873, -28, map, false);
				CreateTeleporter(12, 1519, -27, 12, 873, -27, map, false);

				// Ratman Lair 
				CreateTeleporter(636, 813, -62, 164, 743, -28, map, false);
				CreateTeleporter(164, 746, -16, 636, 815, -52, map, false);

				// WISP DUNGEON
				CreateTeleporter(348, 1427, 15, 18, 1198, -5, map, true);
				CreateTeleporter(349, 1427, 15, 19, 1198, -5, map, true);
				CreateTeleporter(350, 1427, 15, 20, 1198, -5, map, true);
				CreateTeleporter(351, 1427, 15, 21, 1198, -5, map, true);
				CreateTeleporter(712, 1490, -3, 686, 1490, -28, map, false);
				CreateTeleporter(712, 1491, -3, 686, 1491, -28, map, false);
				CreateTeleporter(712, 1492, -3, 686, 1492, -28, map, false);
				CreateTeleporter(712, 1493, -3, 686, 1493, -28, map, false);
				CreateTeleporter(694, 1490, -53, 719, 1490, -28, map, false);
				CreateTeleporter(694, 1491, -53, 719, 1491, -28, map, false);
				CreateTeleporter(694, 1492, -53, 719, 1492, -28, map, false);
				CreateTeleporter(694, 1493, -53, 719, 1493, -28, map, false);
				CreateTeleporter(775, 1467, -28, 658, 1498, -28, map, false);
				DestroyTeleporter(658, 1498, -28, map);
				CreateTeleporter(838, 1550, -6, 728, 1505, -28, map, false);
				CreateTeleporter(838, 1551, -6, 728, 1506, -28, map, false);
				CreateTeleporter(838, 1552, -6, 728, 1507, -28, map, false);
				CreateTeleporter(838, 1553, -6, 728, 1508, -28, map, false);
				CreateTeleporter(722, 1505, -53, 833, 1550, -28, map, false);
				CreateTeleporter(722, 1506, -53, 833, 1551, -28, map, false);
				CreateTeleporter(722, 1507, -53, 833, 1552, -28, map, false);
				CreateTeleporter(722, 1508, -53, 833, 1553, -28, map, false);
				CreateTeleporter(954, 1425, -53, 874, 1490, 2, map, false);
				CreateTeleporter(954, 1426, -53, 874, 1491, 2, map, false);
				CreateTeleporter(954, 1427, -53, 874, 1492, 2, map, false);
				CreateTeleporter(954, 1428, -53, 874, 1493, 2, map, false);
				CreateTeleporter(954, 1429, -53, 874, 1493, 2, map, false);
				CreateTeleporter(879, 1490, 24, 960, 1425, -28, map, false);
				CreateTeleporter(879, 1491, 24, 960, 1426, -28, map, false);
				CreateTeleporter(879, 1492, 24, 960, 1427, -28, map, false);
				CreateTeleporter(879, 1493, 24, 960, 1428, -28, map, false);
				CreateTeleporter(948, 1464, -56, 951, 1442, -6, map, true);
				CreateTeleporter(948, 1465, -56, 951, 1443, -6, map, true);
				CreateTeleporter(948, 1466, -56, 951, 1444, -6, map, true);
				CreateTeleporter(948, 1467, -56, 951, 1445, -6, map, true);
				CreateTeleporter(871, 1433, -6, 897, 1449, -28, map, false);
				CreateTeleporter(871, 1434, -6, 897, 1450, -28, map, false);
				CreateTeleporter(871, 1435, -6, 897, 1451, -28, map, false);
				CreateTeleporter(871, 1436, -6, 897, 1452, -28, map, false);
				CreateTeleporter(871, 1437, -6, 897, 1453, -28, map, false);
				CreateTeleporter(892, 1449, -51, 866, 1433, -28, map, false);
				CreateTeleporter(892, 1450, -51, 866, 1434, -28, map, false);
				CreateTeleporter(892, 1451, -51, 866, 1435, -28, map, false);
				CreateTeleporter(892, 1452, -51, 866, 1436, -28, map, false);
				CreateTeleporter(892, 1453, -51, 866, 1437, -28, map, false);
				CreateTeleporter(812, 1546, -6, 848, 1434, -28, map, false);
				CreateTeleporter(812, 1547, -6, 848, 1435, -28, map, false);
				CreateTeleporter(812, 1548, -6, 848, 1436, -28, map, false);
				CreateTeleporter(812, 1549, -6, 848, 1437, -28, map, false);
				CreateTeleporter(843, 1434, -51, 807, 1546, -28, map, false);
				CreateTeleporter(843, 1435, -51, 807, 1547, -28, map, false);
				CreateTeleporter(843, 1436, -51, 807, 1548, -28, map, false);
				CreateTeleporter(843, 1437, -51, 807, 1549, -28, map, false);
				CreateTeleporter(751, 1473, -28, 763, 1479, -28, map, false);
				DestroyTeleporter(763, 1479, -28, map);
				CreateTeleporter(751, 1479, -28, 763, 1555, -28, map, false);
				DestroyTeleporter(763, 1555, -28, map);
				CreateTeleporter(752, 1549, -28, 751, 1484, -28, map, false);
				DestroyTeleporter(751, 1484, -28, map);
				CreateTeleporter(775, 1492, -28, 827, 1515, -28, map, false);
				DestroyTeleporter(827, 1515, -28, map);
				DestroyTeleporter(1013, 1506, 0, map);
				DestroyTeleporter(1013, 1507, 0, map);
				DestroyTeleporter(1013, 1508, 0, map);
				DestroyTeleporter(1013, 1509, 0, map);
				CreateTeleporter(904, 1360, -21, 1014, 1506, 0, map, true);
				CreateTeleporter(904, 1361, -21, 1014, 1507, 0, map, true);
				CreateTeleporter(904, 1362, -21, 1014, 1508, 0, map, true);
				CreateTeleporter(904, 1363, -21, 1014, 1509, 0, map, true);

				/*CreateTeleporter( 650, 1297, -58, 626, 1526, -28, map, true );
				CreateTeleporter( 651, 1297, -58, 627, 1526, -28, map, true );
				CreateTeleporter( 652, 1297, -58, 628, 1526, -28, map, true );
				CreateTeleporter( 653, 1297, -58, 629, 1526, -28, map, true );*/

				// Update: remove old teleporters
				DestroyTeleporter(650, 1297, -58, map);
				DestroyTeleporter(651, 1297, -58, map);
				DestroyTeleporter(652, 1297, -58, map);
				DestroyTeleporter(653, 1297, -58, map);
				DestroyTeleporter(626, 1526, -28, map);
				DestroyTeleporter(627, 1526, -28, map);
				DestroyTeleporter(628, 1526, -28, map);
				DestroyTeleporter(629, 1526, -28, map);

				// Update: add new ones
				for (int i = 0; i < 4; ++i)
				{
					CreateTeleporter(650 + i, 1297, -58, 626 + i, 1526, -28, map, false);
					CreateTeleporter(626 + i, 1527, -28, 650 + i, 1298, i == 1 ? -59 : -58, map, false);
				}

				// WISP DUNGEON MAZE
				CreateTeleporter(747, 1539, -28, 785, 1514, -28, map, false);
				CreateTeleporter(785, 1524, -28, 798, 1547, -28, map, false);
				CreateTeleporter(747, 1555, -28, 785, 1570, -28, map, false);
				CreateTeleporter(784, 1580, -28, 798, 1547, -28, map, false);
				CreateTeleporter(791, 1548, -28, 781, 1547, -28, map, false);
				CreateTeleporter(782, 1550, -28, 783, 1538, -28, map, false);
				CreateTeleporter(783, 1539, -28, 787, 1542, -28, map, false);
				CreateTeleporter(787, 1543, -28, 781, 1554, -28, map, false);
				CreateTeleporter(781, 1555, -28, 789, 1556, -28, map, false);
				CreateTeleporter(789, 1557, -28, 785, 1550, -28, map, false);
				CreateTeleporter(784, 1550, -28, 777, 1554, -28, map, false);
				CreateTeleporter(778, 1554, -28, 787, 1538, -28, map, false);
				CreateTeleporter(787, 1537, -28, 781, 1546, -28, map, false);
				CreateTeleporter(781, 1545, -28, 789, 1552, -28, map, false);
				CreateTeleporter(789, 1553, -28, 789, 1546, -28, map, false);
				CreateTeleporter(789, 1545, -28, 779, 1541, -28, map, false);
				CreateTeleporter(780, 1541, -28, 785, 1554, -28, map, false);
				CreateTeleporter(785, 1555, -28, 783, 1542, -28, map, false);
				CreateTeleporter(782, 1542, -28, 785, 1546, -28, map, false);
				CreateTeleporter(784, 1546, -28, 776, 1548, -28, map, false);
				CreateTeleporter(777, 1555, -28, 798, 1547, -28, map, false);
				CreateTeleporter(777, 1553, -28, 798, 1547, -28, map, false);
				CreateTeleporter(776, 1549, -28, 798, 1547, -28, map, false);
				CreateTeleporter(777, 1548, -28, 798, 1547, -28, map, false);
				CreateTeleporter(777, 1547, -28, 798, 1547, -28, map, false);
				CreateTeleporter(776, 1546, -28, 798, 1547, -28, map, false);
				CreateTeleporter(778, 1541, -28, 798, 1547, -28, map, false);
				CreateTeleporter(779, 1540, -28, 798, 1547, -28, map, false);
				CreateTeleporter(779, 1542, -28, 798, 1547, -28, map, false);
				CreateTeleporter(780, 1554, -28, 798, 1547, -28, map, false);
				CreateTeleporter(781, 1553, -28, 798, 1547, -28, map, false);
				CreateTeleporter(782, 1554, -28, 798, 1547, -28, map, false);
				CreateTeleporter(780, 1550, -28, 798, 1547, -28, map, false);
				CreateTeleporter(781, 1549, -28, 798, 1547, -28, map, false);
				CreateTeleporter(781, 1551, -28, 798, 1547, -28, map, false);
				CreateTeleporter(780, 1546, -28, 798, 1547, -28, map, false);
				CreateTeleporter(781, 1547, -28, 798, 1547, -28, map, false);
				CreateTeleporter(782, 1546, -28, 798, 1547, -28, map, false);
				CreateTeleporter(783, 1543, -28, 798, 1547, -28, map, false);
				CreateTeleporter(784, 1542, -28, 798, 1547, -28, map, false);
				CreateTeleporter(783, 1541, -28, 798, 1547, -28, map, false);
				CreateTeleporter(782, 1538, -28, 798, 1547, -28, map, false);
				CreateTeleporter(783, 1537, -28, 798, 1547, -28, map, false);
				CreateTeleporter(784, 1538, -28, 798, 1547, -28, map, false);
				CreateTeleporter(786, 1538, -28, 798, 1547, -28, map, false);
				CreateTeleporter(787, 1539, -28, 798, 1547, -28, map, false);
				CreateTeleporter(788, 1538, -28, 798, 1547, -28, map, false);
				CreateTeleporter(788, 1542, -28, 798, 1547, -28, map, false);
				CreateTeleporter(787, 1541, -28, 798, 1547, -28, map, false);
				CreateTeleporter(786, 1542, -28, 798, 1547, -28, map, false);
				CreateTeleporter(785, 1545, -28, 798, 1547, -28, map, false);
				CreateTeleporter(786, 1546, -28, 798, 1547, -28, map, false);
				CreateTeleporter(785, 1547, -28, 798, 1547, -28, map, false);
				CreateTeleporter(785, 1549, -28, 798, 1547, -28, map, false);
				CreateTeleporter(785, 1551, -28, 798, 1547, -28, map, false);
				CreateTeleporter(786, 1550, -28, 798, 1547, -28, map, false);
				CreateTeleporter(784, 1554, -28, 798, 1547, -28, map, false);
				CreateTeleporter(785, 1553, -28, 798, 1547, -28, map, false);
				CreateTeleporter(786, 1554, -28, 798, 1547, -28, map, false);
				CreateTeleporter(788, 1556, -28, 798, 1547, -28, map, false);
				CreateTeleporter(789, 1555, -28, 798, 1547, -28, map, false);
				CreateTeleporter(790, 1556, -28, 798, 1547, -28, map, false);
				CreateTeleporter(788, 1552, -28, 798, 1547, -28, map, false);
				CreateTeleporter(789, 1551, -28, 798, 1547, -28, map, false);
				CreateTeleporter(790, 1552, -28, 798, 1547, -28, map, false);
				CreateTeleporter(790, 1546, -28, 798, 1547, -28, map, false);
				CreateTeleporter(788, 1546, -28, 798, 1547, -28, map, false);
				CreateTeleporter(789, 1547, -28, 798, 1547, -28, map, false);
				CreateTeleporter(791, 1545, -28, 798, 1547, -28, map, false);
				CreateTeleporter(791, 1546, -28, 798, 1547, -28, map, false);
				CreateTeleporter(791, 1547, -28, 798, 1547, -28, map, false);
				CreateTeleporter(791, 1549, -28, 798, 1547, -28, map, false);
				CreateTeleporter(791, 1550, -28, 798, 1547, -28, map, false);

				// Sorcerer`s Dungeon
				CreateTeleporter(546, 455, -40, 426, 113, -28, map, true);
				CreateTeleporter(547, 455, -40, 427, 113, -28, map, true);
				CreateTeleporter(548, 455, -40, 428, 113, -28, map, true);
				CreateTeleporter(429, 113, -28, 548, 455, -40, map, false);

				CreateTeleporter(242, 27, -16, 372, 31, -31, map, false); // stairs - 0x754 
				CreateTeleporter(242, 26, -16, 372, 30, -31, map, false); // stairs - 0x754 
				CreateTeleporter(242, 25, -16, 372, 29, -31, map, false); // stairs - 0x754 
				CreateTeleporter(371, 31, -36, 241, 27, -18, map, false); // stairs - 0x754 
				CreateTeleporter(371, 30, -36, 241, 26, -18, map, false); // stairs - 0x754 

				DestroyTeleporter(371, 29, -36, map);	//To remove old erroneous teleporter

				CreateTeleporter(371, 29, -36, 241, 25, -18, map, false); // stairs - 0x754

				CreateTeleporter(272, 141, -16, 555, 427, -1, map, false); // stairs - 1st 0x753 
				CreateTeleporter(273, 141, -16, 556, 427, -1, map, false); // stairs - 1st 0x753 
				CreateTeleporter(274, 141, -16, 557, 427, -1, map, false); // stairs - 1st 0x753 
				CreateTeleporter(555, 426, -6, 272, 140, -21, map, false); // stairs - 1st 0x753 
				CreateTeleporter(556, 426, -6, 273, 140, -21, map, false); // stairs - 1st 0x753 
				CreateTeleporter(557, 426, -6, 274, 140, -21, map, false); // stairs - 1st 0x753 

				CreateTeleporter(265, 130, -31, 284, 72, -21, map, false); // stairs - 0x753 
				CreateTeleporter(266, 130, -31, 285, 72, -21, map, false); // stairs - 0x753 
				CreateTeleporter(267, 130, -31, 286, 72, -21, map, false); // stairs - 0x753 
				CreateTeleporter(268, 130, -31, 287, 72, -21, map, false); // stairs - 0x753 
				CreateTeleporter(284, 73, -16, 265, 131, -28, map, false); // stairs - 0x753 
				CreateTeleporter(285, 73, -16, 266, 131, -28, map, false); // stairs - 0x753 
				CreateTeleporter(286, 73, -16, 267, 131, -28, map, false); // stairs - 0x753 
				CreateTeleporter(287, 73, -16, 268, 131, -28, map, false); // stairs - 0x753 

				CreateTeleporter(284, 67, -30, 131, 128, -21, map, false); // stairs - 0x753 
				CreateTeleporter(285, 67, -30, 132, 128, -21, map, false); // stairs - 0x753 
				CreateTeleporter(286, 67, -30, 133, 128, -21, map, false); // stairs - 0x753 
				CreateTeleporter(287, 67, -30, 134, 128, -21, map, false); // stairs - 0x753 
				CreateTeleporter(131, 129, -16, 284, 68, -28, map, false); // stairs - 0x753 
				CreateTeleporter(132, 129, -16, 285, 68, -28, map, false); // stairs - 0x753 
				CreateTeleporter(133, 129, -16, 286, 68, -28, map, false); // stairs - 0x753 
				CreateTeleporter(134, 129, -16, 287, 68, -28, map, false); // stairs - 0x753 

				CreateTeleporter(358, 40, -36, 156, 88, -18, map, false); // stairs - 0x73A 
				CreateTeleporter(358, 41, -36, 156, 89, -18, map, false); // stairs - 0x73A 
				CreateTeleporter(358, 42, -36, 156, 90, -18, map, false); // stairs - 0x73A 
				CreateTeleporter(155, 88, -16, 357, 40, -31, map, false); // stairs - 0x73A 
				CreateTeleporter(155, 89, -16, 357, 41, -31, map, false); // stairs - 0x73A 
				CreateTeleporter(155, 90, -16, 357, 42, -31, map, false); // stairs - 0x73A 

				CreateTeleporter(259, 90, -28, 236, 113, -28, map, true);

				// Ancient Lair

				DestroyTeleporter(83, 747, -28, map);
				DestroyTeleporter(84, 747, -28, map);
				DestroyTeleporter(85, 747, -28, map);
				DestroyTeleporter(86, 747, -28, map);
				CreateTeleporter(938, 494, -40, 83, 749, -23, map, true);
				CreateTeleporter(939, 494, -40, 84, 749, -23, map, true);
				CreateTeleporter(940, 494, -40, 85, 749, -23, map, true);
				CreateTeleporter(941, 494, -40, 86, 749, -23, map, true);

				// Lizard Passage

				DestroyTeleporter(313, 1330, -39, map);
				DestroyTeleporter(314, 1330, -37, map);
				DestroyTeleporter(315, 1330, -35, map);
				CreateTeleporter(313, 1329, -40, 327, 1593, -13, map, true);
				CreateTeleporter(314, 1329, -38, 328, 1593, -13, map, true);
				CreateTeleporter(315, 1329, -36, 329, 1593, -13, map, true);
				CreateTeleporter(330, 1593, -13, 315, 1329, -35, map, false);

				DestroyTeleporter(225, 1335, -20, map);
				DestroyTeleporter(226, 1335, -20, map);
				DestroyTeleporter(227, 1335, -19, map);
				CreateTeleporter(265, 1587, -28, 225, 1334, -20, map, true);
				CreateTeleporter(266, 1587, -28, 226, 1334, -20, map, true);
				CreateTeleporter(267, 1587, -28, 227, 1334, -20, map, true);

				// Central Ilshenar
				/*CreateTeleporter( 1139, 593, -80, 1237, 582, -19, map, true );
				CreateTeleporter( 1140, 593, -80, 1237, 583, -19, map, true );
				CreateTeleporter( 1141, 593, -80, 1237, 584, -19, map, true );
				CreateTeleporter( 1142, 593, -80, 1237, 585, -19, map, true );
				CreateTeleporter( 912, 451, -80, 708, 667, -39, map, true );
				CreateTeleporter( 912, 452, -80, 709, 667, -39, map, true );
				CreateTeleporter( 912, 453, -80, 710, 667, -39, map, true );
				CreateTeleporter( 711, 667, -39, 912, 453, -80, map, false );*/

				// Update: remove old teleporters..
				DestroyTeleporter(1139, 593, -80, map);
				DestroyTeleporter(1140, 593, -80, map);
				DestroyTeleporter(1141, 593, -80, map);
				DestroyTeleporter(1142, 593, -80, map);
				DestroyTeleporter(1237, 582, -19, map);
				DestroyTeleporter(1237, 583, -19, map);
				DestroyTeleporter(1237, 584, -19, map);
				DestroyTeleporter(1237, 585, -19, map);

				DestroyTeleporter(912, 451, -80, map);
				DestroyTeleporter(912, 452, -80, map);
				DestroyTeleporter(912, 453, -80, map);
				DestroyTeleporter(708, 667, -39, map);
				DestroyTeleporter(709, 667, -39, map);
				DestroyTeleporter(710, 667, -39, map);
				DestroyTeleporter(711, 667, -39, map);

				// Update: add new ones...
				CreateTeleporter(1139, 592, -80, 1238, 583, -19, map, false);
				CreateTeleporter(1140, 592, -80, 1238, 584, -19, map, false);
				CreateTeleporter(1141, 592, -80, 1238, 585, -19, map, false);
				CreateTeleporter(1142, 592, -80, 1238, 585, -19, map, false);
				CreateTeleporter(1237, 583, -19, 1139, 593, -80, map, false);
				CreateTeleporter(1237, 584, -19, 1140, 593, -80, map, false);
				CreateTeleporter(1237, 585, -19, 1141, 593, -80, map, false);

				CreateTeleporter(709, 667, -39, 912, 451, -80, map, false);
				CreateTeleporter(710, 667, -39, 912, 452, -80, map, false);
				CreateTeleporter(711, 667, -39, 912, 453, -80, map, false);

				CreateTeleporter(911, 451, -80, 709, 668, -39, map, false);
				CreateTeleporter(911, 452, -80, 710, 668, -39, map, false);
				CreateTeleporter(911, 453, -80, 711, 668, -38, map, false);

				// Exodus Dungeon
				CreateTeleporter(827, 777, -80, 1975, 114, -28, map, false);
				CreateTeleporter(827, 778, -80, 1975, 114, -28, map, false);
				CreateTeleporter(827, 779, -80, 1975, 114, -28, map, false);
				CreateTeleporter(828, 777, -80, 1975, 114, -28, map, false);
				CreateTeleporter(828, 778, -80, 1975, 114, -28, map, false);
				CreateTeleporter(828, 779, -80, 1975, 114, -28, map, false);
				CreateTeleporter(829, 777, -80, 1975, 114, -28, map, false);
				CreateTeleporter(829, 778, -80, 1975, 114, -28, map, false);
				CreateTeleporter(829, 779, -80, 1975, 114, -28, map, false);

				CreateTeleporter(1978, 114, -28, 835, 778, -80, map, false);
				CreateTeleporter(1978, 115, -28, 835, 778, -80, map, false);
				CreateTeleporter(1978, 116, -28, 835, 778, -80, map, false);
				CreateTeleporter(1978, 117, -28, 835, 778, -80, map, false);
				CreateTeleporter(1979, 114, -28, 835, 778, -80, map, false);
				CreateTeleporter(1979, 115, -28, 835, 778, -80, map, false);
				CreateTeleporter(1979, 116, -28, 835, 778, -80, map, false);
				CreateTeleporter(1979, 117, -28, 835, 778, -80, map, false);
				CreateTeleporter(1980, 114, -28, 835, 778, -80, map, false);
				CreateTeleporter(1980, 115, -28, 835, 778, -80, map, false);
				CreateTeleporter(1980, 116, -28, 835, 778, -80, map, false);
				CreateTeleporter(1980, 117, -28, 835, 778, -80, map, false);
				CreateTeleporter(1981, 114, -28, 835, 778, -80, map, false);
				CreateTeleporter(1981, 115, -28, 835, 778, -80, map, false);
				CreateTeleporter(1981, 116, -28, 835, 778, -80, map, false);
				CreateTeleporter(1981, 117, -28, 835, 778, -80, map, false);
			}

			public void CreateTeleportersMap3(Map map)
			{
				// CreateTeleporter( 408, 254, 2, 428, 319, 2, map, false ); // for doom quest; use blockers to avoid players teleporting into the ship! 
				// CreateTeleporter( 428, 321, 2, 422, 328, -1, map, false ); // for doom quest; use blockers to avoid players teleporting into the ship!

				// Doom Dungeon
				CreateTeleporter(2317, 1269, -110, 381, 132, 33, map, false);
				CreateTeleporter(2317, 1268, -110, 381, 132, 33, map, false);
				CreateTeleporter(2317, 1267, -110, 381, 132, 33, map, false);
				CreateTeleporter(2317, 1266, -110, 381, 132, 33, map, false);
				CreateTeleporter(2316, 1269, -110, 381, 132, 33, map, false);
				CreateTeleporter(2315, 1269, -110, 381, 132, 33, map, false);
				CreateTeleporter(2315, 1268, -110, 381, 132, 33, map, false);
				CreateTeleporter(2315, 1267, -109, 381, 132, 33, map, false);
				CreateTeleporter(2316, 1267, -110, 381, 132, 33, map, false);
				CreateTeleporter(496, 49, 6, 2350, 1270, -85, map, false);
				DestroyTeleporter(433, 326, 4, map);
				DestroyTeleporter(365, 15, -1, map);

				//Yomotsu Mines Exit
				CreateTeleporter(3, 128, -1, 259, 785, 64, map, Map.Tokuno, false);
				CreateTeleporter(4, 128, -1, 259, 785, 64, map, Map.Tokuno, false);
				CreateTeleporter(5, 128, -1, 259, 785, 64, map, Map.Tokuno, false);
				CreateTeleporter(6, 128, -1, 259, 785, 64, map, Map.Tokuno, false);
				CreateTeleporter(7, 128, -1, 259, 785, 64, map, Map.Tokuno, false);
				CreateTeleporter(8, 128, -1, 259, 785, 64, map, Map.Tokuno, false);

				//Fan Dancer Exit
				CreateTeleporter(64, 336, 11, 983, 195, 24, map, Map.Tokuno, false);
				CreateTeleporter(64, 337, 11, 983, 195, 24, map, Map.Tokuno, false);
				CreateTeleporter(64, 338, 11, 983, 195, 24, map, Map.Tokuno, false);
				CreateTeleporter(64, 339, 11, 983, 195, 24, map, Map.Tokuno, false);

				//Fan Dancer Levels
				CreateTeleporter(66, 351, -7, 63, 524, -1, map, false);
				CreateTeleporter(66, 352, -7, 63, 524, -1, map, false);
				CreateTeleporter(66, 353, -7, 63, 524, -1, map, false);
				CreateTeleporter(66, 354, -7, 63, 524, -1, map, false);

				CreateTeleporter(61, 523, 6, 63, 352, -3, map, false);
				CreateTeleporter(61, 524, 6, 63, 352, -3, map, false);
				CreateTeleporter(61, 525, 6, 63, 352, -3, map, false);
				CreateTeleporter(61, 526, 6, 63, 352, -3, map, false);

				CreateTeleporter(103, 555, -6, 76, 691, -1, map, false);
				CreateTeleporter(103, 556, -6, 76, 691, -1, map, false);
				CreateTeleporter(103, 557, -6, 76, 691, -1, map, false);
				CreateTeleporter(103, 558, -6, 76, 691, -1, map, false);

				CreateTeleporter(73, 688, 6, 100, 556, -2, map, false);
				CreateTeleporter(73, 689, 6, 100, 556, -2, map, false);
				CreateTeleporter(73, 690, 6, 100, 556, -2, map, false);
				CreateTeleporter(73, 691, 6, 100, 556, -2, map, false);
				CreateTeleporter(73, 692, 6, 100, 556, -2, map, false);
				CreateTeleporter(73, 693, 6, 100, 556, -2, map, false);
				CreateTeleporter(73, 694, 6, 100, 556, -2, map, false);

				//Ninja cave
				CreateTeleporter(384, 810, -1, 403, 1167, 0, map, false);

				CreateTeleporter(403, 1169, 0, 385, 811, -1, map, false);
				CreateTeleporter(404, 1169, 0, 385, 808, -1, map, false);
				CreateTeleporter(405, 1169, 0, 385, 808, -1, map, false);

				// Dungeon Labyrinth
				CreateTeleporter(328, 1972, 5, 1731, 978, -80, map, false); // Door exit
				CreateTeleporter(328, 1973, 5, 1731, 978, -80, map, false);
				CreateTeleporter(328, 1974, 5, 1731, 978, -80, map, false);
				CreateTeleporter(328, 1975, 5, 1731, 978, -80, map, false);

				// Dungeon Bedlam
				CreateTeleporter(84, 1673, -2, 156, 1613, 0, map, false);
				CreateTeleporter(156, 1609, 17, 87, 1673, 0, map, false);
				CreateTeleporter(157, 1609, 17, 87, 1673, 0, map, false);
			}

			public void CreateTeleportersMap4(Map map)
			{
				//Yomotso Mines Entrance
				CreateTeleporter(257, 783, 63, 5, 128, -1, map, Map.Malas, false);
				CreateTeleporter(258, 783, 63, 5, 128, -1, map, Map.Malas, false);
				CreateTeleporter(259, 783, 63, 5, 128, -1, map, Map.Malas, false);
				CreateTeleporter(260, 783, 63, 5, 128, -1, map, Map.Malas, false);

				//Fan dancer Entrance
				CreateTeleporter(988, 194, 15, 67, 337, -1, map, Map.Malas, false);
				CreateTeleporter(988, 195, 15, 67, 337, -1, map, Map.Malas, false);
				CreateTeleporter(987, 196, 15, 67, 337, -1, map, Map.Malas, false);
				CreateTeleporter(988, 197, 18, 67, 337, -1, map, Map.Malas, false);

			}
			public void CreateTeleportersTrammel(Map map)
			{
				// Haven
				CreateTeleporter(3632, 2566, 0, 3632, 2566, 20, map, true);
			}

			public void CreateTeleportersFelucca(Map map)
			{
				// Star room
				CreateTeleporter(5140, 1773, 0, 5171, 1586, 0, map, false);
			}

			public int CreateTeleporters()
			{
				CreateTeleportersMap(Map.Felucca);
				CreateTeleportersMap(Map.Trammel);
				CreateTeleportersTrammel(Map.Trammel);
				CreateTeleportersFelucca(Map.Felucca);
				CreateTeleportersMap2(Map.Ilshenar);
				CreateTeleportersMap3(Map.Malas);
				CreateTeleportersMap4(Map.Tokuno);
				return m_Count;
			}
		}
	}
}
