A database of items for The One Ring, 2nd Edition: famous weapons and armour, useful items, marvellous artefacts, wondrous items and treasure hoards (collections of items plus generic wealth). The database is a few TOML files; a build turns them into two printable PDFs with cards in poker size (63.5 × 88.9 mm, nine per A4 page): one with an overview for printing on one side, one with card backs for printing on both.
The items are in src/cards.toml and src/cards/ (German, rules terms in English).
The PDFs are built by GitHub Actions on every commit; tagged commits (v*) are published as a
release. New items can be put together with the
item wizard. This is an unofficial fan work, see
Licence and rights.
| Path | Content |
|---|---|
collection.toml |
Title, language, credit, notice |
NOTICE.md |
Whose names and material this is, and what the MIT licence covers |
src/cards.toml |
The database: items and hoards |
src/cards/*.toml |
Further files, merged into the database: the sample treasure indexes, the heroes' gear, … |
src/rules.toml |
Item types, bases, sources, categories, weapon groups, craftsmanships, qualities and limits |
tools/check.py |
Checks the database against the rules |
tools/build.py |
Builds the two PDFs |
tools/logo.py |
Draws the logo into assets/ (needs Pillow) |
tools/icons.py |
Draws the source icons into assets/icons/ (needs Pillow) |
tools/social.py |
Draws the GitHub social preview assets/social-preview.png (needs Pillow and the TeX Gyre fonts) |
tools/site.py |
Writes site/data.js for the item wizard |
tools/test_site.py |
Checks that the wizard agrees with the checker and the build |
site/ |
The item wizard (static website, published on GitHub Pages) |
latex/ |
Layout (tor2e.sty) and the two documents |
assets/ |
Logo, source icons and the social preview |
Makefile |
Shortcuts: make, make check, make site, make test, make clean |
.github/workflows/ |
build.yml builds and releases the PDFs, pages.yml publishes the wizard |
Add a table to src/cards.toml or to a file in src/cards/. The fields are listed at the top of
src/cards.toml.
[items.narcrist]
name = "Narcrist, das Schwert des Hauptmanns"
type = "weapon" # a type from src/rules.toml
proficiency = "swords" # weapons only: the category in the PDF
base = "Long sword" # the Core Rules item; shown on the card as its type
craftsmanship = "Elven" # Dwarven, Elven or Númenórean: printed as "elbische Arbeit", and
# what the qualities below depend on; other makes have none
damage = 5 # the base stats of a Long sword (checked against src/rules.toml)
injury = 16
injury_two_handed = 18
load = 3
text = "In Gondolin geschmiedet …" # name and origin only
qualities = ["Superior Fell"] # from src/rules.toml, which also holds their text for the card
banes = ["Orks"]
effects = [["Besonderheit", "Leuchtet schwach bläulich, wenn Orks nahe sind."]]A hoard names the items it holds and its wealth in Treasure points:
[hoards.kammer-der-wacht]
name = "Die Kammer der Wacht"
items = { narcrist = 1, klinge-der-wacht = 2 }
wealth = 40A hoard can also be the Magical Treasure Index of a campaign: campaign = "Tales from the Lone-lands" is
printed on its card. Every item on a hoard card has a box to tick when it is found, and a long list goes on on
further cards.
An item may leave out all its stats and its qualities: the card then shows only the name, the kind line and the
text. Weapons, armour, helms and shields always need a base. Partial stats are an error.
The PDF follows the [categories] of src/rules.toml: the Combat Proficiencies for weapons, then armour, helms,
shields, useful items, marvellous artefacts and wondrous items (the last three ordered by their skill), then the
hoards. Each category starts a new page of cards; one without items yet gets an empty page. Every category of war gear ends with three blank cards for each base in it (Short sword, Sword,
Long sword, …): the base and its stats are printed, the name is left to be written in. The free places on the
last page of the category are filled with more blank cards, shared out by how often each base appears among its
items (a category of 13 Long swords and 7 Swords gets more blank Long swords). The three categories of useful items,
marvellous artefacts and wondrous items have no blanks of their own: only their free places are filled, with blank
cards with a line for each skill, left to write in (the players choose). How many there are of each kind follows
how often each skill appears. They are made by the build and are not part of the database.
Source icons. source says where an item or a hoard comes from. The icon is printed in the lower right
corner of the card and explained on the first page; a made-up item has no source and stays plain.
source |
Where from | Icon |
|---|---|---|
canon |
Tolkien's works and Peter Jackson's films | a ring |
finsterwacht |
the adventure Die Finsterwacht | its logo |
rulebook |
the rule books | a book |
lone-lands |
the sample Magical Treasure Index Tales from the Lone-lands | a horse with two riders in the snow |
erebor |
the sample index The Quest for Erebor | a mountain |
starter-set |
the first Starter Set | a tree |
over-hill |
the starter set Over Hill and Under Hill | hills with a round door |
homebrew |
the fan-made Circleofnoms TOR 2e Homebrew Collection | a tankard |
The sources are defined in src/rules.toml ([sources]), the icons are in assets/icons/
(python3 tools/icons.py draws all but the adventure's logo).
The stats are the base values of the item's base, and that is what the cards show, like the
war gear cards of the game. A quality changes them where the rule book says so (Fell +2 Injury, Superior
Grievous of Dwarven craftsmanship +2 Damage, Mithril Armour sets the Load, …); that bonus is printed small
below the base value on the card, not added to it. A Load never goes below 0.
src/rules.toml holds the qualities as the rule book gives them: the basic rewards (Keen, Fell, Grievous,
Close-fitting, Cunning Make, Reinforced), the superior and ancient ones, and the weapon qualities
(Cleaving, Hammering, Luminescence, Straight Flight, …). For each quality it says
- which item types, weapon groups (close combat, ranged), Combat Proficiencies or bases may carry it,
- which craftsmanships may carry it, and what it does for each (
effects), - the German text printed on the card. The wording of the rule book is not in this repository: look it up there.
Bonuses that become the bearer's Valour rating against a Bane creature are printed as text on the card; they do not change the stats.
Famous items. Everything that is not a basic reward makes an item famous: a superior or ancient reward, any
other special quality (Luminescence, Mithril Armour, …), a blessing or a free effect. Famous weapons and
armour start their kind line with Famous Weapon or Famous Armour. Items with only basic rewards (basic = true
in src/rules.toml), or none, are just well made and get no such label. A Bane comes with the craftsmanship
(Elven and Númenórean weapons and shields), whatever the qualities of the item. It does not count towards the
number of rewards. A famous weapon or piece of armour has at most three qualities, like the three lines of the
Magical Treasure Index ([limits] in src/rules.toml).
Curses. curse is the curse on an item, as free text, so there are no rules for it. The card prints the
text. src/rules.toml lists the curses of the Circleofnoms
Homebrew Collection ([curses.<name>], with a one-line text) for the item wizard to offer; no item uses one yet.
Items that are not weapons or armour help with skills (blessings), in three steps:
| Type | Kind line | Skills | Extra Success dice | Magical success |
|---|---|---|---|---|
useful |
Useful Item | 1 | 1d | no |
artefact |
Marvellous Artefact | 1 | 2d | for 1 Hope |
wonder |
Wondrous Item | 2 | 2d | for 1 Hope |
A useful item is a simple thing that helps; a marvellous artefact is a special item; wondrous items are the very
important ones, so powerful that they seem like magic to people. The card says it after the skills: "Skill:
Travel (1d)" or "Blessing: Healing (2d); für 1 Hope ein Magical success". The skills are listed in
src/rules.toml; the number of skills, the dice and the note per type are blessings, blessing_dice and
blessing_note there, and the checker enforces the number. Each of the three has its own category in the PDF, with
the cards ordered by the first skill.
site/ is a small website that walks through the steps of the rule book (item type, craftsmanship, Banes,
qualities, name), checks the new item against the rules, and ends with the TOML table to paste into
src/cards.toml. Qualities that do not fit the item are greyed out with the reason, and a live card shows the
result. A curse is one from the list of src/rules.toml (with a short explanation each) or free text. The source is one of the existing ones or a new one; for a new one the wizard also
writes the table for src/rules.toml and names the icon file to add. The workflow .github/workflows/pages.yml
publishes it on GitHub Pages (once: Settings > Pages > Source: GitHub Actions), at
https://andx667.github.io/tor2e-items/.
Random item. The button Roll a random famous item on the first step lets the dice choose everything: the type
(d12, only famous kinds), the base, the craftsmanship (d6), Banes, one to three qualities (the first is never a basic
reward) or the skills, and a German name and origin. site/roll.js keeps only what site/verify.js allows, so the item
follows the rules. The wizard jumps to the check, lists the dice and offers Roll again; every step can still be edited.
tools/test_site.py rolls 400 seeds and has tools/check.py check each item.
To run it locally:
python3 tools/site.py # or: make site. Writes site/data.js from src/rules.toml and the existing ids
# then open site/index.html in a browserThe page needs no server and no libraries. Its rules come from src/rules.toml, so a new quality or base shows
up without touching the page. The checks are site/verify.js, a copy of what tools/check.py does;
python3 tools/test_site.py (or make test) runs both on every item and on hundreds of broken variants and
fails if they disagree. The TOML the wizard writes must read back as the same item, and its card preview must
show what the PDF build prints. It needs Node or pip install quickjs; without either it says that it was
skipped. A new @rule in tools/check.py has to be added to site/verify.js too, which this test notices.
python3 tools/check.py prints one line per problem and fails if there is any. The build and the CI run it first.
- Schema (built in): known fields, required fields, whole numbers, the stats each type needs (all or none),
a
baseon weapons, armour, helms and shields, known craftsmanships and sources, hoards that only hold existing items. The rules file is checked too, including a German text on every quality. - Rules from
src/rules.toml:applies_to,weapon_group,proficiency,bases,craftsmanship,excludesandrequiresper quality, and[limits.<type>]for the highest number of rewards and blessings (a Bane is not counted). - Custom rules: whatever the tables cannot express is a Python function with
@ruleat the end oftools/check.py: the kinds and number of Banes that the craftsmanship allows, stats that follow the base, a base on all gear, and the number of blessings of a type.
Needs TeX Live or MiKTeX with LuaLaTeX and latexmk, and Python 3.11+.
make # check, then build/<file_name>.pdf, -Duplex.pdf and -Duplex-Print.pdf
make check # only the checker
python3 tools/build.py kammer-der-wacht narcrist # a selection: ids of items and hoards
python3 tools/build.py source:finsterwacht # ... or every item of a sourceA card with more text than fits stops the build with the id of the item and by how much it is too full; shorten its text.
A hoard in a selection brings its own card and one card per copy of every item it holds, so a selection is the
set of cards to hand out at the table. A selection is written to build/<file_name>-Auswahl.pdf, with its own
duplex PDFs.
The version in the footer comes from the latest git tag v*, the date from the last commit:
git tag v2.2
git push --tags # the CI also publishes a release with the PDFsThe build writes three PDFs. <file_name>.pdf has the overview and the cards, for printing on one side.
<file_name>-Duplex.pdf has only the cards, and after every page of cards a page with their backs: print it on
both sides, flipped on the long edge, and every card gets a back. The rows of the back pages are mirrored so
that a half-full page lines up too. Printers shift the two sides against each other by a millimetre or two, so
the backs have no cut lines, their colour runs 2 mm over the edge of the card and their frame sits well inside.
The back of a weapon, armour, helm or shield carries the item's name under the logo (GEAR_TYPES in
tools/build.py): turn the card over when the item is not equipped, and you still see what it is. Every other
card says only its kind in the same place (Useful Item, Marvellous Artefact, Wondrous Item, Hort).
<file_name>-Duplex-Print.pdf is the same duplex PDF without the parchment, to save ink: white cards and backs,
the stats box only outlined, the frames and the logo as before. Pages and positions are identical, so it prints
and cuts exactly like the other one.
Print at 100 % (actual size), not "fit to page". The dashed line is the cut line: the cell is 63.5 × 88.9 mm (2.5 × 3.5 in) and the parchment fills it right up to the line, with no visible frame: the text keeps 1.6 mm plus its margin from the line.
Schatzkammer is an unofficial fan work, not affiliated with or endorsed by Middle-earth Enterprises, the
Tolkien Estate, Sophisticated Games or Free League Publishing. The names from Tolkien's works and the films, the
rules terms of The One Ring™ Roleplaying Game and the items taken from its books belong to their owners and are
used without a licence; see NOTICE.md. The same notice is printed on the first page of the PDF
(notice in collection.toml).
The code, the layout and the author's own items and texts are under the MIT licence, see LICENSE. It does not cover the third-party names and material.