示例#1
0
        public async Task ComandoLocalAb(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            var jogador = ModuloBanco.GetJogador(ctx);

            if (ModuloBanco.TryGetRegiao(jogador, out var localAtual))
            {
                DiscordEmbedBuilder embed = new DiscordEmbedBuilder().Padrao("Área", ctx);

                StringBuilder saidas = new StringBuilder();
                foreach (var reg in localAtual.Saidas)
                {
                    saidas.AppendLine(reg.FirstUpper());
                }
                embed.AddField("Conectado á".Titulo(), saidas.ToString(), true);
                embed.WithTitle(localAtual.Nome.FirstUpper());
                embed.WithDescription(string.IsNullOrEmpty(localAtual.Descricao) == true ? "Sem descrição" : localAtual.Descricao);

                await ctx.RespondAsync(embed : embed.Build());
            }
            else
            {
                await ctx.RespondAsync($"Área ainda não adicionado no banco de dados, será adicionado em breve {ctx.User.Mention}!");
            }
        }
示例#2
0
        public async Task ViajarAbAsync(CommandContext ctx, [RemainingText] string area = "")
        {
            await ctx.TriggerTypingAsync();

            if (string.IsNullOrWhiteSpace(area))
            {
                await ctx.ExecutarComandoAsync("ajuda viajar");

                return;
            }
            area = area.ToLower();
            var jogador = ModuloBanco.GetJogador(ctx);

            if (ModuloBanco.TryGetRegiao(jogador, out var regiao))
            {
                if (regiao.Saidas.Contains(area))
                {
                    jogador.Batalha     = new RPGBatalha();
                    jogador.RegiaoAtual = area;
                    jogador.Salvar();
                    await ctx.RespondAsync($"Você foi para [{area.FirstUpper()}] {ctx.User.Mention}!".Bold());
                }
                else
                {
                    await ctx.RespondAsync($"Área {area.FirstUpper()} não encontrada {ctx.User.Mention}!");
                }
            }
            else
            {
                await ctx.RespondAsync($"Área ainda não adicionado no banco de dados, será adicionado em breve {ctx.User.Mention}!");
            }
        }
示例#3
0
        public async Task AdicionarItem(CommandContext ctx, int quantidade = 1, [RemainingText] string itemNome = "")
        {
            await ctx.TriggerTypingAsync();

            var usuario = ModuloBanco.GetJogador(ctx);

            usuario.Mochila.AdicionarItem(itemNome.ToLower(), quantidade);
            usuario.Salvar();
            await ctx.RespondAsync($"Adicionado {quantidade} [{itemNome.ToLower().FirstUpper()}]!");
        }
示例#4
0
        public async Task ComandoUsarAb(CommandContext ctx, int quantidade, [RemainingText] string itemNome = "")
        {
            await ctx.TriggerTypingAsync();

            if (quantidade <= 0)
            {
                await ctx.ExecutarComandoAsync("ajuda usar");

                return;
            }

            if (string.IsNullOrEmpty(itemNome))
            {
                await ctx.ExecutarComandoAsync("ajuda usar");

                return;
            }

            var usuario = ModuloBanco.GetJogador(ctx);

            itemNome = itemNome.ToLower();

            if (usuario.Mochila.TryGetValue(itemNome, out var itemData))
            {
                if (quantidade > itemData)
                {
                    await ctx.RespondAsync($"{ctx.User.Mention} você somente tem {itemData} [{itemNome.FirstUpper()}] na mochila!".Bold());

                    return;
                }
                ModuloBanco.TryGetItem(itemNome, out var item);
                switch (item.Tipo)
                {
                case EnumTipo.Pocao:
                    usuario.Mochila.RemoverItem(itemNome, quantidade);
                    string vidaRestaura    = usuario.RecuperarVida(item.VidaRestaura * quantidade).Text();
                    string magiaRestaurada = usuario.RecuperarMagia(item.MagiaRestaura * quantidade).Text();
                    usuario.Salvar();
                    await ctx.RespondAsync($"{ctx.User.Mention} você usou {quantidade} [{item.Nome}]! Restaurado {Emojis.PontosVida} {vidaRestaura} e {Emojis.PontosPoder} {magiaRestaurada}!".Bold());

                    break;

                default:
                    await ctx.RespondAsync($"{ctx.User.Mention} [{item.Nome}] não é usável!");

                    break;
                }
            }
            else
            {
                await ctx.RespondAsync($"{ctx.User.Mention} {itemNome.FirstUpper()} não foi encontrado na mochila!".Bold());
            }
        }
