Exemplo n.º 1
0
        internal override async Task ExecuteCommand(SocketMessage message, GuildConfig guild)
        {
            EmbedBuilder embedBuilder = new EmbedBuilder();
            int          mod          = 0;
            Match        m            = Regex.Match(message.Content, "([-+])(\\d+)");

            if (m.Success)
            {
                mod = Convert.ToInt32(m.Groups[2].ToString());
                if (m.Groups[1].ToString().Equals("-"))
                {
                    mod = -(mod);
                }
            }

            DicePool dice        = new DicePool($"4d3", "FATE");
            int      resultValue = (dice.CountAtOrAbove(3) - dice.CountAtOrBelow(1)) + mod;
            string   modString   = (resultValue >= 0) ? $"+{mod}" : $"{mod}";
            string   descriptiveResult;

            if (resultValue > 7)
            {
                descriptiveResult = $"+{resultValue}, Legendary!";
            }
            else if (resultValue < -2)
            {
                descriptiveResult = $"{resultValue}, Abysmal...";
            }
            else
            {
                string resultKey = (resultValue < 0) ? $"{resultValue}" : $"+{resultValue}";
                descriptiveResult = $"{resultKey}, {fateTiers[resultKey]}";
            }

            embedBuilder.Description = descriptiveResult;
            embedBuilder.AddField("Rolled", $"{dice.SummarizePoolRoll(-2)} ({modString})");
            await Program.SendReply(message, embedBuilder);
        }