Пример #1
0
 public async Task NPC(SocketReaction reaction, IUserMessage msg)
 {
     if (reaction.Emote.ToString() == EUI.trade)
     {
         await ShopCommands.ViewNPCInv(player, reaction.Channel, 1, true);
     }
 }
Пример #2
0
        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)}```");
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
 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);
     }
 }
Пример #5
0
        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();
        }
Пример #6
0
        public async Task <IActionResult> Post([FromBody] string title)
        {
            var shop = ShopCommands.createShop(Guid.NewGuid(), title);

            return(Ok(shop));
        }