示例#5
0
        public async Task AdicionarXP(CommandContext ctx, int quantidade = 1, DiscordUser discordUser = null)
        {
            if (discordUser == null)
            {
                discordUser = ctx.User;
            }
            await ctx.TriggerTypingAsync();

            var jogador = ModuloBanco.GetJogador(discordUser);

            jogador.AdicionarExp(quantidade);
            jogador.Salvar();
            await ctx.RespondAsync($"Adicionado {quantidade}XP para {discordUser.Mention}!");
        }
示例#6
0
        public async Task Desbloquear(CommandContext ctx, DiscordUser user = null)
        {
            if (user == null)
            {
                return;
            }
            await ctx.TriggerTypingAsync();

            var jogador = ModuloBanco.GetJogador(user);

            jogador.Bloqueado = false;
            jogador.Salvar();
            await ctx.RespondAsync("Desbloqueado!");
        }
示例#7
0
        public async Task HabilidadeComandoAb(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            var jogador = ModuloBanco.GetJogador(ctx);
            DiscordEmbedBuilder embed = new DiscordEmbedBuilder().Padrao("Proficiencia", ctx);

            embed.WithDescription($"Pontos disponíveis: {jogador.ProficienciaPontos}".Bold());
            foreach (var item in jogador.Proficiencias)
            {
                embed.AddField(item.Value.Nome.ToString().Titulo().Bold(), $"{item.Value.Pontos}".Bold(), true);
            }
            await ctx.RespondAsync(embed : embed.Build());
        }
示例#8
0
        public async Task ComandoMochilaAb(CommandContext ctx, int pagina = 0)
        {
            await ctx.TriggerTypingAsync();

            if (pagina < 0)
            {
                await ctx.ExecutarComandoAsync("ajuda mochila");

                return;
            }

            var jogador = ModuloBanco.GetJogador(ctx);

            DiscordEmbedBuilder embed = new DiscordEmbedBuilder().Padrao("Mochila", ctx);

            embed.WithColor(DiscordColor.Purple);
            if (jogador.Mochila == null)
            {
                jogador.Mochila = new RPGMochila();
            }
            if (jogador.Mochila.Count == 0)
            {
                embed.WithDescription("Nem um farelo dentro.");
            }
            else
            {
                StringBuilder str         = new StringBuilder();
                int           index       = pagina * 10;
                int           quantidades = 0;

                for (int i = pagina * 10; i < jogador.Mochila.Count; i++)
                {
                    var item = jogador.Mochila.Values[index];
                    str.AppendLine($"{item} - {jogador.Mochila.Keys[index].FirstUpper()}".Bold());
                    index++;
                    quantidades++;
                    if (quantidades == 10)
                    {
                        break;
                    }
                }
                embed.WithDescription(str.ToString());
                embed.WithFooter($"Página {pagina} | {jogador.Mochila.Count} Itens diferentes");
            }
            await ctx.RespondAsync(embed : embed.Build());
        }
示例#9
0
        public async Task ComandoExplorarAb(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            var    jogador         = ModuloBanco.GetJogador(ctx);
            var    vidaSorteada    = Sortear.Valor(3, 4);
            var    danoSoorteado   = Sortear.Valor(7, 10);
            var    personGenerator = new PersonNameGenerator();
            RPGMob mob             = new RPGMob((jogador.AtaqueFisicoBase + jogador.AtaqueFisicoExtra) * vidaSorteada)
            {
                Nome         = personGenerator.GenerateRandomFirstName(),
                AtaqueFisico = jogador.VidaMaxima / danoSoorteado,
            };

            jogador.Batalha = new RPGBatalha(mob);
            jogador.Salvar();
            await ctx.RespondAsync($"{ctx.User.Mention} você explorou! Encontrou: < {mob.Nome.Underline()} >!".Bold());
        }
