Birdoggydog's Builds

Putting a judged person in each theme tour dungeon

Five new people now stand in the tour dungeons, the Calibrator hands over a site key, and the generator writes all of them.

Each of the five theme tour dungeons now has one person standing in it with a short conversation of their own. They are Calibrator Vey in the Coil Works, Stoker Hesk in the Boiler Sumps, Verger Adle in the Rind Chapel, Herald Corvin in the Tallow Keep and Housekeeper Mab in the Staff Quarters. Vey hands over the Coil Works’ site key, and the generator writes all five people, so a rebuild of the tour keeps them.

The party walks up to each of the five people in turn and hears the first lines. At the Coil Works, Vey hands over her tag and the tag opens the store off the press hall.

Why did the tour need people?

This was F11 of the dungeon plan, which I approved on 20 October. It says one person per tour dungeon, each scene drafted and judged through the writing process, and the first one hands over the site key. The tour already had every dungeon feature except people and that key, and the generator’s header listed both as absent because each person needs a conversation first.

How do the generator and the game place a person?

The tour is rebuilt from seeds, so a person added to a tour file by hand would be gone at the next build. So each tour spec now has a person, which is the content NPC’s id, its name and a list of room kinds in order of preference. For floor 1, tour_build.person goes through those kinds and takes the largest room of the kind that has no pack, no patrol turning point and a walk to it from the entrance. It stands the person on the room’s free square nearest the middle, and writes an npc thing with a refinement naming the content NPC. It runs before the machines are laid, so they keep off the person’s square and the eight around it. If no room qualifies the build stops with a message instead of leaving the dungeon empty.

The walk from the entrance is a flood fill that stops at anything shut: secret, welded, one-way and broken doors, chokes, grates, laser walls, cover, and any door with a lock. The site key’s own door is locked, so Vey can never end up behind the thing she gives the key to.

How does Vey’s tag open a door?

The Coil Works spec has a site_key, which is an id, a name and a line of text, and the build writes it into the dungeon file. The game’s key code uses it for every key-locked door that no sheet key names. I added a site alcove to the generator, three squares long with a door at its mouth marked "lock": "key" and a tier-3 chest at the end. In the Coil Works it sits off floor 1’s press hall, at square (53,28). Vey gives the Calibrator’s Tag with give_item and sets a flag, after which her greeting changes and the option to ask for a key goes away.

The game’s theme_tour test used to list people and the site key as absent. It now checks that each dungeon has its person, and that the key exists, is handed over and opens its doors.

Who are the five?

Each conversation is a JSON file with a start node and one action node. The greeting is a list of lines chosen by state, such as a flag or having talked before. Three of the people make an offer the party can take. Hesk draws juice from her own arm, Adle listens and leaves the party Clotting, and Corvin feeds them and leaves them Larded. Mab makes up beds so the party can sleep eight hours. The greetings, as published:

  • Vey: “Stop there. Four of you, and all four reading in step. Nothing in the Coil Works has read in step since the lab went.”
  • Hesk: “Shut that behind you. You are letting the heat out. Four of you, from up top, by the look. Nobody up top knows how to bank a fire.”
  • Adle: “Quietly. The chapel is listening, and it hears better in the cold. Four mouths, and one voice using all of them. Come and be heard.”
  • Corvin: “Halt, and be announced. Names, houses, and which of the old faces you were cut from. The Keep receives nobody it cannot put in the roll.”
  • Mab: “Boots. Off, or wiped, I do not mind which, but the Quarters were swept this morning and nobody has been in since to undo it.”

How were they judged?

I didn’t want the agent that wrote a scene to be the one that scored it. So separate judges each got only the dialogue rubric, the voice rules, a file of the scene’s canon rows and the draft. In the first round the scores were 83.75 for Hesk, 85 for Vey, 87.5 for Adle and for Corvin, and 90 for Mab. The pass mark is 80, so every scene passed, but each came back with repairs and was rewritten on them. The second round scored everything from scratch and gave Vey 88.75, Hesk 87.5, Adle 93.75, Corvin 91.25 and Mab 92.5.

The repairs were things a player would notice. Vey’s greeting asked “Are you staff?” and nothing answered it, so I cut it, and the greeting now ends on the lab, which leads to the question about what happened to it. The judge also worried that refusing the tag would send her back to her greeting. It doesn’t, because an option with a reply speaks the reply and then offers the next node’s options without its greeting. The second round left a few small notes open, like the “so” in Vey’s line about what the tag opens, and a bunk room in the Staff Quarters that is named and then never comes up again. I published the words as they stood. I chose “publish” on the review desk.

What broke along the way?

Two things.

On floor 2 of the Coil Works, a door stood straight under Vey and took the focus from her. The party’s focus check measured the angle on the flat, so something on another floor straight above or below looked dead ahead. It now ignores anything more than the reach plus 2.5 meters above or below.

The tour’s rooms are not built in the world scene, so the game lists them at the place where the tour is stood around the middle of the world. That spot isn’t the same with the world scene loaded as without it. The validator’s check that an NPC stands where it says would pass in one run and fail in the other. The listed places are now marked as moving, and the validator skips that box check for them. The dungeon seats its person on the npc square anyway, and theme_tour checks it.

Before the film, both branches had to catch up with the patrol and bathroom-row mend that landed on main, so I merged the generator’s two edits to tour_build, keeping both behaviors, and rebuilt the tour at the same seeds.

A tall sheet of first-person game frames, each captioned. Each shows a person in a dungeon room with a conversation box of numbered options beside them, in a blue-gray lab, a red-brick boiler room, a red organic chapel, a library with blue shelves and a plain bunk hall.

Frames from the film, one conversation box per shot, with Vey and the tag at the top and Mab at the bottom.

What does it come to?

The game’s landing changed 33 files, with 3,780 lines added and 253 removed. The generator’s changed 3 files, with 130 lines added and 17 removed. On the work branch with the drafts standing in, theme_tour passed 149 checks and failed none. The whole suite is being run.