using Server; using System; using System.Collections.Generic; using Server.Mobiles; using Server.Gumps; using Server.Engines.Quests.Haven; namespace Server.Items { public static class GenerateUnderworldRooms { public static void Generate() { ExperimentalRoomController controller = new ExperimentalRoomController(); controller.MoveToWorld(new Point3D(980, 1117, -42), Map.TerMur); //Room 0 to 1 ExperimentalRoomDoor door = new ExperimentalRoomDoor(Room.RoomZero, DoorFacing.WestCCW); ExperimentalRoomBlocker blocker = new ExperimentalRoomBlocker(Room.RoomZero); door.Hue = 1109; door.MoveToWorld(new Point3D(984, 1116, -42), Map.TerMur); blocker.MoveToWorld(new Point3D(984, 1116, -42), Map.TerMur); WeakEntityCollection.Add("sa", door); WeakEntityCollection.Add("sa", blocker); door = new ExperimentalRoomDoor(Room.RoomZero, DoorFacing.EastCW); blocker = new ExperimentalRoomBlocker(Room.RoomZero); door.Hue = 1109; door.MoveToWorld(new Point3D(985, 1116, -42), Map.TerMur); blocker.MoveToWorld(new Point3D(985, 1116, -42), Map.TerMur); WeakEntityCollection.Add("sa", door); WeakEntityCollection.Add("sa", blocker); //Room 1 to 2 door = new ExperimentalRoomDoor(Room.RoomOne, DoorFacing.WestCCW); blocker = new ExperimentalRoomBlocker(Room.RoomOne); door.Hue = 1109; door.MoveToWorld(new Point3D(984, 1102, -42), Map.TerMur); blocker.MoveToWorld(new Point3D(984, 1102, -42), Map.TerMur); WeakEntityCollection.Add("sa", door); WeakEntityCollection.Add("sa", blocker); door = new ExperimentalRoomDoor(Room.RoomOne, DoorFacing.EastCW); blocker = new ExperimentalRoomBlocker(Room.RoomOne); door.Hue = 1109; door.MoveToWorld(new Point3D(985, 1102, -42), Map.TerMur); blocker.MoveToWorld(new Point3D(985, 1102, -42), Map.TerMur); WeakEntityCollection.Add("sa", door); WeakEntityCollection.Add("sa", blocker); //Room 2 to 3 door = new ExperimentalRoomDoor(Room.RoomTwo, DoorFacing.WestCCW); blocker = new ExperimentalRoomBlocker(Room.RoomTwo); door.Hue = 1109; door.MoveToWorld(new Point3D(984, 1090, -42), Map.TerMur); blocker.MoveToWorld(new Point3D(984, 1090, -42), Map.TerMur); WeakEntityCollection.Add("sa", door); WeakEntityCollection.Add("sa", blocker); door = new ExperimentalRoomDoor(Room.RoomTwo, DoorFacing.EastCW); blocker = new ExperimentalRoomBlocker(Room.RoomTwo); door.Hue = 1109; door.MoveToWorld(new Point3D(985, 1090, -42), Map.TerMur); blocker.MoveToWorld(new Point3D(985, 1090, -42), Map.TerMur); WeakEntityCollection.Add("sa", door); WeakEntityCollection.Add("sa", blocker); //Room 3 to 4 door = new ExperimentalRoomDoor(Room.RoomTwo, DoorFacing.WestCCW); blocker = new ExperimentalRoomBlocker(Room.RoomThree); door.Hue = 1109; door.MoveToWorld(new Point3D(984, 1072, -42), Map.TerMur); blocker.MoveToWorld(new Point3D(984, 1072, -42), Map.TerMur); WeakEntityCollection.Add("sa", door); WeakEntityCollection.Add("sa", blocker); door = new ExperimentalRoomDoor(Room.RoomTwo, DoorFacing.EastCW); blocker = new ExperimentalRoomBlocker(Room.RoomThree); door.Hue = 1109; door.MoveToWorld(new Point3D(985, 1072, -42), Map.TerMur); blocker.MoveToWorld(new Point3D(985, 1072, -42), Map.TerMur); WeakEntityCollection.Add("sa", door); WeakEntityCollection.Add("sa", blocker); ExperimentalRoomChest chest = new ExperimentalRoomChest(); chest.MoveToWorld(new Point3D(984, 1064, -37), Map.TerMur); WeakEntityCollection.Add("sa", chest); ExperimentalBook instr = new ExperimentalBook(); instr.Movable = false; instr.MoveToWorld(new Point3D(995, 1114, -36), Map.TerMur); WeakEntityCollection.Add("sa", instr); SecretDungeonDoor dd = new SecretDungeonDoor(DoorFacing.NorthCCW); dd.ClosedID = 87; dd.OpenedID = 88; dd.MoveToWorld(new Point3D(1007, 1119, -42), Map.TerMur); WeakEntityCollection.Add("sa", dd); LocalizedSign sign = new LocalizedSign(3026, 1113407); // Experimental Room Access sign.Movable = false; sign.MoveToWorld(new Point3D(980, 1119, -37), Map.TerMur); WeakEntityCollection.Add("sa", sign); //Puzze Room PuzzleBox box = new PuzzleBox(PuzzleType.WestBox); box.MoveToWorld(new Point3D(1090, 1171, 11), Map.TerMur); WeakEntityCollection.Add("sa", box); box = new PuzzleBox(PuzzleType.EastBox); box.MoveToWorld(new Point3D(1104, 1171, 11), Map.TerMur); WeakEntityCollection.Add("sa", box); box = new PuzzleBox(PuzzleType.NorthBox); box.MoveToWorld(new Point3D(1097, 1163, 11), Map.TerMur); WeakEntityCollection.Add("sa", box); PuzzleBook book = new PuzzleBook(); book.Movable = false; book.MoveToWorld(new Point3D(1109, 1153, -17), Map.TerMur); WeakEntityCollection.Add("sa", book); PuzzleRoomTeleporter tele = new PuzzleRoomTeleporter(); tele.PointDest = new Point3D(1097, 1173, 1); tele.MapDest = Map.TerMur; tele.MoveToWorld(new Point3D(1097, 1175, 0), Map.TerMur); WeakEntityCollection.Add("sa", tele); tele = new PuzzleRoomTeleporter(); tele.PointDest = new Point3D(1098, 1173, 1); tele.MapDest = Map.TerMur; tele.MoveToWorld(new Point3D(1098, 1175, 0), Map.TerMur); WeakEntityCollection.Add("sa", tele); MetalDoor2 door2 = new MetalDoor2(DoorFacing.WestCCW); door2.Locked = true; door2.KeyValue = 50000; door2.MoveToWorld(new Point3D(1097, 1174, 1), Map.TerMur); WeakEntityCollection.Add("sa", door2); door2 = new MetalDoor2(DoorFacing.EastCW); door2.Locked = true; door2.KeyValue = 50000; door2.MoveToWorld(new Point3D(1098, 1174, 1), Map.TerMur); WeakEntityCollection.Add("sa", door); Teleporter telep = new Teleporter(); telep.PointDest = new Point3D(1097, 1175, 0); telep.MapDest = Map.TerMur; telep.MoveToWorld(new Point3D(1097, 1173, 1), Map.TerMur); WeakEntityCollection.Add("sa", telep); telep = new Teleporter(); telep.PointDest = new Point3D(1098, 1175, 0); telep.MapDest = Map.TerMur; telep.MoveToWorld(new Point3D(1098, 1173, 1), Map.TerMur); WeakEntityCollection.Add("sa", telep); telep = new Teleporter(); telep.PointDest = new Point3D(996, 1117, -42); telep.MapDest = Map.TerMur; telep.MoveToWorld(new Point3D(980, 1064, -42), Map.TerMur); WeakEntityCollection.Add("sa", telep); Static sparkle = new Static(14138); sparkle.MoveToWorld(new Point3D(980, 1064, -42), Map.TerMur); WeakEntityCollection.Add("sa", sparkle); //Maze of Death UnderworldPuzzleBox pBox = new UnderworldPuzzleBox(); pBox.MoveToWorld(new Point3D(1068, 1026, -37), Map.TerMur); WeakEntityCollection.Add("sa", pBox); GoldenCompass compass = new GoldenCompass(); compass.MoveToWorld(new Point3D(1070, 1055, -34), Map.TerMur); WeakEntityCollection.Add("sa", compass); Item map = new RolledMapOfTheUnderworld(); map.MoveToWorld(new Point3D(1072, 1055, -36), Map.TerMur); map.Movable = false; WeakEntityCollection.Add("sa", map); FountainOfFortune f = new FountainOfFortune(); f.MoveToWorld(new Point3D(1121, 957, -42), Map.TerMur); WeakEntityCollection.Add("sa", f); Item tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1121, 965, -41), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1122, 965, -40), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1123, 965, -41), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1124, 965, -41), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1122, 964, -41), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1123, 964, -41), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1123, 963, -40), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1123, 962, -40), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1123, 961, -41), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1122, 961, -41), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1122, 960, -41), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1121, 960, -41), Map.TerMur); WeakEntityCollection.Add("sa", tile); tile = new InvisibleTile(); tile.MoveToWorld(new Point3D(1121, 959, -41), Map.TerMur); WeakEntityCollection.Add("sa", tile); GenerateRevealTiles(); CheckCannoneers(); Console.WriteLine("Experimental Room, Puzzle Room and Maze of Death initialized."); } public static void GenerateRevealTiles() { Map map = Map.TerMur; for (int x = 1182; x <= 1192; x++) { for (int y = 1120; y <= 1134; y++) { if (map != null && map.CanSpawnMobile(x, y, -42)) { var t = new RevealTile(); t.MoveToWorld(new Point3D(x, y, -42), map); WeakEntityCollection.Add("sa", t); } } } var tile = new RevealTile(); tile.MoveToWorld(new Point3D(1180, 883, 0), map); WeakEntityCollection.Add("sa", tile); tile = new RevealTile(); tile.MoveToWorld(new Point3D(1180, 882, 0), map); WeakEntityCollection.Add("sa", tile); tile = new RevealTile(); tile.MoveToWorld(new Point3D(1180, 881, 0), map); WeakEntityCollection.Add("sa", tile); tile = new RevealTile(); tile.MoveToWorld(new Point3D(1180, 880, 0), map); WeakEntityCollection.Add("sa", tile); tile = new RevealTile(); tile.MoveToWorld(new Point3D(1180, 879, 0), map); WeakEntityCollection.Add("sa", tile); } public static void CheckCannoneers() { Cannon cannon = Map.TerMur.FindItem(new Point3D(1126, 1200, -2)); MilitiaCanoneer cannoneer = null; if (cannon == null) { cannon = new Cannon(CannonDirection.North); cannon.MoveToWorld(new Point3D(1126, 1200, -2), Map.TerMur); WeakEntityCollection.Add("sa", cannon); } cannoneer = Map.TerMur.FindMobile(new Point3D(1126, 1203, -2)); if (cannoneer == null) { cannoneer = new MilitiaCanoneer(); cannoneer.MoveToWorld(new Point3D(1126, 1203, -2), Map.TerMur); WeakEntityCollection.Add("sa", cannoneer); } cannon.Canoneer = cannoneer; cannon = Map.TerMur.FindItem(new Point3D(1131, 1200, -2)); cannoneer = null; if (cannon == null) { cannon = new Cannon(CannonDirection.North); cannon.MoveToWorld(new Point3D(1131, 1200, -2), Map.TerMur); WeakEntityCollection.Add("sa", cannon); } cannoneer = Map.TerMur.FindMobile(new Point3D(1131, 1203, -2)); if (cannoneer == null) { cannoneer = new MilitiaCanoneer(); cannoneer.MoveToWorld(new Point3D(1131, 1203, -2), Map.TerMur); WeakEntityCollection.Add("sa", cannoneer); } cannon.Canoneer = cannoneer; } private static bool FindItem(Point3D p, Map map) { IPooledEnumerable eable = map.GetItemsInRange(p, 0); foreach (Item item in eable) { eable.Free(); return true; } eable.Free(); return false; } } }