示例#10
0
        public async Task CortarAbAsync(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            var jogador = ModuloBanco.GetJogador(ctx);

            jogador.Proficiencias.TryGetValue(EnumProficiencia.Cortar, out var proff);
            ProficienciaCortar cortar = proff as ProficienciaCortar;
            int quantidade            = cortar.CalcMadeiraExtra();

            jogador.Equipamentos.TryGetValue(EnumTipo.Machado, out var machado);
            string madeira = "";

            switch (machado)
            {
            case null:
                madeira = jogador.Mochila.AdicionarItem("galho", quantidade);
                break;
            }
            jogador.Salvar();
            await ctx.RespondAsync($"Você cortou {quantidade} [{madeira.FirstUpper()}] {ctx.User.Mention}!".Bold());
        }
示例#11
0
        public async Task MinerarAbAsync(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            var jogador = ModuloBanco.GetJogador(ctx);

            jogador.Proficiencias.TryGetValue(EnumProficiencia.Minerar, out var proff);
            ProficienciaMinerar minerar = proff as ProficienciaMinerar;
            int quantidade = minerar.CalcMinerioExtra();

            jogador.Equipamentos.TryGetValue(EnumTipo.Picareta, out var picareta);
            string minerio = "";

            switch (picareta)
            {
            case null:
                minerio = jogador.Mochila.AdicionarItem("pedra", quantidade);
                break;
            }
            jogador.Salvar();
            await ctx.RespondAsync($"Você minerou {quantidade} [{minerio.FirstUpper()}] {ctx.User.Mention}!".Bold());
        }
示例#12
0
        public async Task ComandoAtribuirAb(CommandContext ctx, int quantidade, [RemainingText] string proficienciaText = "")
        {
            await ctx.TriggerTypingAsync();

            if (string.IsNullOrEmpty(proficienciaText))
            {
                await ctx.ExecutarComandoAsync("ajuda atribuir");

                return;
            }

            if (quantidade < 0)
            {
                await ctx.ExecutarComandoAsync("ajuda atribuir");

                return;
            }

            var jogador = ModuloBanco.GetJogador(ctx.User.Id);

            if (jogador.ProficienciaPontos == 0 || jogador.ProficienciaPontos < quantidade)
            {
                await ctx.RespondAsync($"Você não tem {quantidade} ponto(s) para estar atribuindo {ctx.User.Mention}!".Bold());
            }
            else
            {
                if (jogador.TryGetProficiencia(proficienciaText, out RPGProficiencia proff))
                {
                    proff.Pontos += quantidade;
                    jogador.ProficienciaPontos -= quantidade;
                    jogador.Salvar();
                    await ctx.RespondAsync($"{quantidade} ponto(s) atribuido em {proff.Nome} {ctx.User.Mention}!".Bold());
                }
                else
                {
                    await ctx.RespondAsync($"Proficiência não encontrada {ctx.User.Mention}!".Bold());
                }
            }
        }
示例#13
0
        public async Task ComandoComprarAb(CommandContext ctx, int quantidade = -1, [RemainingText] string itemId = "")
        {
            await ctx.TriggerTypingAsync();

            if (quantidade <= 0)
            {
                await ctx.ExecutarComandoAsync("ajuda comprar");

                return;
            }
            if (string.IsNullOrEmpty(itemId))
            {
                await ctx.ExecutarComandoAsync("ajuda comprar");

                return;
            }

            var array = itemId.Split('#');

            ulong.TryParse(array[0], out var userid);
            if (userid == ctx.User.Id)
            {
                await ctx.RespondAsync($"Não pode comprar do seu proprio anúncio {ctx.User.Mention}!".Bold());

                return;
            }
            if (array.Length == 1)
            {
                await ctx.ExecutarComandoAsync("ajuda comprar");

                return;
            }
            int.TryParse(array[1], out var userslot);
            if (ModuloBanco.TryGetVenda(userid, userslot, out var venda))
            {
                var jogador = ModuloBanco.GetJogador(ctx);
                if (quantidade > venda.Quantidade)
                {
                    await ctx.RespondAsync($"Não tem quantidade o suficiente a venda para comprar essa quantidade {ctx.User.Mention}!".Bold());

                    return;
                }
                if (jogador.Mochila.RemoverItem("zayn", quantidade * venda.Preco))
                {
                    jogador.Mochila.AdicionarItem(venda.ItemNome, quantidade);
                    venda.Quantidade            -= quantidade;
                    venda.QuantidadeParaColetar += quantidade * venda.Preco;
                    venda.Salvar();
                    jogador.Salvar();
                    await ctx.RespondAsync($"{ctx.User.Mention} você acabou de comprar {quantidade} [{venda.ItemNome.FirstUpper()}]!".Bold());
                }
                else
                {
                    await ctx.RespondAsync($"{ctx.User.Mention} você não tem [Zayn] o suficiente para comprar essa quantidade!".Bold());
                }
            }
            else
            {
                await ctx.RespondAsync($"Venda não encontrada {ctx.User.Mention}!".Bold());
            }
        }
