From 5c36a90408647187c3d83a270224563a8eff744d Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 17 Jul 2016 16:41:46 +0200 Subject: [PATCH] added $rolluo (unordered roll) for games where order of dice matters --- NadekoBot/Modules/Gambling/DiceRollCommand.cs | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/NadekoBot/Modules/Gambling/DiceRollCommand.cs b/NadekoBot/Modules/Gambling/DiceRollCommand.cs index 5e1a7833..68a665fe 100644 --- a/NadekoBot/Modules/Gambling/DiceRollCommand.cs +++ b/NadekoBot/Modules/Gambling/DiceRollCommand.cs @@ -24,6 +24,13 @@ namespace NadekoBot.Modules.Gambling " If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | $roll or $roll 7 or $roll 3d5") .Parameter("num", ParameterType.Optional) .Do(RollFunc()); + + cgb.CreateCommand(Module.Prefix + "rolluo") + .Description("Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice (unordered)." + + " If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | $roll or $roll 7 or $roll 3d5") + .Parameter("num", ParameterType.Optional) + .Do(RollFunc(false)); + cgb.CreateCommand(Module.Prefix + "nroll") .Description("Rolls in a given range. | `$nroll 5` (rolls 0-5) or `$nroll 5-15`") .Parameter("range", ParameterType.Required) @@ -40,7 +47,7 @@ namespace NadekoBot.Modules.Gambling Regex dndRegex = new Regex(@"(?\d+)d(?\d+)", RegexOptions.Compiled); - private Func RollFunc() + private Func RollFunc(bool ordered = true) { var r = new Random(); return async e => @@ -73,7 +80,7 @@ namespace NadekoBot.Modules.Gambling arr[i] = r.Next(1, n2 + 1); } var elemCnt = 0; - await e.Channel.SendMessage($"`Rolled {n1} {(n1 == 1 ? "die" : "dice")} 1-{n2}.`\n`Result:` " + string.Join(", ", arr.OrderBy(x => x).Select(x => elemCnt++ % 2 == 0 ? $"**{x}**" : x.ToString()))).ConfigureAwait(false); + await e.Channel.SendMessage($"`Rolled {n1} {(n1 == 1 ? "die" : "dice")} 1-{n2}.`\n`Result:` " + string.Join(", ", (ordered ? arr.OrderBy(x => x).AsEnumerable() : arr).Select(x => elemCnt++ % 2 == 0 ? $"**{x}**" : x.ToString()))).ConfigureAwait(false); } return; } @@ -92,17 +99,23 @@ namespace NadekoBot.Modules.Gambling { var randomNumber = r.Next(1, 7); var toInsert = dices.Count; - if (randomNumber == 6 || dices.Count == 0) - toInsert = 0; - else if (randomNumber != 1) - for (var j = 0; j < dices.Count; j++) - { - if (values[j] < randomNumber) + if (ordered) + { + if (randomNumber == 6 || dices.Count == 0) + toInsert = 0; + else if (randomNumber != 1) + for (var j = 0; j < dices.Count; j++) { - toInsert = j; - break; + if (values[j] < randomNumber) + { + toInsert = j; + break; + } } - } + } + else { + toInsert = dices.Count; + } dices.Insert(toInsert, GetDice(randomNumber)); values.Insert(toInsert, randomNumber); }