Exemplo n.º 1
0
        public static Embed FieldMon(BasicMon mon)
        {
            int r = mon.HPGradient()[0];
            int g = mon.HPGradient()[1];
            int b = mon.HPGradient()[2];

            string statuses = "";

            if (mon.Status.Paraylzed)
            {
                statuses += "<:Paralyzed:716427812558602250>";
            }
            if (mon.Status.Burned)
            {
                statuses += "<:Burn:717232618327769141>";
            }

            var user = UserHandler.GetUser(mon.OwnerID);

            var builder = new EmbedBuilder()
                          .WithFooter(user.Name, user.AvatarUrl)
                          .WithTitle($"Lv. {mon.Level}")
                          .WithThumbnailUrl(mon.ArtURL)
                          .WithColor(r, g, b)
                          .WithAuthor($"{UserHandler.GetUser(mon.OwnerID).Char.Name}'s {mon.Nickname} {mon.GenderSymbol}")
                          .WithDescription($"{mon.CurrentHP}/{mon.TotalHP} HP {statuses}");
            var embed = builder.Build();

            return(embed);
        }
Exemplo n.º 2
0
        public async Task SpawnMon([Remainder] string str)
        {
            ContextIds  idList = new ContextIds(Context);
            UserAccount user   = UserHandler.GetUser(idList.UserId);

            //Tests each case to make sure all circumstances for the execution of this command are valid (character exists, in correct location)
            try
            {
                await UserHandler.CharacterExists(idList);

                await UserHandler.ValidCharacterLocation(idList);
            }
            catch (InvalidCharacterStateException)
            {
                return;
            }

            if (!user.Char.IsPartyFull())
            {
                BasicMon mon = MonRegister.StringToMonRegister(str);
                mon.CatcherID = user.UserId;
                mon.OwnerID   = user.UserId;
                user.Char.Party.Add(mon);
                await MessageHandler.SendMessage(idList, $"{mon.Nickname} has been added to your party.");
            }
            else
            {
                await MessageHandler.SendMessage(idList, "Your party is full!");
            }
        }
Exemplo n.º 3
0
        public static Embed MonSendOut(UserAccount user, BasicMon mon)
        {
            var builder = new EmbedBuilder()
                          .WithTitle($"{user.Name} sends out **{mon.Nickname}**!")
                          .WithThumbnailUrl(mon.ArtURL)
                          .WithColor(255, 62, 62);
            var embed = builder.Build();

            return(embed);
        }
Exemplo n.º 4
0
        public static Embed FightScreen(BasicMon mon)
        {
            var builder = new EmbedBuilder()
                          .WithTitle(mon.Nickname)
                          .WithColor(62, 255, 62)
                          .WithThumbnailUrl(mon.ArtURL)
                          .WithImageUrl("https://cdn.discordapp.com/attachments/452818546175770624/626432333414924288/fight_screen.png");
            var embed = builder.Build();

            return(embed);
        }
Exemplo n.º 5
0
        public static Embed FieldMon(BasicMon mon)
        {
            var builder = new EmbedBuilder()
                          .WithTitle($"Lv. {mon.Level}")
                          .WithThumbnailUrl(mon.ArtURL)
                          .WithColor(255, 62, 62)
                          .WithAuthor($"{mon.Nickname} {mon.GenderSymbol}")
                          .WithDescription($"{mon.CurrentHP}/{mon.TotalHP} HP");
            var embed = builder.Build();

            return(embed);
        }
Exemplo n.º 6
0
        public static Embed MoveScreen(BasicMon mon)
        {
            var builder = new EmbedBuilder()
                          .WithTitle("**Moves**")
                          .WithColor(62, 255, 62)
                          .AddField(mon.ActiveMoves[0].Name, mon.ActiveMoves[0].Description + $"\nPP: {mon.ActiveMoves[0].CurrentPP}/{mon.ActiveMoves[0].MaxPP}", true)
                          .AddField(mon.ActiveMoves[1].Name, mon.ActiveMoves[1].Description + $"\nPP: {mon.ActiveMoves[1].CurrentPP}/{mon.ActiveMoves[1].MaxPP}", true)
                          .AddField(mon.ActiveMoves[2].Name, mon.ActiveMoves[2].Description + $"\nPP: {mon.ActiveMoves[2].CurrentPP}/{mon.ActiveMoves[2].MaxPP}", true)
                          .AddField(mon.ActiveMoves[3].Name, mon.ActiveMoves[3].Description + $"\nPP: {mon.ActiveMoves[3].CurrentPP}/{mon.ActiveMoves[3].MaxPP}", true);
            var embed = builder.Build();

            return(embed);
        }