示例#14
0
        public async Task ComandoAtacarAb(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            var jogador = ModuloBanco.GetJogador(ctx);

            if (jogador.Batalha.Mob.VidaAtual <= 0)
            {
                await ctx.RespondAsync($"Use `z!explorar` para encontrar novas criaturas {ctx.User.Mention}!".Bold());

                return;
            }

            var           criatura     = jogador.Batalha.Mob;
            StringBuilder strRelatorio = new StringBuilder();


            // Vez criatura

            double dano = ReduzirDano(jogador.DefesaFisicaBase + jogador.DefesaFisicaExtra, criatura.AtaqueFisico);

            jogador.RemoverVida(dano);
            strRelatorio.AppendLine($"< {criatura.Nome.Underline()} > atacou causando {dano.Text()} de dano!".Bold());


            // Vez jogador

            if (jogador.FomeAtual <= 0)
            {
                double fome = jogador.VidaMaxima / 0.02;
                jogador.RemoverVida(fome);
                strRelatorio.AppendLine($"Faminto! -{fome} vida.".Bold());
            }

            jogador.Proficiencias.TryGetValue(EnumProficiencia.Forca, out RPGProficiencia forca);
            ProficienciaForca profForca = forca as ProficienciaForca;

            double danoNoMob = ReduzirDano(0, jogador.AtaqueFisicoBase + jogador.AtaqueFisicoExtra, profForca.CalcDanoExtra(jogador.AtaqueFisicoBase));

            if (criatura.VidaAtual < danoNoMob)
            {
                danoNoMob          = criatura.VidaAtual;
                criatura.VidaAtual = 0;
            }
            else
            {
                criatura.VidaAtual -= danoNoMob;
            }
            strRelatorio.AppendLine($"{ctx.User.Mention} atacou causando {danoNoMob.Text()} de dano!".Bold());

            DiscordEmbedBuilder embed = new DiscordEmbedBuilder().Padrao("Ataque", ctx);

            embed.WithColor(DiscordColor.IndianRed);

            embed.AddField(ctx.User.Username.Titulo(), $"{DiscordEmoji.FromName(ctx.Client, ":heart:")} {jogador.VidaAtual.Text()}/{jogador.VidaMaxima.Text()}", true);

            if (criatura.VidaAtual <= 0)
            {
                strRelatorio.AppendLine($"{DiscordEmoji.FromName(ctx.Client, ":skull_crossbones:")} {criatura.Nome} {DiscordEmoji.FromName(ctx.Client, ":skull_crossbones:")}".Bold());
                strRelatorio.AppendLine($"{DiscordEmoji.FromName(ctx.Client, ":inbox_tray:")} +12 [Zayn]!".Bold());
                strRelatorio.AppendLine($"{DiscordEmoji.FromName(ctx.Client, ":inbox_tray:")} +1 [Ossos]!".Bold());
                strRelatorio.AppendLine($"{DiscordEmoji.FromName(ctx.Client, ":inbox_tray:")} +1 [Frasco vermelho]!".Bold());
                strRelatorio.AppendLine($"{DiscordEmoji.FromName(ctx.Client, ":inbox_tray:")} +8 XP!".Bold());
                jogador.Mochila.AdicionarItem("zayn", 12);
                jogador.Mochila.AdicionarItem("frasco vermelho", 1);
                jogador.Mochila.AdicionarItem("ossos", 1);
                jogador.MobsMortos++;
                if (jogador.AdicionarExp(8))
                {
                    strRelatorio.Append($"Subiu para o nível {jogador.NivelAtual}! +2% {DiscordEmoji.FromName(ctx.Client, ":muscle:")} +1 PP!".Bold());
                }
            }
            else
            {
                double porcentagem     = criatura.VidaAtual / criatura.VidaMax;
                string porcentagemText = (porcentagem * 100).Text() + "%";
                string vidaMob         = "";
                if (porcentagem > 0.7)
                {
                    vidaMob = $"{DiscordEmoji.FromName(ctx.Client, ":green_heart:")} {porcentagemText}";
                }
                else if (porcentagem > 0.4)
                {
                    vidaMob = $"{DiscordEmoji.FromName(ctx.Client, ":yellow_heart:")} {porcentagemText}";
                }
                else if (porcentagem > 0)
                {
                    vidaMob = $"{DiscordEmoji.FromName(ctx.Client, ":heart:")} {porcentagemText}";
                }
                embed.AddField("< " + criatura.Nome.Underline().Bold() + " >", vidaMob, true);
            }
            embed.WithDescription(strRelatorio.ToString());

            jogador.Salvar();
            await ctx.RespondAsync(embed : embed.Build());
        }
