CLI and library for Advanced Dungeons & Dragons (AD&D)
Go to file
David Gay e63dbbde68
`random npc` accepts level argument
2024-01-31 03:14:53 -05:00
src `random npc` accepts level argument 2024-01-31 03:14:53 -05:00
.editorconfig Add .editorconfig 2023-09-19 23:07:05 -04:00
.gitignore Init project w/ license 2023-09-19 22:59:35 -04:00 `random npc` accepts level argument 2024-01-31 03:14:53 -05:00
Cargo.lock Bump version 2024-01-31 02:04:45 -05:00
Cargo.toml Bump version 2024-01-31 02:04:45 -05:00
LICENSE Init project w/ license 2023-09-19 22:59:35 -04:00 Add installation and usage to readme, plus other updates 2023-10-16 20:32:35 -04:00


Command line interface and library for DMs and other players of Advanced Dungeons & Dragons (AD&D).

This project is BRAND NEW and TOTALLY INCOMPLETE. I am completely new to Rust and this is quite light on tests. I use it for my game, but there is a lot of room for improvement. You have been warned.

This tool is for original, by the book AD&D, though it might be useful for other versions of D&D. For more information about the kind of AD&D dmn is meant for, see


cargo install dmn

If you don't know what cargo is, just email me for now and I'll send you the program. I'll make the program more-easily available soon.


dmn is really light on features right now, but it can do some useful things that can save you quite a lot of time during prep or even at the table. I hope to make these more useful as time goes on.

Show help:

dmn help

Roll some dice (only supports XdY and dY format so far):

dmn roll 4d6

Generate a random magic item (includes 10% chance for a map, and uses Heroic Legendarium chances for katanas and such):

dmn random magic

Generate a random henchman (does not yet properly limit classes or races by ability scores, nor classes by race or alignment):

dmn random henchman

Get the henchman in CSV format so you can copy and paste right into a spreadsheet:

dmn random henchman --csv

Generate 30 henchmen in CSV format (repeat only works in zsh; for bash or whatever you'll need to use a for loop or something):

repeat 30 { dmn random henchman --csv }

Roll on a specific table (available tables can be seen by looking in the files in src/data/random_tables):

dmn table hl_non_magic


This is my first Rust project. I haven't even finished reading the Rust book yet. Advice, criticism, and patches are more than welcome.

The project repo is found at You can send pull requests via email to I will set you as the author of the commit unless you prefer anonymity.


dmn, a CLI and library for DMs and other players of AD&D

Copyright (C) 2023 David Gay

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program (the LICENSE file). If not, see

Unowned copyrights and trademarks

The author(s) of dmn acknowledge all copyrights, trademarks, and registered trademarks detailed in dmn that do not belong to the author(s) of dmn and make no challenges to the ownership of said property rights.