示例#1
0
        public static void CancelTradeOrder(Mobile from, TradeOrderCrate crate)
        {
            if (from == null)
            {
                from = crate.Owner;
            }

            if (from != null)
            {
                var items = new List <Item>(crate.Items);

                for (int i = 0; i < items.Count; i++)
                {
                    from.Backpack.DropItem(items[i]);
                }

                ColUtility.Free(items);

                if (from is PlayerMobile pm)
                {
                    CityTradeEntry entry = CityLoyaltySystem.CityTrading.GetPlayerEntry <CityTradeEntry>(pm, true);

                    if (entry != null)
                    {
                        entry.Canceled++;
                    }
                }
            }

            crate.Delete();
        }
示例#2
0
        public bool TryTurnInToSlim(Mobile from, TradeOrderCrate order, SlimTheFence slim)
        {
            if (order == null || from == null || slim == null || order.Entry == null)
            {
                return(false);
            }

            TradeEntry entry = order.Entry;

            if (!order.Fulfilled)
            {
                slim.SayTo(from, 1151732); // This trade order has not been fulfilled.  Fill the trade order with all necessary items and try again.
            }
            else
            {
                CityLoyaltySystem.OnSlimTradeComplete(from, order.Entry);
                CityTradeEntry pentry = GetPlayerEntry <CityTradeEntry>(from as PlayerMobile, true);

                if (pentry != null)
                {
                    pentry.Points++;
                    pentry.DistanceTraveled += entry.Distance;
                    pentry.CompletedSlim++;
                    CheckTitle(pentry);
                }

                slim.SayTo(from, 1151736); // Haha! These goods will fetch me quite a bit o' coin!  Thanks fer yer help!  Here's a little something I was able to get me hands on...

                order.Delete();
                return(true);
            }

            return(false);
        }
示例#3
0
        public int GetMaxTrades(Mobile m)
        {
            CityTradeEntry entry = GetPlayerEntry <CityTradeEntry>(m as PlayerMobile);

            if (entry == null)
            {
                return(1);
            }

            return(Math.Min(8, Math.Max(1, (entry.Completed / 25) + 1)));
        }
示例#4
0
        public void CheckTitle(CityTradeEntry entry)
        {
            switch (entry.Completed)
            {
            case 1: entry.Player.AddRewardTitle((int)TradeTitle.Trader); break;

            case 25: entry.Player.AddRewardTitle((int)TradeTitle.Exporter); break;

            case 50: entry.Player.AddRewardTitle((int)TradeTitle.Broker); break;

            case 100: entry.Player.AddRewardTitle((int)TradeTitle.Tycoon); break;

            case 150: entry.Player.AddRewardTitle((int)TradeTitle.Magnate); break;
            }

            if (entry.CompletedSlim == 50)
            {
                entry.Player.AddRewardTitle((int)TradeTitle.Smuggler);
            }
        }
示例#5
0
        public bool TryTurnIn(Mobile from, TradeOrderCrate order, Mobile turninMobile)
        {
            if (order == null || from == null || turninMobile == null || order.Entry == null)
            {
                return(false);
            }

            TradeEntry    entry    = order.Entry;
            TradeMinister minister = turninMobile as TradeMinister;

            if (from.AccessLevel == AccessLevel.Player && minister != null && minister.City != entry.Destination)
            {
                turninMobile.SayTo(from, 1151738, string.Format("#{0}", CityLoyaltySystem.GetCityLocalization(entry.Destination))); // Begging thy pardon, but those goods are destined for the City of ~1_city~
            }
            else if (!order.Fulfilled)
            {
                turninMobile.SayTo(from, 1151732); // This trade order has not been fulfilled.  Fill the trade order with all necessary items and try again.
            }
            else
            {
                CityLoyaltySystem.OnTradeComplete(from, order.Entry);
                CityTradeEntry pentry = GetPlayerEntry <CityTradeEntry>(from as PlayerMobile);

                if (pentry != null)
                {
                    pentry.Points++;
                    pentry.DistanceTraveled += entry.Distance;
                    pentry.Completed++;
                    CheckTitle(pentry);
                }

                order.Delete();
                return(true);
            }

            return(false);
        }
示例#6
0
        public static void CancelTradeOrder(Mobile from, TradeOrderCrate crate)
        {
            if (from == null)
            {
                from = crate.Owner;
            }

            if (from != null)
            {
                crate.Items.ForEach(i =>
                {
                    from.Backpack.DropItem(i);
                });

                CityTradeEntry entry = CityLoyaltySystem.CityTrading.GetPlayerEntry <CityTradeEntry>(from as PlayerMobile, true);

                if (entry != null)
                {
                    entry.Canceled++;
                }
            }

            crate.Delete();
        }