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