DEdit – Database Editor

Documentation version 1.0 , 2003-11-01

TavernMaker and its databases

TavernMaker is random generator that creates its output by randomly selecting items from databases. Those databases include the actually displayed information as well as some flags, which tell the program under what circumstances an entry might by chosen. By a combination of such flags, it becomes possible to generate text output which ‘fits’ to the generated map and the chosen settings.


Because of this, TavernMaker is as good as its databases and it is up to you (and the users in general) to provide the quality-databases. We worked a long and hard time to provide you with a most convenient tool, but the actual creativity and quality comes from the users. So, if you want to help the project as a developer, you need two things:

·        a creative mind to produce good datasets

·        a little training & reading to produce correct datasets


I can not help you with the first one, but I hope I can give you help on the second point by this documentation and the tutorials. If you feel like going to work straight, it should be enough to follow the tutorial 1. This should enable you to write your first databases and some of you will never want to go any deeper.


Still here? Good! If you want to become a real developer it is necessary that you understand how TavernMaker works. I am trying to explain it as simple as possible here, but it is a complex program.

How TavernMaker works

It might help to have a look at the following scheme while reading on. It gives you an overview on how TavernMaker generates its output and how the different tools cooperate with TavernMaker.


TavernMaker gets the following inputs from the user:

  • A RolePlayingSystem (RPS) selected from various sets. The RPS defines (among other things):
    • language of the descriptions
    • available tavern types
    • available races in the tavern
  • The "type" of the tavern (is it in a city / at a harbour / etc.)
  • The "wealth level" of the tavern (how expensive is it / how rich is the average customer)
  • The "business level" of the tavern (how many tables will be occupied)
  • The "size" of the tavern (how many tables are there)
  • The "race change" (which race is how likly to be met in the tavern)

This information is used in a first step for graphic generation. A certain basic layout (template) which fits to the settings is chosen and icons (tables, bars etc.) are placed on it. From the fully generated floorplan, TavernMaker gets some additional information:

  • each placed object is listed with its actual size (in terms of "people" who could be found there) and flags concerning neighbouring objects. ("What is nearby") It also has a certain "chance" to be "populated" by a description. (For "tables" this chance is determined by the "business level", for other objects its defined in the template.)

TavernMaker now runs through the list of  populated objects. For each object it filters the database, dropping all "incorrect" sets. It checks:

  • does the object fulfil the needed "neighbour"-flags? (f.e. "This table is near a bar"-descriptions will only be accepted for tables, that are "near the bar" on the map and therefore have the "bar"-flag set.)
  • does the object size (in terms of people) fit to the description. (f.e. "Three men at this table..." descriptions will only be used on tables with at least three chairs!)
  • do the races in the description fit to the "race chance" (f.e. "The elf at this table..."descriptions will be kicked out, if the chance for "elves" is set to 0!)
  • does the "wealth" of the description fit to the "wealth level" of the tavern? (f.e. are "beggars" kicked out at high-price taverns)
  • Are the descriptions of proper "tavern type" ? (f.e. "The sailor at this table..." will not be used in city taverns!)

From the remaining sets, one is randomly chosen. (And then deleted from the database.) The procedure is repeated until all populated object have a description.

In a final step, each chosen description is used to create the "pickpocket list". Each description has a "PPL"-part which describes, what items can be "stolen" from that table.

TavernMaker and Flags

Descriptions need a lot of  flags marking some additional information used by the generator. To create reasonable results it is very important to set those flags properly! The flags of a description are:

  • item type: What "object" is this description for? (usually it will be a "table" description)
  • tavern type: Each type in which the description may be used, is listed.  (e.g. “city tavern”)
  • wealth: The "wealth level" of the description. "0" means "all wealth levels"
  • distance flags: All objects "nearby" need to be listened. (e.g “wall” or “fireplace”)
  • race flags: Depending on the description the "races at this table" need to be listed here. "unknown" means that the race is of no importance in the description.
  • unique: This flag (usually enabled) states that the description may only be used once per tavern.

I will give some examples, to show you how a description should match with its flags.


“At this table sits an elf together with a dwarf. They are talking about a sea-journey, they will start tomorrow.”


item type: table

tavern type: harbour tavern

wealth: 0 (all)

distance flags: none

race flags: elves (1) , dwarves (1)

“At this table sits an old merchant and warms himself at the nearby fire. His clothes seem expensive and he carries a lot of jewellery.”


item type: table

tavern type: all

wealth: 7 (rich)

distance flags: fireplace

race flags: unknown (1)

“In the corner of the room, partly hidden in the shadows, sits a figure completely dressed in a robe. You can only see the bluish eyes from within the hood. The girls of this place avoid his table.”


item type: table

tavern type: night bar

wealth: 0 (all)

distance flags: corner

race flags: unknown (1)


TavernMaker – additional developer information

As TavernMaker grows with each new entry in the database and all users are building it together, it is sometimes important to stick to rules or conventions. New ideas and addons will make things more and more complex and it would be impossible to update the documentation all the time. Therefore, it is very important that you keep in contact with one of the project leaders, when creating databases. Discussions and additional information can be found at the TavernMakerFeedbackForum.