public static bool CheckPlacement(Mobile from, Point3D p, int multiId, Point3D offset) { ArrayList toMove; Point3D center = new Point3D(p.X - offset.X, p.Y - offset.Y, p.Z - offset.Z); HousePlacementResult res = HousePlacement.Check(from, multiId, center, out toMove); if (res == HousePlacementResult.Valid) { return(true); } else if (res == HousePlacementResult.BadItem || res == HousePlacementResult.BadLand || res == HousePlacementResult.BadStatic || res == HousePlacementResult.BadRegionHidden) { from.SendLocalizedMessage(1043287); // The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain. return(false); } else if (res == HousePlacementResult.NoSurface) { from.SendMessage("The house could not be created here. Part of the foundation would not be on any surface."); return(false); } else if (res == HousePlacementResult.BadRegion) { from.SendLocalizedMessage(501265); // Housing cannot be created in this area. return(false); } else { return(false); } }
private void PlacementWarning_Callback(Mobile from, bool okay, object state) { PreviewHouse prevHouse = (PreviewHouse)state; if (Deleted || !okay || !from.CheckAlive() || from.Backpack == null || from.Backpack.FindItemByType(typeof(HouseDeed)) == null) { prevHouse.Delete(); return; } ; if (prevHouse.Deleted) { /* Too much time has passed and the test house you created has been deleted. * Please try again! */ from.SendGump(new NoticeGump(1060637, 30720, 1060647, 32512, 320, 180, null, null)); return; } Point3D center = prevHouse.Location; Map map = prevHouse.Map; prevHouse.Delete(); ArrayList toMove; HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out toMove); BaseHouse house = GetHouse(from); house.MoveToWorld(center, from.Map); Delete(); for (int i = 0; i < toMove.Count; ++i) { object o = toMove[i]; if (o is Mobile) { ((Mobile)o).Location = house.BanLocation; } else if (o is Item) { ((Item)o).Location = house.BanLocation; } } }
public void OnPlacement(Mobile from, Point3D p) { if (Deleted) { return; } if (!IsChildOf(from.Backpack)) { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } else if (from.AccessLevel < AccessLevel.GameMaster && BaseHouse.HasAccountHouse(from)) { from.SendLocalizedMessage(501271); // You already own a house, you may not place another! } else { ArrayList toMove; Point3D center = new Point3D(p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z); HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out toMove); switch (res) { case HousePlacementResult.Valid: { BaseHouse house = GetHouse(from); house.MoveToWorld(center, from.Map); Delete(); for (int i = 0; i < toMove.Count; ++i) { object o = toMove[i]; if (o is Mobile) { ((Mobile)o).Location = house.BanLocation; } else if (o is Item) { ((Item)o).Location = house.BanLocation; } } break; } case HousePlacementResult.BadItem: case HousePlacementResult.BadLand: case HousePlacementResult.BadStatic: case HousePlacementResult.BadRegionHidden: { from.SendLocalizedMessage(1043287); // The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain. break; } case HousePlacementResult.NoSurface: { from.SendMessage("The house could not be created here. Part of the foundation would not be on any surface."); break; } case HousePlacementResult.BadRegion: { from.SendLocalizedMessage(501265); // Housing cannot be created in this area. break; } case HousePlacementResult.BadRegionTemp: { from.SendLocalizedMessage(501270); //Lord British has decreed a 'no build' period, thus you cannot build this house at this time. break; } case HousePlacementResult.BadRegionRaffle: { from.SendLocalizedMessage(1150493); // You must have a deed for this plot of land in order to build here. break; } } } }
public bool Validate(Mobile from) { // original region "name" checks. if (from.Region.Name == "Cove" || from.Region.Name == "Britain" || //towns from.Region.Name == "Jhelom" || from.Region.Name == "Minoc" || //towns from.Region.Name == "Haven" || from.Region.Name == "Trinsic" || //towns from.Region.Name == "Vesper" || from.Region.Name == "Yew" || //towns from.Region.Name == "Wind" || from.Region.Name == "Serpent's Hold" || //towns from.Region.Name == "Skara Brae" || from.Region.Name == "Nujel'm" || //towns from.Region.Name == "Moonglow" || from.Region.Name == "Magincia" || //towns from.Region.Name == "Delucia" || from.Region.Name == "Papua" || //towns from.Region.Name == "Buccaneer's Den" || from.Region.Name == "Ocllo" || //towns from.Region.Name == "Gargoyle City" || from.Region.Name == "Mistas" || //towns from.Region.Name == "Montor" || from.Region.Name == "Alexandretta's Bowl" || //towns from.Region.Name == "Lenmir Anfinmotas" || from.Region.Name == "Reg Volon" || //towns from.Region.Name == "Bet-Lem Reg" || from.Region.Name == "Lake Shire" || //towns from.Region.Name == "Ancient Citadel" || from.Region.Name == "Luna" || //towns from.Region.Name == "Umbra" || //towns from.Region.Name == "Moongates" || from.Region.Name == "Covetous" || from.Region.Name == "Deceit" || //dungeons from.Region.Name == "Despise" || from.Region.Name == "Destard" || //dungeons from.Region.Name == "Hythloth" || from.Region.Name == "Shame" || //dungeons from.Region.Name == "Wrong" || from.Region.Name == "Terathan Keep" || //dungeons from.Region.Name == "Fire" || from.Region.Name == "Ice" || //dungeons from.Region.Name == "Rock Dungeon" || from.Region.Name == "Spider Cave" || //dungeons from.Region.Name == "Spectre Dungeon" || from.Region.Name == "Blood Dungeon" || //dungeons from.Region.Name == "Wisp Dungeon" || from.Region.Name == "Ankh Dungeon" || //dungeons from.Region.Name == "Exodus Dungeon" || from.Region.Name == "Sorcerer's Dungeon" || //dungeons from.Region.Name == "Ancient Lair" || from.Region.Name == "Doom" || //dungeons from.Region.Name == "Britain Graveyard" || from.Region.Name == "Wrong Entrance" || from.Region.Name == "Covetous Entrance" || from.Region.Name == "Despise Entrance" || from.Region.Name == "Despise Passage" || from.Region.Name == "Jhelom Islands" || from.Region.Name == "Haven Island" || from.Region.Name == "Crystal Cave Entrance" || from.Region.Name == "Protected Island" || from.Region.Name == "Jail") { return(false); } if (from.Map == Map.Trammel) // Retelling - no placement in "trammel" { return(false); } // house multis: 0x1404 is a narrow but wide lot // house multis: 0x1420 bigger overall, square shaped. ArrayList toMove; HousePlacementResult res = HousePlacement.Check(from, 0x1404, from.Location, out toMove, false); if (res != HousePlacementResult.Valid) { return(false); } return(true); }
public bool OnPlacement(Mobile from, Point3D p) { if (!from.CheckAlive()) { return(false); } ArrayList toMove; Point3D center = new Point3D(p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z); HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out toMove); switch (res) { case HousePlacementResult.Valid: { if (from.AccessLevel < AccessLevel.GameMaster && BaseHouse.HasAccountHouse(from)) { from.SendLocalizedMessage(501271); // You already own a house, you may not place another! } else { from.SendLocalizedMessage(1011576); // This is a valid location. PreviewHouse prev = new PreviewHouse(m_MultiID); MultiComponentList mcl = prev.Components; Point3D banLoc = new Point3D(center.X + mcl.Min.X, center.Y + mcl.Max.Y + 1, center.Z); for (int i = 0; i < mcl.List.Length; ++i) { MultiTileEntry entry = mcl.List[i]; int itemID = entry.m_ItemID & 0x3FFF; if (itemID >= 0xBA3 && itemID <= 0xC0E) { banLoc = new Point3D(center.X + entry.m_OffsetX, center.Y + entry.m_OffsetY, center.Z); break; } } for (int i = 0; i < toMove.Count; ++i) { object o = toMove[i]; if (o is Mobile) { ((Mobile)o).Location = banLoc; } else if (o is Item) { ((Item)o).Location = banLoc; } } prev.MoveToWorld(center, from.Map); /* You are about to place a new house. * Placing this house will condemn any and all of your other houses that you may have. * All of your houses on all shards will be affected. * * In addition, you will not be able to place another house or have one transferred to you for one (1) real-life week. * * Once you accept these terms, these effects cannot be reversed. * Re-deeding or transferring your new house will not uncondemn your other house(s) nor will the one week timer be removed. * * If you are absolutely certain you wish to proceed, click the button next to OKAY below. * If you do not wish to trade for this house, click CANCEL. */ from.SendGump(new WarningGump(1060635, 30720, 1049583, 32512, 420, 280, new WarningGumpCallback(PlacementWarning_Callback), prev)); return(true); } break; } case HousePlacementResult.BadItem: case HousePlacementResult.BadLand: case HousePlacementResult.BadStatic: case HousePlacementResult.BadRegionHidden: case HousePlacementResult.NoSurface: { from.SendLocalizedMessage(1043287); // The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain. break; } case HousePlacementResult.BadRegion: { from.SendLocalizedMessage(501265); // Housing cannot be created in this area. break; } } return(false); }
public void PlacementWarning_Callback(Mobile from, bool okay, object state) { if (!from.CheckAlive()) { return; } PreviewHouse prevHouse = (PreviewHouse)state; if (!okay) { prevHouse.Delete(); return; } if (prevHouse.Deleted) { /* Too much time has passed and the test house you created has been deleted. * Please try again! */ from.SendGump(new NoticeGump(1060637, 30720, 1060647, 32512, 320, 180, null, null)); return; } Point3D center = prevHouse.Location; prevHouse.Delete(); ArrayList toMove; //Point3D center = new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ); HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out toMove); switch (res) { case HousePlacementResult.Valid: { if (from.AccessLevel < AccessLevel.GameMaster && BaseHouse.HasAccountHouse(from)) { from.SendLocalizedMessage(501271); // You already own a house, you may not place another! } else { BaseHouse house = ConstructHouse(from); if (house == null) { return; } house.Price = m_Cost; if (Banker.Withdraw(from, m_Cost)) { from.SendLocalizedMessage(1060398, m_Cost.ToString()); // ~1_AMOUNT~ gold has been withdrawn from your bank box. } else { house.RemoveKeys(from); house.Delete(); from.SendLocalizedMessage(1060646); // You do not have the funds available in your bank box to purchase this house. Try placing a smaller house, or adding gold or checks to your bank box. return; } house.MoveToWorld(center, from.Map); for (int i = 0; i < toMove.Count; ++i) { object o = toMove[i]; if (o is Mobile) { ((Mobile)o).Location = house.BanLocation; } else if (o is Item) { ((Item)o).Location = house.BanLocation; } } } break; } case HousePlacementResult.BadItem: case HousePlacementResult.BadLand: case HousePlacementResult.BadStatic: case HousePlacementResult.BadRegionHidden: case HousePlacementResult.NoSurface: { from.SendLocalizedMessage(1043287); // The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain. break; } case HousePlacementResult.BadRegion: { from.SendLocalizedMessage(501265); // Housing cannot be created in this area. break; } } }
// called by all house deeds but tents, they have their own implementation public virtual void OnPlacement(Mobile from, Point3D p) { if (Deleted) { return; } if (!IsChildOf(from.Backpack)) { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. return; } if (from.AccessLevel < AccessLevel.GameMaster && BaseHouse.HasAccountHouse(from)) { // wea: modified to ignore *siege* tents int i = 0; ArrayList ahouses = new ArrayList(); ahouses = BaseHouse.GetAccountHouses(from); if (ahouses != null) { foreach (object o in ahouses) { if (!(o is SiegeTent)) { i++; } } if (i > 0) { from.SendLocalizedMessage(501271); // You already own a house or a regular tent, you may not place another! return; } } } ArrayList toMove; Point3D center = new Point3D(p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z); HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out toMove); switch (res) { case HousePlacementResult.Valid: { BaseHouse house = GetHouse(from); house.MoveToWorld(center, from.Map); Delete(); for (int i = 0; i < toMove.Count; ++i) { object o = toMove[i]; if (o is Tent) { (o as Tent).Annex(house); } else if (o is Mobile) { ((Mobile)o).Location = house.BanLocation; } else if (o is Item) { ((Item)o).Location = house.BanLocation; } } break; } case HousePlacementResult.TentRegion: case HousePlacementResult.BadItem: case HousePlacementResult.BadLand: case HousePlacementResult.BadStatic: case HousePlacementResult.BadRegionHidden: { from.SendLocalizedMessage(1043287); // The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain. break; } case HousePlacementResult.NoSurface: { from.SendMessage("The house could not be created here. Part of the foundation would not be on any surface."); break; } case HousePlacementResult.BadRegion: { from.SendLocalizedMessage(501265); // Housing cannot be created in this area. break; } case HousePlacementResult.BadRegionTownship: { from.SendMessage("You are not authorized to build in this township."); break; } } }
// Override basic deed OnPlacement() so that tent specific text is used and a non tent multi id // based house placement check is performed // Also checks for account tents as opposed to houses public override void OnPlacement(Mobile from, Point3D p) { if (Deleted) { return; } if (!IsChildOf(from.Backpack)) { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } else if (from.AccessLevel < AccessLevel.GameMaster && HasAccountSiegeTent(from)) { from.SendMessage("You already own a siege tent, you may not place another!"); } else { ArrayList toMove; Point3D center = new Point3D(p.X - Offset.X, p.Y - Offset.Y, p.Z - Offset.Z); HousePlacementResult res = HousePlacement.Check(from, 0x64, center, out toMove); switch (res) { case HousePlacementResult.Valid: { BaseHouse house = GetHouse(from); house.MoveToWorld(center, from.Map); house.Public = true; Delete(); for (int i = 0; i < toMove.Count; ++i) { object o = toMove[i]; if (o is Mobile) { ((Mobile)o).Location = house.BanLocation; } else if (o is Item) { ((Item)o).Location = house.BanLocation; } } from.SendGump(new TentPlaceGump(from, house)); break; } case HousePlacementResult.BadItem: case HousePlacementResult.BadLand: case HousePlacementResult.BadStatic: case HousePlacementResult.BadRegionHidden: { from.SendMessage("The siege tent could not be created here, Either something is blocking the house, or the house would not be on valid terrain."); break; } case HousePlacementResult.NoSurface: { from.SendMessage("The siege tent could not be created here. Part of the foundation would not be on any surface."); break; } case HousePlacementResult.BadRegion: { from.SendMessage("Siege tents cannot be placed in this area."); break; } case HousePlacementResult.BadRegionTownship: { from.SendMessage("You are not authorized to build in this township."); break; } } } }
public bool OnPlacement(Mobile from, Point3D p) { if (!from.CheckAlive()) { return(false); } ArrayList toMove; Point3D center = new Point3D(p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z); HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out toMove); switch (res) { case HousePlacementResult.Valid: { from.SendLocalizedMessage(1011576); // This is a valid location. BaseHouse house = ConstructHouse(from); if (house == null) { return(false); } house.Price = m_Cost; if (Banker.Withdraw(from, m_Cost)) { from.SendLocalizedMessage(1060398, m_Cost.ToString()); // ~1_AMOUNT~ gold has been withdrawn from your bank box. } else { house.RemoveKeys(from); house.Delete(); from.SendLocalizedMessage(1060646); // You do not have the funds available in your bank box to purchase this house. Try placing a smaller house, or adding gold or checks to your bank box. return(false); } house.MoveToWorld(center, from.Map); for (int i = 0; i < toMove.Count; ++i) { object o = toMove[i]; if (o is Mobile) { ((Mobile)o).Location = house.BanLocation; } else if (o is Item) { ((Item)o).Location = house.BanLocation; } } return(true); } case HousePlacementResult.BadItem: case HousePlacementResult.BadLand: case HousePlacementResult.BadStatic: case HousePlacementResult.BadRegionHidden: case HousePlacementResult.NoSurface: { from.SendLocalizedMessage(1043287); // The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain. break; } case HousePlacementResult.BadRegion: { from.SendLocalizedMessage(501265); // Housing cannot be created in this area. break; } } return(false); }
public void PlacementWarning_Callback(Mobile from, bool okay, object state) { if (!from.CheckAlive() || from.Backpack == null || from.Backpack.FindItemByType(typeof(HousePlacementTool)) == null) { return; } PreviewHouse prevHouse = (PreviewHouse)state; if (!okay) { prevHouse.Delete(); return; } if (prevHouse.Deleted) { /* Too much time has passed and the test house you created has been deleted. * Please try again! */ from.SendGump(new NoticeGump(1060637, 30720, 1060647, 32512, 320, 180, null, null)); return; } Point3D center = prevHouse.Location; Map map = prevHouse.Map; prevHouse.Delete(); //Point3D center = new Point3D( p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z ); HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out ArrayList toMove); switch (res) { case HousePlacementResult.Valid: { if (from.AccessLevel < AccessLevel.GameMaster && BaseHouse.HasReachedHouseLimit(from)) { from.SendLocalizedMessage(501271); // You already own a house, you may not place another! } else { BaseHouse house = ConstructHouse(from); if (house == null) { return; } house.Price = m_Cost; if (from.AccessLevel >= AccessLevel.GameMaster) { from.SendMessage("{0} gold would have been withdrawn from your bank if you were not a GM.", m_Cost.ToString()); } else { if (Banker.Withdraw(from, m_Cost)) { from.SendLocalizedMessage(1060398, m_Cost.ToString()); // ~1_AMOUNT~ gold has been withdrawn from your bank box. } else { house.RemoveKeys(from); house.Delete(); from.SendLocalizedMessage(1060646); // You do not have the funds available in your bank box to purchase this house. Try placing a smaller house, or adding gold or checks to your bank box. return; } } house.MoveToWorld(center, from.Map); for (int i = 0; i < toMove.Count; ++i) { object o = toMove[i]; if (o is Mobile) { ((Mobile)o).Location = house.BanLocation; } else if (o is Item) { ((Item)o).Location = house.BanLocation; } } } break; } case HousePlacementResult.BadItem: case HousePlacementResult.BadLand: case HousePlacementResult.BadStatic: case HousePlacementResult.BadRegionHidden: case HousePlacementResult.NoSurface: { from.SendLocalizedMessage(1043287); // The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain. break; } case HousePlacementResult.BadRegion: { from.SendLocalizedMessage(501265); // Housing cannot be created in this area. break; } case HousePlacementResult.BadRegionTemp: { from.SendLocalizedMessage(501270); // Lord British has decreed a 'no build' period, thus you cannot build this house at this time. break; } case HousePlacementResult.BadRegionRaffle: { from.SendLocalizedMessage(1150493); // You must have a deed for this plot of land in order to build here. break; } case HousePlacementResult.InvalidCastleKeep: { from.SendLocalizedMessage(1061122); // Castles and keeps cannot be created here. break; } } }
public void OnPlacement(Mobile from, Point3D p) { if (Deleted) { return; } if (!IsChildOf(from.Backpack)) { from.SendAsciiMessage("That must be in your pack for you to use it."); } else if (from.AccessLevel < AccessLevel.GameMaster && BaseHouse.HasAccountHouse(from)) { from.SendAsciiMessage("You already own a house, you may not place another!"); } else { ArrayList toMove; Point3D center = new Point3D(p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z); HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out toMove); switch (res) { case HousePlacementResult.Valid: { BaseHouse house = GetHouse(from); house.MoveToWorld(center, from.Map); Delete(); for (int i = 0; i < toMove.Count; ++i) { object o = toMove[i]; if (o is Mobile) { ((Mobile)o).Location = house.BanLocation; } else if (o is Item) { ((Item)o).Location = house.BanLocation; } } break; } case HousePlacementResult.BadItem: case HousePlacementResult.BadLand: case HousePlacementResult.BadStatic: case HousePlacementResult.BadRegionHidden: { from.SendAsciiMessage("The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain."); break; } case HousePlacementResult.NoSurface: { from.SendAsciiMessage("The house could not be created here. Part of the foundation would not be on any surface."); break; } case HousePlacementResult.BadRegion: { from.SendAsciiMessage("Housing cannot be created in this area."); break; } } } }
public bool OnPlacement(Mobile from, Point3D p) { if (!from.CheckAlive() || from.Backpack == null || from.Backpack.FindItemByType(typeof(HousePlacementTool)) == null) { return(false); } ArrayList toMove; Point3D center = new Point3D(p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z); HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out toMove); switch (res) { case HousePlacementResult.Valid: { from.SendLocalizedMessage(1011576); // This is a valid location. PreviewHouse prev = new PreviewHouse(m_MultiID); MultiComponentList mcl = prev.Components; Point3D banLoc = new Point3D(center.X + mcl.Min.X, center.Y + mcl.Max.Y + 1, center.Z); for (int i = 0; i < mcl.List.Length; ++i) { MultiTileEntry entry = mcl.List[i]; int itemID = entry.m_ItemID; if (itemID >= 0xBA3 && itemID <= 0xC0E) { banLoc = new Point3D(center.X + entry.m_OffsetX, center.Y + entry.m_OffsetY, center.Z); break; } } for (int i = 0; i < toMove.Count; ++i) { object o = toMove[i]; if (o is Mobile) { ((Mobile)o).Location = banLoc; } else if (o is Item) { ((Item)o).Location = banLoc; } } prev.MoveToWorld(center, from.Map); /* You are about to place a new house. * Placing this house will condemn any and all of your other houses that you may have. * All of your houses on all shards will be affected. * * In addition, you will not be able to place another house or have one transferred to you for one (1) real-life week. * * Once you accept these terms, these effects cannot be reversed. * Re-deeding or transferring your new house will not uncondemn your other house(s) nor will the one week timer be removed. * * If you are absolutely certain you wish to proceed, click the button next to OKAY below. * If you do not wish to trade for this house, click CANCEL. */ from.SendGump(new WarningGump(1060635, 30720, 1049583, 32512, 420, 280, new WarningGumpCallback(PlacementWarning_Callback), prev)); return(true); } case HousePlacementResult.BadItem: case HousePlacementResult.BadLand: case HousePlacementResult.BadStatic: case HousePlacementResult.BadRegionHidden: case HousePlacementResult.NoSurface: { from.SendLocalizedMessage(1043287); // The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain. break; } case HousePlacementResult.BadRegion: { from.SendLocalizedMessage(501265); // Housing cannot be created in this area. break; } case HousePlacementResult.BadRegionTemp: { from.SendLocalizedMessage(501270); //Lord British has decreed a 'no build' period, thus you cannot build this house at this time. break; } case HousePlacementResult.BadRegionRaffle: { from.SendLocalizedMessage(1150493); // You must have a deed for this plot of land in order to build here. break; } case HousePlacementResult.InvalidCastleKeep: { from.SendLocalizedMessage(1061122); // Castles and keeps cannot be created here. break; } case HousePlacementResult.NoQueenLoyalty: { from.SendLocalizedMessage(1113707, "10000"); // You must have at lease ~1_MIN~ loyalty to the Gargoyle Queen to place a house in Ter Mur. break; } } return(false); }
public bool OnPlacement(Mobile from, HouseSurveyTool tool, Point3D p) { if (!from.CheckAlive() || from.Backpack == null || tool == null || tool.UsesRemaining == 0 || !tool.IsChildOf(from.Backpack)) { return(false); } if (SurveyPreviewHouse.PreviewHouseList.Contains(from)) { from.SendMessage("You are already previewing a potential house location."); return(false); } ArrayList toMove; Point3D center = new Point3D(p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z); HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out toMove); switch (res) { case HousePlacementResult.Valid: { from.SendMessage("This is valid terrain to place a house."); // This is a valid location. SurveyPreviewHouse prev = new SurveyPreviewHouse(m_MultiID, from); MultiComponentList mcl = prev.Components; prev.MoveToWorld(center, from.Map); string message = "You have found valid terrain to place a house. This preview will stay visible for 20 seconds.<BR><BR>Press OKAY to stop previewing this house."; from.SendGump(new NoticeGump(1060635, 30720, message, 0xFFC000, 420, 280, new NoticeGumpCallback(SurveyNotice_Callback), prev)); return(true); } case HousePlacementResult.BadItem: case HousePlacementResult.BadLand: case HousePlacementResult.BadStatic: case HousePlacementResult.BadRegionHidden: case HousePlacementResult.NoSurface: { from.SendLocalizedMessage(1043287); // The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain. break; } case HousePlacementResult.BadRegion: { from.SendLocalizedMessage(501265); // Housing cannot be created in this area. break; } case HousePlacementResult.BadRegionTemp: { from.SendLocalizedMessage(501270); //Lord British has decreed a 'no build' period, thus you cannot build this house at this time. break; } } return(false); }