Can roll fate dice now with $roll 5dF
This commit is contained in:
parent
82704166ab
commit
9b26bd9ee5
@ -19,6 +19,9 @@ namespace NadekoBot.Modules.Gambling
|
||||
public class DriceRollCommands
|
||||
{
|
||||
private Regex dndRegex { get; } = new Regex(@"^(?<n1>\d+)d(?<n2>\d+)(?:\+(?<add>\d+))?(?:\-(?<sub>\d+))?$", RegexOptions.Compiled);
|
||||
private Regex fudgeRegex { get; } = new Regex(@"^(?<n1>\d+)d(?:F|f)$", RegexOptions.Compiled);
|
||||
|
||||
private readonly char[] fateRolls = new[] { '-', ' ', '+' };
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
@ -86,6 +89,17 @@ namespace NadekoBot.Modules.Gambling
|
||||
await InternallDndRoll(umsg, arg, false).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task FateRoll(IUserMessage msg, string arg)
|
||||
{
|
||||
var channel = (ITextChannel)msg.Channel;
|
||||
|
||||
int n1;
|
||||
Match match;
|
||||
|
||||
}
|
||||
|
||||
private async Task InternalRoll(IUserMessage umsg, int num, bool ordered)
|
||||
{
|
||||
var channel = (ITextChannel)umsg.Channel;
|
||||
@ -141,12 +155,29 @@ namespace NadekoBot.Modules.Gambling
|
||||
if (channel == null)
|
||||
return;
|
||||
|
||||
var rng = new NadekoRandom();
|
||||
Match match;
|
||||
if ((match = dndRegex.Match(arg)).Length != 0)
|
||||
int n1;
|
||||
int n2;
|
||||
if ((match = fudgeRegex.Match(arg)).Length != 0 &&
|
||||
int.TryParse(match.Groups["n1"].ToString(), out n1) &&
|
||||
n1 > 0 && n1 < 500)
|
||||
{
|
||||
int n1;
|
||||
int n2;
|
||||
var rng = new NadekoRandom();
|
||||
|
||||
var rolls = new List<char>();
|
||||
|
||||
for (int i = 0; i < n1; i++)
|
||||
{
|
||||
rolls.Add(fateRolls[rng.Next(0, fateRolls.Length)]);
|
||||
}
|
||||
var embed = new EmbedBuilder().WithOkColor().WithDescription($"{umsg.Author.Mention} rolled {n1} fate {(n1 == 1 ? "die" : "dice")}.")
|
||||
.AddField(efb => efb.WithName(Format.Bold("Result"))
|
||||
.WithValue(string.Join(" ", rolls.Select(c => Format.Code($"[{c}]")))));
|
||||
await channel.EmbedAsync(embed.Build()).ConfigureAwait(false);
|
||||
}
|
||||
else if ((match = dndRegex.Match(arg)).Length != 0)
|
||||
{
|
||||
var rng = new NadekoRandom();
|
||||
if (int.TryParse(match.Groups["n1"].ToString(), out n1) &&
|
||||
int.TryParse(match.Groups["n2"].ToString(), out n2) &&
|
||||
n1 <= 50 && n2 <= 100000 && n1 > 0 && n2 > 0)
|
||||
|
@ -220,7 +220,9 @@ namespace NadekoBot.Modules.Utility
|
||||
.AddField(efb => efb.WithName(Format.Bold("Owner ID(s)")).WithValue(stats.OwnerIds).WithIsInline(true))
|
||||
.AddField(efb => efb.WithName(Format.Bold("Uptime")).WithValue(stats.GetUptimeString("\n")).WithIsInline(true))
|
||||
.AddField(efb => efb.WithName(Format.Bold("Presence")).WithValue($"{NadekoBot.Client.GetGuilds().Count} Servers\n{stats.TextChannels} Text Channels\n{stats.VoiceChannels} Voice Channels").WithIsInline(true))
|
||||
#if !GLOBAL_NADEKO
|
||||
.WithFooter(efb => efb.WithText($"Playing {Music.Music.MusicPlayers.Where(mp => mp.Value.CurrentSong != null).Count()} songs, {Music.Music.MusicPlayers.Sum(mp => mp.Value.Playlist.Count)} queued."))
|
||||
#endif
|
||||
.Build());
|
||||
}
|
||||
|
||||
|
@ -1192,10 +1192,10 @@
|
||||
<value>roll</value>
|
||||
</data>
|
||||
<data name="roll_desc" xml:space="preserve">
|
||||
<value>Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice. If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y.</value>
|
||||
<value>Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice. If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. Y can be a letter 'F' if you want to roll fate dice instead of dnd.</value>
|
||||
</data>
|
||||
<data name="roll_usage" xml:space="preserve">
|
||||
<value>`{0}roll` or `{0}roll 7` or `{0}roll 3d5`</value>
|
||||
<value>`{0}roll` or `{0}roll 7` or `{0}roll 3d5` or `{0}roll 5dF`</value>
|
||||
</data>
|
||||
<data name="rolluo_cmd" xml:space="preserve">
|
||||
<value>rolluo</value>
|
||||
|
Loading…
Reference in New Issue
Block a user