137 lines
5.9 KiB
C#
137 lines
5.9 KiB
C#
using System;
|
|
using Server.Gumps;
|
|
using Server.Items;
|
|
using Server.Mobiles;
|
|
|
|
namespace Server.Engines.BulkOrders
|
|
{
|
|
public class BODBuyGump : Gump
|
|
{
|
|
private readonly PlayerMobile m_From;
|
|
private readonly BulkOrderBook m_Book;
|
|
private readonly object m_Object;
|
|
private readonly int m_Price;
|
|
private readonly int m_Page;
|
|
public BODBuyGump(PlayerMobile from, BulkOrderBook book, object obj, int page, int price)
|
|
: base(100, 200)
|
|
{
|
|
this.m_From = from;
|
|
this.m_Book = book;
|
|
this.m_Object = obj;
|
|
this.m_Price = price;
|
|
this.m_Page = page;
|
|
|
|
this.AddPage(0);
|
|
|
|
this.AddBackground(100, 10, 300, 150, 5054);
|
|
|
|
this.AddHtmlLocalized(125, 20, 250, 24, 1019070, false, false); // You have agreed to purchase:
|
|
this.AddHtmlLocalized(125, 45, 250, 24, 1045151, false, false); // a bulk order deed
|
|
|
|
this.AddHtmlLocalized(125, 70, 250, 24, 1019071, false, false); // for the amount of:
|
|
this.AddLabel(125, 95, 0, price.ToString());
|
|
|
|
this.AddButton(250, 130, 4005, 4007, 1, GumpButtonType.Reply, 0);
|
|
this.AddHtmlLocalized(282, 130, 100, 24, 1011012, false, false); // CANCEL
|
|
|
|
this.AddButton(120, 130, 4005, 4007, 2, GumpButtonType.Reply, 0);
|
|
this.AddHtmlLocalized(152, 130, 100, 24, 1011036, false, false); // OKAY
|
|
}
|
|
|
|
public override void OnResponse(Server.Network.NetState sender, RelayInfo info)
|
|
{
|
|
if (info.ButtonID == 2)
|
|
{
|
|
PlayerVendor pv = this.m_Book.RootParent as PlayerVendor;
|
|
|
|
if (this.m_Book.Entries.Contains(this.m_Object) && pv != null)
|
|
{
|
|
int price = 0;
|
|
|
|
VendorItem vi = pv.GetVendorItem(this.m_Book);
|
|
|
|
if (vi != null && !vi.IsForSale)
|
|
{
|
|
if (this.m_Object is BOBLargeEntry)
|
|
price = ((BOBLargeEntry)this.m_Object).Price;
|
|
else if (this.m_Object is BOBSmallEntry)
|
|
price = ((BOBSmallEntry)this.m_Object).Price;
|
|
}
|
|
|
|
if (price != this.m_Price)
|
|
{
|
|
pv.SayTo(this.m_From, "The price has been been changed. If you like, you may offer to purchase the item again.");
|
|
}
|
|
else if (price == 0)
|
|
{
|
|
pv.SayTo(this.m_From, 1062382); // The deed selected is not available.
|
|
}
|
|
else
|
|
{
|
|
Item item = null;
|
|
|
|
if (this.m_Object is BOBLargeEntry)
|
|
item = ((BOBLargeEntry)this.m_Object).Reconstruct();
|
|
else if (this.m_Object is BOBSmallEntry)
|
|
item = ((BOBSmallEntry)this.m_Object).Reconstruct();
|
|
|
|
if (item == null)
|
|
{
|
|
this.m_From.SendMessage("Internal error. The bulk order deed could not be reconstructed.");
|
|
}
|
|
else
|
|
{
|
|
pv.Say(this.m_From.Name);
|
|
|
|
Container pack = this.m_From.Backpack;
|
|
|
|
if ((pack == null) || ((pack != null) && (!pack.CheckHold(this.m_From, item, true, true, 0, item.PileWeight + item.TotalWeight))))
|
|
{
|
|
pv.SayTo(this.m_From, 503204); // You do not have room in your backpack for this
|
|
this.m_From.SendGump(new BOBGump(this.m_From, this.m_Book, this.m_Page, null));
|
|
}
|
|
else
|
|
{
|
|
if ((pack != null && pack.ConsumeTotal(typeof(Gold), price)) || Banker.Withdraw(this.m_From, price))
|
|
{
|
|
this.m_Book.Entries.Remove(this.m_Object);
|
|
this.m_Book.InvalidateProperties();
|
|
pv.HoldGold += price;
|
|
this.m_From.AddToBackpack(item);
|
|
this.m_From.SendLocalizedMessage(1045152); // The bulk order deed has been placed in your backpack.
|
|
|
|
if (this.m_Book.Entries.Count / 5 < this.m_Book.ItemCount)
|
|
{
|
|
this.m_Book.ItemCount--;
|
|
this.m_Book.InvalidateItems();
|
|
}
|
|
|
|
if (this.m_Book.Entries.Count > 0)
|
|
this.m_From.SendGump(new BOBGump(this.m_From, this.m_Book, this.m_Page, null));
|
|
else
|
|
this.m_From.SendLocalizedMessage(1062381); // The book is empty.
|
|
}
|
|
else
|
|
{
|
|
pv.SayTo(this.m_From, 503205); // You cannot afford this item.
|
|
item.Delete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (pv == null)
|
|
this.m_From.SendLocalizedMessage(1062382); // The deed selected is not available.
|
|
else
|
|
pv.SayTo(this.m_From, 1062382); // The deed selected is not available.
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.m_From.SendLocalizedMessage(503207); // Cancelled purchase.
|
|
}
|
|
}
|
|
}
|
|
} |