From 53481bdfc1f3b4bda44c0b421bc36cc43c0bba11 Mon Sep 17 00:00:00 2001 From: slaguru666 <111923774+slaguru666@users.noreply.github.com> Date: Wed, 12 Aug 2026 19:12:35 +0100 Subject: [PATCH] Ship the LAST ADMISSION plates as showable images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A third journal in the adventure — LAST ADMISSION — Show the players — holding the seven scene plates and the floor plan as eight image pages at player visibility. Right-click, Show Players, done. title.show is false and there is no caption, on purpose: the table gets the picture and nothing else. No heading telling them which room this is, no label naming the thing on the stairs. The page NAMES exist only for the GM's sidebar so the right one can be found in a hurry under pressure, and the players never see them. Ordered by when each comes up, not by asset number, for the same reason. The builder throws if a plate is missing from disk, because a missing image is a blank frame on a projector in front of six people. Verified in Foundry: eight pages import at OBSERVER, the image loads, and the rendered page contains no headings, no figcaption and no text at all. Version 1.0.3. Co-Authored-By: Claude Opus 5 --- docs/scenarios/LAST_ADMISSION.md | 7 ++++ packs/armour/LOG | 2 +- packs/expedition/LOG | 2 +- packs/gear/LOG | 2 +- packs/lastadmission/000003.log | Bin 207504 -> 210502 bytes packs/lastadmission/LOG | 2 +- packs/npcs/LOG | 2 +- packs/powers/LOG | 2 +- packs/pregens/LOG | 2 +- packs/primer/LOG | 2 +- packs/prologue/LOG | 2 +- packs/rules/LOG | 2 +- packs/skills/LOG | 2 +- packs/slice/LOG | 2 +- packs/starter/LOG | 2 +- packs/tables/LOG | 2 +- packs/talents/LOG | 2 +- packs/vehicles/LOG | 2 +- packs/weapons/LOG | 2 +- system.json | 2 +- tools/build-packs.mjs | 53 +++++++++++++++++++++++++++++-- 21 files changed, 75 insertions(+), 21 deletions(-) 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 ce0f98c2b7024c887067ddeab946ba5d6d3d53ae..83ee93dbae4297b931815d21fb243822ee499c66 100644 GIT binary patch delta 1611 zcmbu9zfaph6vsszsZxbXDHXIr6w6Q;ND(2i0}O3RT8IcCK=>I|vM%<;Hk^Ot&cQ^e zKNu?3BB(rf>pwtQD~4_zI&>&g#Z-wd^dD%?N!-jhoA3O7e7^7Ad+)xtfBD@Wz8gLN za2S3R`gOS3%`|98&fOnm*be$r2Y6dHo%-d|v(Sip+|P8nm)%Sf z0Zr!P%Iu=BR@hB})ukr-xQ9N2OcQ%z4ff*AF`KF&`YE$%nmQo-<6)+^I~ef6S*X|j z+|LZ_3-K({NJ^QTPw2d`oNrRcJnAHnwuwzET7&kUOTiEtEH+I&AhuWY0YR+A310Mk zu~M{vrRLQ+J)2Av=ck+Galcg{AT}$R7;CbLTfiNPiGGye#GUTwk4DvBlwhGUyQxa+ zT=V?KedvK>AOT(G+ zjGA$h<;`p{rIh%ltO;M11nAPCTPwnXk`1u~uuQJ6#$T3w0o#e07#lm9?z-pgoCl}u I5Mzb^0f4>?6#xJL delta 56 zcmV-80LTBv>9&@d8?x(=G!W OwR{5#Cbv8?0}2F~yA=cg 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,