⚠️ Pending new documentation⚠️
A script to generate cards for Dungeons and Dragons in the style of the official Gale Force Nine ones.
At this time, only monster & item cards are supported
Before being able to use this script you will need to do the following:
- Install Python 3
- Download and extract this repository (or use
git clone
) - Open a terminal and navigate to the location you downloaded this repository to
- Run the following command from a terminals
pip install -r requirements.txt
usage: CardGenerator.py [-h] [-t {monster,item}] [-o output_path] [-f {free,accurate}] [-b BLEED] [--no-bg | --bg BACKGROUND] input
Generate D&D cards.
positional arguments:
input Path to input YAML file
optional arguments:
-h, --help show this help message and exit
-t {monster,item}, --type {monster,item}
What type of cards to generate
-o output_path, --out output_path
Output file path
-f {free,accurate}, --fonts {free,accurate}
What fonts to use when generating cards
-b BLEED, --bleed BLEED
How many millimeters of print bleed radius to add around each card.
--no-bg Do not add the 'parchment' effect background.
--bg BACKGROUND Custom background image to use
Included in the example
directory are example YAML files.
The input to this script is a YAML file that details all the attributes of the card. The details of what to include for each card type can be found below.
If you are having issues with your YAML file, you can use YAML Lint to verify your syntax. If that shows everything is ok, then double check your YAML matches the structure of the examples below. If you are still having issues, then please open a issue here on GitHub and I will try my best to assist.
Common Issues:
- Entries that include a
:
must be surrounded by quotes"
e.g:source: "System Reference Document: Page 315"
- The fields are case sensitive, make sure there are no capital letters. e.g
title
notTitle
You can add formatting to any of the fields that generate text using reportlab's paragraph XML markup tags. Documentation for this can be found in chapter 6.2 of the reportlab user guide.
Based on the Gale Force Nine Monster Cards. If the contents of the card exceeds the space available on a small card, it will automatically scale to a double width card, like the official ones. The front of the card is automatically oriented to best fit the aspect ratio of the image provided.
- title - The title of the card that will appear at the bottom of the front of the card, and at the top of the back of the card
- subtitle - The white text that appears below the title on the back of the card
- artist - If this is provided, and not blank, white text below the title on the front of the card will show the artist of the cards artwork.
- image_path - Path to the image to insert on the front of the card. This can either be a full path, or relative to the location of the YAML file.
- armor_class - The armor class of the monster (top left of the card), can include any text e.g.
15 (Leather armor, shield)
- max_hit_points - The max hit points of the monster (top right of the card), can include any text e.g.
7 (2d6)
- speed - The speed of the monster (below armor_class), can include any text e.g.
30ft., fly 60 ft.
- strength, dexterity, constitution, intelligence, wisdom, charisma - Ability modifiers show at the top of the card. They can also include ability scores e.g.
-1
or8 (-1)
- challenge_rating - The challenge rating of the monster, white text shown at the bottom of the back of the card
- experience_points - The experience points earned for defeating the monster, shown next to the challenge rating
- source - The source from which this cards information came from. e.g.
"System Reference Document: Page 315"
- attributes - A dictionary of the monsters "attributes", these appear in the top half of the second section of the card. Some common attributes include:
Skills
,Senses
,Languages
,Damage Immunities
. The key will be typeset in bold while the value will be typeset as regular text. - abilities - A dictionary of the monsters "abilities", these appear below the
attributes
in the second section of the card. The key will be typeset in Italic while the value will be typeset as regular text. - actions - A dictionary of the monsters "actions", these appear in the third section of the card. The key will be typeset in Bold Italic while the value will be typeset as regular text.
- legendary - A list containing a single intro text along with entries as per abilities
- color - A color name (e.g.
red
), hex color code (e.g.#0000dd
) or array of RGB colors (e.g.[0.7, 0.7, 0]
).
- title: Goblin
subtitle: Small humanoid (goblinoid), neutral evil
artist: Public Domain
image_path: example/Goblin.png
armor_class: 15 (Leather armor, shield)
max_hit_points: 7 (2d6)
speed: 30 ft.
strength: 8 (-1)
dexterity: 14 (+2)
constitution: 10 (+0)
intelligence: 10 (+0)
wisdom: 8 (-1)
charisma: 8 (-1)
challenge_rating: 1/4
experience_points: 50
source: "System Reference Document: Page 315"
attributes:
Skills: Stealth +6
Senses: darkvision 60ft., passive Perception 9
Languages: Common, Goblin
abilities:
Nimble Escape: The goblin can take the Disengage or Hide action as a bonus action on each of its turns.
actions:
Scimitar: +4, 5 ft., 5 (1d6 + 2) slashing damage.
Shortbow: +4, range 80/320 ft., 5 (1d6 + 2) piercing damage.
legendary:
- This is a special goblin, who for the the sake of this example can take 3 legendary actions,
choosing from the options below. Only one legendary action can be used at a time and only at
the end of another creature's turn. The goblin regains spent legendary actions at the start
of its turn.<br/>
- Poison Gas: The goblin is able to "naturally" produce a noxious poison gas cloud, that causes 1 (1d4) of poison damage
Based on the Gale Force Nine Monster Cards. Currently only the standard small size card is available. The front of the card is automatically oriented to best fit the aspect ratio of the image provided.
- title - The title of the card that will appear at the bottom of the front of the card, and at the top of the back of the card
- subtitle - The white text that appears below the title on the back of the card
- artist - If this is provided, and not blank, white text below the title on the front of the card will show the artist of the cards artwork.
- image_path - Path to the image to insert on the front of the card. This can either be a full path, or relative to the location of the YAML file.
- category - The item category, white text shown at the bottom of the back of the card
- subcategory - The item subcategory, smaller white text shown next to the category in parenthesis
- description - A list containing either:
- Strings
- Single entry dictionaries with the value being optional
- color - A color name (e.g.
red
), hex color code (e.g.#0000dd
) or array of RGB colors (e.g.[0.7, 0.7, 0]
).
- title: Badge of having a very very very very long name
subtitle: Rare (requires attunement, and a really really really really long backstory for your name)
image_path: badge.png
artist: Public Domain
description:
- Wearing this amulet will add a minimum of 10d8 syllables to your name. This effect is permanent, even once the amulet is removed. The effect stacks every time this amulet is worn.
- Proud: You become unreasonably proud of your name, and insist that anyone who addresses you uses your full name.
- Verbal incapacitation: "As an action you can force any creature with an intelligence score of 1 or higher to spend time pronouncing your name. While they are doing this they are completely preoccupied and take on the Incapacitated condition. Each round the targeted creature can make an Intelligence saving throw (DC 18). On a successful save, the creature correctly pronounces your name, and the Incapacitated condition is removed."
- Sticky:
category: Woundrous item
subcategory: Badge
Included in this repository are some free fonts that resemble the font used on the
official cards as close as possible (if you know of a better fit, please let me
know!). If however you want to use the exact fonts used on the official cards you
will need to put the following fonts into the fonts
folder in TTF format:
- ModestoExpanded-Regular.ttf
- ModestoText-Light.ttf
- ModestoText-LightItalic.ttf
- ModestoText-Bold.ttf
- ModestoText-BoldItalic.ttf
Bundled with this repo is a converter script (convert.py
) that can take
EncounterPlus .module
/.compendium
files and turn
them into a YAML file useable with this tool, including images. Most importantly
this means you can use EncounterLog to
get YAML files + images for any content you own on D&D Beyond.
usage: convert.py [-h] [-o output_path] [--overwrite] [-f {encounterplus}] input
Convert data into YAML from other formats
positional arguments:
input Path to input data file
optional arguments:
-h, --help show this help message and exit
-o output_path, --out output_path
Output directory
--overwrite Delete and overwrite converted data if it already exists
-f {encounterplus}, --format {encounterplus}
What format the input is in
For example you can convert the "Basic Rules" module for use with this tool (after downloading the module using EncounterLog) like so:
> python convert.py br.module
- The parchment background image was taken from redit user Smyris' monster manual template.
- Dungeons & Dragons logo is a white version of the SVG created by reddit user morepurplemorebetter
- The included fonts are TTF versions of:
- Scaly Sans by Solbera, Ryrok and jonathonf
- Universal Sans by Khiam Mincey
- All Wizards of the Coast content provided under terms of the Open Gaming License Version 1.0a.