Random Meal

The well-stocked kitchen, with Jesus in the house of Martha and Mary in the background.
Joachim Beuckelaer: “The well-stocked kitchen” (1566)

To complement the Random Drinks table, here is something to go with the brew.

The summary subtable lists the recipe and the main ingredients (when appropriate):


The detail subtable contains information also about the finishing and/or the general appearance of the meal:


Bon Appétit!


It is not possible to specify subtables for generators embedded in the blog, but the source data for this generator is available in the GitHub repository. You can copy and paste the .json file contents into the Generator Service text box and start experimenting with the generator. Subtables can be specified in the resultPattern string.

If you are already using Campaign Logger, open one of your campaign logs, click the cogwheel-shaped Options button, select Manage Custom Generators, then Add new generator… and paste the generator data in the text box. After you save the generator, click the Show Generators button in your campaign log to access the new generator.

Random Drinks

A monk tasting wine from a barrel whilst filling a jug.
From “Li Livres dou Santé” by Aldobrandino of Siena (late 13th century)

This table produces beverages that are compatible with most worlds, from medieval to futuristic time periods.

Calling the {lib:drink#summary} subtable produces just the name of the drink:


Calling {lib:drink#detail} produces more details of the scent, taste or structure of the drink:


Tavern patrons should be warned, though: the range is wide, from foul concoctions to sweetest nectars.


It is not possible to specify subtables for generators embedded in the blog, but the source data for this generator is available in the GitHub repository. You can copy and paste the .json file contents into the Generator Service text box and start experimenting with the generator. Subtables can be specified in the resultPattern string.

If you are already using Campaign Logger, open one of your campaign logs, click the cogwheel-shaped Options button, select Manage Custom Generators, then Add new generator… and paste the generator data in the text box. After you save the generator, click the Show Generators button in your campaign log to access the new generator.

Potion Generator

“The Love Potion” by Evelyn De Morgan.

Another classic subject for random generators are potions. Currently this generator produces the potion effects perhaps a bit too randomly. I would not want to make it select from just a dull list of predefined spell effects, but maybe a little more rhyme or reason would be in order?


Summary Mode

This generator can produce a short description about the liquid itself (using a {lib:potion#summary} call):


Detail Mode

Alternatively, it can also put together a longer description giving details also about the container and the properties of the broth (when called as {lib:potion#detail}):



It is not possible to specify subtables for generators embedded in the blog, but the source data for this generator is available in the GitHub repository. You can copy and paste the .json file contents into the Generator Service text box and start experimenting with the generator. Subtables can be specified in the resultPattern string.

If you are already using Campaign Logger, open one of your campaign logs, click the cogwheel-shaped Options button, select Manage Custom Generators, then Add new generator… and paste the generator data in the text box. After you save the generator, click the Show Generators button in your campaign log to access the new generator.

Jewelry Generator

antique ring
Photo credit: Max Pixel.

Jewelry is a classic subject for random generators, so this was one of my first slightly more complicated generators.


Level of Detail

This generator is quite a basic affair, and maybe the most interesting aspect is how you can control the level of generated detail based on which subtable you call.

If you call the generator without specifying a subtable, the output will be randomly either a summary or a more detailed description. But if you call {lib:jewelry#summary}, the output will be something like this:

  • bracelet
  • hand chain
  • hair stick (for holding a hair bun)
  • hairpin
  • chatelaine (decorative waist chains)

Note that an explanation in parenthesis will still be included for pieces of jewellery that may not belong to everyone’s vocabulary. While this can be a useful feature, it also breaks the flow of the text. I plan to revisit that when setting variables hopefully becomes easier at some point. Then the explanation could be stored in a footnote variable, which could be displayed when requested.

When you call {lib:jewelry#detail}, the generator will produce longer output:

  • pin with 6 large, rectangle, peruzzi-cut azurites fastened with bezel setting (metal band wrapped around the gem)
  • hairpin with 8 tiny rubys fastened with flush setting (the gem rests in a hole, blending with the surface)
  • jewellery chain with eight small, fiery, princess-shaped peruzzi-cut opals fastened with prong setting (metal claws holding the gem)

Now the explanations unfortunately can make the output downright hard to take in, so this definitely should be fixed.

Other Options

Calling {lib:jewelry#common} generates jewellery worn on the more usual locations of head, neck, chest, arm and hand. A {lib:jewelry#rare} produces more obscure varieties of jewelry that are worn on hair, waist, legs and feet.

The {lib:jewelry#modern} subtable offers a slight chance of getting also fake or pirated jewelry, as well as luxury brands and even haute couture items. Similarly {lib:jewelry#fantasy} can generate also cursed items or jewelry created by non-human races, or even something stranger:

  • sentient link bracelet (linked ornaments)
  • dwarf-made brooch (jewelry attached to garment)
  • cursed bangles with a quartet of large azurites fastened with invisible setting (fastened without visible prongs or bars)

It is not possible to specify subtables for generators embedded in the blog, but the source data for this generator is available in the GitHub repository. You can copy and paste the .json file contents into the Generator Service text box and start experimenting with the generator. Subtables can be specified in the resultPattern string.

If you are already using Campaign Logger, open one of your campaign logs, click the cogwheel-shaped Options button, select Manage Custom Generators, then Add new generator… and paste the generator data in the text box. After you save the generator, click the Show Generators button in your campaign log to access the new generator.