Exemple #1
0
        internal static async Task SkillUpgradePage(Player player, ISocketMessageChannel chan)
        {
            EmbedBuilder em = new EmbedBuilder();

            em.WithTitle(player.name);
            em.WithFooter($"Skill Points: {player.skillPoints}{Environment.NewLine}");
            em.WithDescription($"Use the reactions to select on which stat to spend your skill point."
                               + $"{Environment.NewLine}{EUI.GetLetter(4)} {ReferenceData.EnduranceInfo()}"
                               + $"{Environment.NewLine}{EUI.GetLetter(8)} {ReferenceData.IntelligenceInfo()}"
                               + $"{Environment.NewLine}{EUI.GetLetter(18)} {ReferenceData.StrengthInfo()}"
                               + $"{Environment.NewLine}{EUI.GetLetter(2)} {ReferenceData.CharismaInfo()}"
                               + $"{Environment.NewLine}{EUI.GetLetter(3)} {ReferenceData.DexterityInfo()}"
                               + $"{Environment.NewLine}{EUI.GetLetter(15)} {ReferenceData.PerceptionInfo()}"
                               + "");
            await player.NewUI(await chan.SendMessageAsync(embed: em.Build()),
                               MsgType.Skills);
        }
Exemple #2
0
        internal static async Task SetSkills(Player player, IMessageChannel channel,
                                             int e, int[] rolls, bool[] rused, bool edit = false)
        {
            rolls ??= GetRolls();

            if (e > 0)
            {
                SetASkill(player, e - 1, rolls, rused);
            }

            EmbedBuilder em = DUtils.BuildEmbed(player.name, "Select a number from the rolls list using reactions to set that roll as the following stat",
                                                null, player.userSettings.Color);

            MsgType type = MsgType.SetSkill;

            EmbedFieldBuilder statField = new EmbedFieldBuilder()
            {
                Name = "**Stat To Set**", IsInline = true
            };

            if (player.stats.endurance == 0)
            {
                statField.Value = ReferenceData.EnduranceInfo();
            }
            else if (player.stats.intelligence == 0)
            {
                statField.Value = ReferenceData.IntelligenceInfo();
            }
            else if (player.stats.strength == 0)
            {
                statField.Value = ReferenceData.StrengthInfo();
            }
            else if (player.stats.charisma == 0)
            {
                statField.Value = ReferenceData.CharismaInfo();
            }
            else if (player.stats.dexterity == 0)
            {
                statField.Value = ReferenceData.DexterityInfo();
            }
            else if (player.stats.perception == 0)
            {
                statField.Value = ReferenceData.PerceptionInfo();
            }
            else
            {
                em.WithDescription("Please confirm your stats," +
                                   " these may not be re rolled later." +
                                   $" Click {EUI.cancel} to reassign your rolls." +
                                   $" Click {EUI.ok} to proceed with these stats.");
                em.AddField("Stats", ""
                            + $"Endurance: {player.stats.endurance}{Environment.NewLine}"
                            + $"Intelligence: {player.stats.intelligence}{Environment.NewLine}"
                            + $"Strength: {player.stats.strength}{Environment.NewLine}"
                            + $"Charisma: {player.stats.charisma}{Environment.NewLine}"
                            + $"Dexterity: {player.stats.dexterity}{Environment.NewLine}"
                            + $"Perception: {player.stats.perception}{Environment.NewLine}"
                            );
                type = MsgType.ConfirmSkills;
                edit = false;
            }

            if (type == MsgType.SetSkill)
            {
                string[] scEmote = { EUI.GetLetter(0), EUI.GetLetter(1), EUI.GetLetter(2),
                                     EUI.GetLetter(3), EUI.GetLetter(4), EUI.GetLetter(5) };
                string   rollsLeft = null;
                for (int r = 0; r < 6; r++)
                {
                    rollsLeft += scEmote[r];
                    if (rused[r])
                    {
                        rollsLeft += $"~~[{rolls[r]}]~~";
                    }
                    else
                    {
                        rollsLeft += $" = [{rolls[r]}]";
                    }
                    rollsLeft += Environment.NewLine;
                }
                em.AddField("**Rolls**", rollsLeft, true);
                em.AddField(statField);
                int[]    stats = { player.stats.endurance, player.stats.intelligence, player.stats.strength,
                                   player.stats.charisma,     player.stats.dexterity,    player.stats.perception };
                string[] titles    = { "Endurance", "Intelligence", "Strength", "Charisma", "Dexterity", "Perception" };
                string   currStats = null;
                for (int i = 0; i < stats.Length; i++)
                {
                    if (stats[i] > 0)
                    {
                        currStats += $" {titles[i]}: {stats[i]}";
                    }
                    else if (i == 0 || stats[i - 1] > 0)
                    {
                        currStats += $" {titles[i]}:__";
                    }
                    else
                    {
                        currStats += $" {titles[i]}: ??";
                    }
                    currStats += Environment.NewLine;
                }
                em.AddField("**Current Stats**", currStats, true);
            }
            IUserMessage msgEdit = null;

            if (edit && (msgEdit = await player.ui.GetUiMessage()) != null)
            {
                await msgEdit.ModifyAsync(x =>
                {
                    x.Embed = em.Build();
                });

                await msgEdit.RemoveReactionAsync(new Emoji(EUI.GetLetter(e - 1)),
                                                  Program.clientCopy.CurrentUser);

                player.ui.data = $"{Utils.JSON(rolls)};{Utils.JSON(rused)}";
                player.SaveFileMongo();
            }
            else
            {
                if (player.ui != null)
                {
                    await player.ui.TryDeleteMessage();
                }
                await player.NewUI($"For help on how to use interfaces, click the {EUI.help} emote",
                                   em.Build(), channel, type, $"{Utils.JSON(rolls)};{Utils.JSON(rused)}");
            }
        }