示例#15
0
        public async Task ComandoDesequiparAb(CommandContext ctx, [RemainingText] string nome = "")
        {
            await ctx.TriggerTypingAsync();

            if (string.IsNullOrWhiteSpace(nome))
            {
                await ctx.ExecutarComandoAsync("ajuda desequipar");

                return;
            }

            var usuario = ModuloBanco.GetJogador(ctx);

            nome = nome.ToLower();
            string equipamento = "";

            switch (nome)
            {
            case "arma primaria":
            case "arma primária":
            case "arma":
            case "arma 1":
            case "arma principal":
                equipamento = usuario.DesequiparItem(EnumTipo.ArmaPrimaria);
                break;

            case "arma secundaria":
            case "arma 2":
                equipamento = usuario.DesequiparItem(EnumTipo.ArmaPrimaria);
                break;

            case "elmo":
                equipamento = usuario.DesequiparItem(EnumTipo.Elmo);
                break;

            case "peitoral":
                equipamento = usuario.DesequiparItem(EnumTipo.Peitoral);
                break;

            case "luvas":
            case "luva":
                equipamento = usuario.DesequiparItem(EnumTipo.Luvas);
                break;

            case "botas":
            case "bota":
                equipamento = usuario.DesequiparItem(EnumTipo.Botas);
                break;

            case "pernas":
            case "perna":
                equipamento = usuario.DesequiparItem(EnumTipo.Pernas);
                break;

            case "picareta":
                equipamento = usuario.DesequiparItem(EnumTipo.Picareta);
                break;

            case "machado":
                equipamento = usuario.DesequiparItem(EnumTipo.Machado);
                break;

            default:
                await ctx.ExecutarComandoAsync("ajuda desequipar");

                return;
            }

            if (!string.IsNullOrEmpty(equipamento))
            {
                usuario.Salvar();
                await ctx.RespondAsync($"[{equipamento}] desequipado {ctx.User.Mention}!".Bold());
            }
            else
            {
                await ctx.RespondAsync($"Você não tem este item equipado {ctx.User.Mention}!".Bold());
            }
        }