Exemplo n.º 7
0
        public static Embed MonSendOut(UserAccount user, BasicMon mon)
        {
            int r = mon.HPGradient()[0];
            int g = mon.HPGradient()[1];
            int b = mon.HPGradient()[2];

            var builder = new EmbedBuilder()
                          .WithTitle($"{user.Name} sends out **{mon.Nickname}**!")
                          .WithThumbnailUrl(mon.ArtURL)
                          .WithFooter(user.Name, user.AvatarUrl)
                          .WithColor(r, g, b);
            var embed = builder.Build();

            return(embed);
        }
Exemplo n.º 8
0
        public static Embed MoveScreenNew(BasicMon mon)
        {
            var user = UserHandler.GetUser(mon.OwnerID);

            var builder = new EmbedBuilder()
                          .WithFooter(user.Name, user.AvatarUrl)
                          .WithTitle("**Moves**")
                          .WithColor(62, 255, 62)
                          .WithThumbnailUrl(mon.ArtURL)
                          .AddField("1\u20E3 " + mon.ActiveMoves[0].Name, mon.ActiveMoves[0].Description + $"\nPP: {mon.ActiveMoves[0].CurrentPP}/{mon.ActiveMoves[0].MaxPP}", false)
                          .AddField("2\u20E3 " + mon.ActiveMoves[1].Name, mon.ActiveMoves[1].Description + $"\nPP: {mon.ActiveMoves[1].CurrentPP}/{mon.ActiveMoves[1].MaxPP}", false)
                          .AddField("3\u20E3 " + mon.ActiveMoves[2].Name, mon.ActiveMoves[2].Description + $"\nPP: {mon.ActiveMoves[2].CurrentPP}/{mon.ActiveMoves[2].MaxPP}", false)
                          .AddField("4\u20E3 " + mon.ActiveMoves[3].Name, mon.ActiveMoves[3].Description + $"\nPP: {mon.ActiveMoves[3].CurrentPP}/{mon.ActiveMoves[3].MaxPP}", false);
            var embed = builder.Build();

            return(embed);
        }
Exemplo n.º 9
0
        public static Embed MonStats(BasicMon mon)
        {
            var moves = "";

            foreach (BasicMove move in mon.ActiveMoves)
            {
                if (move.Name != "None")
                {
                    moves += $"**{move.Name}**, ";
                }
            }
            moves = moves.Substring(0, moves.Length - 2);

            var user = UserHandler.GetUser(mon.OwnerID);

            var builder = new EmbedBuilder()
                          .WithTitle(mon.TypingToString())
                          .WithDescription($"DEX NO. {mon.DexNum}")
                          .WithColor(139, 87, 42)
                          .WithTimestamp(DateTimeOffset.FromUnixTimeMilliseconds(1560726232528))
                          .WithFooter(footer => {
                footer
                .WithText($"Caught By {UserHandler.GetUser(mon.CatcherID).Name}");
            })
                          .WithImageUrl(mon.ArtURL)
                          .WithAuthor(author => {
                author
                .WithName(mon.Species)
                .WithIconUrl(mon.ArtURL);
            })
                          .AddField("Level", mon.Level, true)
                          .AddField("HP", $"{mon.CurrentHP}/{mon.TotalHP}", true)
                          .AddField("Stats", mon.CurStatsToString())
                          .AddField("Moves", moves)
                          .AddField("Nature", mon.Nature, true)
                          .AddField("Ability", "**NOT IMPLEMENTED YET**", true)
                          .AddField("Held Item", "**NOT IMPLEMENTED YET**", true)
                          .AddField("Gender", mon.Gender, true)
                          .AddField("IVs", mon.IvsToString())
                          .AddField("EVs", mon.EvsToString());
            var embed = builder.Build();

            return(embed);
        }
