public bool TryBuyout(Mobile m) { if (!OnGoing || InClaimPeriod || Buyout <= 0) { return(false); } if (m.Account is Account acct) { if (!acct.WithdrawGold(Buyout)) { m.SendLocalizedMessage(1155867); // The amount entered is invalid. Verify that there are sufficient funds to complete this transaction. return(false); } VaultLogging.Buyout(this, m, Buyout); if (HighestBid != null && HighestBid.Mobile != m) { DoOutBidMessage(HighestBid.Mobile); HighestBid.Refund(this, HighestBid.CurrentBid); } HighestBid = GetBidEntry(m, true); HighestBid.CurrentBid = Buyout - (int)(Buyout * .05); CurrentBid = Buyout; EndAuction(true); ClaimPrize(m); return(true); } return(false); }
public bool TryPlaceBid(Mobile m, long bidTotal) { if (!OnGoing || InClaimPeriod) { m.SendLocalizedMessage(1156432); // There is no active auction to complete this action. return(false); } BidEntry entry = GetBidEntry(m); Account acct = m.Account as Account; bool firstBid = HighestBid == null; long highestBid = firstBid ? CurrentBid : HighestBid.CurrentBid; if (acct == null || Banker.GetBalance(m) < bidTotal) { m.SendLocalizedMessage(1155867); // The amount entered is invalid. Verify that there are sufficient funds to complete this transaction. return(false); } if ((firstBid && bidTotal < highestBid) || (!firstBid && bidTotal <= highestBid)) { m.SendLocalizedMessage(1156445); // You have been out bid. if (bidTotal > CurrentBid) { CurrentBid = bidTotal; AddToHistory(m, bidTotal); } } else { acct.WithdrawGold(bidTotal); entry.CurrentBid = bidTotal; var mobile = HighestBid != null ? HighestBid.Mobile : null; if (!firstBid) { if (mobile != m) { DoOutBidMessage(mobile); } HighestBid.Refund(this, highestBid); } else { AddToHistory(m, bidTotal); } m.SendLocalizedMessage(1156433); // Your bid has been placed. AuctionMap map = new AuctionMap(Safe); if (m.Backpack == null || !m.Backpack.TryDropItem(m, map, false)) { map.Delete(); } else { m.SendLocalizedMessage(1156478); // The auction safe map has been placed in your backpack. } VaultLogging.NewHighBid(this, m, mobile, bidTotal); HighestBid = entry; return(true); } return(false); }