GM Notes

Warning

GM notes files are python modules that are imported when parsed. NEVER parse a gm notes file without inspecting it to verify that there are no unexpected consequences, especially a file from someone you do not trust.

Dungeonsheets has the ability to parse a python file with entities needed for game manager (GM) session notes.

Each file must contain a line like:

dungeonsheets_version = "0.4.2"
sheet_type = "gm"

Without the version line, the makesheets command-line utility will ignore the file. This is necessary to avoid importing non-D&D python files. Without the sheet_type line, the file will be interpreted as a character sheet.

Basic Info

Currently, these attributes are supported: monsters and session_title. More attributes will be added in the future, but if there’s something specific you have a need for, please consider contributing an issue or pull-request.

session_title = "Objects in Space"
monsters = ["ogre", "giant eagle"]
party = ["rogue1.py", "paladin2.py"]

monsters should be a list of either strings or subclasses of Monster. These entries will then by listed on the resulting PDF with their stat block and features.

party contains a list of filenames for the characters in the party. These will produce a summary table of the attributes of your party.

Random Tables

Random tables can be used in-game to make decisions on-the-fly. These tables can be included in the PDF using random_tables. Currently the following random tables are available.

  • “conjure animals” - A list of options to choose from when a player casts the Conjure Animals spell.
  • “treasure” - Tables for rolling treasure dropped by individuals or hoards.
Example:
random_tables = ["conjure animals"]

Adding Arbitrary Content

Additional content can be included in arbitrary sections that get added after the summary of the GM notes output. The extra_content attribute can accept a list of content that will be rendered as sections in the output document. Any subclass of mechanics.Content can be used. The section heading will be the name attribute of each piece of content, and the body will be the docstring.

For example, the following entry will be rendered as a new section with the heading “The Bar Fight”:

from dungeonsheets import mechanics

class BarFight(mechanics.Content):
    """If the characters decide to go to the *Alliance Friendly Bar*,
    they will probably have to fight their way out against 5 enemies
    (3 Veteran, 2 Soldier).

    """
    name = "The Bar Fight"

extra_content = [BarFight, ]