Esempio n. 1
0
        protected virtual void UnconvertDoors()
        {
            if (c_House == null)
            {
                return;
            }

            foreach (BaseDoor door in new ArrayList(c_House.Doors))
            {
                door.Open = false;

                if (c_Relock)
                {
                    door.Locked = true;
                }

                BaseDoor newdoor = new StrongWoodDoor((DoorFacing) 0);
                newdoor.ItemID = door.ItemID;
                newdoor.ClosedID = door.ClosedID;
                newdoor.OpenedID = door.OpenedID;
                newdoor.OpenedSound = door.OpenedSound;
                newdoor.ClosedSound = door.ClosedSound;
                newdoor.Offset = door.Offset;
                newdoor.Location = door.Location;
                newdoor.Map = door.Map;

                door.Delete();

                foreach (
                    Item inneritem in
                        newdoor.GetItemsInRange(1)
                            .Where(
                                inneritem => inneritem is BaseDoor && inneritem != newdoor && inneritem.Z == newdoor.Z))
                {
                    ((BaseDoor) inneritem).Link = newdoor;
                    newdoor.Link = (BaseDoor) inneritem;
                }

                c_House.Doors.Remove(door);
            }
        }
Esempio n. 2
0
		// Create the appropriate item class - Defaults to a Static Item
		private Item CreateItem(int ItemID)
		{
			Item item = null;

			switch(ItemID)
			{
					// Don't import nodraw, node crystals, odd items, etc. 
					// Add any unwanted items here. 
					// TODO: Boat parts: planks, tillerman, etc. 
				case 0x0001: 
				case 0x1F19: 
				case 0x0FB7: 
					break; 
					/* 
					* Put all usable items here, for example, forges, anvils, 
					* training dummies, lights, containers, messageboards, etc. 
					* We'll need to wait until some of them are scripted. 
					* 
					* The following are some examples, I intend to finish things 
					* up as quickly as I can. 
					*/ 
				case 0x0FB1:  //forge 
					item = new SmallForgeAddon();
					break; 
				case 0x0FAF:  //anvil east 
					item = new AnvilEastAddon(); 
					break; 
				case 0x0FB0:  //anvil south 
					item = new AnvilSouthAddon(); 
					break; 

					// TODO: Gates 
                   
					/* 
					* Now create all of the doors according to graphic. 
					* NOTE: Some doors seem to open the wrong way, but 
					*       there's no way to determine correct CCW/CW 
					*       from the POL file. 
					*/ 

					// Metal Doors 2 
				case 0x0675: 
					item = new MetalDoor2( DoorFacing.WestCW ); 
					break; 
				case 0x0677: 
					item = new MetalDoor2( DoorFacing.EastCCW ); 
					break; 
				case 0x067D: 
					item = new MetalDoor2( DoorFacing.SouthCW ); 
					break; 
				case 0x067F: 
					item = new MetalDoor2( DoorFacing.NorthCCW ); 
					break; 
    
					// Barred Metal Doors 
				case 0x0685: 
					item = new BarredMetalDoor( DoorFacing.WestCW ); 
					break; 
				case 0x0687: 
					item = new BarredMetalDoor( DoorFacing.EastCCW ); 
					break; 
				case 0x068D: 
					item = new BarredMetalDoor( DoorFacing.SouthCW ); 
					break; 
				case 0x068F: 
					item = new BarredMetalDoor( DoorFacing.NorthCCW ); 
					break; 
    
					// Rattan Doors 
				case 0x0695: 
					item = new RattanDoor( DoorFacing.WestCW ); 
					break; 
				case 0x0697: 
					item = new RattanDoor( DoorFacing.EastCCW ); 
					break; 
				case 0x069D: 
					item = new RattanDoor( DoorFacing.SouthCW ); 
					break; 
				case 0x069F: 
					item = new RattanDoor( DoorFacing.NorthCCW ); 
					break; 
                
					// Dark Wood Doors 
				case 0x06A5: 
					item = new DarkWoodDoor( DoorFacing.WestCW ); 
					break; 
				case 0x06A7: 
					item = new DarkWoodDoor( DoorFacing.EastCCW ); 
					break; 
				case 0x06AD: 
					item = new DarkWoodDoor( DoorFacing.SouthCW ); 
					break; 
				case 0x06AF: 
					item = new DarkWoodDoor( DoorFacing.NorthCCW ); 
					break; 
                   
					// Medium Wood Doors 
				case 0x06B5: 
					item = new MediumWoodDoor( DoorFacing.WestCW ); 
					break; 
				case 0x06B7: 
					item = new MediumWoodDoor( DoorFacing.EastCCW ); 
					break; 
				case 0x06BD: 
					item = new MediumWoodDoor( DoorFacing.SouthCW ); 
					break; 
				case 0x06BF: 
					item = new MediumWoodDoor( DoorFacing.NorthCCW ); 
					break; 
    
					// Metal Doors 
				case 0x06C5: 
					item = new MetalDoor( DoorFacing.WestCW ); 
					break; 
				case 0x06C7: 
					item = new MetalDoor( DoorFacing.EastCCW ); 
					break; 
				case 0x06CD: 
					item = new MetalDoor( DoorFacing.SouthCW ); 
					break; 
				case 0x06CF: 
					item = new MetalDoor( DoorFacing.NorthCCW ); 
					break; 
    
					// Light Wood Doors 
				case 0x06D5: 
					item = new LightWoodDoor( DoorFacing.WestCW ); 
					break; 
				case 0x06D7: 
					item = new LightWoodDoor( DoorFacing.EastCCW ); 
					break; 
				case 0x06DD: 
					item = new LightWoodDoor( DoorFacing.SouthCW ); 
					break; 
				case 0x06DF: 
					item = new LightWoodDoor( DoorFacing.NorthCCW ); 
					break; 
    
					// Strong Wood Doors 
				case 0x06E5: 
					item = new StrongWoodDoor( DoorFacing.WestCW ); 
					break; 
				case 0x06E7: 
					item = new StrongWoodDoor( DoorFacing.EastCCW ); 
					break; 
				case 0x06ED: 
					item = new StrongWoodDoor( DoorFacing.SouthCW ); 
					break; 
				case 0x06EF: 
					item = new StrongWoodDoor( DoorFacing.NorthCCW ); 
					break; 
    
				default: 
					item = new Static(ItemID);
					item.Movable = false; 
					break; 

			}

			return item;
		}
		private Item CreateItem(int ItemID) // Create the appropriate item class - Defaults to a Static Item
		{
			Item item = null;

			switch(ItemID)
			{
				#region MobileSaver
				case 0x0001: // Now used for Mobile Importing.
				{
					item = new Static( 0x1 );
					break;
				}
				#endregion
				case 0x1F19: // Add any unwanted items here.
				case 0x0FB7: // TODO: Boat parts: planks, tillerman, etc.
					break;



				case 0x0FB1:  //forge
					item = new SmallForgeAddon();
					break;
				case 0x0FAF:  //anvil east
					item = new AnvilEastAddon();
					break;
				case 0x0FB0:  //anvil south
					item = new AnvilSouthAddon();
					break;

				case 0x2DD8: //Elven Forge
					item = new ElvenForgeAddon();
					break;

				case 0x1922: //FlourMill East
					item = new FlourMillEastAddon();
					break;
					case 0x1920: case 0x1924: break; //Don't add those items since the addon has them.
				case 0x192E: //FlourMill South
					item = new FlourMillSouthAddon();
					break;
					case 0x192C: case 0x1930: break; //Don't add those items since the addon has them.

				case 0x1060: //Loom East
					item = new LoomEastAddon();
					break;
					case 0x105F: break; //Don't add those items since the addon has them.
				case 0x1061: //Loom South
					item = new LoomSouthAddon();
					break;
					case 0x1062: break; //Don't add those items since the addon has them.

				case 0x1019: //Spinningwheel East
					item = new SpinningwheelEastAddon();
					break;
				case 0x1015: //Spinningwheel South
					item = new SpinningwheelSouthAddon();
					break;


				// Housing Metal Doors
				case 0x679:
					item = new NorthWestDoor();
					break;
				case 0x67B:
					item = new NorthEastDoor();
					break;
				case 0x675:
					item = new SouthWestDoor();
					break;
				case 0x677:
					item = new SouthEastDoor();
					break;
				case 0x683:
					item = new WestNorthDoor();
					break;
				case 0x681:
					item = new WestSouthDoor();
					break;
				case 0x67F:
					item = new EastNorthDoor();
					break;
				case 0x67D:
					item = new EastSouthDoor();
					break;

				/*
				case 0x0675: // Metal Doors 2 NOTE: Some doors seem to open the wrong way, but there's no way to determine correct CCW/CW from the POL file.
					item = new MetalDoor2( DoorFacing.WestCW );
					break;
				case 0x0677:
					item = new MetalDoor2( DoorFacing.EastCCW );
					break;
				case 0x067D:
					item = new MetalDoor2( DoorFacing.SouthCW );
					break;
				case 0x067F:
					item = new MetalDoor2( DoorFacing.NorthCCW );
					break;
				*/

				case 0x0685: // Barred Metal Doors
					item = new BarredMetalDoor( DoorFacing.WestCW );
					break;
				case 0x0687:
					item = new BarredMetalDoor( DoorFacing.EastCCW );
					break;
				case 0x068D:
					item = new BarredMetalDoor( DoorFacing.SouthCW );
					break;
				case 0x068F:
					item = new BarredMetalDoor( DoorFacing.NorthCCW );
					break;

				case 0x0695: // Rattan Doors
					item = new RattanDoor( DoorFacing.WestCW );
					break;
				case 0x0697:
					item = new RattanDoor( DoorFacing.EastCCW );
					break;
				case 0x069D:
					item = new RattanDoor( DoorFacing.SouthCW );
					break;
				case 0x069F:
					item = new RattanDoor( DoorFacing.NorthCCW );
					break;

				case 0x06A5: // Dark Wood Doors
					item = new DarkWoodDoor( DoorFacing.WestCW );
					break;
				case 0x06A7:
					item = new DarkWoodDoor( DoorFacing.EastCCW );
					break;
				case 0x06AD:
					item = new DarkWoodDoor( DoorFacing.SouthCW );
					break;
				case 0x06AF:
					item = new DarkWoodDoor( DoorFacing.NorthCCW );
					break;

				case 0x06B5: // Medium Wood Doors
					item = new MediumWoodDoor( DoorFacing.WestCW );
					break;
				case 0x06B7:
					item = new MediumWoodDoor( DoorFacing.EastCCW );
					break;
				case 0x06BD:
					item = new MediumWoodDoor( DoorFacing.SouthCW );
					break;
				case 0x06BF:
					item = new MediumWoodDoor( DoorFacing.NorthCCW );
					break;

				/*
				case 0x06C5: // Metal Doors
					item = new MetalDoor( DoorFacing.WestCW );
					break;
				case 0x06C7:
					item = new MetalDoor( DoorFacing.EastCCW );
					break;
				case 0x06CD:
					item = new MetalDoor( DoorFacing.SouthCW );
					break;
				case 0x06CF:
					item = new MetalDoor( DoorFacing.NorthCCW );
					break;
				*/

				case 0x06D5: // Light Wood Doors
					item = new LightWoodDoor( DoorFacing.WestCW );
					break;
				case 0x06D7:
					item = new LightWoodDoor( DoorFacing.EastCCW );
					break;
				case 0x06DD:
					item = new LightWoodDoor( DoorFacing.SouthCW );
					break;
				case 0x06DF:
					item = new LightWoodDoor( DoorFacing.NorthCCW );
					break;

				case 0x06E5: // Strong Wood Doors
					item = new StrongWoodDoor( DoorFacing.WestCW );
					break;
				case 0x06E7:
					item = new StrongWoodDoor( DoorFacing.EastCCW );
					break;
				case 0x06ED:
					item = new StrongWoodDoor( DoorFacing.SouthCW );
					break;
				case 0x06EF:
					item = new StrongWoodDoor( DoorFacing.NorthCCW );
					break;

				case 0x2A05: //South facing West half Paper door (SE)
					item = new SWPaperSEDoor();
					break;
				case 0x2A07: //South facing East half Paper door (SE)
					item = new SEPaperSEDoor();
					break;
				case 0x2A09: //East facing South half Paper door (SE)
					item = new ESPaperSEDoor();
					break;
				case 0x2A0B: //East facing North half Paper door (SE)
					item = new ENPaperSEDoor();
					break;

				case 0x2A0D: //South facing West half Cloth door (SE)
					item = new SWClothSEDoor();
					break;
				case 0x2A0F: //South facing East half Cloth door (SE)
					item = new SEClothSEDoor();
					break;
				case 0x2A11: //East facing South half Cloth door (SE)
					item = new ESClothSEDoor();
					break;
				case 0x2A13: //East facing North half Cloth door (SE)
					item = new ENClothSEDoor();
					break;

				case 0x2A16: //South facing West half Wooden door (SE)
					item = new SWWoodenSEDoor();
					break;
				case 0x2A17: //South facing East half Wooden door (SE)
					item = new SEWoodenSEDoor();
					break;
				case 0x2A19: //East facing South half Wooden door (SE)
					item = new ESWoodenSEDoor();
					break;
				case 0x2A1B: //East facing North half Wooden door (SE)
					item = new ENWoodenSEDoor();
					break;



				case 0xE77: //Barrel
					item = new Barrel();
					item.Movable = false;
					break;
				case 0xE7F: //Keg
					item = new Keg();
					item.Movable = false;
					break;
				case 0xE7A: //PicnicBasket
					item = new PicnicBasket();
					item.Movable = false;
					break;
				case 0x990: //Basket
					item = new Basket();
					item.Movable = false;
					break;
				case 0x9AA: //WoodenBox (0xE7D)
					item = new WoodenBox();
					item.Movable = false;
					break;
				case 0xE7D: //WoodenBox (0xE7D)
					item = new WoodenBox();
					item.Movable = false;
					item.ItemID = 0xE7D;
					break;
				case 0x9A9: //SmallCrate (0xE7E)
					item = new SmallCrate();
					item.Movable = false;
					break;
				case 0xE7E: //SmallCrate (0xE7E)
					item = new SmallCrate();
					item.Movable = false;
					item.ItemID = 0xE7E;
					break;
				case 0xE3F: //MediumCrate (0xE3E)
					item = new MediumCrate();
					item.Movable = false;
					break;
				case 0xE3E: //MediumCrate (0xE3E)
					item = new MediumCrate();
					item.Movable = false;
					item.ItemID = 0xE3E;
					break;
				case 0xE3D: //LargeCrate (0xE3C)
					item = new LargeCrate();
					item.Movable = false;
					break;
				case 0xE3C: //LargeCrate (0xE3C)
					item = new LargeCrate();
					item.Movable = false;
					item.ItemID = 0xE3C;
					break;
				case 0x9A8: //MetalBox (0xE80)
					item = new MetalBox();
					item.Movable = false;
					break;
				case 0xE80: //MetalBox (0xE80)
					item = new MetalBox();
					item.Movable = false;
					item.ItemID = 0xE80;
					break;
				case 0x9AB: //MetalChest (0xE7C)
					item = new MetalChest();
					item.Movable = false;
					break;
				case 0xE7C: //MetalChest (0xE7C)
					item = new MetalChest();
					item.Movable = false;
					item.ItemID = 0xE7C;
					break;
				case 0xE41: //MetalGoldenChest (0xE40)
					item = new MetalGoldenChest();
					item.Movable = false;
					break;
				case 0xE40: //MetalGoldenChest (0xE40)
					item = new MetalGoldenChest();
					item.Movable = false;
					item.ItemID = 0xE40;
					break;
				case 0xe43: //WoodenChest (0xe42)
					item = new WoodenChest();
					item.Movable = false;
					break;
				case 0xe42: //WoodenChest (0xe42)
					item = new WoodenChest();
					item.Movable = false;
					item.ItemID = 0xe42;
					break;
				case 0x280B: //PlainWoodenChest (0x280C)
					item = new PlainWoodenChest();
					item.Movable = false;
					break;
				case 0x280C: //PlainWoodenChest (0x280C)
					item = new PlainWoodenChest();
					item.Movable = false;
					item.ItemID = 0x280C;
					break;
				case 0x280D: //OrnateWoodenChest (0x280E)
					item = new OrnateWoodenChest();
					item.Movable = false;
					break;
				case 0x280E: //OrnateWoodenChest (0x280E)
					item = new OrnateWoodenChest();
					item.Movable = false;
					item.ItemID = 0x280E;
					break;
				case 0x280F: //GildedWoodenChest (0x2810)
					item = new GildedWoodenChest();
					item.Movable = false;
					break;
				case 0x2810: //GildedWoodenChest (0x2810)
					item = new GildedWoodenChest();
					item.Movable = false;
					item.ItemID = 0x2810;
					break;
				case 0x2811: //WoodenFootLocker (0x2812)
					item = new WoodenFootLocker();
					item.Movable = false;
					break;
				case 0x2812: //WoodenFootLocker (0x2812)
					item = new WoodenFootLocker();
					item.Movable = false;
					item.ItemID = 0x2812;
					break;
				case 0x2813: //FinishedWoodenChest (0x2814)
					item = new FinishedWoodenChest();
					item.Movable = false;
					break;
				case 0x2814: //FinishedWoodenChest (0x2814)
					item = new FinishedWoodenChest();
					item.Movable = false;
					item.ItemID = 0x2814;
					break;

				case 0x2815: //TallCabinet (0x2816)
					item = new TallCabinet();
					item.Movable = false;
					break;
				case 0x2816: //TallCabinet (0x2816)
					item = new TallCabinet();
					item.Movable = false;
					item.ItemID = 0x2816;
					break;
				case 0x2817: //ShortCabinet (0x2818)
					item = new ShortCabinet();
					item.Movable = false;
					break;
				case 0x2818: //ShortCabinet (0x2818)
					item = new ShortCabinet();
					item.Movable = false;
					item.ItemID = 0x2818;
					break;
				case 0x2857: //RedArmoire (0x2858)
					item = new RedArmoire();
					item.Movable = false;
					break;
				case 0x2858: //RedArmoire (0x2858)
					item = new RedArmoire();
					item.Movable = false;
					item.ItemID = 0x2858;
					break;
				case 0x285D: //CherryArmoire (0x285E)
					item = new CherryArmoire();
					item.Movable = false;
					break;
				case 0x285E: //CherryArmoire (0x285E)
					item = new CherryArmoire();
					item.Movable = false;
					item.ItemID = 0x285E;
					break;
				case 0x285B: //MapleArmoire (0x285C)
					item = new MapleArmoire();
					item.Movable = false;
					break;
				case 0x285C: //MapleArmoire (0x285C)
					item = new MapleArmoire();
					item.Movable = false;
					item.ItemID = 0x285C;
					break;
				case 0x2859: //ElegantArmoire (0x285A)
					item = new ElegantArmoire();
					item.Movable = false;
					break;
				case 0x285A: //ElegantArmoire (0x285A)
					item = new ElegantArmoire();
					item.Movable = false;
					item.ItemID = 0x285A;
					break;
				case 0xA97: //FullBookcase (0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c)
					item = new FullBookcase();
					item.Movable = false;
					break;
				case 0xA99: //FullBookcase (0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c)
					item = new FullBookcase();
					item.Movable = false;
					item.ItemID = 0xa99;
					break;
				case 0xA98: //FullBookcase (0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c)
					item = new FullBookcase();
					item.Movable = false;
					item.ItemID = 0xa98;
					break;
				case 0xA9a: //FullBookcase (0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c)
					item = new FullBookcase();
					item.Movable = false;
					item.ItemID = 0xa9a;
					break;
				case 0xA9b: //FullBookcase (0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c)
					item = new FullBookcase();
					item.Movable = false;
					item.ItemID = 0xa9b;
					break;
				case 0xA9c: //FullBookcase (0xa97, 0xa99, 0xa98, 0xa9a, 0xa9b, 0xa9c)
					item = new FullBookcase();
					item.Movable = false;
					item.ItemID = 0xa9c;
					break;
				case 0xA9D: //EmptyBookcase (0xa9e)
					item = new EmptyBookcase();
					item.Movable = false;
					break;
				case 0xa9e: //EmptyBookcase (0xa9e)
					item = new EmptyBookcase ();
					item.Movable = false;
					item.ItemID = 0xa9e;
					break;
				case 0xA2C: //Drawer (0xa34)
					item = new Drawer();
					item.Movable = false;
					break;
				case 0xa34: //Drawer (0xa34)
					item = new Drawer();
					item.Movable = false;
					item.ItemID = 0xa34;
					break;
				case 0xA30: //FancyDrawer (0xa38)
					item = new FancyDrawer();
					item.Movable = false;
					break;
				case 0xa38: //FancyDrawer (0xa38)
					item = new FancyDrawer();
					item.Movable = false;
					item.ItemID = 0xa38;
					break;
				case 0xA4F: //Armoire (0xa53)
					item = new Armoire();
					item.Movable = false;
					break;
				case 0xa53: //Armoire (0xa53)
					item = new Armoire();
					item.Movable = false;
					item.ItemID = 0xa53;
					break;
				case 0xA4D: //FancyArmoire (0xa51)
					item = new FancyArmoire();
					item.Movable = false;
					break;
				case 0xa51: //FancyArmoire (0xa51)
					item = new FancyArmoire();
					item.Movable = false;
					item.ItemID = 0xa51;
					break;



				default:
					item = new Static(ItemID);
					item.Movable = false;
					break;

			}

			return item;
		}