Exemplo n.º 10
0
        public static Embed TargetingScreen(UserAccount user, BasicMon mon)
        {
            var builder = new EmbedBuilder()
                          .WithTitle("**Choose A Target**")
                          .WithColor(62, 255, 62)
                          .WithFooter($"Pg. {user.Char.TargetPage+1}/{Math.Ceiling(mon.SelectedMove.ValidTargets.Count/9.0)}");

            for (int i = user.Char.TargetPage * 9; i < mon.SelectedMove.ValidTargets.Count; i++)
            {
                if (i > (user.Char.TargetPage * 9) + 8)
                {
                    break;
                }
                var target = mon.SelectedMove.ValidTargets[i];
                builder.AddField($"{i+1}\u20E3 - {UserHandler.GetUser(target.OwnerID).Char.Name}'s {target.Nickname}", false);
            }
            var embed = builder.Build();

            return(embed);
        }
Exemplo n.º 11
0
        public async Task QuickDuel(string mon, string mon2, SocketGuildUser target)
        {
            var        fromUser = UserHandler.GetUser(Context.User.Id);
            var        toUser   = UserHandler.GetUser(target.Id);
            ContextIds ids      = new ContextIds(Context);

            fromUser.Char = new Character(true);
            fromUser.Char.CurrentGuildId   = ids.GuildId;
            fromUser.Char.CurrentGuildName = Context.Guild.Name;
            fromUser.Char.Name             = fromUser.Name;
            mon = mon.ToLower();
            BasicMon m = MonRegister.StringToMonRegister(mon);

            m.CatcherID = fromUser.UserId;
            m.OwnerID   = fromUser.UserId;
            fromUser.Char.Party.Add(m);
            fromUser.HasCharacter = true;
            await MessageHandler.SendMessage(ids, $"{fromUser.Mention}, you have chosen {m.Nickname} as your partner! Good luck on your adventure.");

            fromUser.PromptState = -1;

            toUser.Char = new Character(true);
            toUser.Char.CurrentGuildId   = ids.GuildId;
            toUser.Char.CurrentGuildName = target.Guild.Name;
            toUser.Char.Name             = toUser.Name;
            mon2 = mon2.ToLower();
            BasicMon m2 = MonRegister.StringToMonRegister(mon2);

            m2.CatcherID = toUser.UserId;
            m2.OwnerID   = toUser.UserId;
            toUser.Char.Party.Add(m2);
            toUser.HasCharacter = true;
            await MessageHandler.SendMessage(ids, $"{toUser.Mention}, you have chosen {m2.Nickname} as your partner! Good luck on your adventure.");

            toUser.PromptState = -1;

            CombatInstance2 combat = new CombatInstance2(ids, fromUser, toUser);

            CombatHandler2.StoreInstance(CombatHandler2.NumberOfInstances(), combat);
            await combat.StartCombat();
        }
Exemplo n.º 12
0
        public static Embed MonDex(BasicMon mon)
        {
            var builder = new EmbedBuilder()
                          .WithTitle(mon.TypingToString())
                          .WithColor(139, 87, 42)
                          .WithFooter(footer => {
                footer
                .WithText($"Dex No. {mon.DexNum}");
            })
                          .WithImageUrl(mon.ArtURL)
                          .WithAuthor(author => {
                author
                .WithName(mon.Species)
                .WithIconUrl(mon.ArtURL);
            })
                          .AddField("Stats", mon.BaseStatsToString())
                          .AddField("Dex Entry", mon.DexEntry);
            var embed = builder.Build();

            return(embed);
        }
Exemplo n.º 13
0
        public async Task QuickStart([Remainder] string text)
        {
            ContextIds ids  = new ContextIds(Context);
            var        user = UserHandler.GetUser(ids.UserId);

            user.Char = new Character(true);
            user.Char.CurrentGuildId   = ids.GuildId;
            user.Char.CurrentGuildName = Context.Guild.Name;
            user.Char.Name             = user.Name;

            text = text.ToLower();

            BasicMon mon = MonRegister.StringToMonRegister(text);

            mon.CatcherID = user.UserId;
            mon.OwnerID   = user.UserId;
            user.Char.Party.Add(mon);
            user.HasCharacter = true;
            await MessageHandler.SendMessage(ids, $"{user.Mention}, you have chosen {mon.Nickname} as your partner! Good luck on your adventure.");

            user.PromptState = -1;
        }
