Пример #1
0
        public async Task Gacha([Remainder] string Input = null)
        {
            try
            {
                UserData ud = ExtensionMethods.FindPerson(Context.User.Id);
                if (ud.OwnedCards == CharacterCards.CardsCount)
                {
                    await Context.Channel.SendMessageAsync("You own them all champ! Nag admin to make more. Admin doesn't do anything unless nagged.");

                    return;
                }
                ulong cost = 3000;
                if (ud.Pudding < cost)
                {
                    await Context.Channel.SendMessageAsync($"You don't have {cost} pudding! {cost} is required to play the Gacha!");

                    return;
                }
                int totalAmt = 0;
                int.TryParse(Input, out totalAmt);
                if (totalAmt < 0)
                {
                    totalAmt = 0;
                }
                StringBuilder sb         = new StringBuilder();
                CardTypes     ct         = Program.characterCards.RandomCard();
                double        d          = ud.Pudding;
                ulong         totalLoops = TotalLoops((ulong)totalAmt, (ulong)d, cost);//(ud.Pudding < 2500) ? (int)(d / cost) : totalAmt;
                totalAmt = (int)totalLoops;
                List <string> cardTypes = new List <string>();
                List <int>    amounts   = new List <int>();
                List <string> newcards  = new List <string>();
                await Context.Channel.SendMessageAsync(totalLoops.ToString());

                if (totalAmt > 5)
                {
                    ud.Pudding -= cost * (ulong)totalAmt;
                    while (totalAmt > 0)
                    {
                        if (!cardTypes.Contains(ct.name))
                        {
                            cardTypes.Add(ct.name);
                            amounts.Add(1);
                        }
                        else
                        {
                            for (int i = 0; i < cardTypes.Count; i++)
                            {
                                if (cardTypes[i] == ct.name)
                                {
                                    amounts[i]++;
                                    break;
                                }
                            }
                        }
                        if (ud.AddToList(ct.idNumber))
                        {
                            newcards.Add(ct.name);
                        }
                        totalAmt--;
                        ct = Program.characterCards.RandomCard();
                    }
                    StringBuilder sb2 = new StringBuilder();
                    for (int i = 0; i < cardTypes.Count; i++)
                    {
                        sb2.Append($"You got: {amounts[i]} of {cardTypes[i]}\n");
                    }
                    sb2.Append("New Cards:\n");
                    foreach (string g in newcards)
                    {
                        sb2.Append($"{g}\n");
                    }
                    await Context.Channel.SendMessageAsync(sb2.ToString());

                    return;
                }
                if (totalAmt > 0)
                {
                    d -= totalAmt * (double)cost;
                }
                else
                {
                    d -= cost;
                }
                if (d < 0)
                {
                    await Context.Channel.SendMessageAsync("D is less than 0. Something is wrong with your math Admin, git gud.");

                    d = 0;
                }
                ud.Pudding = (ulong)d;
                if (!ud.AddToList(ct.idNumber))
                {
                    sb.Append($"You already have this card ({ct.name})! You can't have 2 so I'll just... *poof* it's gone now. You have {ud.Pudding.ToString()} pudding left! ").Append(ImgurImplement.GetImage(ct.imgurID).Result).Append("\n");
                }
                else
                {
                    sb.Append($"You got a new card ({ct.name})! YAY! Congrats 'n stuff. You have {ud.Pudding.ToString()} pudding left! ").Append(ImgurImplement.GetImage(ct.imgurID).Result).Append("\n");
                }
                totalAmt--;
                while (totalAmt > 0)
                {
                    ct = Program.characterCards.RandomCard();
                    if (!ud.AddToList(ct.idNumber))
                    {
                        sb.Append($"You already have this card ({ct.name})! You can't have 2 so I'll just... *poof* it's gone now. You have {ud.Pudding.ToString()} pudding left! ").Append(ImgurImplement.GetImage(ct.imgurID).Result).Append("\n");
                    }
                    else
                    {
                        sb.Append($"You got a new card ({ct.name})! YAY! Congrats 'n stuff. You have {ud.Pudding.ToString()} pudding left! ").Append(ImgurImplement.GetImage(ct.imgurID).Result).Append("\n");
                    }
                    totalAmt--;
                }
                await Context.Channel.SendMessageAsync(sb.ToString());
            }
            catch (Exception m)
            {
                await Context.Channel.SendMessageAsync($"{m.Message}\n{ m.TargetSite}\n{ m.Source}\n{ m.InnerException}\n{ m.StackTrace}\n{ m.HResult}\n{ m.Data}\n{ m.HelpLink}");
            }
        }