Extensible and well-documented dice roller with a robust set of features. Excellent for play-by-post forums, virtual tabletops, or for integrating into character sheets or encounter managers.
Install-Package DiceRoller -Version 4.0.0
dotnet add package DiceRoller --version 4.0.0
<PackageReference Include="DiceRoller" Version="4.0.0" />
paket add DiceRoller --version 4.0.0
- Nested rolls are fully resolved in RollResult.ToString(). For example, instead of ToString() reporting "(1d8)d6", it will now report the value rolled for the d8, e.g. "3d6"
- RollerConfig.ExecuteMacro was removed.
- DiceRoller is now packaged for both .NET Standard 2.0 as well as .NET Framework 4.5.2. .NET Standard 2.0 supports .NET Framework 4.6.1+ and .NET Core 2.0.
- Success/failure rolls can now be decorated with critical/fumbles. A critical success (a roll that is both a critical and a success) is worth 2 successes, and a critical failure (a roll that is both a fumble and a failure) is worth -2 successes. This expands support into game systems which use success-based rolls but have varying degrees of success beyond just +1 or -1.
- Unless a success/failure roll is explicitly decorated with a critical/fumble, those rolls will not be marked as criticals or fumbles even if the max or min amount is rolled. This keeps default behavior with such rolls consistent with how they worked previously.
- A new [numDice] macro was added, which returns the total number of dice rolled up to this point. This macro is available in all scenarios, including the stand-alone Roller.Roll; using the Play-by-Post helper is not required to use this macro.
- A new property RollerConfig.RollDie was added to allow customizing the result of a die roll in a more friendly way. This property is a callback which receives the minimum and maximum value it can roll for a die, and should return a number within that range. By default, it will call RollerConfig.GetRandomBytes repeatedly until it gets a result it can transform into the output range without introducing any bias.
- New APIs Roller.Max(), Roller.Min(), and Roller.Average() evaluate the dice expression and return the result as if all dice rolled their minimum, maximum, or average values.
- It is now possible to put an expression in parenthesis (a "nested roll") everywhere a number is expected. Previously, comparisons incorrectly rejected nested rolls.
- Updated Antlr4.Runtime.Standard from 4.7.1 to 4.7.2
- Updated System.ValueTuple from 4.4.0 to 4.5.0
- The nuget package is now digitally signed with the certificate fingerprint a87d3b543d551ccd330c23b31b653835a86569bc. The same certificate is used to sign the .dll itself in addition to the package.
See https://skizzerz.net/DiceRoller/Changelog for more changes.
This package is not used by any popular GitHub repositories.