Esempio n. 4
0
		public void FinishPlacement( Mobile from, Point3D p )
		{
			if ( Type == CivicStrutureType.FieldStoneCityHall )
			{
				// City Bounds
				int offset = PlayerGovernmentSystem.L1CLOffset;

				Point2D center = new Point2D( p.X - m_Offset.X, p.Y - m_Offset.Y );
				Point2D start = new Point2D( center.X - offset, center.Y - offset );
				Point2D end = new Point2D( center.X + offset, center.Y + offset );
				Rectangle2D box = new Rectangle2D( start, end );
				ArrayList cityCoords = new ArrayList();
				cityCoords.Add( box );
				
				//Remove List
				ArrayList toDelete = new ArrayList();

				// Add Mayor As Citizen
				ArrayList citizens = new ArrayList();
				citizens.Add( from );

				// Add Sponsor List
				ArrayList sponsor = new ArrayList();

				// Add Ban List
				ArrayList ban = new ArrayList();

				// Add Lockdown List
				ArrayList ld = new ArrayList();

				// Add Waring List
				ArrayList war = new ArrayList();

				// Add Wars Declare List
				ArrayList dwar = new ArrayList();

				// Add Wars Invite List
				ArrayList iwar = new ArrayList();
	
				// Add Allegiances List
				ArrayList allies = new ArrayList();

				// Add Allegiances Declared List
				ArrayList dallies = new ArrayList();

				// Add Allegiances Invited List
				ArrayList iallies = new ArrayList();

				// Add Gardens And Parks
				ArrayList gardens = new ArrayList();
				ArrayList parks = new ArrayList();
				ArrayList vendor = new ArrayList(); 
				ArrayList addon = new ArrayList();

				// Add Management Stone
				CityManagementStone mStone = new CityManagementStone();

				// Add City Region
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				PlayerCityRegion reg = new PlayerCityRegion( mStone, from.Map, area );
				reg.Register();

				// Setup Stone
				mStone.RegionCoords = area;
				mStone.Coords = cityCoords;
				mStone.CityName = from.Name + "'s City";
				mStone.Level = 1;
				mStone.Center = center;
				mStone.Mayor = from;
				mStone.PCRegion = reg;
				mStone.Citizens = citizens;
				mStone.Banned = ban;
				mStone.isLockedDown = ld;
				mStone.Sponsored = sponsor;
				mStone.Vendors = vendor;
				mStone.AddOns = addon;

				mStone.Waring = war;
				mStone.WarsDeclared = dwar;
				mStone.WarsInvited = iwar;

				mStone.Allegiances = allies;
				mStone.AllegiancesDeclared = dallies;
				mStone.AllegiancesInvited = iallies;

				mStone.Gardens = gardens;
				mStone.Parks = parks;
				
				
				// Setup Mayor
				PlayerMobile pm = (PlayerMobile)from;
				pm.City = mStone;
				pm.CityTitle = "Mayor";
				pm.ShowCityTitle = true;

				FieldstoneCityHallAddon building = new FieldstoneCityHallAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 3, p.Y - 1, p.Z + 7 ), from.Map );

				// Add Voters List
				ArrayList voters = new ArrayList();

				CityVotingStone vStone = new CityVotingStone();
				vStone.Voters = voters;
				vStone.Stone = mStone;
				mStone.VoteStone = vStone;

				toDelete.Add( vStone );

				vStone.MoveToWorld( new Point3D( p.X, p.Y - 14, p.Z + 17 ), from.Map );

				toDelete.Add( d1 );
				toDelete.Add( d2 );
				toDelete.Add( building );

				mStone.toDelete = toDelete;

				mStone.MoveToWorld( new Point3D( p.X - 1, p.Y - 14, p.Z + 17 ), from.Map );
			}
			else if ( Type == CivicStrutureType.SandstoneCityHall )
			{
				// City Bounds
				int offset = PlayerGovernmentSystem.L1CLOffset;

				Point2D center = new Point2D( p.X - m_Offset.X, p.Y - m_Offset.Y );
				Point2D start = new Point2D( center.X - offset, center.Y - offset );
				Point2D end = new Point2D( center.X + offset, center.Y + offset );
				Rectangle2D box = new Rectangle2D( start, end );
				ArrayList cityCoords = new ArrayList();
				cityCoords.Add( box );

				//Remove List
				ArrayList toDelete = new ArrayList();

				// Add Mayor As Citizen
				ArrayList citizens = new ArrayList();
				citizens.Add( from );

				// Add Sponsor List
				ArrayList sponsor = new ArrayList();

				// Add Ban List
				ArrayList ban = new ArrayList();

				// Add Lockdown List
				ArrayList ld = new ArrayList();

				// Add Waring List
				ArrayList war = new ArrayList();

				// Add Wars Declare List
				ArrayList dwar = new ArrayList();

				// Add Wars Invite List
				ArrayList iwar = new ArrayList();
	
				// Add Allegiances List
				ArrayList allies = new ArrayList();

				// Add Allegiances Declared List
				ArrayList dallies = new ArrayList();

				// Add Allegiances Invited List
				ArrayList iallies = new ArrayList();

				// Add Gardens And Parks
				ArrayList gardens = new ArrayList();
				ArrayList parks = new ArrayList();
				ArrayList vendor = new ArrayList();
				ArrayList addon = new ArrayList();

				// Add Management Stone
				CityManagementStone mStone = new CityManagementStone();

				// Add City Region
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				PlayerCityRegion reg = new PlayerCityRegion( mStone, from.Map, area );
				reg.Register();

				// Setup Stone
				mStone.RegionCoords = area;
				mStone.Coords = cityCoords;
				mStone.CityName = from.Name + "'s City";
				mStone.Level = 1;
				mStone.Center = center;
				mStone.Mayor = from;
				mStone.PCRegion = reg;
				mStone.Citizens = citizens;
				mStone.Banned = ban;
				mStone.isLockedDown = ld;
				mStone.Sponsored = sponsor;
				mStone.Vendors = vendor;
				mStone.AddOns = addon;

				mStone.Waring = war;
				mStone.WarsDeclared = dwar;
				mStone.WarsInvited = iwar;

				mStone.Allegiances = allies;
				mStone.AllegiancesDeclared = dallies;
				mStone.AllegiancesInvited = iallies;

				mStone.Gardens = gardens;
				mStone.Parks = parks;

				// Setup Mayor
				PlayerMobile pm = (PlayerMobile)from;
				pm.City = mStone;
				pm.CityTitle = "Mayor";
				pm.ShowCityTitle = true;

				SandstoneCityHallAddon building = new SandstoneCityHallAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X + 3, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 4, p.Y - 1, p.Z + 7 ), from.Map );

				// Add Voters List
				ArrayList voters = new ArrayList();

				CityVotingStone vStone = new CityVotingStone();
				vStone.Voters = voters;
				vStone.Stone = mStone;
				mStone.VoteStone = vStone;

				toDelete.Add( vStone );

				vStone.MoveToWorld( new Point3D( p.X - 5, p.Y - 14, p.Z + 7 ), from.Map );

				toDelete.Add( d1 );
				toDelete.Add( d2 );
				toDelete.Add( building );

				mStone.toDelete = toDelete;

				mStone.MoveToWorld( new Point3D( p.X - 6, p.Y - 14, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.MarbleCityHall )
			{
				// City Bounds
				int offset = PlayerGovernmentSystem.L1CLOffset;

				Point2D center = new Point2D( p.X - m_Offset.X, p.Y - m_Offset.Y );
				Point2D start = new Point2D( center.X - offset, center.Y - offset );
				Point2D end = new Point2D( center.X + offset, center.Y + offset );
				Rectangle2D box = new Rectangle2D( start, end );
				ArrayList cityCoords = new ArrayList();
				cityCoords.Add( box );

				//Remove List
				ArrayList toDelete = new ArrayList();

				// Add Mayor As Citizen
				ArrayList citizens = new ArrayList();
				citizens.Add( from );

				// Add Sponsor List
				ArrayList sponsor = new ArrayList();

				// Add Ban List
				ArrayList ban = new ArrayList();

				// Add Lockdown List
				ArrayList ld = new ArrayList();

				// Add Waring List
				ArrayList war = new ArrayList();

				// Add Wars Declare List
				ArrayList dwar = new ArrayList();

				// Add Wars Invite List
				ArrayList iwar = new ArrayList();
	
				// Add Allegiances List
				ArrayList allies = new ArrayList();

				// Add Allegiances Declared List
				ArrayList dallies = new ArrayList();

				// Add Allegiances Invited List
				ArrayList iallies = new ArrayList();

				// Add Gardens And Parks
				ArrayList gardens = new ArrayList();
				ArrayList parks = new ArrayList();
				ArrayList vendor = new ArrayList();
				ArrayList addon = new ArrayList();

				// Add Management Stone
				CityManagementStone mStone = new CityManagementStone();

				// Add City Region
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				PlayerCityRegion reg = new PlayerCityRegion( mStone, from.Map, area );
				reg.Register();

				// Setup Stone
				mStone.RegionCoords = area;
				mStone.Coords = cityCoords;
				mStone.CityName = from.Name + "'s City";
				mStone.Level = 1;
				mStone.Center = center;
				mStone.Mayor = from;
				mStone.PCRegion = reg;
				mStone.Citizens = citizens;
				mStone.Banned = ban;
				mStone.isLockedDown = ld;
				mStone.Sponsored = sponsor;
				mStone.Vendors = vendor;
				mStone.AddOns = addon;

				mStone.Waring = war;
				mStone.WarsDeclared = dwar;
				mStone.WarsInvited = iwar;

				mStone.Allegiances = allies;
				mStone.AllegiancesDeclared = dallies;
				mStone.AllegiancesInvited = iallies;

				mStone.Gardens = gardens;
				mStone.Parks = parks;

				// Setup Mayor
				PlayerMobile pm = (PlayerMobile)from;
				pm.City = mStone;
				pm.CityTitle = "Mayor";
				pm.ShowCityTitle = true;

				MarbleCityHallAddon building = new MarbleCityHallAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 1, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X, p.Y - 1, p.Z + 7 ), from.Map );

				// Add Voters List
				ArrayList voters = new ArrayList();

				CityVotingStone vStone = new CityVotingStone();
				vStone.Voters = voters;
				vStone.Stone = mStone;
				mStone.VoteStone = vStone;

				toDelete.Add( vStone );

				vStone.MoveToWorld( new Point3D( p.X - 5, p.Y - 14, p.Z + 7 ), from.Map );

				toDelete.Add( d1 );
				toDelete.Add( d2 );
				toDelete.Add( building );

				mStone.toDelete = toDelete;

				mStone.MoveToWorld( new Point3D( p.X - 6, p.Y - 14, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.NecroCityHall )
			{
				// City Bounds
				int offset = PlayerGovernmentSystem.L1CLOffset;

				Point2D center = new Point2D( p.X - m_Offset.X, p.Y - m_Offset.Y );
				Point2D start = new Point2D( center.X - offset, center.Y - offset );
				Point2D end = new Point2D( center.X + offset, center.Y + offset );
				Rectangle2D box = new Rectangle2D( start, end );
				ArrayList cityCoords = new ArrayList();
				cityCoords.Add( box );

				//Remove List
				ArrayList toDelete = new ArrayList();

				// Add Mayor As Citizen
				ArrayList citizens = new ArrayList();
				citizens.Add( from );

				// Add Sponsor List
				ArrayList sponsor = new ArrayList();

				// Add Ban List
				ArrayList ban = new ArrayList();

				// Add Lockdown List
				ArrayList ld = new ArrayList();

				// Add Waring List
				ArrayList war = new ArrayList();

				// Add Wars Declare List
				ArrayList dwar = new ArrayList();

				// Add Wars Invite List
				ArrayList iwar = new ArrayList();
	
				// Add Allegiances List
				ArrayList allies = new ArrayList();

				// Add Allegiances Declared List
				ArrayList dallies = new ArrayList();

				// Add Allegiances Invited List
				ArrayList iallies = new ArrayList();

				// Add Gardens And Parks
				ArrayList gardens = new ArrayList();
				ArrayList parks = new ArrayList();
				ArrayList vendor = new ArrayList();
				ArrayList addon = new ArrayList();

				// Add Management Stone
				CityManagementStone mStone = new CityManagementStone();

				// Add City Region
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				PlayerCityRegion reg = new PlayerCityRegion( mStone, from.Map, area );
				reg.Register();

				// Setup Stone
				mStone.RegionCoords = area;
				mStone.Coords = cityCoords;
				mStone.CityName = from.Name + "'s City";
				mStone.Level = 1;
				mStone.Center = center;
				mStone.Mayor = from;
				mStone.PCRegion = reg;
				mStone.Citizens = citizens;
				mStone.Banned = ban;
				mStone.isLockedDown = ld;
				mStone.Sponsored = sponsor;
				mStone.Vendors = vendor;
				mStone.AddOns = addon;

				mStone.Waring = war;
				mStone.WarsDeclared = dwar;
				mStone.WarsInvited = iwar;

				mStone.Allegiances = allies;
				mStone.AllegiancesDeclared = dallies;
				mStone.AllegiancesInvited = iallies;

				mStone.Gardens = gardens;
				mStone.Parks = parks;

				// Setup Mayor
				PlayerMobile pm = (PlayerMobile)from;
				pm.City = mStone;
				pm.CityTitle = "Mayor";
				pm.ShowCityTitle = true;

				NecroCityHallAddon building = new NecroCityHallAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );

				// Add Voters List
				ArrayList voters = new ArrayList();

				CityVotingStone vStone = new CityVotingStone();
				vStone.Voters = voters;
				vStone.Stone = mStone;
				mStone.VoteStone = vStone;

				toDelete.Add( vStone );

				vStone.MoveToWorld( new Point3D( p.X - 5, p.Y - 14, p.Z + 7 ), from.Map );

				toDelete.Add( d1 );
				toDelete.Add( d2 );
				toDelete.Add( building );

				mStone.toDelete = toDelete;

				mStone.MoveToWorld( new Point3D( p.X - 6, p.Y - 14, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.PlasterCityHall )
			{
				// City Bounds
				int offset = PlayerGovernmentSystem.L1CLOffset;

				Point2D center = new Point2D( p.X - m_Offset.X, p.Y - m_Offset.Y );
				Point2D start = new Point2D( center.X - offset, center.Y - offset );
				Point2D end = new Point2D( center.X + offset, center.Y + offset );
				Rectangle2D box = new Rectangle2D( start, end );
				ArrayList cityCoords = new ArrayList();
				cityCoords.Add( box );

				//Remove List
				ArrayList toDelete = new ArrayList();

				// Add Mayor As Citizen
				ArrayList citizens = new ArrayList();
				citizens.Add( from );

				// Add Sponsor List
				ArrayList sponsor = new ArrayList();

				// Add Ban List
				ArrayList ban = new ArrayList();

				// Add Lockdown List
				ArrayList ld = new ArrayList();

				// Add Waring List
				ArrayList war = new ArrayList();

				// Add Wars Declare List
				ArrayList dwar = new ArrayList();

				// Add Wars Invite List
				ArrayList iwar = new ArrayList();
	
				// Add Allegiances List
				ArrayList allies = new ArrayList();

				// Add Allegiances Declared List
				ArrayList dallies = new ArrayList();

				// Add Allegiances Invited List
				ArrayList iallies = new ArrayList();

				// Add Gardens And Parks
				ArrayList gardens = new ArrayList();
				ArrayList parks = new ArrayList();
				ArrayList vendor = new ArrayList();
				ArrayList addon = new ArrayList();

				// Add Management Stone
				CityManagementStone mStone = new CityManagementStone();

				// Add City Region
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				PlayerCityRegion reg = new PlayerCityRegion( mStone, from.Map, area );
				reg.Register();

				// Setup Stone
				mStone.RegionCoords = area;
				mStone.Coords = cityCoords;
				mStone.CityName = from.Name + "'s City";
				mStone.Level = 1;
				mStone.Center = center;
				mStone.Mayor = from;
				mStone.PCRegion = reg;
				mStone.Citizens = citizens;
				mStone.Banned = ban;
				mStone.isLockedDown = ld;
				mStone.Sponsored = sponsor;
				mStone.Vendors = vendor;
				mStone.AddOns = addon;

				mStone.Waring = war;
				mStone.WarsDeclared = dwar;
				mStone.WarsInvited = iwar;

				mStone.Allegiances = allies;
				mStone.AllegiancesDeclared = dallies;
				mStone.AllegiancesInvited = iallies;

				mStone.Gardens = gardens;
				mStone.Parks = parks;

				// Setup Mayor
				PlayerMobile pm = (PlayerMobile)from;
				pm.City = mStone;
				pm.CityTitle = "Mayor";
				pm.ShowCityTitle = true;

				PlasterCityHallAddon building = new PlasterCityHallAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 1, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X, p.Y - 1, p.Z + 7 ), from.Map );

				// Add Voters List
				ArrayList voters = new ArrayList();

				CityVotingStone vStone = new CityVotingStone();
				vStone.Voters = voters;
				vStone.Stone = mStone;
				mStone.VoteStone = vStone;

				toDelete.Add( vStone );

				vStone.MoveToWorld( new Point3D( p.X - 5, p.Y - 14, p.Z + 7 ), from.Map );

				toDelete.Add( d1 );
				toDelete.Add( d2 );
				toDelete.Add( building );

				mStone.toDelete = toDelete;

				mStone.MoveToWorld( new Point3D( p.X - 6, p.Y - 14, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.WoodCityHall )
			{
				// City Bounds
				int offset = PlayerGovernmentSystem.L1CLOffset;

				Point2D center = new Point2D( p.X - m_Offset.X, p.Y - m_Offset.Y );
				Point2D start = new Point2D( center.X - offset, center.Y - offset );
				Point2D end = new Point2D( center.X + offset, center.Y + offset );
				Rectangle2D box = new Rectangle2D( start, end );
				ArrayList cityCoords = new ArrayList();
				cityCoords.Add( box );

				//Remove List
				ArrayList toDelete = new ArrayList();

				// Add Mayor As Citizen
				ArrayList citizens = new ArrayList();
				citizens.Add( from );

				// Add Sponsor List
				ArrayList sponsor = new ArrayList();

				// Add Ban List
				ArrayList ban = new ArrayList();

				// Add Lockdown List
				ArrayList ld = new ArrayList();

				// Add Waring List
				ArrayList war = new ArrayList();

				// Add Wars Declare List
				ArrayList dwar = new ArrayList();

				// Add Wars Invite List
				ArrayList iwar = new ArrayList();
	
				// Add Allegiances List
				ArrayList allies = new ArrayList();

				// Add Allegiances Declared List
				ArrayList dallies = new ArrayList();

				// Add Allegiances Invited List
				ArrayList iallies = new ArrayList();

				// Add Gardens And Parks
				ArrayList gardens = new ArrayList();
				ArrayList parks = new ArrayList();
				ArrayList vendor = new ArrayList();
				ArrayList addon = new ArrayList();

				// Add Management Stone
				CityManagementStone mStone = new CityManagementStone();

				// Add City Region
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				PlayerCityRegion reg = new PlayerCityRegion( mStone, from.Map, area );
				reg.Register();

				// Setup Stone
				mStone.RegionCoords = area;
				mStone.Coords = cityCoords;
				mStone.CityName = from.Name + "'s City";
				mStone.Level = 1;
				mStone.Center = center;
				mStone.Mayor = from;
				mStone.PCRegion = reg;
				mStone.Citizens = citizens;
				mStone.Banned = ban;
				mStone.isLockedDown = ld;
				mStone.Sponsored = sponsor;
				mStone.Vendors = vendor;
				mStone.AddOns = addon;

				mStone.Waring = war;
				mStone.WarsDeclared = dwar;
				mStone.WarsInvited = iwar;

				mStone.Allegiances = allies;
				mStone.AllegiancesDeclared = dallies;
				mStone.AllegiancesInvited = iallies;

				mStone.Gardens = gardens;
				mStone.Parks = parks;

				// Setup Mayor
				PlayerMobile pm = (PlayerMobile)from;
				pm.City = mStone;
				pm.CityTitle = "Mayor";
				pm.ShowCityTitle = true;

				WoodCityHallAddon building = new WoodCityHallAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 1, p.Y - 1, p.Z + 7 ), from.Map );

				// Add Voters List
				ArrayList voters = new ArrayList();

				CityVotingStone vStone = new CityVotingStone();
				vStone.Voters = voters;
				vStone.Stone = mStone;
				mStone.VoteStone = vStone;

				toDelete.Add( vStone );

				vStone.MoveToWorld( new Point3D( p.X - 5, p.Y - 14, p.Z + 7 ), from.Map );

				toDelete.Add( d1 );
				toDelete.Add( d2 );
				toDelete.Add( building );

				mStone.toDelete = toDelete;

				mStone.MoveToWorld( new Point3D( p.X - 6, p.Y - 14, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.StoneCityHall )
			{
				// City Bounds
				int offset = PlayerGovernmentSystem.L1CLOffset;

				Point2D center = new Point2D( p.X - m_Offset.X, p.Y - m_Offset.Y );
				Point2D start = new Point2D( center.X - offset, center.Y - offset );
				Point2D end = new Point2D( center.X + offset, center.Y + offset );
				Rectangle2D box = new Rectangle2D( start, end );
				ArrayList cityCoords = new ArrayList();
				cityCoords.Add( box );

				//Remove List
				ArrayList toDelete = new ArrayList();

				// Add Mayor As Citizen
				ArrayList citizens = new ArrayList();
				citizens.Add( from );

				// Add Sponsor List
				ArrayList sponsor = new ArrayList();

				// Add Ban List
				ArrayList ban = new ArrayList();

				// Add Lockdown List
				ArrayList ld = new ArrayList();

				// Add Waring List
				ArrayList war = new ArrayList();

				// Add Wars Declare List
				ArrayList dwar = new ArrayList();

				// Add Wars Invite List
				ArrayList iwar = new ArrayList();
	
				// Add Allegiances List
				ArrayList allies = new ArrayList();

				// Add Allegiances Declared List
				ArrayList dallies = new ArrayList();

				// Add Allegiances Invited List
				ArrayList iallies = new ArrayList();

				// Add Gardens And Parks
				ArrayList gardens = new ArrayList();
				ArrayList parks = new ArrayList();
				ArrayList vendor = new ArrayList();
				ArrayList addon = new ArrayList();

				// Add Management Stone
				CityManagementStone mStone = new CityManagementStone();

				// Add City Region
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				PlayerCityRegion reg = new PlayerCityRegion( mStone, from.Map, area );
				reg.Register();

				// Setup Stone
				mStone.RegionCoords = area;
				mStone.Coords = cityCoords;
				mStone.CityName = from.Name + "'s City";
				mStone.Level = 1;
				mStone.Center = center;
				mStone.Mayor = from;
				mStone.PCRegion = reg;
				mStone.Citizens = citizens;
				mStone.Banned = ban;
				mStone.isLockedDown = ld;
				mStone.Sponsored = sponsor;
				mStone.Vendors = vendor;
				mStone.AddOns = addon;

				mStone.Waring = war;
				mStone.WarsDeclared = dwar;
				mStone.WarsInvited = iwar;

				mStone.Allegiances = allies;
				mStone.AllegiancesDeclared = dallies;
				mStone.AllegiancesInvited = iallies;

				mStone.Gardens = gardens;
				mStone.Parks = parks;

				// Setup Mayor
				PlayerMobile pm = (PlayerMobile)from;
				pm.City = mStone;
				pm.CityTitle = "Mayor";
				pm.ShowCityTitle = true;

				StoneCityHallAddon building = new StoneCityHallAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 1, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X, p.Y - 1, p.Z + 7 ), from.Map );

				// Add Voters List
				ArrayList voters = new ArrayList();

				CityVotingStone vStone = new CityVotingStone();
				vStone.Voters = voters;
				vStone.Stone = mStone;
				mStone.VoteStone = vStone;

				toDelete.Add( vStone );

				vStone.MoveToWorld( new Point3D( p.X - 5, p.Y - 14, p.Z + 7 ), from.Map );

				toDelete.Add( d1 );
				toDelete.Add( d2 );
				toDelete.Add( building );

				mStone.toDelete = toDelete;

				mStone.MoveToWorld( new Point3D( p.X - 6, p.Y - 14, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.AsianCityHall )
			{
				// City Bounds
				int offset = PlayerGovernmentSystem.L1CLOffset;

				Point2D center = new Point2D( p.X - m_Offset.X, p.Y - m_Offset.Y );
				Point2D start = new Point2D( center.X - offset, center.Y - offset );
				Point2D end = new Point2D( center.X + offset, center.Y + offset );
				Rectangle2D box = new Rectangle2D( start, end );
				ArrayList cityCoords = new ArrayList();
				cityCoords.Add( box );

				//Remove List
				ArrayList toDelete = new ArrayList();

				// Add Mayor As Citizen
				ArrayList citizens = new ArrayList();
				citizens.Add( from );

				// Add Sponsor List
				ArrayList sponsor = new ArrayList();

				// Add Ban List
				ArrayList ban = new ArrayList();

				// Add Lockdown List
				ArrayList ld = new ArrayList();

				// Add Waring List
				ArrayList war = new ArrayList();

				// Add Wars Declare List
				ArrayList dwar = new ArrayList();

				// Add Wars Invite List
				ArrayList iwar = new ArrayList();
	
				// Add Allegiances List
				ArrayList allies = new ArrayList();

				// Add Allegiances Declared List
				ArrayList dallies = new ArrayList();

				// Add Allegiances Invited List
				ArrayList iallies = new ArrayList();

				// Add Gardens And Parks
				ArrayList gardens = new ArrayList();
				ArrayList parks = new ArrayList();
				ArrayList vendor = new ArrayList();
				ArrayList addon = new ArrayList();

				// Add Management Stone
				CityManagementStone mStone = new CityManagementStone();

				// Add City Region
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				PlayerCityRegion reg = new PlayerCityRegion( mStone, from.Map, area );
				reg.Register();

				// Setup Stone
				mStone.RegionCoords = area;
				mStone.Coords = cityCoords;
				mStone.CityName = from.Name + "'s City";
				mStone.Level = 1;
				mStone.Center = center;
				mStone.Mayor = from;
				mStone.PCRegion = reg;
				mStone.Citizens = citizens;
				mStone.Banned = ban;
				mStone.isLockedDown = ld;
				mStone.Sponsored = sponsor;
				mStone.Vendors = vendor;
				mStone.AddOns = addon;

				mStone.Waring = war;
				mStone.WarsDeclared = dwar;
				mStone.WarsInvited = iwar;

				mStone.Allegiances = allies;
				mStone.AllegiancesDeclared = dallies;
				mStone.AllegiancesInvited = iallies;

				mStone.Gardens = gardens;
				mStone.Parks = parks;

				// Setup Mayor
				PlayerMobile pm = (PlayerMobile)from;
				pm.City = mStone;
				pm.CityTitle = "Mayor";
				pm.ShowCityTitle = true;

				AsianCityHallAddon building = new AsianCityHallAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 2, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 1, p.Y - 1, p.Z + 7 ), from.Map );

				// Add Voters List
				ArrayList voters = new ArrayList();

				CityVotingStone vStone = new CityVotingStone();
				vStone.Voters = voters;
				vStone.Stone = mStone;
				mStone.VoteStone = vStone;

				toDelete.Add( vStone );

				vStone.MoveToWorld( new Point3D( p.X - 5, p.Y - 14, p.Z + 7 ), from.Map );

				toDelete.Add( d1 );
				toDelete.Add( d2 );
				toDelete.Add( building );

				mStone.toDelete = toDelete;

				mStone.MoveToWorld( new Point3D( p.X - 6, p.Y - 14, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.WoodCityHealer )
			{
				WoodCityHealerAddon building = new WoodCityHealerAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasHealer = true;
				

				CityResurrectionStone ank = new CityResurrectionStone();
				ank.Sign = sign;
				pm.City.ResStone = ank;
				
					//Initialize the Ghost Record
				Hashtable table = new Hashtable();
				ank.Ghosts = table;

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 3, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 2, p.Y - 2, p.Z + 7 ), from.Map );

				ank.MoveToWorld( new Point3D( p.X + 1, p.Y - 1, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( ank );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Healer;

				pm.City.toDelete.Add( sign );

				sign.Name = "City Healer";

				sign.MoveToWorld( new Point3D( p.X - 3, p.Y - 10, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.PlasterCityHealer )
			{
				PlasterCityHealerAddon building = new PlasterCityHealerAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasHealer = true;

				CityResurrectionStone ank = new CityResurrectionStone();
				ank.Sign = sign;
				pm.City.ResStone = ank;
				
					//Initialize the Ghost Record
				Hashtable table = new Hashtable();
				ank.Ghosts = table;

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 3, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 2, p.Y - 2, p.Z + 7 ), from.Map );

				ank.MoveToWorld( new Point3D( p.X + 1, p.Y - 1, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( ank );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Healer;

				pm.City.toDelete.Add( sign );

				sign.Name = "City Healer";

				sign.MoveToWorld( new Point3D( p.X - 3, p.Y - 10, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.StoneCityHealer )
			{
				StoneCityHealerAddon building = new StoneCityHealerAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasHealer = true;

				CityResurrectionStone ank = new CityResurrectionStone();
				ank.Sign = sign;
				pm.City.ResStone = ank;
				
					//Initialize the Ghost Record
				Hashtable table = new Hashtable();
				ank.Ghosts = table;

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 2, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 1, p.Y - 2, p.Z + 7 ), from.Map );

				ank.MoveToWorld( new Point3D( p.X + 1, p.Y - 1, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( ank );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Healer;

				sign.Name = "City Healer";

				pm.City.toDelete.Add( sign );

				sign.MoveToWorld( new Point3D( p.X - 3, p.Y - 10, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.FieldStoneCityHealer )
			{
				FieldstoneCityHealerAddon building = new FieldstoneCityHealerAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasHealer = true;

				CityResurrectionStone ank = new CityResurrectionStone();
				ank.Sign = sign;
				pm.City.ResStone = ank;
				
					//Initialize the Ghost Record
				Hashtable table = new Hashtable();
				ank.Ghosts = table;

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 3, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 2, p.Y - 2, p.Z + 7 ), from.Map );

				ank.MoveToWorld( new Point3D( p.X + 1, p.Y - 1, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( ank );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Healer;

				pm.City.toDelete.Add( sign );

				sign.Name = "City Healer";

				sign.MoveToWorld( new Point3D( p.X - 3, p.Y - 10, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.SandstoneCityHealer )
			{
				SandstoneCityHealerAddon building = new SandstoneCityHealerAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasHealer = true;

				CityResurrectionStone ank = new CityResurrectionStone();
				ank.Sign = sign;
				pm.City.ResStone = ank;
				
					//Initialize the Ghost Record
				Hashtable table = new Hashtable();
				ank.Ghosts = table;

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 2, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 1, p.Y - 2, p.Z + 7 ), from.Map );

				ank.MoveToWorld( new Point3D( p.X + 1, p.Y - 1, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( ank );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Healer;

				pm.City.toDelete.Add( sign );

				sign.Name = "City Healer";

				sign.MoveToWorld( new Point3D( p.X - 2, p.Y - 10, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.MarbleCityHealer )
			{
				MarbleCityHealerAddon building = new MarbleCityHealerAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasHealer = true;

				CityResurrectionStone ank = new CityResurrectionStone();
				ank.Sign = sign;
				pm.City.ResStone = ank;
				
					//Initialize the Ghost Record
				Hashtable table = new Hashtable();
				ank.Ghosts = table;

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 2, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 1, p.Y - 2, p.Z + 7 ), from.Map );

				ank.MoveToWorld( new Point3D( p.X + 1, p.Y - 1, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( ank );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Healer;

				pm.City.toDelete.Add( sign );

				sign.Name = "City Healer";

				sign.MoveToWorld( new Point3D( p.X - 2, p.Y - 10, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.NecroCityHealer )
			{
				NecroCityHealerAddon building = new NecroCityHealerAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasHealer = true;

				CityResurrectionStone ank = new CityResurrectionStone();
				ank.Sign = sign;
				pm.City.ResStone = ank;

					//Initialize the Ghost Record
				Hashtable table = new Hashtable();
				ank.Ghosts = table;
				
				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 2, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 1, p.Y - 2, p.Z + 7 ), from.Map );

				ank.MoveToWorld( new Point3D( p.X + 2, p.Y - 1, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( ank );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Healer;

				pm.City.toDelete.Add( sign );

				sign.Name = "City Healer";

				sign.MoveToWorld( new Point3D( p.X - 3, p.Y - 10, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.AsianCityHealer )
			{
				AsianCityHealerAddon building = new AsianCityHealerAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasHealer = true;

				CityResurrectionStone ank = new CityResurrectionStone();
				ank.Sign = sign;
				pm.City.ResStone = ank;
				
				//Initialize the Ghost Record
				Hashtable table = new Hashtable();
				ank.Ghosts = table;

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 3, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 2, p.Y - 2, p.Z + 7 ), from.Map );

				ank.MoveToWorld( new Point3D( p.X + 1, p.Y - 1, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( ank );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Healer;

				pm.City.toDelete.Add( sign );

				sign.Name = "City Healer";

				sign.MoveToWorld( new Point3D( p.X - 3, p.Y - 10, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.WoodCityBank )
			{
				WoodCityBankAddon building = new WoodCityBankAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasBank = true;

				CityBankStone bStone = new CityBankStone();

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 1, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X, p.Y - 2, p.Z + 7 ), from.Map );

				bStone.MoveToWorld( new Point3D( p.X, p.Y - 8, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( bStone );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Bank;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Bank";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.StoneCityBank )
			{
				StoneCityBankAddon building = new StoneCityBankAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasBank = true;

				CityBankStone bStone = new CityBankStone();

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 1, p.Y - 2, p.Z + 7 ), from.Map );

				bStone.MoveToWorld( new Point3D( p.X + 1, p.Y - 8, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( bStone );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Bank;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Bank";
				sign.MoveToWorld( new Point3D( p.X - 3, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.PlasterCityBank )
			{
				PlasterCityBankAddon building = new PlasterCityBankAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasBank = true;

				CityBankStone bStone = new CityBankStone();

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 1, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X, p.Y - 2, p.Z + 7 ), from.Map );

				bStone.MoveToWorld( new Point3D( p.X, p.Y - 8, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( bStone );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Bank;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Bank";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.FieldStoneCityBank )
			{
				FieldstoneCityBankAddon building = new FieldstoneCityBankAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasBank = true;

				CityBankStone bStone = new CityBankStone();

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 1, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X, p.Y - 2, p.Z + 7 ), from.Map );

				bStone.MoveToWorld( new Point3D( p.X, p.Y - 8, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( bStone );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Bank;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Bank";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.SandstoneCityBank )
			{
				SandstoneCityBankAddon building = new SandstoneCityBankAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasBank = true;

				CityBankStone bStone = new CityBankStone();

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 1, p.Y - 2, p.Z + 7 ), from.Map );

				bStone.MoveToWorld( new Point3D( p.X + 1, p.Y - 8, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( bStone );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Bank;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Bank";
				sign.MoveToWorld( new Point3D( p.X - 3, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.MarbleCityBank )
			{
				MarbleCityBankAddon building = new MarbleCityBankAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasBank = true;

				CityBankStone bStone = new CityBankStone();

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 1, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X, p.Y - 2, p.Z + 7 ), from.Map );

				bStone.MoveToWorld( new Point3D( p.X, p.Y - 8, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( bStone );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Bank;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Bank";
				sign.MoveToWorld( new Point3D( p.X - 3, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.NecroCityBank )
			{
				NecroCityBankAddon building = new NecroCityBankAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasBank = true;

				CityBankStone bStone = new CityBankStone();

				bStone.MoveToWorld( new Point3D( p.X + 1, p.Y - 8, p.Z + 7 ), from.Map );

				sign.toDelete.Add( bStone );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Bank;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Bank";
				sign.MoveToWorld( new Point3D( p.X - 3, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.AsianCityBank )
			{
				AsianCityBankAddon building = new AsianCityBankAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasBank = true;

				CityBankStone bStone = new CityBankStone();

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 1, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X, p.Y - 2, p.Z + 7 ), from.Map );

				bStone.MoveToWorld( new Point3D( p.X, p.Y - 8, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( bStone );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Bank;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Bank";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.WoodCityStable )
			{
				WoodCityStableAddon building = new WoodCityStableAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasStable = true;

				CityStableStone sStone = new CityStableStone();
				sStone.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 7 ), from.Map );
				sStone.Sign = sign;
				sign.toDelete.Add( sStone );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X + 2, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 3, p.Y - 2, p.Z + 7 ), from.Map );


				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Stable;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Stables";
				sign.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.StoneCityStable )
			{
				StoneCityStableAddon building = new StoneCityStableAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasStable = true;

				CityStableStone sStone = new CityStableStone();
				sStone.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 7 ), from.Map );
				sStone.Sign = sign;
				sign.toDelete.Add( sStone );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X + 2, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 3, p.Y - 2, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Stable;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Stables";
				sign.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.FieldStoneCityStable )
			{
				FieldstoneCityStableAddon building = new FieldstoneCityStableAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasStable = true;

				CityStableStone sStone = new CityStableStone();
				sStone.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 7 ), from.Map );
				sStone.Sign = sign;
				sign.toDelete.Add( sStone );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X + 2, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 3, p.Y - 2, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Stable;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Stables";
				sign.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.PlasterCityStable )
			{
				PlasterCityStableAddon building = new PlasterCityStableAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasStable = true;

				CityStableStone sStone = new CityStableStone();
				sStone.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 7 ), from.Map );
				sStone.Sign = sign;
				sign.toDelete.Add( sStone );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X + 2, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 3, p.Y - 2, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Stable;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Stables";
				sign.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.SandstoneCityStable )
			{
				SandstoneCityStableAddon building = new SandstoneCityStableAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasStable = true;

				CityStableStone sStone = new CityStableStone();
				sStone.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 7 ), from.Map );
				sStone.Sign = sign;
				sign.toDelete.Add( sStone );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X + 3, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 4, p.Y - 2, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Stable;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Stables";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.MarbleCityStable )
			{
				MarbleCityStableAddon building = new MarbleCityStableAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasStable = true;

				CityStableStone sStone = new CityStableStone();
				sStone.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 7 ), from.Map );
				sStone.Sign = sign;
				sign.toDelete.Add( sStone );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X + 3, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 4, p.Y - 2, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Stable;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Stables";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.NecroCityStable )
			{
				NecroCityStableAddon building = new NecroCityStableAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasStable = true;

				CityStableStone sStone = new CityStableStone();
				sStone.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 7 ), from.Map );
				sStone.Sign = sign;
				sign.toDelete.Add( sStone );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X + 3, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 4, p.Y - 2, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Stable;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Stables";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.AsianCityStable )
			{
				AsianCityStableAddon building = new AsianCityStableAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasStable = true;

				CityStableStone sStone = new CityStableStone();
				sStone.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 7 ), from.Map );
				sStone.Sign = sign;
				sign.toDelete.Add( sStone );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X + 2, p.Y - 2, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X + 3, p.Y - 2, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Stable;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Stables";
				sign.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.WoodCityTavern )
			{
				WoodCityTavernAddon building = new WoodCityTavernAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasTavern = true;

				Spawner spwn = new Spawner( "Barkeeper" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 3;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 7, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Tavern;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Tavern";
				sign.MoveToWorld( new Point3D( p.X - 7, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.StoneCityTavern )
			{
				StoneCityTavernAddon building = new StoneCityTavernAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasTavern = true;

				Spawner spwn = new Spawner( "Barkeeper" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 3;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 7, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Tavern;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Tavern";
				sign.MoveToWorld( new Point3D( p.X - 6, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.PlasterCityTavern )
			{
				PlasterCityTavernAddon building = new PlasterCityTavernAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasTavern = true;

				Spawner spwn = new Spawner( "Barkeeper" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 3;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 7, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Tavern;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Tavern";
				sign.MoveToWorld( new Point3D( p.X - 7, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.FieldStoneCityTavern )
			{
				FieldstoneCityTavernAddon building = new FieldstoneCityTavernAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasTavern = true;

				Spawner spwn = new Spawner( "Barkeeper" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 3;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 7, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Tavern;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Tavern";
				sign.MoveToWorld( new Point3D( p.X - 7, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.SandstoneCityTavern )
			{
				SandstoneCityTavernAddon building = new SandstoneCityTavernAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasTavern = true;

				Spawner spwn = new Spawner( "Barkeeper" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 3;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 7, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Tavern;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Tavern";
				sign.MoveToWorld( new Point3D( p.X - 7, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.MarbleCityTavern )
			{
				MarbleCityTavernAddon building = new MarbleCityTavernAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasTavern = true;

				Spawner spwn = new Spawner( "Barkeeper" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 3;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 7, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Tavern;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Tavern";
				sign.MoveToWorld( new Point3D( p.X - 7, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.NecroCityTavern )
			{
				NecroCityTavernAddon building = new NecroCityTavernAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasTavern = true;

				Spawner spwn = new Spawner( "Barkeeper" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 3;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 7, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Tavern;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Tavern";
				sign.MoveToWorld( new Point3D( p.X - 7, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.AsianCityTavern )
			{
				AsianCityTavernAddon building = new AsianCityTavernAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasTavern = true;

				Spawner spwn = new Spawner( "Barkeeper" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 3;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				BaseDoor d1 = new StrongWoodDoor( DoorFacing.WestCW );
				BaseDoor d2 = new StrongWoodDoor( DoorFacing.EastCCW );
				
				d1.Link = d2;
				d2.Link = d1;

				d1.MoveToWorld( new Point3D( p.X - 5, p.Y - 1, p.Z + 7 ), from.Map );
				d2.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 7, p.Z + 7 ), from.Map );

				sign.toDelete.Add( d1 );
				sign.toDelete.Add( d2 );
				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Tavern;

				pm.City.toDelete.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Tavern";
				sign.MoveToWorld( new Point3D( p.X - 7, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.WoodCityMoongate )
			{
				WoodCityMoongateAddon building = new WoodCityMoongateAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasMoongate = true;

				Spawner spwn = new Spawner( "PublicMoongate" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 0;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 5 ), from.Map );

				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Moongate;

				pm.City.toDelete.Add( sign );
				pm.City.MoongateLocation = spwn.Location;

				sign.Name = "City Moongate";
				sign.MoveToWorld( new Point3D( p.X - 3, p.Y, p.Z -6 ), from.Map );
			}
			else if ( Type == CivicStrutureType.StoneCityMoongate )
			{
				StoneCityMoongateAddon building = new StoneCityMoongateAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasMoongate = true;

				Spawner spwn = new Spawner( "PublicMoongate" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 0;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 5 ), from.Map );

				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Moongate;

				pm.City.toDelete.Add( sign );
				pm.City.MoongateLocation = spwn.Location;

				sign.Name = "City Moongate";
				sign.MoveToWorld( new Point3D( p.X - 3, p.Y, p.Z -6 ), from.Map );
			}
			else if ( Type == CivicStrutureType.SandstoneCityMoongate )
			{
				SandstoneCityMoongateAddon building = new SandstoneCityMoongateAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasMoongate = true;

				Spawner spwn = new Spawner( "PublicMoongate" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 0;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 5 ), from.Map );

				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Moongate;

				pm.City.toDelete.Add( sign );
				pm.City.MoongateLocation = spwn.Location;

				sign.Name = "City Moongate";
				sign.MoveToWorld( new Point3D( p.X - 3, p.Y, p.Z -6 ), from.Map );
			}
			else if ( Type == CivicStrutureType.MarbleCityMoongate )
			{
				MarbleCityMoongateAddon building = new MarbleCityMoongateAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasMoongate = true;

				Spawner spwn = new Spawner( "PublicMoongate" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 0;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 5 ), from.Map );

				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Moongate;

				pm.City.toDelete.Add( sign );
				pm.City.MoongateLocation = spwn.Location;

				sign.Name = "City Moongate";
				sign.MoveToWorld( new Point3D( p.X - 3, p.Y, p.Z -6 ), from.Map );
			}
			else if ( Type == CivicStrutureType.NecroCityMoongate )
			{
				NecroCityMoongateAddon building = new NecroCityMoongateAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasMoongate = true;

				Spawner spwn = new Spawner( "PublicMoongate" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 0;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 5 ), from.Map );

				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Moongate;

				pm.City.toDelete.Add( sign );
				pm.City.MoongateLocation = spwn.Location;

				sign.ItemID = 3026;
				sign.Name = "City Moongate";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y, p.Z + 10 ), from.Map );
			}
			else if ( Type == CivicStrutureType.AsianCityMoongate )
			{
				AsianCityMoongateAddon building = new AsianCityMoongateAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				CivicSign sign = new CivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;

				pm.City.HasMoongate = true;

				Spawner spwn = new Spawner( "PublicMoongate" );
				spwn.Count = 1;
				spwn.Running = true;
				spwn.HomeRange = 0;
				spwn.MinDelay = TimeSpan.FromMinutes( 1 );
				spwn.MaxDelay = TimeSpan.FromMinutes( 2 );

				spwn.MoveToWorld( new Point3D( p.X, p.Y - 5, p.Z + 5 ), from.Map );

				sign.toDelete.Add( spwn );
				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Moongate;

				pm.City.toDelete.Add( sign );
				pm.City.MoongateLocation = spwn.Location;

				sign.Name = "City Moongate";
				sign.MoveToWorld( new Point3D( p.X - 3, p.Y, p.Z -6 ), from.Map );
			}
			else if ( Type == CivicStrutureType.SmallCityGarden )
			{
				SmallCityGardenAddon building = new SmallCityGardenAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				RecCivicSign sign = new RecCivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.CityLevel = 1;

				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Garden;

				pm.City.toDelete.Add( sign );
				pm.City.Gardens.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Small Garden";
				sign.MoveToWorld( new Point3D( p.X - 3, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.MedCityGarden )
			{
				MedCityGardenAddon building = new MedCityGardenAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				RecCivicSign sign = new RecCivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.CityLevel = 2;

				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Garden;

				pm.City.toDelete.Add( sign );
				pm.City.Gardens.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Medium Garden";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y - 1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.LargeCityGarden )
			{
				LargeCityGardenAddon building = new LargeCityGardenAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				RecCivicSign sign = new RecCivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.CityLevel = 3;

				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Garden;

				pm.City.toDelete.Add( sign );
				pm.City.Gardens.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Large Garden";
				sign.MoveToWorld( new Point3D( p.X - 8, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.SmallCityPark )
			{
				SmallCityParkAddon building = new SmallCityParkAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				RecCivicSign sign = new RecCivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.CityLevel = 4;

				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Park;

				pm.City.toDelete.Add( sign );
				pm.City.Gardens.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Small Park";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.MedCityPark )
			{
				MedCityParkAddon building = new MedCityParkAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				RecCivicSign sign = new RecCivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.CityLevel = 5;

				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Park;

				pm.City.toDelete.Add( sign );
				pm.City.Gardens.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Medium Park";
				sign.MoveToWorld( new Point3D( p.X - 7, p.Y, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.LargeCityPark )
			{
				LargeCityParkAddon building = new LargeCityParkAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );

				PlayerMobile pm = (PlayerMobile)from;

				//Remove List
				ArrayList toDelete = new ArrayList();

				RecCivicSign sign = new RecCivicSign();
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.CityLevel = 6;

				sign.toDelete.Add( building );

				sign.Type = CivicSignType.Park;

				pm.City.toDelete.Add( sign );
				pm.City.Gardens.Add( sign );

				sign.ItemID = 3026;
				sign.Name = "City Large Park";
				sign.MoveToWorld( new Point3D( p.X - 8, p.Y - 1, p.Z + 7 ), from.Map );
			} 
			else if ( Type == CivicStrutureType.AsianMarket )
			{
				AsianCityMarketAddon building = new AsianCityMarketAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );
				PlayerMobile pm = (PlayerMobile)from;
				CivicSign sign = new CivicSign();				
				
				Point3D center = new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z );
				Point3D start = new Point3D( center.X - 4, center.Y - 4, center.Z );
				Point3D end = new Point3D( center.X + 6, center.Y + 6, center.Z );
				Rectangle2D box = new Rectangle2D( start, end );
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				CityLandLord lord = new CityLandLord( pm.City, area, sign, p, from.Map  );
				
							
				//Remove List
				ArrayList toDelete = new ArrayList();
				
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.Stone.HasMarket = true;
				
				sign.toDelete.Add( building );
				sign.LandlordRemove = lord;

				sign.Type = CivicSignType.Market;

				pm.City.toDelete.Add( sign );
						
				

				sign.ItemID = 3026;
				sign.Name = "City Market";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y -1, p.Z + 7 ), from.Map );
			}
			
			else if ( Type == CivicStrutureType.FieldstoneMarket )
			{
				FieldstoneCityMarketAddon building = new FieldstoneCityMarketAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );
				PlayerMobile pm = (PlayerMobile)from;
				CivicSign sign = new CivicSign();				
				
				Point3D center = new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z );
				Point3D start = new Point3D( center.X - 4, center.Y - 4, center.Z );
				Point3D end = new Point3D( center.X + 6, center.Y + 6, center.Z );
				Rectangle2D box = new Rectangle2D( start, end );
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				CityLandLord lord = new CityLandLord( pm.City, area, sign, p, from.Map  );
				
							
				//Remove List
				ArrayList toDelete = new ArrayList();
				
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.Stone.HasMarket = true;
				
				sign.toDelete.Add( building );
				sign.LandlordRemove = lord;

				sign.Type = CivicSignType.Market;

				pm.City.toDelete.Add( sign );
						
				

				sign.ItemID = 3026;
				sign.Name = "City Market";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y -1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.SandstoneMarket )
			{
				SandstoneCityMarketAddon building = new SandstoneCityMarketAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );
				PlayerMobile pm = (PlayerMobile)from;
				CivicSign sign = new CivicSign();				
				
				Point3D center = new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z );
				Point3D start = new Point3D( center.X - 4, center.Y - 4, center.Z );
				Point3D end = new Point3D( center.X + 6, center.Y + 6, center.Z );
				Rectangle2D box = new Rectangle2D( start, end );
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				CityLandLord lord = new CityLandLord( pm.City, area, sign, p, from.Map  );
				
							
				//Remove List
				ArrayList toDelete = new ArrayList();
				
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.Stone.HasMarket = true;
				
				sign.toDelete.Add( building );
				sign.LandlordRemove = lord;

				sign.Type = CivicSignType.Market;

				pm.City.toDelete.Add( sign );
						
				

				sign.ItemID = 3026;
				sign.Name = "City Market";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y -1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.MarbleMarket )
			{
				MarbleCityMarketAddon building = new MarbleCityMarketAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );
				PlayerMobile pm = (PlayerMobile)from;
				CivicSign sign = new CivicSign();				
				
				Point3D center = new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z );
				Point3D start = new Point3D( center.X - 4, center.Y - 4, center.Z );
				Point3D end = new Point3D( center.X + 6, center.Y + 6, center.Z );
				Rectangle2D box = new Rectangle2D( start, end );
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				CityLandLord lord = new CityLandLord( pm.City, area, sign, p, from.Map  );
				
							
				//Remove List
				ArrayList toDelete = new ArrayList();
				
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.Stone.HasMarket = true;
				
				sign.toDelete.Add( building );
				sign.LandlordRemove = lord;

				sign.Type = CivicSignType.Market;

				pm.City.toDelete.Add( sign );
						
				

				sign.ItemID = 3026;
				sign.Name = "City Market";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y -1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.NecroMarket )
			{
				NecroCityMarketAddon building = new NecroCityMarketAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );
				PlayerMobile pm = (PlayerMobile)from;
				CivicSign sign = new CivicSign();				
				
				Point3D center = new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z );
				Point3D start = new Point3D( center.X - 4, center.Y - 4, center.Z );
				Point3D end = new Point3D( center.X + 6, center.Y + 6, center.Z );
				Rectangle2D box = new Rectangle2D( start, end );
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				CityLandLord lord = new CityLandLord( pm.City, area, sign, p, from.Map  );
				
							
				//Remove List
				ArrayList toDelete = new ArrayList();
				
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.Stone.HasMarket = true;
				
				sign.toDelete.Add( building );
				sign.LandlordRemove = lord;

				sign.Type = CivicSignType.Market;

				pm.City.toDelete.Add( sign );
						
				

				sign.ItemID = 3026;
				sign.Name = "City Market";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y -1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.WoodMarket )
			{
				WoodCityMarketAddon building = new WoodCityMarketAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );
				PlayerMobile pm = (PlayerMobile)from;
				CivicSign sign = new CivicSign();				
				
				Point3D center = new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z );
				Point3D start = new Point3D( center.X - 4, center.Y - 4, center.Z );
				Point3D end = new Point3D( center.X + 6, center.Y + 6, center.Z );
				Rectangle2D box = new Rectangle2D( start, end );
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				CityLandLord lord = new CityLandLord( pm.City, area, sign, p, from.Map  );
				
							
				//Remove List
				ArrayList toDelete = new ArrayList();
				
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.Stone.HasMarket = true;
				
				sign.toDelete.Add( building );
				sign.LandlordRemove = lord;

				sign.Type = CivicSignType.Market;

				pm.City.toDelete.Add( sign );
						
				

				sign.ItemID = 3026;
				sign.Name = "City Market";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y -1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.StoneMarket )
			{
				StoneCityMarketAddon building = new StoneCityMarketAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );
				PlayerMobile pm = (PlayerMobile)from;
				CivicSign sign = new CivicSign();				
				
				Point3D center = new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z );
				Point3D start = new Point3D( center.X - 4, center.Y - 4, center.Z );
				Point3D end = new Point3D( center.X + 6, center.Y + 6, center.Z );
				Rectangle2D box = new Rectangle2D( start, end );
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				CityLandLord lord = new CityLandLord( pm.City, area, sign, p, from.Map  );
				
							
				//Remove List
				ArrayList toDelete = new ArrayList();
				
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.Stone.HasMarket = true;
				
				sign.toDelete.Add( building );
				sign.LandlordRemove = lord;

				sign.Type = CivicSignType.Market;

				pm.City.toDelete.Add( sign );
						
				

				sign.ItemID = 3026;
				sign.Name = "City Market";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y -1, p.Z + 7 ), from.Map );
			}
			else if ( Type == CivicStrutureType.PlasterMarket )
			{
				PlasterCityMarketAddon building = new PlasterCityMarketAddon();
				building.MoveToWorld( new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ), from.Map );
				PlayerMobile pm = (PlayerMobile)from;
				CivicSign sign = new CivicSign();				
				
				Point3D center = new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z );
				Point3D start = new Point3D( center.X - 4, center.Y - 4, center.Z );
				Point3D end = new Point3D( center.X + 6, center.Y + 6, center.Z );
				Rectangle2D box = new Rectangle2D( start, end );
				Rectangle3D[] area = PlayerGovernmentSystem.FormatRegion( box );
				CityLandLord lord = new CityLandLord( pm.City, area, sign, p, from.Map  );
				
							
				//Remove List
				ArrayList toDelete = new ArrayList();
				
				sign.Stone = pm.City;
				sign.toDelete = toDelete;
				sign.Stone.HasMarket = true;
				
				sign.toDelete.Add( building );
				sign.LandlordRemove = lord;

				sign.Type = CivicSignType.Market;

				pm.City.toDelete.Add( sign );
						
				

				sign.ItemID = 3026;
				sign.Name = "City Market";
				sign.MoveToWorld( new Point3D( p.X - 4, p.Y -1, p.Z + 7 ), from.Map );
			}
			

			this.Delete();
		}