示例#16
0
        public DiscordEmbedBuilder GerarStatus(DiscordUser user)
        {
            var usuario = ModuloBanco.GetJogador(user);

            RPGJogador personagem = usuario;

            DiscordEmoji pv = DiscordEmoji.FromGuildEmote(ModuloCliente.Client, 631907691467636736);
            DiscordEmoji pp = DiscordEmoji.FromGuildEmote(ModuloCliente.Client, 631907691425562674);
            DiscordEmoji pf = DiscordEmoji.FromName(ModuloCliente.Client, ":fork_and_knife:");

            DiscordEmbedBuilder embed = new DiscordEmbedBuilder();

            embed.WithAuthor($"{user.Username} - Nível {personagem.NivelAtual}", iconUrl: user.AvatarUrl);
            int combate = 0, coleta = 0, total = 0;

            foreach (var proff in usuario.Proficiencias)
            {
                total += proff.Value.Pontos;
                switch (proff.Key)
                {
                case EnumProficiencia.Ataque:
                    combate += proff.Value.Pontos;
                    break;

                case EnumProficiencia.Defesa:
                    combate += proff.Value.Pontos;
                    break;

                case EnumProficiencia.Forca:
                    combate += proff.Value.Pontos;
                    break;

                case EnumProficiencia.Minerar:
                    coleta += proff.Value.Pontos;
                    break;

                case EnumProficiencia.Cortar:
                    coleta += proff.Value.Pontos;
                    break;
                }
            }

            embed.WithDescription($"Tem {personagem.ExpAtual.Text().Bold()} pontos de experiencia e precisa de {(personagem.ExpMax - personagem.ExpAtual).Text().Bold()} para avançar.\n" +
                                  $"Matou **{usuario.MobsMortos}** e foi morto **{usuario.MortoPorMobs}** vezes por criaturas.\n" +
                                  $"Matou **{usuario.JogadoresMortos}** e foi morto **{usuario.MortoPorJogadores}** vezes por jogadores.\n" +
                                  $"Está carregando **{personagem.Mochila.Count}** itens.\n");

            embed.AddField("Info".Titulo(), $"{pv}**Vida:** {personagem.VidaAtual.Text()}/{personagem.VidaMaxima.Text()}\n" +
                           $"{pp}**Magia:** {personagem.MagiaAtual.Text()}/{personagem.MagiaMaxima.Text()}\n" +
                           $"{pf}**Fome:** {((personagem.FomeAtual / personagem.FomeMaxima) * 100).Text()}%\n", true);

            embed.AddField("Info".Titulo(), $"**Ataque físico:** {(personagem.AtaqueFisicoBase + personagem.AtaqueFisicoExtra).Text()}\n" +
                           $"**Defesa física:** {(personagem.DefesaFisicaBase + personagem.DefesaFisicaExtra).Text()}\n" +
                           $"**Defesa mágica:** {(personagem.DefesaMagicaBase + personagem.DefesaMagicaExtra).Text()}", true);

            embed.AddField("Proficiências distribuídas(PD)".Titulo(), $"**Combate:** {(((double)combate / (double)total) * 100.00).Text()}% |" +
                           $" **Coleta:** {(((double)coleta / (double)total) * 100.00).Text()}%");

            string armaP = "Nehuma";

            if (usuario.Equipamentos.TryGetValue(EnumTipo.ArmaPrimaria, out var item))
            {
                armaP = item.Nome.FirstUpper();
            }
            embed.AddField("Arma primária".Titulo(), armaP, true);

            string armaS = "Nenhum";

            if (usuario.Equipamentos.TryGetValue(EnumTipo.ArmaSecundaria, out item))
            {
                armaS = item.Nome.FirstUpper();
            }
            embed.AddField("Arma secundária".Titulo(), armaS, true);

            string elmo = "Nenhum";

            if (usuario.Equipamentos.TryGetValue(EnumTipo.Elmo, out item))
            {
                elmo = item.Nome.FirstUpper();
            }
            embed.AddField("Elmo".Titulo(), elmo, true);

            string peitoral = "Nenhum";

            if (usuario.Equipamentos.TryGetValue(EnumTipo.Peitoral, out item))
            {
                peitoral = item.Nome.FirstUpper();
            }
            embed.AddField("Peitoral".Titulo(), peitoral, true);

            string pernas = "Nenhum";

            if (usuario.Equipamentos.TryGetValue(EnumTipo.Pernas, out item))
            {
                pernas = item.Nome.FirstUpper();
            }
            embed.AddField("Pernas".Titulo(), pernas, true);

            string luvas = "Nenhum";

            if (usuario.Equipamentos.TryGetValue(EnumTipo.Luvas, out item))
            {
                luvas = item.Nome.FirstUpper();
            }
            embed.AddField("Luvas".Titulo(), luvas, true);

            string botas = "Nenhum";

            if (usuario.Equipamentos.TryGetValue(EnumTipo.Botas, out item))
            {
                botas = item.Nome.FirstUpper();
            }
            embed.AddField("Botas".Titulo(), botas, true);

            string picareta = "Nenhum";

            if (usuario.Equipamentos.TryGetValue(EnumTipo.Picareta, out item))
            {
                picareta = item.Nome.FirstUpper();
            }
            embed.AddField("Picareta".Titulo(), picareta, true);

            string machado = "Nenhum";

            if (usuario.Equipamentos.TryGetValue(EnumTipo.Machado, out item))
            {
                machado = item.Nome.FirstUpper();
            }
            embed.AddField("Machado".Titulo(), machado, true);

            return(embed);
        }
