Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
            public ExchangeTicker ToExchangeTicker(string currencyPair)
            {
                var currencyParts = currencyPair.Split(new[] { "_" }, StringSplitOptions.RemoveEmptyEntries);

                return(new ExchangeTicker()
                {
                    MarketSymbol = currencyPair,
                    Ask = LowestAsk.GetValueOrDefault(),
                    Bid = HighestBid.GetValueOrDefault(),
                    Id = Id.ToStringInvariant(),
                    Last = Last.GetValueOrDefault(),
                    Volume = new ExchangeVolume()
                    {
                        BaseCurrency = currencyParts[0],
                        QuoteCurrency = currencyParts[1],
                        BaseCurrencyVolume = BaseVolume.GetValueOrDefault(),
                        QuoteCurrencyVolume = QuoteVolume.GetValueOrDefault()
                    }
                });
            }
Exemplo n.º 3
0
        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);
        }