Visit the main site.
There are several options for running a local/offline copy of 5etools, including:
Option 1 When using Chrome (or similar), a command-line switch is required to load some pages locally. On Windows, this can be accomplished by creating a Chrome shortcut and editing the properties of the shortcut to add --allow-file-access-from-files
to the shortcut Target
:
Be sure to close any running Chrome instances (and kill any remaining Chrome processes as required) before opening the shortcut. A summary of the security implications can be found here.
Option 2 Install Node.js, open a command line prompt in this directory, and npm i && npm run serve:dev
. Then access the site on http://localhost:8080/
Option 3 Host the project locally on a dev webserver, using e.g. devd or Python3 python3 -m http.server .
.
Click here and install the script.
Open the Roll20 game where you want the stuff imported.
Go to the gear icon and click within the Import by Category on the thing you want imported.
Follow the prompts and make selections as are needed.
Let it run. The journal will start fill up with the stuff you selected. It’s not too laggy but can take a long time depending on the amount of stuff you selected.
Bam. Done. If you are using the Shaped sheet, be sure to open up the NPC sheets and let them convert before using it.
You can convert stat blocks to JSON for importing via this converter.
Only “official” (that is, published by WotC) data is to be included in the site. Anything else should be added to the homebrew repository.
Prioritise RAW above all else. Aim to provide a 1:1 copy of the original data. Obvious typos (for instance, mathematical errors in creature statblocks) may be corrected at the discretion of the maintainer(s).
Aim to use the latest version of any published material. Older versions which are sufficiently different (and relevant to community interests) can be moved to the homebrew repository.
Languages page. As there is no well-defined RAW format for language data, the languages page collects together information from several disjoint places. A priority list of sources to be considered is:
Within this ordering, the following prioritisation should be made:
Targeting ES6 was the original intent, but more modern features have long since crept into the code. Therefore, if something is available as standard in both Chrome and Firefox (preferably in versions dating back at least a couple of months), and isn’t bleeding-edge, one can reasonable justify using it. As with all things, use common sense.
Format JSON to match the default output of JavaScript’s JSON.stringify
(using tabs for indentation), i.e. one line per bracket and one line per value. JSON files programmatically generated from other JSON files (i.e. those stored in data/generated
) should be minified, however.
When “tagging” references in data (e.g. {@creature goblin}
), the following rules apply:
You gain one cantrip of your choice from the wizard spell list
should be tagged, whereas the Wizard class in Together, a group of seven powerful wizards sought to contain the demon
should not be tagged. One is a reference to the mechanical class, one is merely the casual usage of the word “wizard.”quote
-type block. Even if the quote directly refers to a specific creature, we can assume the quote is from a universe/perspective in which (for example) statblocks don’t exist, and therefore the tag should be omitted to maintain the flavour of the quote.To remove trailing commas in JSON:
Find: (.*?)(,)(:?\s*]|\s*})
Replace: $1$3
’
should be replaced with '
“
and ”
should be replaced with "
—
(em dash) should be replaced with \u2014
(Unicode for em dash)–
should be replaced with \u2013
(Unicode for en dash)−
should be replaced with \u2212
(Unicode for minus sign)•
should be not be used unless the JSON in question is not yet covered by the entryRenderer, i.e. should be encoded as a list\u2014
, \u2013
, and \u2212
; all other characters (unless noted above) should be stored as-is-
(hyphen) should only be used to hyphenate words, e.g. 60-foot
and 18th-level
\u2014
should be used for parenthetical dash pairs, or for marking empty table rows.\u2013
should be used for joining numerical ranges, e.g. 1-5
should become 1\u20135
.\u2212
should be used for unary minus signs, in the case of penalties. For example, "You have a -5 penalty to..."
should become "You have a \u22125 penalty to..."
.\u2014
should be removed60-foot line
blindsight 60 ft.
, darkvision 120 ft.
/
, with no spaces on either side followed by the capitalised unit of time, e.g. 2/Turn
, 3/Day
Dice should be written as [X]dY[ <+|-|×> Z]
, i.e. with a space between dice and operator, and a space between operator and modifier. Some examples of acceptable formatting are: d6
, 2d6
, or 2d6 + 1
.
Item names should be title-case, with the exception of units in parentheses, which should be sentence-case. Items who’s volume or amount is specified by container (e.g. (vial)
) treat the container as a unit.
Avoid binding ALT-modified events, as these are not available under MacOS or various Linux flavors. Binding SHIFT-/CTRL-modified events is preferred.
Do npm run serve:dev
to launch a local dev server that serves the project files on http://localhost:8080/5etools.html
.
Do npm run version-bump -- [OPTION]
, where [OPTION]
is one of the following:
major
to increment the major version (1.2.3
will become 2.0.0
)minor
to increment the minor version (1.2.3
will become 1.3.0
)patch
to increment the patch version (1.2.3
will become 1.2.4
)1.2.3
)It will first run the tests and fail to increase the version if the tests fail.
It will then automatically replace the version in the files where it needs to be replaced, create a commit with the message chore(version): bump
and create a tag (in the form v1.2.3
) at the commit.
This feature can be easily disabled by doing npm config set git-tag-version false
.
This project is licensed under the terms of the MIT license.