Explore the world of Far Table: far-table.com →
All chapters
Parchment
Chapter 42

Homebrew: Description Blocks and Roll Tables

Chapter 41 walked the forms kind by kind. Two things in those forms are shared, and both are worth a chapter of their own: the way a long description is built out of blocks, and the table builder underneath it.

A description is a list of blocks

Long descriptions are not one big text field. They are an ordered list of blocks, and a block is one of two things:

  • A Passage, a run of prose.
  • A Table.

The list sits under a gold-ruled Description heading on the Quill side. Each block gets one row. A passage row shows its opening words. A table row shows its name with "(table)" after it, and reads in bold so you can pick the tables out of a long list at a glance.

Under the rows are two ghost buttons, + add passage and + add table, which append to the end.

Four things use this block list:

  • Spell descriptions.
  • Magic item descriptions.
  • Class features, one feature per page, each with its own block list.
  • Species traits, where the list holds trait pages and tables side by side rather than nesting them.

Monster traits, actions, legendary actions, and reactions deliberately do not. No monster in either rule set carries a table, so the monster block page stays a name and a plain description with no table button on it.

Reorder, and insert anywhere

Every row carries a drag handle on its right. Drag a block up or down and the description reorders. There is no undo, but there is also nothing destroyed: the block moves and its contents come with it.

Between every two rows, and above the first and below the last, is a hairline with a small + sitting on it. That gap is a button. Tap it and a sheet titled Insert here offers Passage or Table, and what you pick lands exactly at that gap. This is how you get a table between two paragraphs without rebuilding the page around it.

One case the gaps cannot reach: a table you want in the middle of a single long passage. So the passage page has its own answer. Open a passage, put the cursor where the table should go, and tap + insert table here. The note under the button says what happens: the passage splits at the paragraph break nearest your cursor, and the table goes between the halves. You get passage, table, passage, three rows where there was one.

Housekeeping is automatic. An empty passage you abandoned disappears, and two passages left sitting next to each other join into one. Both happen when you leave the passage page, where you can see it happen, never mid-keystroke.

The rendered table is the editor

Tap a table row and it opens full screen. What you see is not a grid of input boxes. It is the real table, maroon heading row and zebra stripes, exactly as a reader will see it. You edit by tapping it.

  • Tap a header to rename that column, or remove it. The sheet is titled Column and has one field, Header.
  • Tap any cell in a row to open that whole row as a stacked form, one full-width field per column, each labeled with its column heading. The field you actually tapped opens focused.
  • + Row adds a row and opens it.
  • + Column adds a column, asking its heading first.
  • A Table name field sits above the table. Leave it blank and the table simply has no caption.

Four columns are four cramped cells in a grid and four comfortable fields in a sheet. That is the whole reason for the design.

Two buttons live in the top bar:

  • A copy icon, Duplicate this table, which drops an independent copy directly below this one and says Copy added below. The page stays put, so three taps make three copies. Building four similar tables means building one and duplicating it three times.
  • A trash icon, Remove this table, which asks first: the whole table goes with everything in it, and the rest of the page stays as it is. Choose Keep or Remove. It asks because it sits in the same corner with the same icon as Tear out this page one screen back.

Nothing here uses a pipe character, and if you type one into a cell it quietly becomes a slash, because a pipe would split the cell in two.

Four kinds of table

Tap + add table and the app asks what kind before it draws anything. The sheet is titled Add a table:

  • Roll table: a die column, one row per result.
  • From a list: say your results and the die is chosen to fit.
  • Lookup table: two columns you name yourself.
  • Blank table: start from an empty grid.

Your last choice carries a small dot beside it, so an author building four d8 tables in a row does not hunt for the same entry each time. The dot lasts as long as the app is open and is not a saved setting.

Lookup table asks for the two headings up front, First column and Second column, then hands you the empty grid. Blank table gives you two columns named "Column 1" and "Column 2" to rename however you like. Both are ordinary tables from then on.

Roll tables: the app does the math

A roll table is a number of results with a die divided among them, and the app owns the numbers. You never type a range.

Pick Roll table and it asks Which die?, offering d4, d6, d8, d10, d12, d20, and d100.

  • d4 through d12 are fixed. One row per face. Ask for a d8 and you get eight rows, numbered, and there is nothing to add or remove. The hint on the page says so: the die column is set by the die, one result for every face. + Row does not appear, because there is no row to add.
  • d20 and d100 divide. Both are marked "Split into as many results as you want", and picking either asks How many outcomes? next. The die is split as evenly as it goes, with the earlier results taking the extra, so three outcomes on a d100 come out 34, 33, 33.

On a divisible die the button reads + Result rather than + Row, and adding or removing one re-divides the die automatically.

Open a result and the sheet is titled by its band, "Roll 7" or "Rolls 34-66", not by a row number. At the bottom sits one control:

  • Covers, then the share, then minus and plus buttons.
  • On a d100 the share reads as a percentage, "9%", because a d100 band is a percentage.
  • On any other die it reads in rolls, "2 rolls".

Push a result's share up or down and the results you have not touched share out whatever is left. Results you have already sized keep what you gave them. The app clamps: nothing drops below one face, and nothing can starve the rest. The sheet's title updates live to the band you actually got, which may not be the band you asked for.

There is no Done button on a roll table result, on purpose. It saves per keystroke, so tap away when you are finished.

From a list: the die picks itself

From a list is the fastest way to build a random table, and it is built for dictation. The sheet is titled Say your results, with one field and a hint: separate them with commas, or with spaces if none of them have spaces in.

  • A comma, semicolon, or line break wins over spaces. "Dire Wolf, Giant Rat, Owl" is three results.
  • With no punctuation at all, spaces split. "camel aardvark cow chicken cat dog" is six.
  • Each result is capitalized for you, because dictation hands back lowercase and a table of creatures reads wrong that way.

Under the field, a live line in maroon tells you what you are about to get: six results on a d6 at one per roll, or three results at two rolls each. That running count is the thing to watch. Six two-word creatures said without commas is twelve results, and you see that while you are still looking at the field.

The die chosen is the smallest one your results divide into evenly. Three results is a d6 at two rolls each. Five is a d10. Six is a d6, one each. A count that divides nothing, like seven, falls to a d100 split as evenly as it goes, and the summary says so and tells you to adjust any of them afterwards. The point is that the DM can still pick up one die and roll it.

Two results is the minimum. One result is not a table, and the summary says so.

Which rule set shapes the table

The die column follows the rule set the entry belongs to, matching how the books print it:

  • 2024 writes the header as "1d8" and bands with an en dash.
  • 2014 writes "d8" and bands with a hyphen.
  • The d100 top band is "00" under 2024 and "100" under 2014.

You do not choose this and cannot get it wrong. It comes from the entry.

Tables you copied in

Fork a shipped entry and its tables come with it, in their original form. The builder still opens them, and you can still tap rows and headers. Two things happen quietly:

  • A table opened and closed without an edit is saved back exactly as it arrived, byte for byte. Renaming the table alone does not rewrite the grid.
  • A forked table whose die column the app cannot read as one of its own keeps plain free-form editing. You get rows and columns, not results and shares.

Your library, and how to get it off one device and onto another, is chapter 43, Your Library: Backup and Sync.