Exemplo n.º 14
0
 public static async Task FaintWinner(ContextIds context, UserAccount user, BasicMon mon)
 {
     await MessageHandler.SendMessage(context, $"{mon.Nickname} fainted! {user.Mention} wins!");
 }
Exemplo n.º 15
0
        public static async Task PartyMenu(UserAccount user, IUserMessage message, IEmote emote, ContextIds idList)
        {
            switch (emote.Name.ToLower())
            {
            case "back1":
                user.RemoveAllReactionMessages(5);
                user.RemoveAllReactionMessages(1);

                await message.RemoveAllReactionsAsync();

                await message.ModifyAsync(m => { m.Embed = MonEmbedBuilder.MainMenu(user); m.Content = ""; });

                await MessageHandler.MenuEmojis(message);

                user.ReactionMessages.Add(message.Id, 1);
                user.Char.SwapMode   = false;
                user.Char.SwapMonNum = -1;
                break;

            case "1\u20E3":
            case "2\u20E3":
            case "3\u20E3":
            case "4\u20E3":
            case "5\u20E3":
            case "6\u20E3":
                int num = int.Parse(emote.Name.ToLower().Substring(0, 1));
                if (user.Char.Party.Count >= num)
                {
                    if (!user.Char.SwapMode)
                    {
                        await MessageHandler.NotImplemented(idList, "monstats");
                    }
                    else
                    {
                        if (user.Char.SwapMonNum == -1)
                        {
                            user.Char.SwapMonNum = num - 1;
                            await message.ModifyAsync(m => { m.Content = $"**Who should {user.Char.Party[num-1].Nickname} be swapped with?**"; });
                        }
                        else
                        {
                            if (num - 1 != user.Char.SwapMonNum)
                            {
                                BasicMon temp = user.Char.Party[num - 1];
                                user.Char.Party[num - 1] = user.Char.Party[user.Char.SwapMonNum];
                                user.Char.Party[user.Char.SwapMonNum] = temp;
                                string url = MessageHandler.GetImageURL(ImageGenerator.PartyMenu(user.Char.Party)).Result;
                                await message.ModifyAsync(m => { m.Embed = MonEmbedBuilder.PartyMenu(url, user); m.Content = ""; });

                                user.Char.SwapMode   = false;
                                user.Char.SwapMonNum = -1;
                            }
                        }
                    }
                }

                break;

            case "swap":
                if (!user.Char.SwapMode)
                {
                    await message.ModifyAsync(m => { m.Content = "**Swapping Mode Enabled**"; });

                    user.Char.SwapMode   = true;
                    user.Char.SwapMonNum = -1;
                }
                else
                {
                    //Careful- m.Content string has an invisible EMPTY CHARACTER in it. Looks like this -->‎
                    await message.ModifyAsync(m => { m.Content = "‎"; });

                    user.Char.SwapMode   = false;
                    user.Char.SwapMonNum = -1;
                }
                break;

            default:
                break;
            }
        }
Exemplo n.º 16
0
 public static async Task TakesDamage(ContextIds context, BasicMon mon, string addon)
 {
     await MessageHandler.SendEmbedMessage(context, $"{mon.Nickname} takes damage!" + addon, MonEmbedBuilder.FieldMon(mon));
 }
Exemplo n.º 17
0
 public static async Task UseMoveNew(ContextIds context, BasicMon target, string addon)
 {
     await MessageHandler.SendEmbedMessage(context, addon, MonEmbedBuilder.FieldMon(target));
 }
Exemplo n.º 18
0
 public static async Task UseMove(ContextIds context, BasicMon mon, BasicMon target, string move, string addon)
 {
     await MessageHandler.SendEmbedMessage(context, $"**{mon.Nickname}** used **{move}**!" + addon, MonEmbedBuilder.FieldMon(target));
 }