I've become one with C#. More fair dice. fixed description ref #143

This commit is contained in:
Master Kwoth 2016-04-01 19:05:15 +02:00
parent 413ae9f856
commit abc427dd44

View File

@ -19,7 +19,7 @@ namespace NadekoBot.Modules.Gambling
internal override void Init(CommandGroupBuilder cgb) internal override void Init(CommandGroupBuilder cgb)
{ {
cgb.CreateCommand(Module.Prefix + "roll") cgb.CreateCommand(Module.Prefix + "roll")
.Description("Rolls 2 dice from 0-10. If you supply a number [x] it rolls up to 30 normal dice.\n**Usage**: $roll [x]") .Description("Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice.\n**Usage**: $roll [x]")
.Parameter("num", ParameterType.Optional) .Parameter("num", ParameterType.Optional)
.Do(Roll0to10Func()); .Do(Roll0to10Func());
cgb.CreateCommand(Module.Prefix + "nroll") cgb.CreateCommand(Module.Prefix + "nroll")
@ -28,7 +28,13 @@ namespace NadekoBot.Modules.Gambling
.Do(Roll0to5Func()); .Do(Roll0to5Func());
} }
private Image GetDice(int num) => Properties.Resources.ResourceManager.GetObject("_" + num) as Image; private Image GetDice(int num) => num != 10
? Properties.Resources.ResourceManager.GetObject("_" + num) as Image
: new[]
{
(Properties.Resources.ResourceManager.GetObject("_" + 1) as Image),
(Properties.Resources.ResourceManager.GetObject("_" + 0) as Image),
}.Merge();
private Func<CommandEventArgs, Task> Roll0to10Func() private Func<CommandEventArgs, Task> Roll0to10Func()
{ {
@ -37,30 +43,24 @@ namespace NadekoBot.Modules.Gambling
{ {
if (e.Args[0] == "") if (e.Args[0] == "")
{ {
var num1 = r.Next(0, 10); var gen = r.Next(0, 101);
var num2 = r.Next(0, 10);
Image[] images; var num1 = gen / 10;
var num2 = gen % 10;
if (num1 == 0 && num2 == 0 && r.Next(0, 2) == 1) var imageStream = new Image[2] { GetDice(num1), GetDice(num2) }.Merge().ToStream(ImageFormat.Png);
await e.Channel.SendFile("dice.png", imageStream);
}
else
{ {
images = new Image[3] { GetDice(1), GetDice(0), GetDice(0) };
}
else {
images = new Image[2] { GetDice(num1), GetDice(num2) };
}
var bitmap = images.Merge();
await e.Channel.SendFile("dice.png", bitmap.ToStream(ImageFormat.Png));
}
else {
try try
{ {
var num = int.Parse(e.Args[0]); var num = int.Parse(e.Args[0]);
if (num < 1) num = 1; if (num < 1) num = 1;
if (num > 30) if (num > 30)
{ {
await e.Channel.SendMessage("You can roll up to 30 dies at a time."); await e.Channel.SendMessage("You can roll up to 30 dice at a time.");
num = 30; num = 30;
} }
var dices = new List<Image>(num); var dices = new List<Image>(num);
@ -113,7 +113,8 @@ namespace NadekoBot.Modules.Gambling
throw new ArgumentException("First argument should be bigger than the second one."); throw new ArgumentException("First argument should be bigger than the second one.");
rolled = new Random().Next(arr[0], arr[1] + 1); rolled = new Random().Next(arr[0], arr[1] + 1);
} }
else { else
{
rolled = new Random().Next(0, int.Parse(e.GetArg("range")) + 1); rolled = new Random().Next(0, int.Parse(e.GetArg("range")) + 1);
} }