示例#17
0
        public async Task ComandoExaminarAb(CommandContext ctx, [RemainingText] string nome = "")
        {
            await ctx.TriggerTypingAsync();

            if (string.IsNullOrWhiteSpace(nome))
            {
                await ctx.ExecutarComandoAsync("ajuda examinar");

                return;
            }
            var usuario = ModuloBanco.GetJogador(ctx);

            nome = nome.ToLower();
            if (usuario.Mochila.TryGetValue(nome, out var itemData))
            {
                if (ModuloBanco.TryGetItem(nome, out var item))
                {
                    DiscordEmbedBuilder embed = new DiscordEmbedBuilder().Padrao("Item", ctx);
                    embed.WithTitle($"**{item.Nome.FirstUpper()}**");
                    embed.WithDescription(item.Descricao == "" ? "Sem descrição" : item.Descricao);
                    embed.AddField("Tipo".Titulo(), item.Tipo.ToString(), true);
                    embed.AddField("Venda por".Titulo(), Convert.ToInt32(item.PrecoCompra * 0.3).ToString(), true);
                    embed.AddField("Compre por".Titulo(), (item.PrecoCompra * 10).ToString(), true);
                    StringBuilder str = new StringBuilder();
                    if (item.AtaqueFisico != 0)
                    {
                        str.AppendLine($"Ataque físico: {item.AtaqueFisico}".Bold());
                    }
                    if (item.AtaqueMagico != 0)
                    {
                        str.AppendLine($"Ataque mágico: {item.AtaqueMagico}".Bold());
                    }
                    if (item.DefesaFisica != 0)
                    {
                        str.AppendLine($"Defesa física: {item.DefesaFisica}".Bold());
                    }
                    if (item.DefesaMagica != 0)
                    {
                        str.AppendLine($"Defesa mágica: {item.DefesaMagica}".Bold());
                    }
                    if (item.FomeRestaura != 0)
                    {
                        str.AppendLine($"Restaura {item.FomeRestaura} de fome.");
                    }
                    if (item.MagiaRestaura != 0)
                    {
                        str.AppendLine($"Retaura {item.MagiaRestaura} de magia.");
                    }
                    if (item.VidaRestaura != 0)
                    {
                        str.AppendLine($"Restaura {item.VidaRestaura} de vida.");
                    }
                    if (!string.IsNullOrEmpty(str.ToString()))
                    {
                        embed.AddField("Outros".Titulo(), str.ToString());
                    }
                    embed.WithColor(DiscordColor.Green);
                    await ctx.RespondAsync(embed : embed.Build());
                }
                else
                {
                    await ctx.RespondAsync($"Item [{nome.FirstUpper()}] não adicionado no banco de dados, será adicionado em breve {ctx.User.Mention}!".Bold());
                }
            }
            else
            {
                await ctx.RespondAsync($"Item [{nome.FirstUpper()}] não encontrado na mochila examinar {ctx.User.Mention}!".Bold());
            }
        }
示例#18
0
        public async Task ComandoVenderAb(CommandContext ctx, int quantidade = -1, int preco = -1, [RemainingText] string itemNome = "")
        {
            await ctx.TriggerTypingAsync();

            if (quantidade < 1)
            {
                await ctx.ExecutarComandoAsync("ajuda vender");

                return;
            }

            if (preco < 1)
            {
                await ctx.ExecutarComandoAsync("ajuda vender");

                return;
            }

            if (string.IsNullOrEmpty(itemNome))
            {
                await ctx.ExecutarComandoAsync("ajuda vender");

                return;
            }

            itemNome = itemNome.ToLower();
            if (itemNome == "zayn")
            {
                await ctx.RespondAsync($"Não é possível vender moeda por moeda {ctx.User.Mention}!");

                return;
            }

            var jogador = ModuloBanco.GetJogador(ctx);

            if (jogador.Mochila.TryGetValue(itemNome, out var quantidadeMochila))
            {
                if (quantidade > quantidadeMochila)
                {
                    await ctx.RespondAsync($"{ctx.User.Mention} você somente tem {quantidadeMochila} [{itemNome.FirstUpper()}] na mochila!".Bold());

                    return;
                }
                ModuloBanco.TryGetVenda(ctx.User.Id, out var vendas);
                if (vendas.Count >= jogador.SlotsVenda)
                {
                    await ctx.RespondAsync($"Você já anúnciou, remova a venda anterior para anúnciar novamente {ctx.User.Mention}!");

                    return;
                }

                jogador.Mochila.RemoverItem(itemNome, quantidade);
                new RPGVenda(ctx.User.Id, preco, quantidade, itemNome);
                jogador.Salvar();

                await ctx.RespondAsync($"{ctx.User.Mention} você anunciou no mercado {quantidade} [{itemNome.FirstUpper()}] por {preco} Zayn cada únidade! Aguarde algum jogador comprar o seu produto.".Bold());
            }
            else
            {
                await ctx.RespondAsync($"{ctx.User.Mention} item [{itemNome.FirstUpper()}] não foi encontrado na mochila!".Bold());
            }
        }
