DragonDice is a small utility library that helps with the simulation and statistical evaluation of actions in the Dungeons & Dragons roleplaying game, specifically using the 5th edition of the rules as described in the Systems Reference Document.
In addition to the core library, a Telegram bot exposes the functionality for interactive use.
To build DragonDice from source you will need an F# 4.5 compiler (or newer) and a .NET development environment. The
.fsproj files in the source directories should be understood by .NET Core command line tools, MSBuild or IDEs such as VSCode, VisualStudio, or Rider.
Here's a brief example for using the DragonDice library:
#r "Murphy.DragonDice" open System open Murphy.DragonDice open Murphy.DragonDice.UnitSystem let chr = Character(Name = "Joe Sixpack", Race = "Human") chr.Abilities <- EnumMap [ Ability.Dexterity, 17 Ability.Constitution, 12 Ability.Intelligence, 20 Ability.Charisma, 16 ] chr.Proficiencies <- chr.Proficiencies.With [ Skill.Acrobatics, 1 Skill.SleightOfHand, 1 Skill.Arcana, 1 Skill.Perception, 1 ] chr.AddLevel(Profession.Fighter) chr.AddLevel(Profession.Sorcerer, count = 4) let chk = chr.GetCheck(Ability.Dexterity, Difficulty.Easy) Check.estimate chk |> printfn "estimate -> %A" let rng = Random() Check.simulate rng chk |> printfn "simulate -> %A"