public async Task NPC(SocketReaction reaction, IUserMessage msg) { if (reaction.Emote.ToString() == EUI.trade) { await ShopCommands.ViewNPCInv(player, reaction.Channel, 1, true); } }
internal static async Task <string> Accept(Player player, string data) { NPC npc = player.Encounter.npc; PendingTransaction transaction; if (data.EndsWith(";"))//Selling { string[] selection = data.TrimEnd(';').Split(';'); transaction = new PendingTransaction(player, selection, Transaction.Sell, true); int count = transaction.Count; for (int i = 0; i < count; i++) { StackedItems si = transaction.Get(i, true); long price = ShopCommands.GetPrice(si.item.GetValue(), npc.stats.PriceMod(), player.stats.PriceMod(), (int)transaction.transation) * si.count; transaction.TotalPrice += price; npc.inventory.Add(si, -1); } player.KCoins += transaction.TotalPrice; npc.KCoins -= transaction.TotalPrice; } else //Buying { transaction = Database.LoadRecord(null, MongoDatabase.FilterEqual <PendingTransaction, Guid>("_id", Guid.Parse(data))); if (transaction == null) { return("Transaction no longer available"); } player.KCoins -= transaction.TotalPrice; npc.KCoins += transaction.TotalPrice; int invSize = player.InventorySize(); foreach (var si in transaction.items) { if (!player.inventory.Add(si, invSize)) { transaction.Delete(); throw NeitsilliaError.ReplyError("Inventory can not contain all items in this order. Transaction canceled."); } } } await player.ui.TryDeleteMessage(); player.ui = null; player.SaveFileMongo(); return($"```{Dialog.GetDialog(npc, Dialog.tradingBusiness)}```"); }
public async Task NPCRepair(SocketReaction reaction, IUserMessage msg) { switch (reaction.Emote.ToString()) { case EUI.ok: await ShopCommands.ConfirmNPCRepair(player, int.Parse(data), reaction.Channel); break; case EUI.cancel: await TryDeleteMessage(); break; } }
public async Task NPCInv(SocketReaction reaction, IUserMessage msg) { if (!int.TryParse(data, out int i)) { i = 1; } if (reaction.Emote.ToString() == EUI.prev) { await ShopCommands.ViewNPCInv(player, reaction.Channel, i - 1, true); } else if (reaction.Emote.ToString() == EUI.next) { await ShopCommands.ViewNPCInv(player, reaction.Channel, i + 1, true); } }
public async Task ConfirmTransaction(SocketReaction reaction, IUserMessage msg) { switch (reaction.Emote.ToString()) { case EUI.ok: await reaction.Channel.SendMessageAsync( await Shopping.PendingTransaction.Accept(player, data)); await ShopCommands.ViewNPCInv(player, reaction.Channel, 0, true); break; case EUI.cancel: await reaction.Channel.SendMessageAsync( Shopping.PendingTransaction.Cancel(player, data)); await ShopCommands.ViewNPCInv(player, reaction.Channel, 0, true); break; default: return; } player.SaveFileMongo(); }
public async Task <IActionResult> Post([FromBody] string title) { var shop = ShopCommands.createShop(Guid.NewGuid(), title); return(Ok(shop)); }