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(); }
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); }
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))); }
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); } }
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); }
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(); }