示例#19
0
        public async Task ComandoEquiparAb(CommandContext ctx, [RemainingText] string nome = "")
        {
            await ctx.TriggerTypingAsync();

            if (string.IsNullOrWhiteSpace(nome))
            {
                await ctx.ExecutarComandoAsync("ajuda equipar");

                return;
            }

            var usuario = ModuloBanco.GetJogador(ctx);

            nome = nome.ToLower();

            if (usuario.Mochila.TryGetValue(nome, out var itemData))
            {
                if (ModuloBanco.TryGetItem(nome, out var item))
                {
                    switch (item.Tipo)
                    {
                    case EnumTipo.ArmaPrimaria:
                        if (await EquiparItemAsync(ctx, usuario, item))
                        {
                            await ctx.RespondAsync($"A arma primária [{item.Nome}] foi equipada {ctx.User.Mention}!".Bold());
                        }
                        break;

                    case EnumTipo.ArmaSecundaria:
                        if (await EquiparItemAsync(ctx, usuario, item))
                        {
                            await ctx.RespondAsync($"A arma segundaria [{item.Nome}] foi equipada {ctx.User.Mention}!".Bold());
                        }
                        break;

                    case EnumTipo.Botas:
                        if (await EquiparItemAsync(ctx, usuario, item))
                        {
                            await ctx.RespondAsync($"As botas [{item.Nome}] foram equipadas {ctx.User.Mention}!".Bold());
                        }
                        break;

                    case EnumTipo.Peitoral:
                        if (await EquiparItemAsync(ctx, usuario, item))
                        {
                            await ctx.RespondAsync($"O peitoral [{item.Nome}] foi equipado {ctx.User.Mention}!".Bold());
                        }
                        break;

                    case EnumTipo.Elmo:
                        if (await EquiparItemAsync(ctx, usuario, item))
                        {
                            await ctx.RespondAsync($"O elmo [{item.Nome}] foi equipado {ctx.User.Mention}!".Bold());
                        }
                        break;

                    case EnumTipo.Luvas:
                        if (await EquiparItemAsync(ctx, usuario, item))
                        {
                            await ctx.RespondAsync($"As luvas [{item.Nome}] foram esquipadas {ctx.User.Mention}!".Bold());
                        }
                        break;

                    case EnumTipo.Picareta:
                        if (await EquiparItemAsync(ctx, usuario, item))
                        {
                            await ctx.RespondAsync($"A picareta [{item.Nome}] foi equipada {ctx.User.Mention}!".Bold());
                        }
                        break;

                    case EnumTipo.Machado:
                        if (await EquiparItemAsync(ctx, usuario, item))
                        {
                            await ctx.RespondAsync($"O machado [{item.Nome}] foi equipado {ctx.User.Mention}!".Bold());
                        }
                        break;

                    default:
                        await ctx.RespondAsync($"Este [item] não é equipavel {ctx.User.Mention}!".Bold());

                        return;
                    }
                    usuario.Salvar();
                }
                else
                {
                    await ctx.RespondAsync($"Item ainda não adicionado no banco de dados, será adicionado em breve {ctx.User.Mention}!".Bold());

                    return;
                }
            }
            else
            {
                await ctx.RespondAsync($"Você não tem este [item] {ctx.User.Mention}!".Bold());
            }
        }