private void SearchForHouse() { foreach (TownHouse house in TownHouse.AllTownHouses.Where(house => house.ForSaleSign == this)) { c_House = house; } }
public virtual void ClearHouse() { UnconvertDoors(); ClearDemolishTimer(); ClearRentTimer(); PackUpItems(); RecreateItems(); c_House = null; Visible = true; if (c_RentToOwn) { c_RentByTime = c_OriginalRentTime; } }
public void Purchase(Mobile m, bool sellitems) { try { if (Owned) { m.SendMessage("Someone already owns this house!"); return; } if (!PriceReady) { m.SendMessage("The setup for this house is not yet complete."); return; } int price = c_Price + (sellitems ? c_ItemsPrice : 0); if (c_Free) { price = 0; } if (m.AccessLevel == AccessLevel.Player && !Server.Mobiles.Banker.Withdraw(m, price)) { m.SendMessage("You cannot afford this house."); return; } if (m.AccessLevel == AccessLevel.Player) { m.SendLocalizedMessage(1060398, price.ToString()); // ~1_AMOUNT~ gold has been withdrawn from your bank box. } Visible = false; int minX = ((Rectangle2D)c_Blocks[0]).Start.X; int minY = ((Rectangle2D)c_Blocks[0]).Start.Y; int maxX = ((Rectangle2D)c_Blocks[0]).End.X; int maxY = ((Rectangle2D)c_Blocks[0]).End.Y; foreach (Rectangle2D rect in c_Blocks) { if (rect.Start.X < minX) { minX = rect.Start.X; } if (rect.Start.Y < minY) { minY = rect.Start.Y; } if (rect.End.X > maxX) { maxX = rect.End.X; } if (rect.End.Y > maxY) { maxY = rect.End.Y; } } c_House = new TownHouse(m, this, c_Locks, c_Secures); c_House.Components.Resize(maxX - minX, maxY - minY); c_House.Components.Add(0x520, c_House.Components.Width - 1, c_House.Components.Height - 1, -5); c_House.Location = new Point3D(minX, minY, Map.GetAverageZ(minX, minY)); c_House.Map = Map; c_House.Region.GoLocation = c_BanLoc; c_House.Sign.Location = c_SignLoc; c_House.Hanger = new Item(0xB98); c_House.Hanger.Location = c_SignLoc; c_House.Hanger.Map = Map; c_House.Hanger.Movable = false; c_House.Price = (RentByTime == TimeSpan.FromDays(0) ? c_Price : 1); RUOVersion.UpdateRegion(this); if (c_House.Price == 0) { c_House.Price = 1; } if (c_RentByTime != TimeSpan.Zero) { BeginRentTimer(c_RentByTime); } c_RTOPayments = 1; HideOtherSigns(); c_DecoreItemInfos = new ArrayList(); ConvertItems(sellitems); } catch (Exception e) { Errors.Report(String.Format("An error occurred during home purchasing. More information available on the console.")); Console.WriteLine(e.Message); Console.WriteLine(e.Source); Console.WriteLine(e.StackTrace); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); if (version >= 12) { c_Free = reader.ReadBool(); } if (version >= 11) { c_Murderers = (Intu)reader.ReadInt(); } if (version >= 10) { c_LeaveItems = reader.ReadBool(); } if (version >= 9) { c_RentToOwn = reader.ReadBool(); c_OriginalRentTime = reader.ReadTimeSpan(); c_RTOPayments = reader.ReadInt(); } c_PreviewItems = new ArrayList(); if (version >= 7) { c_PreviewItems = reader.ReadItemList(); } if (version >= 6) { c_ItemsPrice = reader.ReadInt(); c_KeepItems = reader.ReadBool(); } c_DecoreItemInfos = new ArrayList(); if (version >= 5) { int decorecount = reader.ReadInt(); DecoreItemInfo info; for (int i = 0; i < decorecount; ++i) { info = new DecoreItemInfo(); info.Load(reader); c_DecoreItemInfos.Add(info); } c_Relock = reader.ReadBool(); } if (version >= 4) { c_RecurRent = reader.ReadBool(); c_RentByTime = reader.ReadTimeSpan(); c_RentTime = reader.ReadDateTime(); c_DemolishTime = reader.ReadDateTime(); c_YoungOnly = reader.ReadBool(); c_MinTotalSkill = reader.ReadInt(); c_MaxTotalSkill = reader.ReadInt(); } if (version >= 3) { c_MinZ = reader.ReadInt(); c_MaxZ = reader.ReadInt(); } if (version >= 2) { c_House = (TownHouse)reader.ReadItem(); } c_Price = reader.ReadInt(); c_Locks = reader.ReadInt(); c_Secures = reader.ReadInt(); c_BanLoc = reader.ReadPoint3D(); c_SignLoc = reader.ReadPoint3D(); c_Skill = reader.ReadString(); c_SkillReq = reader.ReadDouble(); c_Blocks = new ArrayList(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { c_Blocks.Add(reader.ReadRect2D()); } if (c_RentTime > DateTime.Now) { BeginRentTimer(c_RentTime - DateTime.Now); } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(StartTimers)); ClearPreview(); s_TownHouseSigns.Add(this); }
public void Purchase(Mobile m, bool sellitems = false) { try { if (Owned) { m.SendMessage("Someone already owns this house!"); return; } if (!PriceReady) { m.SendMessage("The setup for this house is not yet complete."); return; } int price = c_Price + (sellitems ? c_ItemsPrice : 0); if (c_Free) { price = 0; } if (m.AccessLevel == AccessLevel.Player && !Banker.Withdraw(m, price)) { m.SendMessage("You cannot afford this house."); return; } if (m.AccessLevel == AccessLevel.Player) { m.SendLocalizedMessage(1060398, price.ToString()); // ~1_AMOUNT~ gold has been withdrawn from your bank box. } Visible = false; int minX = c_Blocks[0].Start.X; int minY = c_Blocks[0].Start.Y; int maxX = c_Blocks[0].End.X; int maxY = c_Blocks[0].End.Y; foreach (Rectangle2D rect in c_Blocks) { if (rect.Start.X < minX) { minX = rect.Start.X; } if (rect.Start.Y < minY) { minY = rect.Start.Y; } if (rect.End.X > maxX) { maxX = rect.End.X; } if (rect.End.Y > maxY) { maxY = rect.End.Y; } } c_House = new TownHouse(m, this, c_Locks, c_Secures); c_House.Components.Resize(maxX - minX, maxY - minY); c_House.Components.Add(0x520, c_House.Components.Width - 1, c_House.Components.Height - 1, -5); c_House.Location = new Point3D(minX, minY, Map.GetAverageZ(minX, minY)); c_House.Map = Map; c_House.Region.GoLocation = c_BanLoc; c_House.Sign.Location = c_SignLoc; c_House.Hanger = new Item(0xB98) {Location = c_SignLoc, Map = Map, Movable = false}; if (c_ForcePublic) { c_House.Public = true; } c_House.Price = (RentByTime == TimeSpan.FromDays(0) ? c_Price : 1); RUOVersion.UpdateRegion(this); if (c_House.Price == 0) { c_House.Price = 1; } if (c_RentByTime != TimeSpan.Zero) { BeginRentTimer(c_RentByTime); } c_RTOPayments = 1; HideOtherSigns(); c_DecoreItemInfos = new List<DecoreItemInfo>(); ConvertItems(sellitems); } catch (Exception e) { Errors.Report( String.Format( "An error occurred during home purchasing. More information available on the console.")); Console.WriteLine(e.Message); Console.WriteLine(e.Source); Console.WriteLine(e.StackTrace); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); if (version >= 13) { c_ForcePrivate = reader.ReadBool(); c_ForcePublic = reader.ReadBool(); c_NoTrade = reader.ReadBool(); } if (version >= 12) { c_Free = reader.ReadBool(); } if (version >= 11) { c_Murderers = (Intu) reader.ReadInt(); } if (version >= 10) { c_LeaveItems = reader.ReadBool(); } if (version >= 9) { c_RentToOwn = reader.ReadBool(); c_OriginalRentTime = reader.ReadTimeSpan(); c_RTOPayments = reader.ReadInt(); } c_PreviewItems = new List<Item>(); if (version >= 7) { int previewcount = reader.ReadInt(); for (int i = 0; i < previewcount; ++i) { Item item = reader.ReadItem(); c_PreviewItems.Add(item); } } if (version >= 6) { c_ItemsPrice = reader.ReadInt(); c_KeepItems = reader.ReadBool(); } c_DecoreItemInfos = new List<DecoreItemInfo>(); if (version >= 5) { int decorecount = reader.ReadInt(); DecoreItemInfo info; for (int i = 0; i < decorecount; ++i) { info = new DecoreItemInfo(); info.Load(reader); c_DecoreItemInfos.Add(info); } c_Relock = reader.ReadBool(); } if (version >= 4) { c_RecurRent = reader.ReadBool(); c_RentByTime = reader.ReadTimeSpan(); c_RentTime = reader.ReadDateTime(); c_DemolishTime = reader.ReadDateTime(); c_YoungOnly = reader.ReadBool(); c_MinTotalSkill = reader.ReadInt(); c_MaxTotalSkill = reader.ReadInt(); } if (version >= 3) { c_MinZ = reader.ReadInt(); c_MaxZ = reader.ReadInt(); } if (version >= 2) { c_House = (TownHouse) reader.ReadItem(); } c_Price = reader.ReadInt(); c_Locks = reader.ReadInt(); c_Secures = reader.ReadInt(); c_BanLoc = reader.ReadPoint3D(); c_SignLoc = reader.ReadPoint3D(); c_Skill = reader.ReadString(); c_SkillReq = reader.ReadDouble(); c_Blocks = new List<Rectangle2D>(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { c_Blocks.Add(reader.ReadRect2D()); } if (c_RentTime > DateTime.Now) { BeginRentTimer(c_RentTime - DateTime.Now); } Timer.DelayCall(TimeSpan.Zero, StartTimers); ClearPreview(); s_TownHouseSigns.Add(this); }
private static bool CheckResponse(Gump gump, Mobile m, int id) { if (m == null || !m.Player) { return(true); } TownHouse th = null; ArrayList list = new ArrayList(); foreach (Item item in m.GetItemsInRange(20)) { if (item is TownHouse) { list.Add(item); } } foreach (TownHouse t in list) { if (t.Owner == m) { th = t; break; } } if (th == null || th.ForSaleSign == null) { return(true); } if (gump is HouseGumpAOS) { int val = id - 1; if (val < 0) { return(true); } int type = val % 15; int index = val / 15; if (th.ForSaleSign.ForcePublic && type == 3 && index == 12 && th.Public) { m.SendMessage("This house cannot be private."); m.SendGump(gump); return(false); } if (th.ForSaleSign.ForcePrivate && type == 3 && index == 13 && !th.Public) { m.SendMessage("This house cannot be public."); m.SendGump(gump); return(false); } if (th.ForSaleSign.NoTrade && type == 6 && index == 1) { m.SendMessage("This house cannot be traded."); m.SendGump(gump); return(false); } } else if (gump is HouseGump) { if (th.ForSaleSign.ForcePublic && id == 17 && th.Public) { m.SendMessage("This house cannot be private."); m.SendGump(gump); return(false); } if (th.ForSaleSign.ForcePrivate && id == 17 && !th.Public) { m.SendMessage("This house cannot be public."); m.SendGump(gump); return(false); } if (th.ForSaleSign.NoTrade && id == 14) { m.SendMessage("This house cannot be traded."); m.SendGump(gump); return(false); } } return(true); }
private void SearchForHouse() { foreach( TownHouse house in TownHouse.AllTownHouses ) if (house.ForSaleSign == this ) c_House = house; }
private static bool CheckResponse(Gump gump, Mobile m, int id) { if (m == null || !m.Player) { return(true); } var list = m.GetItemsInRange(20).OfType <TownHouse>().Cast <Item>().ToList(); TownHouse th = list.Cast <TownHouse>().FirstOrDefault(t => t != null && t.Owner == m); if (th == null || th.ForSaleSign == null) { return(true); } if (gump is HouseGumpAOS) { int val = id - 1; if (val < 0) { return(true); } int type = val % 15; int index = val / 15; if (th.ForSaleSign.ForcePublic && type == 3 && index == 12 && th.Public) { m.SendMessage("This house cannot be private."); m.SendGump(gump); return(false); } if (th.ForSaleSign.ForcePrivate && type == 3 && index == 13 && !th.Public) { m.SendMessage("This house cannot be public."); m.SendGump(gump); return(false); } if (!th.ForSaleSign.NoTrade || type != 6 || index != 1) { return(true); } m.SendMessage("This house cannot be traded."); m.SendGump(gump); return(false); } if (!(gump is HouseGump)) { return(true); } if (th.ForSaleSign.ForcePublic && id == 17 && th.Public) { m.SendMessage("This house cannot be private."); m.SendGump(gump); return(false); } if (th.ForSaleSign.ForcePrivate && id == 17 && !th.Public) { m.SendMessage("This house cannot be public."); m.SendGump(gump); return(false); } if (!th.ForSaleSign.NoTrade || id != 14) { return(true); } m.SendMessage("This house cannot be traded."); m.SendGump(gump); return(false); }
public void Purchase( Mobile m, bool sellitems ) { try { if (Owned) { m.SendMessage("Someone already owns this house!"); return; } if (!PriceReady) { m.SendMessage("The setup for this house is not yet complete."); return; } int price = c_Price + (sellitems ? c_ItemsPrice : 0); if (c_Free) price = 0; if (m.AccessLevel == AccessLevel.Player && !Server.Mobiles.Banker.Withdraw(m, price)) { m.SendMessage("You cannot afford this house."); return; } if (m.AccessLevel == AccessLevel.Player) m.SendLocalizedMessage(1060398, price.ToString()); // ~1_AMOUNT~ gold has been withdrawn from your bank box. Visible = false; int minX = ((Rectangle2D)c_Blocks[0]).Start.X; int minY = ((Rectangle2D)c_Blocks[0]).Start.Y; int maxX = ((Rectangle2D)c_Blocks[0]).End.X; int maxY = ((Rectangle2D)c_Blocks[0]).End.Y; foreach (Rectangle2D rect in c_Blocks) { if (rect.Start.X < minX) minX = rect.Start.X; if (rect.Start.Y < minY) minY = rect.Start.Y; if (rect.End.X > maxX) maxX = rect.End.X; if (rect.End.Y > maxY) maxY = rect.End.Y; } c_House = new TownHouse(m, this, c_Locks, c_Secures); c_House.Components.Resize( maxX-minX, maxY-minY ); c_House.Components.Add( 0x520, c_House.Components.Width-1, c_House.Components.Height-1, -5 ); c_House.Location = new Point3D(minX, minY, Map.GetAverageZ(minX, minY)); c_House.Map = Map; c_House.Region.GoLocation = c_BanLoc; c_House.Sign.Location = c_SignLoc; c_House.Hanger = new Item(0xB98); c_House.Hanger.Location = c_SignLoc; c_House.Hanger.Map = Map; c_House.Hanger.Movable = false; c_House.Price = (RentByTime == TimeSpan.FromDays(0) ? c_Price : 1); RUOVersion.UpdateRegion(this); if (c_House.Price == 0) c_House.Price = 1; if (c_RentByTime != TimeSpan.Zero) BeginRentTimer(c_RentByTime); c_RTOPayments = 1; HideOtherSigns(); c_DecoreItemInfos = new ArrayList(); ConvertItems(sellitems); //Taran: Had to add this or else doors won't be linked to key when home is claimed c_House.ChangeLocks(m); for (int i = 0; c_House.Doors != null && i < c_House.Doors.Count; ++i) { BaseDoor door = c_House.Doors[i] as BaseDoor; if (door != null && door.KeyValue == c_House.HouseKeyVal) door.Locked = true; } } catch(Exception e) { Errors.Report(String.Format("An error occurred during home purchasing. More information available on the console.")); Console.WriteLine(e.Message); Console.WriteLine(e.Source); Console.WriteLine(e.StackTrace); } }
public void Purchase( Mobile m, bool sellitems ) { try { if (Owned) { m.SendMessage("Someone already owns this house!"); return; } if (!PriceReady) { m.SendMessage("The setup for this house is not yet complete."); return; } int price = c_Price + (sellitems ? c_ItemsPrice : 0); if (c_Free) price = 0; if (m.AccessLevel == AccessLevel.Player && !Server.Mobiles.Banker.Withdraw(m, price)) { m.SendMessage("You cannot afford this house."); return; } if (m.AccessLevel == AccessLevel.Player) { m.SendMessage( "A total of " + price.ToString() + " copper coins has been withdrawn from your bank box." ); OnRentPaid(); } Visible = false; int minX = ((Rectangle2D)c_Blocks[0]).Start.X; int minY = ((Rectangle2D)c_Blocks[0]).Start.Y; int maxX = ((Rectangle2D)c_Blocks[0]).End.X; int maxY = ((Rectangle2D)c_Blocks[0]).End.Y; foreach (Rectangle2D rect in c_Blocks) { if (rect.Start.X < minX) minX = rect.Start.X; if (rect.Start.Y < minY) minY = rect.Start.Y; if (rect.End.X > maxX) maxX = rect.End.X; if (rect.End.Y > maxY) maxY = rect.End.Y; } c_House = new TownHouse(m, this, c_Locks, c_Secures); c_House.Components.Resize( maxX-minX, maxY-minY ); c_House.Components.Add( 0x520, c_House.Components.Width-1, c_House.Components.Height-1, -5 ); c_House.Location = new Point3D(minX, minY, Map.GetAverageZ(minX, minY)); c_House.Map = Map; c_House.Region.GoLocation = c_BanLoc; c_House.Sign.Location = c_SignLoc; c_House.Sign.OriginalName = m.Name; c_House.Sign.TownHouseSign = this; //c_House.Hanger = new Item(0xB98); //c_House.Hanger.Location = c_SignLoc; //c_House.Hanger.Map = Map; //c_House.Hanger.Movable = false; if (c_ForcePublic) c_House.Public = true; c_House.Price = (RentByTime == TimeSpan.FromDays(0) ? c_Price : 1); RUOVersion.UpdateRegion(this); if (c_House.Price == 0) c_House.Price = 1; if (c_RentByTime != TimeSpan.Zero) BeginRentTimer(c_RentByTime); c_RTOPayments = 1; HideOtherSigns(); c_DecoreItemInfos = new ArrayList(); ConvertItems(sellitems); c_House.Sign.ItemID = (Flip == true ? 0xBD2 : 0xBD1); } catch(Exception e) { Errors.Report(String.Format("An error occurred during home purchasing. More information available on the console.")); Console.WriteLine(e.Message); Console.WriteLine(e.Source); Console.WriteLine(e.StackTrace); } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); if( version >= 15 ) m_Flip = reader.ReadBool(); if( version >= 14 ) { m_Nation = (Nation)reader.ReadInt(); m_Treasury = (Container)reader.ReadItem(); } if (version >= 13) { c_ForcePrivate = reader.ReadBool(); c_ForcePublic = reader.ReadBool(); c_NoTrade = reader.ReadBool(); } if (version >= 12) c_Free = reader.ReadBool(); if ( version >= 11 ) c_Murderers = (Intu)reader.ReadInt(); if ( version >= 10 ) c_LeaveItems = reader.ReadBool(); if ( version >= 9 ) { c_RentToOwn = reader.ReadBool(); c_OriginalRentTime = reader.ReadTimeSpan(); c_RTOPayments = reader.ReadInt(); } c_PreviewItems = new ArrayList(); if ( version >= 7 ) c_PreviewItems = reader.ReadItemList(); if ( version >= 6 ) { c_ItemsPrice = reader.ReadInt(); c_KeepItems = reader.ReadBool(); } c_DecoreItemInfos = new ArrayList(); if ( version >= 5 ) { int decorecount = reader.ReadInt(); DecoreItemInfo info; for( int i = 0; i < decorecount; ++i ) { info = new DecoreItemInfo(); info.Load( reader ); c_DecoreItemInfos.Add( info ); } c_Relock = reader.ReadBool(); } if ( version >= 4 ) { c_RecurRent = reader.ReadBool(); c_RentByTime = reader.ReadTimeSpan(); c_RentTime = reader.ReadDateTime(); c_DemolishTime = reader.ReadDateTime(); c_YoungOnly = reader.ReadBool(); c_MinTotalSkill = reader.ReadInt(); c_MaxTotalSkill = reader.ReadInt(); } if ( version >= 3 ) { c_MinZ = reader.ReadInt(); c_MaxZ = reader.ReadInt(); } if ( version >= 2 ) c_House = (TownHouse)reader.ReadItem(); c_Price = reader.ReadInt(); c_Locks = reader.ReadInt(); c_Secures = reader.ReadInt(); c_BanLoc = reader.ReadPoint3D(); c_SignLoc = reader.ReadPoint3D(); c_Skill = reader.ReadString(); c_SkillReq = reader.ReadDouble(); c_Blocks = new ArrayList(); int count = reader.ReadInt(); for ( int i = 0; i < count; ++i ) c_Blocks.Add( reader.ReadRect2D() ); Timer.DelayCall(TimeSpan.Zero, new TimerCallback(StartTimers)); ClearPreview(); s_TownHouseSigns.Add( this ); }