diff --git a/docs/scenarios/LAST_ADMISSION.md b/docs/scenarios/LAST_ADMISSION.md index 22c95ce..c232f21 100644 --- a/docs/scenarios/LAST_ADMISSION.md +++ b/docs/scenarios/LAST_ADMISSION.md @@ -426,6 +426,13 @@ If there is time — and there usually is, because this ends early — she says ## Artwork +**Showing them at the table.** The adventure ships a third journal, +**LAST ADMISSION — Show the players**, holding these as eight image pages at player +visibility. Right-click a page and *Show Players*: the table gets the picture and +nothing else — no heading, no caption, no label naming what they are looking at. The +page names are for the GM's sidebar and the players never see them. + + **Style line:** flat editorial vector, deep navy and pale yellow with warm off-white, 1970s British public-information poster, `--style raw --ar 3:2 --v 6`. diff --git a/packs/armour/LOG b/packs/armour/LOG index 8776f37..5bb77fc 100644 --- a/packs/armour/LOG +++ b/packs/armour/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.231003 174603000 Delete type=3 #1 +2026/08/12-19:12:20.951787 172dab000 Delete type=3 #1 diff --git a/packs/expedition/LOG b/packs/expedition/LOG index 8c4a8e3..6063951 100644 --- a/packs/expedition/LOG +++ b/packs/expedition/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.298648 173df7000 Delete type=3 #1 +2026/08/12-19:12:21.036764 172dab000 Delete type=3 #1 diff --git a/packs/gear/LOG b/packs/gear/LOG index 38822a5..ba3adaa 100644 --- a/packs/gear/LOG +++ b/packs/gear/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.232848 174603000 Delete type=3 #1 +2026/08/12-19:12:20.954786 17259f000 Delete type=3 #1 diff --git a/packs/lastadmission/000003.log b/packs/lastadmission/000003.log index ce0f98c..83ee93d 100644 Binary files a/packs/lastadmission/000003.log and b/packs/lastadmission/000003.log differ diff --git a/packs/lastadmission/LOG b/packs/lastadmission/LOG index 963c54b..4494859 100644 --- a/packs/lastadmission/LOG +++ b/packs/lastadmission/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.282484 173df7000 Delete type=3 #1 +2026/08/12-19:12:21.015776 172dab000 Delete type=3 #1 diff --git a/packs/npcs/LOG b/packs/npcs/LOG index a601b23..bece731 100644 --- a/packs/npcs/LOG +++ b/packs/npcs/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.266480 174603000 Delete type=3 #1 +2026/08/12-19:12:20.996296 1735b7000 Delete type=3 #1 diff --git a/packs/powers/LOG b/packs/powers/LOG index 7d4e028..db9ba5a 100644 --- a/packs/powers/LOG +++ b/packs/powers/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.293373 173df7000 Delete type=3 #1 +2026/08/12-19:12:21.030689 17259f000 Delete type=3 #1 diff --git a/packs/pregens/LOG b/packs/pregens/LOG index 9a7326e..b0551db 100644 --- a/packs/pregens/LOG +++ b/packs/pregens/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.252536 174603000 Delete type=3 #1 +2026/08/12-19:12:20.979932 17259f000 Delete type=3 #1 diff --git a/packs/primer/LOG b/packs/primer/LOG index cad6883..5c2b0f5 100644 --- a/packs/primer/LOG +++ b/packs/primer/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.290196 172ddf000 Delete type=3 #1 +2026/08/12-19:12:21.025079 172dab000 Delete type=3 #1 diff --git a/packs/prologue/LOG b/packs/prologue/LOG index b202996..ab9ac92 100644 --- a/packs/prologue/LOG +++ b/packs/prologue/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.286378 174603000 Delete type=3 #1 +2026/08/12-19:12:21.020396 17259f000 Delete type=3 #1 diff --git a/packs/rules/LOG b/packs/rules/LOG index 9f633fc..47f4d72 100644 --- a/packs/rules/LOG +++ b/packs/rules/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.297168 1735eb000 Delete type=3 #1 +2026/08/12-19:12:21.035224 1735b7000 Delete type=3 #1 diff --git a/packs/skills/LOG b/packs/skills/LOG index 0b724e4..18c4d76 100644 --- a/packs/skills/LOG +++ b/packs/skills/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.224954 172ddf000 Delete type=3 #1 +2026/08/12-19:12:20.942094 17259f000 Delete type=3 #1 diff --git a/packs/slice/LOG b/packs/slice/LOG index 3e29be6..706211f 100644 --- a/packs/slice/LOG +++ b/packs/slice/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.291920 1735eb000 Delete type=3 #1 +2026/08/12-19:12:21.028001 17259f000 Delete type=3 #1 diff --git a/packs/starter/LOG b/packs/starter/LOG index 61e8c3e..6df5c01 100644 --- a/packs/starter/LOG +++ b/packs/starter/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.276268 174603000 Delete type=3 #1 +2026/08/12-19:12:21.007789 17259f000 Delete type=3 #1 diff --git a/packs/tables/LOG b/packs/tables/LOG index e01280e..d8ebc97 100644 --- a/packs/tables/LOG +++ b/packs/tables/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.270666 173df7000 Delete type=3 #1 +2026/08/12-19:12:21.001198 172dab000 Delete type=3 #1 diff --git a/packs/talents/LOG b/packs/talents/LOG index 99bf54a..2b1a82a 100644 --- a/packs/talents/LOG +++ b/packs/talents/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.227877 174603000 Delete type=3 #1 +2026/08/12-19:12:20.946329 173dc3000 Delete type=3 #1 diff --git a/packs/vehicles/LOG b/packs/vehicles/LOG index 8c419b5..178e118 100644 --- a/packs/vehicles/LOG +++ b/packs/vehicles/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.234705 1735eb000 Delete type=3 #1 +2026/08/12-19:12:20.956885 17259f000 Delete type=3 #1 diff --git a/packs/weapons/LOG b/packs/weapons/LOG index f4bb6e4..9eaa83d 100644 --- a/packs/weapons/LOG +++ b/packs/weapons/LOG @@ -1 +1 @@ -2026/08/12-19:01:54.229633 174603000 Delete type=3 #1 +2026/08/12-19:12:20.948434 17259f000 Delete type=3 #1 diff --git a/system.json b/system.json index 9a6bdad..7648ab0 100644 --- a/system.json +++ b/system.json @@ -2,7 +2,7 @@ "id": "ringbrp", "title": "The Custodians", "description": "A Basic Roleplaying game of agents who cross the crossing to contain what should not be there — and who come back a little less from here each time.", - "version": "1.0.2", + "version": "1.0.3", "compatibility": { "minimum": 13, "verified": "14.364" diff --git a/tools/build-packs.mjs b/tools/build-packs.mjs index ad9c41e..c13cd4f 100644 --- a/tools/build-packs.mjs +++ b/tools/build-packs.mjs @@ -461,6 +461,38 @@ function journalDoc(name, key, pages) { return { doc: { _id: id, name, pages: pageDocs.map(p => p._id), categories: [], ...BASE() }, pages: pageDocs, id }; } +/** + * A journal of nothing but pictures, for showing to players. + * + * title.show is FALSE and there is no caption on purpose: when the GM hits Show Players + * the table gets the image and nothing else — no heading telling them which room this + * is, no label naming the thing they are looking at. The page NAME is for the GM's list + * in the sidebar, so they can find the right one in a hurry; the players never see it. + */ +function imageJournal(name, key, plates) { + const id = idFor(`journal:${key}`); + const pageDocs = plates.map((p, i) => { + // A missing plate is a blank frame on a projector in front of six people. + if (!existsSync(path.join(ROOT, p.src))) throw new Error(`${name}: no plate at ${p.src}`); + return { + _id: idFor(`journal:${key}:${i}`), + name: p.name, type: "image", + title: { show: false, level: 1 }, + src: `systems/ringbrp/${p.src}`, + image: { caption: "" }, + text: { format: 1, content: "", markdown: "" }, + video: { controls: true, volume: 0.5 }, + system: {}, sort: (i + 1) * 100, ownership: { default: 2 }, flags: {}, + category: null + }; + }); + return { + doc: { _id: id, name, pages: pageDocs.map(p => p._id), categories: [], + ...BASE(), ownership: { default: 2 }, flags: { ringbrp: { brand: true } } }, + pages: pageDocs, id + }; +} + /* ---------------- writer ---------------- */ /** @@ -842,6 +874,19 @@ function cullandScene() { castDocs.push(actorDoc); } + // The plates, one per page, for showing at the table. Named for what the GM will be + // looking for under pressure, ordered by when it comes up. + const showJournal = imageJournal("LAST ADMISSION — Show the players", "la_show", [ + { name: "1 · The house, from the drive", src: "art/scenes/la_01_hall.webp" }, + { name: "2 · Floor plan — Culland Hall", src: "art/maps/culland-hall.webp" }, + { name: "3 · Backstage — the green room", src: "art/scenes/la_06_green.webp" }, + { name: "4 · The east corridor", src: "art/scenes/la_03_corridor.webp" }, + { name: "5 · The nursery", src: "art/scenes/la_04_nursery.webp" }, + { name: "6 · The glasshouse — Old Marrow", src: "art/scenes/la_05_glass.webp" }, + { name: "7 · The stairs — the woman standing", src: "art/scenes/la_07_stairs.webp" }, + { name: "8 · The car park, afterwards", src: "art/scenes/la_08_carpark.webp" } + ]); + const gmJournal = journalDoc("LAST ADMISSION — Run the prologue", "la_gm", L.LA_PAGES); const handouts = journalDoc("LAST ADMISSION — Player handouts", "la_handouts", L.LA_HANDOUTS); handouts.doc.ownership = { default: 2 }; @@ -870,8 +915,9 @@ function cullandScene() { actors: castDocs, items: [], journal: [ - { ...gmJournal.doc, pages: gmJournal.pages }, - { ...handouts.doc, pages: handouts.pages } + { ...gmJournal.doc, pages: gmJournal.pages }, + { ...handouts.doc, pages: handouts.pages }, + { ...showJournal.doc, pages: showJournal.pages } ], scenes: [cullandScene()], combats: [], tables: [], macros: [], cards: [], playlists: [], folders: [], sort: 0, ...BASE() @@ -879,7 +925,8 @@ function cullandScene() { await writePack("lastadmission", [[`!adventures!${advId}`, adventure]]); console.log(` lastadm LAST ADMISSION — ${castDocs.length} cast, ` - + `${L.LA_PAGES.length} GM pages, ${L.LA_HANDOUTS.length} handouts`); + + `${L.LA_PAGES.length} GM pages, ${L.LA_HANDOUTS.length} handouts, ` + + `${showJournal.pages.length} plates to show`); } // OPEN DAY — the prologue. A much smaller adventure than BLACK PLATFORM: no case file,