Motif-scope the decisions and temptations

The review's sharpest finding was that the fiction cohered but the things in
the rooms did not belong to it: only the motif cue fragment was projected, while
decisions and temptations came from global pools. The output was a consistent
wrapper around generic room furniture.

Both now live under motifs.<id> — 6 decisions and 5 temptations each, 88
authored entries across 8 motifs. A `keeping` delve offers a flower that has not
wilted and a room you may search or leave exactly as you found it; a
`precedence` delve offers a corridor that will not let two walk abreast.

Two bugs surfaced while wiring it, both the same shape as one fixed earlier for
cue fragments: decisions and temptations were picked independently per area
rather than dealt, so a pool of 3 repeated a temptation in 75 of 80 test delves.
Both are now dealt without replacement.

Where a long delve outruns its motif pool, decisions top up from the generic
pool but temptations do not. A generic relic breaks the fiction; a repeated one
only looks thin.

Tests 11 -> 15: motif provenance for both pools, and no repeats at 6 and 9 areas.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-05 07:48:05 +01:00
co-authored by Claude Opus 5
parent 07148df8e6
commit ee1183e897
9 changed files with 850 additions and 123 deletions
+16 -4
View File
@@ -88,10 +88,22 @@ arrived at it by instinct. That convergence is the strongest evidence the model
Fragments are dealt without replacement, borrowing from a neighbouring facet before repeating.
**Honest limit on "projected".** Only the motif cue fragment is projected from the appetite. The
second cue fragment, the decisions and the temptations still come from **global pools**, so the
current output is a projected wrapper around some generic room furniture. Making decisions and
temptations motif-scoped is the next content job.
**The furniture is motif-scoped too.** Codex's review found that only the motif cue fragment was
projected — decisions and temptations came from global pools, making the output "a consistent
wrapper around generic room furniture". Both now live under `motifs.<id>`: **6 decisions and 5
temptations per motif**, 88 authored entries across 8 motifs. A `keeping` delve offers a flower
that has not wilted, a lamp on three-century-old oil, and a room you may search or leave exactly
as you found it. A `precedence` delve offers a corridor that will not let two walk abreast.
Two rules the tests enforce:
- **Nothing repeats inside one delve.** Decisions and temptations are dealt without replacement,
not picked per area — picking independently repeated a temptation in 75 of 80 test delves.
- **Motif purity beats variety for temptations.** Decisions may top up from the generic pool if a
long delve outruns its motif; temptations may not. A generic relic breaks the fiction, while a
repeated one only looks thin.
**Remaining limit:** the second cue fragment still comes from a global `features` pool. That is
the last piece of generic furniture.
### The appeasement move
+1 -5
View File
@@ -20,17 +20,13 @@ const FACET_TRUTH = {
demandEnd: 'the question itself, asked directly',
};
export function buildArea({ skeleton, planned, pack, pressure, rng, baneBeat = null, feature, decision }) {
export function buildArea({ skeleton, planned, pack, pressure, rng, baneBeat = null, feature, decision, temptation = null }) {
const r = rng.derive('area', String(planned.index));
const fs = skeleton.foreshadow.find(f => f.index === planned.index) ?? {};
const names = pack.areaNames?.[planned.role] ?? pack.areaNames?.approach ?? ['Unnamed'];
// feature/decision are dealt by the caller without replacement across the delve — drawing them
// per-area from pools of 8 and 6 made repeats near-certain inside a single delve.
const temptation = planned.hoard
? r.derive('temptation').pick(pack.temptations)
: null;
// Every area emits at least one attention trigger — draft 5 §9 weights triggers over the timer.
const trigger = fs.facet === 'demand' ? skeleton.motif.trigger
: r.derive('trigger').pick(['announced', 'loud', 'lingering', 'seenTwice', 'disturbed']);
+612 -9
View File
@@ -285,7 +285,83 @@
"a wardrobe of three hundred dresses in a room with no dust in it",
"one thing under cloth, and the cloth is clean"
]
}
},
"decisions": [
{
"cue": "a doorway you can only reach by crossing open floor, in full view",
"cost": "cross it and you are seen — roll the clock; go the long way and lose a Turn"
},
{
"cue": "a mirror blocking the passage, angled to catch whoever passes",
"cost": "cover it and something notices the dark; pass it and something notices you"
},
{
"cue": "a portrait that must be moved to open the way behind it",
"cost": "turn it to the wall and the Host takes offence; carry it and you are announced everywhere"
},
{
"cue": "a gallery lit end to end, and an unlit servants' crawl beside it",
"cost": "the gallery is quick and bright; the crawl costs a Turn and a Brawn roll"
},
{
"cue": "a shuttered window onto the next room, and a choice about opening it",
"cost": "looking through costs nothing; being seen looking costs a Bane"
},
{
"cue": "a room you must cross either quickly or quietly",
"cost": "quick is one Turn and a clock roll; quiet is two Turns and none"
}
],
"temptations": [
{
"id": "mask",
"cue": "a courtier's mask, gold leaf over lime-wood, the mouth fixed in a small smile",
"benefit": "the Host receives you as court, automatically",
"useCost": {
"bane": 1
},
"standingDrawback": "while worn you cannot be recognised by name — allies aiding you take −1 die"
},
{
"id": "glass",
"cue": "a hand-mirror that shows the room a moment behind",
"benefit": "once per scene, see what was just here",
"useCost": {
"bane": 1
},
"standingDrawback": "your reflection lags, and other people notice"
},
{
"id": "likeness",
"cue": "a small portrait of someone who is not you, painted beautifully",
"benefit": "show it and be taken for them, once",
"acceptanceCost": {
"vice": "Pride"
},
"useCost": {
"bane": 2
},
"standingDrawback": "they will eventually want it back"
},
{
"id": "veil",
"cue": "a mourning veil, fine enough to see through",
"benefit": "pass unremarked through the Host once",
"useCost": {
"bane": 1
},
"standingDrawback": "you see everyone as the barrow does — posed, waiting"
},
{
"id": "eyes",
"cue": "a pair of painted eyes cut from a portrait",
"benefit": "once, know exactly who is watching",
"useCost": {
"bane": 1
},
"standingDrawback": "they are watching you back"
}
]
},
"naming": {
"danger": "recognition",
@@ -317,7 +393,83 @@
"a seal cut with a name worn smooth by rubbing",
"a tally-stick longer than a person"
]
}
},
"decisions": [
{
"cue": "a door with a name cut into it, and a space beneath for a reply",
"cost": "answer with your own name and it opens — and it is written down"
},
{
"cue": "a roll of the dead, and one line you could strike out",
"cost": "striking a name frees something; it also puts you where the name was"
},
{
"cue": "someone's name called softly from two directions at once",
"cost": "answer either and the other stops calling"
},
{
"cue": "a lintel you must be announced under, or crawl beneath",
"cost": "announced costs a Bane; crawling costs your dignity and a Turn"
},
{
"cue": "a list of the dead with one name you recognise",
"cost": "saying it aloud helps; it also tells the barrow you are connected"
},
{
"cue": "two passages, and someone is being called down one of them",
"cost": "follow the voice and be expected; take the other and arrive unannounced"
}
],
"temptations": [
{
"id": "ledger",
"cue": "a book of names, one line left blank",
"benefit": "write a name and the Host obeys it once",
"acceptanceCost": {
"vice": "Pride"
},
"useCost": {
"bane": 2
},
"standingDrawback": "your own name is now in it"
},
{
"id": "nameplate",
"cue": "a plate cut with a name worn smooth by rubbing",
"benefit": "doors that check a name open for you",
"useCost": {
"bane": 1
},
"standingDrawback": "you answer to that name whether you mean to or not"
},
{
"id": "tally",
"cue": "a tally-stick longer than a person, one notch unfilled",
"benefit": "call in a debt the barrow owes — once",
"useCost": {
"bane": 1
},
"standingDrawback": "the stick keeps counting what you owe too"
},
{
"id": "seal",
"cue": "a wax seal bearing a name struck through",
"benefit": "once, be forgotten by something hunting you",
"useCost": {
"bane": 1
},
"standingDrawback": "your allies find your name hard to recall"
},
{
"id": "lintel",
"cue": "a chip of lintel-stone with three names on it",
"benefit": "once, summon one of the named dead to answer",
"useCost": {
"bane": 2
},
"standingDrawback": "they come whenever your name is said aloud"
}
]
},
"voices": {
"danger": "obedience",
@@ -349,7 +501,83 @@
"a staff of office propped where it was set down",
"a key that fits nothing here"
]
}
},
"decisions": [
{
"cue": "an order carved into the floor, still legible",
"cost": "obey it and the Host counts you as household; step over it and they do not"
},
{
"cue": "a speaking-tube that is warm, and asking a question down it",
"cost": "an answer comes back — and now something knows where you are"
},
{
"cue": "a bell-pull that would summon someone",
"cost": "ring it and help comes, and it is not the kind you wanted"
},
{
"cue": "two doors, and behind one a voice giving instructions to nobody",
"cost": "the quiet door is longer; the voice would tell you exactly where to go"
},
{
"cue": "an instruction you can obey, ignore, or countermand",
"cost": "countermanding it works once and marks you as someone who gives orders"
},
{
"cue": "a door that opens to a spoken password nobody living knows",
"cost": "guessing costs a Bane per attempt; the long way costs two Turns"
}
],
"temptations": [
{
"id": "signet",
"cue": "a signet, still warm, sized for a thumb",
"benefit": "doors that answer to rank open for you",
"useCost": {
"bane": 1
},
"standingDrawback": "the barrow's servants bring you their problems"
},
{
"id": "tube",
"cue": "a short length of speaking-tube, cut and carried",
"benefit": "ask one question and get one true answer",
"useCost": {
"bane": 1
},
"standingDrawback": "whatever answers can now hear you"
},
{
"id": "staff",
"cue": "a staff of office, propped where it was set down",
"benefit": "give one order the dead must follow",
"acceptanceCost": {
"vice": "Pride"
},
"useCost": {
"bane": 2
},
"standingDrawback": "you may not refuse an order given to you"
},
{
"id": "bell",
"cue": "a small bell from a servant's board",
"benefit": "ring it and one order is obeyed, by anything",
"useCost": {
"bane": 2
},
"standingDrawback": "it rings faintly when someone gives you an order"
},
{
"id": "wax",
"cue": "a plug of wax, moulded to a mouth",
"benefit": "once, refuse to hear a compulsion",
"useCost": {
"bane": 1
},
"standingDrawback": "you cannot hear warnings either"
}
]
},
"keeping": {
"danger": "preservation",
@@ -381,7 +609,80 @@
"an hourglass that has never been turned",
"a casket sized for something smaller than a body"
]
}
},
"decisions": [
{
"cue": "a room you can search, or leave exactly as you found it",
"cost": "searching disturbs a preservation three centuries old — roll the clock"
},
{
"cue": "a sealed jar, and a way on that needs what is inside",
"cost": "breaking the seal spends the year it holds, in front of you"
},
{
"cue": "a bed, made, and a body-shaped hollow that has not filled in",
"cost": "lie in it and you rest fully; you also stop, and the barrow prefers that"
},
{
"cue": "a door held shut by nothing but the fact it has never been opened",
"cost": "open it and something that had not changed, changes"
},
{
"cue": "a preserved thing blocking the way, which will not survive being moved",
"cost": "move it and something here ends; leave it and lose a Turn"
},
{
"cue": "food and water laid out, still good",
"cost": "eating restores you fully and the barrow adds you to what it keeps"
}
],
"temptations": [
{
"id": "jar",
"cue": "a sealed jar holding one good year",
"benefit": "open it to undo a wound entirely, once",
"useCost": {
"bane": 2
},
"standingDrawback": "the year is spent in front of everyone, visibly"
},
{
"id": "stillglass",
"cue": "a mirror showing the room a little younger",
"benefit": "once, refuse a condition — the glass takes it",
"useCost": {
"bane": 1
},
"standingDrawback": "the glass cracks a little each time, and so do you"
},
{
"id": "shoes",
"cue": "a child's shoes, unworn, in your size",
"benefit": "you do not tire; ignore fatigue for a scene",
"useCost": {
"bane": 1
},
"standingDrawback": "you have stopped ageing, and it shows in the wrong light"
},
{
"id": "lamp",
"cue": "a lamp still burning on three-century-old oil",
"benefit": "light that never gutters",
"useCost": {
"bane": 1
},
"standingDrawback": "nothing near it changes, including wounds you want to heal"
},
{
"id": "flower",
"cue": "a flower that has not wilted",
"benefit": "once, halt a condition where it stands",
"useCost": {
"bane": 1
},
"standingDrawback": "it also halts something you wanted to finish"
}
]
},
"display": {
"danger": "comparison",
@@ -413,7 +714,83 @@
"a case holding one item and a great deal of space",
"a lock polished more often than the thing it guards"
]
}
},
"decisions": [
{
"cue": "an empty plinth, sized for something you are carrying",
"cost": "leave a thing and the Host approves; keep it and they compare you unfavourably"
},
{
"cue": "a case of trophies and one obviously missing",
"cost": "replacing it opens the next door; nothing else will"
},
{
"cue": "two ways on: one you must be invited down, one you may simply take",
"cost": "the invitation costs an act of admiration; taking it costs their good opinion"
},
{
"cue": "a gift left for you, unopened, with your description on it",
"cost": "opening it accepts the comparison; leaving it is a refusal, and noted"
},
{
"cue": "a comparison invited — your gear against theirs",
"cost": "engage and gain their favour; decline and be marked as beneath notice"
},
{
"cue": "a display you could improve, or rob",
"cost": "improving it opens the next door; robbing it opens all of them, badly"
}
],
"temptations": [
{
"id": "prize",
"cue": "the piece every rival was meant to want, still under glass",
"benefit": "+1 die whenever someone must be impressed",
"useCost": {
"bane": 1
},
"standingDrawback": "everyone who sees it wants it"
},
{
"id": "ribbon",
"cue": "a ribbon awarded to whoever conceded the point",
"benefit": "end one argument in your favour, once",
"useCost": {
"bane": 1
},
"standingDrawback": "you cannot decline a challenge while wearing it"
},
{
"id": "gift",
"cue": "a gift, unopened, addressed to no one in particular",
"benefit": "open it for exactly the thing you needed",
"acceptanceCost": {
"vice": "Greed"
},
"useCost": {
"bane": 2
},
"standingDrawback": "it was for someone, and they know"
},
{
"id": "case",
"cue": "a display case, small, with a good lock",
"benefit": "anything inside is beyond casual theft",
"useCost": {
"bane": 1
},
"standingDrawback": "whatever is in it is on show, always"
},
{
"id": "plinth",
"cue": "a plinth-plate engraved FINEST OF ITS KIND",
"benefit": "once, make a thing you carry undeniably the best",
"useCost": {
"bane": 1
},
"standingDrawback": "someone will want to test that"
}
]
},
"company": {
"danger": "attachment",
@@ -445,7 +822,83 @@
"a chair kept empty and dusted",
"a second cup, always out"
]
}
},
"decisions": [
{
"cue": "one of the dead follows you and will not be told otherwise",
"cost": "let it come and doors open; send it back and they close"
},
{
"cue": "a chair drawn out, and a place laid, and time to sit",
"cost": "sitting costs a Turn and buys the Host's goodwill entirely"
},
{
"cue": "a door that will only admit one of you at a time",
"cost": "splitting the party is exactly what this place wants"
},
{
"cue": "a hand, skeletal, held out to be taken",
"cost": "take it and you are not alone; you are also not alone later"
},
{
"cue": "a way on that only works if someone stays behind",
"cost": "whoever stays is not alone, and that is the problem"
},
{
"cue": "an invitation to stay the night, meant sincerely",
"cost": "accepting restores everything and costs a Turn and a Bane"
}
],
"temptations": [
{
"id": "keepsake",
"cue": "a keepsake still warm from being held",
"benefit": "once, someone comes when you call",
"useCost": {
"bane": 1
},
"standingDrawback": "something else comes too"
},
{
"id": "cup",
"cue": "a second cup, always set out",
"benefit": "share it and gain an ally among the dead for a scene",
"useCost": {
"bane": 1
},
"standingDrawback": "they expect to be included from now on"
},
{
"id": "hand",
"cue": "a skeletal hand that closes gently on yours",
"benefit": "you cannot be separated from the party by force",
"acceptanceCost": {
"vice": "Attachment"
},
"useCost": {
"bane": 2
},
"standingDrawback": "nor can you leave one behind"
},
{
"id": "chair",
"cue": "a folding chair, kept dusted",
"benefit": "set it down and something friendly sits",
"useCost": {
"bane": 1
},
"standingDrawback": "it follows you if you leave it"
},
{
"id": "coat",
"cue": "a coat from a full rack, still shaped to someone",
"benefit": "once, be treated as expected and welcome",
"useCost": {
"bane": 1
},
"standingDrawback": "you are expected to come back"
}
]
},
"confession": {
"danger": "judgement",
@@ -477,7 +930,80 @@
"a ledger of sins with the last page blank",
"a box that has only ever been opened once"
]
}
},
"decisions": [
{
"cue": "a screen, a kneeler, and a question you can hear being asked",
"cost": "answer honestly and the way opens; lie and it opens anyway, differently"
},
{
"cue": "a scale, one pan holding a feather, the other empty",
"cost": "put something of yours in and it is weighed; walk past and you are not"
},
{
"cue": "a book of absolutions with room for one more",
"cost": "signing it forgives someone; it does not say who"
},
{
"cue": "a door that opens to whoever admits something first",
"cost": "whoever speaks pays; whoever stays silent owes"
},
{
"cue": "a question asked directly of one hero, by name",
"cost": "answering costs privacy; refusing costs the way forward"
},
{
"cue": "a penance offered instead of a fight",
"cost": "perform it and pass freely; it takes a Turn and it is humiliating"
}
],
"temptations": [
{
"id": "testament",
"cue": "a confession nobody ever heard, sealed",
"benefit": "read it aloud to unmake one accusation",
"useCost": {
"bane": 2
},
"standingDrawback": "the thing confessed to becomes yours to answer for"
},
{
"id": "feather",
"cue": "the feather from the scale, weightless",
"benefit": "once, be believed absolutely",
"useCost": {
"bane": 1
},
"standingDrawback": "you cannot lie while carrying it, even usefully"
},
{
"id": "kneeler",
"cue": "a fragment of stone worn through by knees",
"benefit": "once, take a condition from someone else",
"useCost": {
"bane": 1
},
"standingDrawback": "you keep every condition you take this way a little longer"
},
{
"id": "screen",
"cue": "a splinter from the confessional screen",
"benefit": "once, hear whether someone is lying",
"useCost": {
"bane": 1
},
"standingDrawback": "they can tell you are listening for it"
},
{
"id": "ash",
"cue": "a twist of ash from burned absolutions",
"benefit": "once, erase a wrong you did here",
"useCost": {
"bane": 2
},
"standingDrawback": "you cannot remember it either, and it mattered"
}
]
},
"precedence": {
"danger": "procession",
@@ -509,7 +1035,83 @@
"a staff of precedence, laid down",
"a seat at the head of everything, occupied"
]
}
},
"decisions": [
{
"cue": "a corridor that will not let two walk abreast",
"cost": "whoever goes first meets whatever is there first"
},
{
"cue": "a queue of the dead, and a way to step round it",
"cost": "waiting costs two Turns; pushing in costs the Host's patience"
},
{
"cue": "a door that opens only for the foremost of a party",
"cost": "someone must be named first, aloud, and the others must accept it"
},
{
"cue": "banners in strict order, and one you could move",
"cost": "reordering them opens a way and insults everyone buried here"
},
{
"cue": "a stair where the order of descent is visibly recorded",
"cost": "whoever goes last is remembered as having gone last"
},
{
"cue": "a claim to settle: which of you the barrow should address",
"cost": "settling it opens the way; refusing to settle it does not"
}
],
"temptations": [
{
"id": "coronet",
"cue": "a small crown, sized for someone who never grew",
"benefit": "+1 die when others must defer to you",
"useCost": {
"bane": 1
},
"standingDrawback": "you must be addressed correctly or lose the benefit"
},
{
"id": "rankplate",
"cue": "a rank-plate prised off something and pocketed",
"benefit": "go first through any door the barrow guards",
"useCost": {
"bane": 1
},
"standingDrawback": "going first is now expected of you"
},
{
"id": "staffprec",
"cue": "a staff of precedence, laid down and not taken up",
"benefit": "once, decide the order of anything, and be obeyed",
"acceptanceCost": {
"vice": "Pride"
},
"useCost": {
"bane": 2
},
"standingDrawback": "you may never be second while you hold it"
},
{
"id": "herald",
"cue": "a herald's script with your name pencilled in",
"benefit": "once, be announced as whatever you claim",
"useCost": {
"bane": 1
},
"standingDrawback": "you must live up to it in front of the Host"
},
{
"id": "flagstone",
"cue": "a numbered flagstone, prised up, number one",
"benefit": "once, insist on going first and be obeyed",
"useCost": {
"bane": 1
},
"standingDrawback": "you go first into everything from now on"
}
]
}
},
"placeNames": {
@@ -839,5 +1441,6 @@
"loud": "a raised voice, a broken door, steel on stone",
"lingering": "stayed in one place longer than it takes to search it",
"disturbed": "struck or moved something that had not moved in centuries"
}
},
"_globalPoolsNote": "decisions/temptations below are FALLBACKS ONLY. Real content is motif-scoped under motifs.<id>.decisions/.temptations, so the furniture matches the fiction."
}
+19 -4
View File
@@ -28,19 +28,34 @@ export function generateDelve(params = {}) {
const pressure = new Pressure({ areas, clock });
// Deal features and decisions without replacement, cycling only if the delve outruns the pack.
const deal = (list, n, tag) => {
// Deal without replacement. If a delve outruns its motif pool, top up from the generic pool
// before ever repeating — a repeated decision reads as a bug, generic furniture only as thin.
const deal = (list, n, tag, overflow = []) => {
const r = rng.derive(tag);
const out = [];
const out = [...r.shuffle(list)];
if (out.length < n) out.push(...r.shuffle(overflow.filter(x => !out.includes(x))));
while (out.length < n) out.push(...r.shuffle(list));
return out.slice(0, n);
};
// Motif-scoped furniture. Global pools are a fallback only: drawing decisions and temptations
// globally made the output "a consistent wrapper around generic room furniture" — the fiction
// cohered but the things in the rooms did not belong to it.
const motifPack = pack.motifs?.[skeleton.motif.id] ?? {};
const decisionPool = motifPack.decisions?.length ? motifPack.decisions : (pack.decisions ?? []);
const features = deal(pack.features ?? [], plan.areas.length, 'features');
const decisions = deal(pack.decisions ?? [], plan.areas.length, 'decisions');
const decisions = deal(decisionPool, plan.areas.length, 'decisions', pack.decisions ?? []);
// Temptations are dealt across the areas that carry a hoard, for the same reason as decisions:
// picking independently per area from a pool of three repeated in 75 of 80 test delves.
const temptPool = motifPack.temptations?.length ? motifPack.temptations : (pack.temptations ?? []);
const hoardCount = plan.areas.filter(a => a.hoard).length;
const temptations = deal(temptPool, hoardCount, 'temptations'); // no generic overflow — see note
let tIdx = 0;
const built = plan.areas.map((planned, i) => {
const beat = baneBeatFor(planned, pressure, rng.derive('banebeat', String(planned.index)));
if (beat) pressure.bankBane('(offered)', beat, planned.index);
const area = buildArea({ skeleton, planned, pack, pressure, rng, baneBeat: beat, feature: features[i], decision: decisions[i] });
const area = buildArea({ skeleton, planned, pack, pressure, rng, baneBeat: beat, feature: features[i], decision: decisions[i], temptation: planned.hoard ? temptations[tIdx++] : null });
area.fallback = fallbackRoute(area, skeleton);
return area;
});
+30
View File
@@ -54,5 +54,35 @@ for (let i = 0; i < 30; i++) {
}
t('no repeated cue fragment inside one delve', repeats === 0, `${repeats}/30 had repeats`);
// motif-scoping: the furniture must belong to the fiction, not a global pool
let offMotifDecisions = 0, offMotifTemptations = 0, checked = 0;
for (let i = 0; i < 40; i++) {
const d = generateDelve({ pack, seed: `scope-${i}`, areas: 6 });
const m = pack.motifs[d.skeleton.motif.id];
const okD = new Set((m.decisions ?? []).map(x => x.cue));
const okT = new Set((m.temptations ?? []).map(x => x.id));
for (const a of d.areas) {
checked++;
if (a.decision && !okD.has(a.decision.cue)) offMotifDecisions++;
if (a.temptation && !okT.has(a.temptation.id)) offMotifTemptations++;
}
}
t('decisions come from the delve\'s own motif', offMotifDecisions === 0, `${offMotifDecisions}/${checked} off-motif`);
t('temptations come from the delve\'s own motif', offMotifTemptations === 0, `${offMotifTemptations} off-motif`);
// no repeated decision or temptation inside one delve
let dupD = 0, dupT = 0;
for (let i = 0; i < 40; i++) {
for (const areas of [6, 9]) {
const d = generateDelve({ pack, seed: `dup-${i}`, areas });
const ds = d.areas.map(a => a.decision?.cue).filter(Boolean);
const ts = d.areas.map(a => a.temptation?.id).filter(Boolean);
if (new Set(ds).size !== ds.length) dupD++;
if (new Set(ts).size !== ts.length) dupT++;
}
}
t('no repeated decision inside one delve', dupD === 0, `${dupD}/80`);
t('no repeated temptation inside one delve', dupT === 0, `${dupT}/80`);
console.log(`\n${pass} passed, ${fail} failed`);
process.exit(fail ? 1 : 0);
+116 -45
View File
@@ -18,11 +18,11 @@
"placeName": "The Cairn of the Patient Lord",
"knot": {
"appetiteId": "first",
"accommodationId": "unmade",
"accommodationId": "bound",
"claimant": "Patient Lord",
"conscript": "a procession",
"transgression": "The Patient Lord had the faces struck from a procession, so that someone would always go behind them.",
"cruelty": 3
"transgression": "The Patient Lord bound a procession by oath they could not break, so that someone would always go behind them.",
"cruelty": 2
},
"motif": {
"id": "precedence",
@@ -41,6 +41,20 @@
"failureState": "is second now, and cannot bear it",
"handledBy": "giving them what they want, at a price"
},
"appeasement": {
"move": "stand aside and let it go ahead of you",
"attribute": "Poise",
"successes": 2,
"why": "it goes first",
"gain": {
"vanity": 1
},
"cost": {
"bane": 1
},
"repeatable": true,
"faction": "The Silent Host"
},
"factions": [
{
"id": "host",
@@ -113,10 +127,10 @@
"a stair too grand for the door it serves",
"a floor mosaic worn only along one path"
],
"truth": "this is how the place was ordered, and it still is. The Patient Lord had the faces struck from a procession, so that someone would always go behind them.",
"truth": "this is how the place was ordered, and it still is. The Patient Lord bound a procession by oath they could not break, so that someone would always go behind them.",
"decision": {
"cue": "a member of the faction, alone and not yet hostile",
"cost": "talking costs time; not talking costs later"
"cue": "banners in strict order, and one you could move",
"cost": "reordering them opens a way and insults everyone buried here"
},
"encounter": null,
"hoard": null,
@@ -136,16 +150,16 @@
{
"index": 2,
"role": "complication",
"name": "The Hall of Bows",
"name": "The Lesser Vault",
"facet": "ritual",
"cueFragments": [
"banners in sequence, each house a place further back",
"grave-goods stacked with obsessive neatness"
],
"truth": "the office is still being performed, for someone who is no longer served by it. The Patient Lord had the faces struck from a procession, so that someone would always go behind them.",
"truth": "the office is still being performed, for someone who is no longer served by it. The Patient Lord bound a procession by oath they could not break, so that someone would always go behind them.",
"decision": {
"cue": "two ways on: one narrow and dark, one wide and announced",
"cost": "the wide way is faster and the barrow hears it"
"cue": "a corridor that will not let two walk abreast",
"cost": "whoever goes first meets whatever is there first"
},
"encounter": null,
"hoard": null,
@@ -165,16 +179,16 @@
{
"index": 3,
"role": "complication",
"name": "The Lesser Vault",
"name": "The Waiting Room",
"facet": "ritual",
"cueFragments": [
"a herald's script with the order still marked",
"an alcove emptied in a hurry"
],
"truth": "the office is still being performed, for someone who is no longer served by it. The Patient Lord had the faces struck from a procession, so that someone would always go behind them.",
"truth": "the office is still being performed, for someone who is no longer served by it. The Patient Lord bound a procession by oath they could not break, so that someone would always go behind them.",
"decision": {
"cue": "something valuable, awkward to carry",
"cost": "carrying it slows you and it is not yours"
"cue": "a door that opens only for the foremost of a party",
"cost": "someone must be named first, aloud, and the others must accept it"
},
"encounter": null,
"hoard": null,
@@ -200,24 +214,49 @@
"a door only one person may pass at a time, and only first",
"a collapse that has opened a way the builders never meant"
],
"truth": "here the want is explicit — the place asks something of whoever enters. The Patient Lord had the faces struck from a procession, so that someone would always go behind them.",
"truth": "here the want is explicit — the place asks something of whoever enters. The Patient Lord bound a procession by oath they could not break, so that someone would always go behind them.",
"decision": {
"cue": "a sealed door, and a crack you could squeeze through",
"cost": "the crack costs skin and a Bane on a failure"
"cue": "a queue of the dead, and a way to step round it",
"cost": "waiting costs two Turns; pushing in costs the Host's patience"
},
"encounter": {
"heat": "fight",
"kind": "undead"
"kind": "undead",
"roster": {
"line": "1 Ghoul and 2 Skeletons",
"foes": [
{
"n": 1,
"name": "Ghoul",
"atk": 4,
"def": 3,
"grit": 4,
"nerve": 5,
"note": "on a hit, a free Called Shot to freeze for a round"
},
{
"n": 2,
"name": "Skeleton",
"atk": 3,
"def": 2,
"grit": 1,
"nerve": 5,
"note": "fearless"
}
],
"harmedBy": "anything",
"avoid": "the Ghoul goes for court dress first — send someone plain"
}
},
"hoard": "cache",
"temptation": {
"id": "coronet",
"cue": "a small crown, sized for someone who never grew",
"benefit": "+1 die when others must defer to you",
"id": "flagstone",
"cue": "a numbered flagstone, prised up, number one",
"benefit": "once, insist on going first and be obeyed",
"useCost": {
"bane": 1
},
"standingDrawback": "you must be addressed correctly or lose the benefit"
"standingDrawback": "you go first into everything from now on"
},
"trigger": "announced",
"baneBeat": "relicUse",
@@ -240,21 +279,24 @@
"a procession that doubled back on itself",
"a lamp still burning on oil that should be long gone"
],
"truth": "this is the damage the want did to those who had to satisfy it. The Patient Lord had the faces struck from a procession, so that someone would always go behind them.",
"truth": "this is the damage the want did to those who had to satisfy it. The Patient Lord bound a procession by oath they could not break, so that someone would always go behind them.",
"decision": {
"cue": "a shortcut down, through water",
"cost": "everything gets wet, including what burns"
"cue": "a stair where the order of descent is visibly recorded",
"cost": "whoever goes last is remembered as having gone last"
},
"encounter": null,
"hoard": "pocket",
"temptation": {
"id": "glass",
"cue": "a hand-mirror that shows the room a moment behind",
"benefit": "once per scene, see what was just here",
"useCost": {
"bane": 1
"id": "staffprec",
"cue": "a staff of precedence, laid down and not taken up",
"benefit": "once, decide the order of anything, and be obeyed",
"acceptanceCost": {
"vice": "Pride"
},
"standingDrawback": "your reflection lags, and others notice"
"useCost": {
"bane": 2
},
"standingDrawback": "you may never be second while you hold it"
},
"trigger": "seenTwice",
"baneBeat": "refusal",
@@ -271,33 +313,55 @@
{
"index": 6,
"role": "threshold",
"name": "The Antechamber Royal",
"name": "The Last Door",
"facet": "anchor",
"cueFragments": [
"a seat at the head of everything, occupied",
"a door that has been wedged open from the inside"
],
"truth": "the thing the whole barrow is arranged around is close. The Patient Lord had the faces struck from a procession, so that someone would always go behind them.",
"truth": "the thing the whole barrow is arranged around is close. The Patient Lord bound a procession by oath they could not break, so that someone would always go behind them.",
"decision": {
"cue": "a way back, still open",
"cost": "leaving now means it will be worse when you return"
"cue": "a claim to settle: which of you the barrow should address",
"cost": "settling it opens the way; refusing to settle it does not"
},
"encounter": {
"heat": "battle",
"kind": "undead"
"kind": "undead",
"roster": {
"line": "1 Wraith and 3 Skeletons",
"foes": [
{
"n": 1,
"name": "Wraith",
"atk": 5,
"def": 3,
"grit": 10,
"nerve": 5,
"note": "INCORPOREAL — chill touch ignores armour and drains 1 max Grit"
},
{
"n": 3,
"name": "Skeleton",
"atk": 3,
"def": 2,
"grit": 1,
"nerve": 5,
"note": "fearless"
}
],
"harmedBy": "blessed, silvered or magical weapons ONLY",
"avoid": "it will take an appeasement over a fight every time"
}
},
"hoard": "chest",
"temptation": {
"id": "ledger",
"cue": "a book of names, one line left blank",
"benefit": "write a name and the Host obeys it once",
"acceptanceCost": {
"vice": "Pride"
},
"id": "coronet",
"cue": "a small crown, sized for someone who never grew",
"benefit": "+1 die when others must defer to you",
"useCost": {
"bane": 2
"bane": 1
},
"standingDrawback": "your own name is now in it"
"standingDrawback": "you must be addressed correctly or lose the benefit"
},
"trigger": "disturbed",
"baneBeat": "relicUse",
@@ -318,13 +382,20 @@
"mode": "authored",
"heat": null,
"hoard": null,
"name": "The Gilded Audience",
"name": "The Audience",
"cueFragments": [
"a corridor that will not let two walk abreast"
],
"question": "\"Who goes first?\"",
"authored": true
},
"triggerGlossary": {
"announced": "entered somewhere grandly — the big doors, a shout, a herald",
"seenTwice": "reflected, echoed or witnessed twice over in one place",
"loud": "a raised voice, a broken door, steel on stone",
"lingering": "stayed in one place longer than it takes to search it",
"disturbed": "struck or moved something that had not moved in centuries"
},
"budget": {
"plannedFights": 2,
"heatBase": "fight",
+17 -17
View File
@@ -52,7 +52,7 @@ On success it goes first, and The Silent Host will not open hostilities first.
**The clue is automatic:** a stair too grand for the door it serves — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a member of the faction, alone and not yet hostile — *talking costs time; not talking costs later*
**The decision.** banners in strict order, and one you could move — *reordering them opens a way and insults everyone buried here*
**Attention trigger:** announced.
@@ -75,7 +75,7 @@ On success it goes first, and The Silent Host will not open hostilities first.
**The clue is automatic:** banners in sequence, each house a place further back — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** two ways on: one narrow and dark, one wide and announced — *the wide way is faster and the barrow hears it*
**The decision.** a corridor that will not let two walk abreast — *whoever goes first meets whatever is there first*
**Attention trigger:** loud.
@@ -98,7 +98,7 @@ On success it goes first, and The Silent Host will not open hostilities first.
**The clue is automatic:** a herald's script with the order still marked — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** something valuable, awkward to carry — *carrying it slows you and it is not yours*
**The decision.** a door that opens only for the foremost of a party — *someone must be named first, aloud, and the others must accept it*
**Attention trigger:** announced.
@@ -121,7 +121,7 @@ On success it goes first, and The Silent Host will not open hostilities first.
**The clue is automatic:** a door only one person may pass at a time, and only first — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a sealed door, and a crack you could squeeze through — *the crack costs skin and a Bane on a failure*
**The decision.** a queue of the dead, and a way to step round it — *waiting costs two Turns; pushing in costs the Host's patience*
**Encounter — fight.** 1 Ghoul and 2 Skeletons
@@ -134,10 +134,10 @@ On success it goes first, and The Silent Host will not open hostilities first.
- **Avoidable:** the Ghoul goes for court dress first — send someone plain
- *Forge:* `forgeEncounter({heat:"fight", hoard:false, post:false, folderId})`
**Hoard.** Tier **cache**.
**Temptation — coronet.** a small crown, sized for someone who never grew
- *Benefit:* +1 die when others must defer to you
**Temptation — flagstone.** a numbered flagstone, prised up, number one
- *Benefit:* once, insist on going first and be obeyed
- *Accept:* free · *Use:* **+1 Bane** on the tab
- *Standing:* you must be addressed correctly or lose the benefit
- *Standing:* you go first into everything from now on
**Attention trigger:** announced.
**Bane beat — relicUse.** Who: *whoever spends the relic*. When: *each use*. repeatable. Say it aloud when it banks.
@@ -159,13 +159,13 @@ On success it goes first, and The Silent Host will not open hostilities first.
**The clue is automatic:** a procession that doubled back on itself — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a shortcut down, through water — *everything gets wet, including what burns*
**The decision.** a stair where the order of descent is visibly recorded — *whoever goes last is remembered as having gone last*
**Hoard.** Tier **pocket**.
**Temptation — glass.** a hand-mirror that shows the room a moment behind
- *Benefit:* once per scene, see what was just here
- *Accept:* free · *Use:* **+1 Bane** on the tab
- *Standing:* your reflection lags, and others notice
**Temptation — staffprec.** a staff of precedence, laid down and not taken up
- *Benefit:* once, decide the order of anything, and be obeyed
- *Accept:* take the Vice **Pride** · *Use:* **+2 Banes** on the tab
- *Standing:* you may never be second while you hold it
**Attention trigger:** seenTwice.
**Bane beat — refusal.** Who: *whoever refuses the offer*. When: *once*. once only. Say it aloud when it banks.
@@ -187,7 +187,7 @@ On success it goes first, and The Silent Host will not open hostilities first.
**The clue is automatic:** a seat at the head of everything, occupied — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a way back, still open — *leaving now means it will be worse when you return*
**The decision.** a claim to settle: which of you the barrow should address — *settling it opens the way; refusing to settle it does not*
**Encounter — battle.** 1 Wraith and 3 Skeletons
@@ -200,10 +200,10 @@ On success it goes first, and The Silent Host will not open hostilities first.
- **Avoidable:** it will take an appeasement over a fight every time
- *Forge:* `forgeEncounter({heat:"battle", hoard:false, post:false, folderId})`
**Hoard.** Tier **chest**.
**Temptation — ledger.** a book of names, one line left blank
- *Benefit:* write a name and the Host obeys it once
- *Accept:* take the Vice **Pride** · *Use:* **+2 Banes** on the tab
- *Standing:* your own name is now in it
**Temptation — coronet.** a small crown, sized for someone who never grew
- *Benefit:* +1 die when others must defer to you
- *Accept:* free · *Use:* **+1 Bane** on the tab
- *Standing:* you must be addressed correctly or lose the benefit
**Attention trigger:** disturbed.
**Bane beat — relicUse.** Who: *whoever spends the relic*. When: *each use*. repeatable. Say it aloud when it banks.
+20 -20
View File
@@ -52,7 +52,7 @@ On success it hears that nothing has aged, and The Silent Host will not open hos
**The clue is automatic:** lamps trimmed and filled, all of them — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** two ways on: one narrow and dark, one wide and announced — *the wide way is faster and the barrow hears it*
**The decision.** a room you can search, or leave exactly as you found it — *searching disturbs a preservation three centuries old — roll the clock*
**Attention trigger:** disturbed.
@@ -75,7 +75,7 @@ On success it hears that nothing has aged, and The Silent Host will not open hos
**The clue is automatic:** a meal laid out, still warm, for people long past eating — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** something valuable, awkward to carry — *carrying it slows you and it is not yours*
**The decision.** a bed, made, and a body-shaped hollow that has not filled in — *lie in it and you rest fully; you also stop, and the barrow prefers that*
**Encounter — fight.** 1 Ghoul and 2 Skeletons
@@ -88,10 +88,10 @@ On success it hears that nothing has aged, and The Silent Host will not open hos
- **Avoidable:** the Ghoul goes for court dress first — send someone plain
- *Forge:* `forgeEncounter({heat:"fight", hoard:false, post:false, folderId})`
**Hoard.** Tier **cache**.
**Temptation — ring.** a signet, still warm
- *Benefit:* doors that answer to rank open for you
**Temptation — flower.** a flower that has not wilted
- *Benefit:* once, halt a condition where it stands
- *Accept:* free · *Use:* **+1 Bane** on the tab
- *Standing:* the barrow's servants bring you their problems
- *Standing:* it also halts something you wanted to finish
**Attention trigger:** lingering.
**Bane beat — relicUse.** Who: *whoever spends the relic*. When: *each use*. repeatable. Say it aloud when it banks.
@@ -113,7 +113,7 @@ On success it hears that nothing has aged, and The Silent Host will not open hos
**The clue is automatic:** a clock wound by somebody, recently — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a member of the faction, alone and not yet hostile — *talking costs time; not talking costs later*
**The decision.** a door held shut by nothing but the fact it has never been opened — *open it and something that had not changed, changes*
**Encounter — fight.** 1 Ghoul and 2 Skeletons
@@ -126,10 +126,10 @@ On success it hears that nothing has aged, and The Silent Host will not open hos
- **Avoidable:** the Ghoul goes for court dress first — send someone plain
- *Forge:* `forgeEncounter({heat:"fight", hoard:false, post:false, folderId})`
**Hoard.** Tier **cache**.
**Temptation — ledger.** a book of names, one line left blank
- *Benefit:* write a name and the Host obeys it once
- *Accept:* take the Vice **Pride** · *Use:* **+2 Banes** on the tab
- *Standing:* your own name is now in it
**Temptation — lamp.** a lamp still burning on three-century-old oil
- *Benefit:* light that never gutters
- *Accept:* free · *Use:* **+1 Bane** on the tab
- *Standing:* nothing near it changes, including wounds you want to heal
**Attention trigger:** lingering.
**Bane beat — relicUse.** Who: *whoever spends the relic*. When: *each use*. repeatable. Say it aloud when it banks.
@@ -151,13 +151,13 @@ On success it hears that nothing has aged, and The Silent Host will not open hos
**The clue is automatic:** a room that resets itself if you look away — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a shortcut down, through water — *everything gets wet, including what burns*
**The decision.** a preserved thing blocking the way, which will not survive being moved — *move it and something here ends; leave it and lose a Turn*
**Hoard.** Tier **pocket**.
**Temptation — glass.** a hand-mirror that shows the room a moment behind
- *Benefit:* once per scene, see what was just here
**Temptation — shoes.** a child's shoes, unworn, in your size
- *Benefit:* you do not tire; ignore fatigue for a scene
- *Accept:* free · *Use:* **+1 Bane** on the tab
- *Standing:* your reflection lags, and others notice
- *Standing:* you have stopped ageing, and it shows in the wrong light
**Attention trigger:** lingering.
**Bane beat — flattery.** Who: *whoever performs the appeasement*. When: *each time it is used*. repeatable. Say it aloud when it banks.
@@ -179,7 +179,7 @@ On success it hears that nothing has aged, and The Silent Host will not open hos
**The clue is automatic:** something kept so well it has forgotten how to end — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a sealed door, and a crack you could squeeze through — *the crack costs skin and a Bane on a failure*
**The decision.** a sealed jar, and a way on that needs what is inside — *breaking the seal spends the year it holds, in front of you*
**Attention trigger:** seenTwice.
@@ -202,7 +202,7 @@ On success it hears that nothing has aged, and The Silent Host will not open hos
**The clue is automatic:** a casket sized for something smaller than a body — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a way back, still open — *leaving now means it will be worse when you return*
**The decision.** food and water laid out, still good — *eating restores you fully and the barrow adds you to what it keeps*
**Encounter — battle.** 1 Wraith and 3 Skeletons
@@ -215,10 +215,10 @@ On success it hears that nothing has aged, and The Silent Host will not open hos
- **Avoidable:** it will take an appeasement over a fight every time
- *Forge:* `forgeEncounter({heat:"battle", hoard:false, post:false, folderId})`
**Hoard.** Tier **chest**.
**Temptation — ledger.** a book of names, one line left blank
- *Benefit:* write a name and the Host obeys it once
- *Accept:* take the Vice **Pride** · *Use:* **+2 Banes** on the tab
- *Standing:* your own name is now in it
**Temptation — jar.** a sealed jar holding one good year
- *Benefit:* open it to undo a wound entirely, once
- *Accept:* free · *Use:* **+2 Banes** on the tab
- *Standing:* the year is spent in front of everyone, visibly
**Attention trigger:** seenTwice.
**Bane beat — refusal.** Who: *whoever refuses the offer*. When: *once*. once only. Say it aloud when it banks.
+19 -19
View File
@@ -52,7 +52,7 @@ On success it is not alone, and The Silent Host will not open hostilities first.
**The clue is automatic:** a coat-rack, full — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a way back, still open — *leaving now means it will be worse when you return*
**The decision.** an invitation to stay the night, meant sincerely — *accepting restores everything and costs a Turn and a Bane*
**Attention trigger:** lingering.
@@ -75,13 +75,13 @@ On success it is not alone, and The Silent Host will not open hostilities first.
**The clue is automatic:** places set every evening for three hundred years — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a shortcut down, through water — *everything gets wet, including what burns*
**The decision.** a way on that only works if someone stays behind — *whoever stays is not alone, and that is the problem*
**Hoard.** Tier **pocket**.
**Temptation — coronet.** a small crown, sized for someone who never grew
- *Benefit:* +1 die when others must defer to you
- *Accept:* free · *Use:* **+1 Bane** on the tab
- *Standing:* you must be addressed correctly or lose the benefit
**Temptation — hand.** a skeletal hand that closes gently on yours
- *Benefit:* you cannot be separated from the party by force
- *Accept:* take the Vice **Attachment** · *Use:* **+2 Banes** on the tab
- *Standing:* nor can you leave one behind
**Attention trigger:** lingering.
**Bane beat — relicUse.** Who: *whoever spends the relic*. When: *each use*. repeatable. Say it aloud when it banks.
@@ -103,7 +103,7 @@ On success it is not alone, and The Silent Host will not open hostilities first.
**The clue is automatic:** chairs drawn up in a circle, all facing one seat — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a member of the faction, alone and not yet hostile — *talking costs time; not talking costs later*
**The decision.** a hand, skeletal, held out to be taken — *take it and you are not alone; you are also not alone later*
**Encounter — fight.** 1 Ghoul and 2 Skeletons
@@ -116,10 +116,10 @@ On success it is not alone, and The Silent Host will not open hostilities first.
- **Avoidable:** the Ghoul goes for court dress first — send someone plain
- *Forge:* `forgeEncounter({heat:"fight", hoard:false, post:false, folderId})`
**Hoard.** Tier **cache**.
**Temptation — mask.** a courtier's mask, gold leaf over lime-wood, the mouth fixed in a small smile
- *Benefit:* the Host receives you as court
**Temptation — chair.** a folding chair, kept dusted
- *Benefit:* set it down and something friendly sits
- *Accept:* free · *Use:* **+1 Bane** on the tab
- *Standing:* while worn you cannot be recognised by name
- *Standing:* it follows you if you leave it
**Attention trigger:** seenTwice.
**Bane beat — relicUse.** Who: *whoever spends the relic*. When: *each use*. repeatable. Say it aloud when it banks.
@@ -141,7 +141,7 @@ On success it is not alone, and The Silent Host will not open hostilities first.
**The clue is automatic:** a doorway with the hinges taken off — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** something valuable, awkward to carry — *carrying it slows you and it is not yours*
**The decision.** a door that will only admit one of you at a time — *splitting the party is exactly what this place wants*
**Encounter — fight.** 1 Ghoul and 2 Skeletons
@@ -154,10 +154,10 @@ On success it is not alone, and The Silent Host will not open hostilities first.
- **Avoidable:** the Ghoul goes for court dress first — send someone plain
- *Forge:* `forgeEncounter({heat:"fight", hoard:false, post:false, folderId})`
**Hoard.** Tier **cache**.
**Temptation — mask.** a courtier's mask, gold leaf over lime-wood, the mouth fixed in a small smile
- *Benefit:* the Host receives you as court
**Temptation — coat.** a coat from a full rack, still shaped to someone
- *Benefit:* once, be treated as expected and welcome
- *Accept:* free · *Use:* **+1 Bane** on the tab
- *Standing:* while worn you cannot be recognised by name
- *Standing:* you are expected to come back
**Attention trigger:** lingering.
**Bane beat — relicUse.** Who: *whoever spends the relic*. When: *each use*. repeatable. Say it aloud when it banks.
@@ -179,7 +179,7 @@ On success it is not alone, and The Silent Host will not open hostilities first.
**The clue is automatic:** a name called so often it wore into the wall — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** a sealed door, and a crack you could squeeze through — *the crack costs skin and a Bane on a failure*
**The decision.** a chair drawn out, and a place laid, and time to sit — *sitting costs a Turn and buys the Host's goodwill entirely*
**Attention trigger:** loud.
@@ -202,7 +202,7 @@ On success it is not alone, and The Silent Host will not open hostilities first.
**The clue is automatic:** a chair kept empty and dusted — and it was done deliberately.
[VANITY: Observation — 1 success] buys who did it, and roughly when
**The decision.** two ways on: one narrow and dark, one wide and announced — *the wide way is faster and the barrow hears it*
**The decision.** one of the dead follows you and will not be told otherwise — *let it come and doors open; send it back and they close*
**Encounter — battle.** 1 Wraith and 3 Skeletons
@@ -215,10 +215,10 @@ On success it is not alone, and The Silent Host will not open hostilities first.
- **Avoidable:** it will take an appeasement over a fight every time
- *Forge:* `forgeEncounter({heat:"battle", hoard:false, post:false, folderId})`
**Hoard.** Tier **chest**.
**Temptation — coronet.** a small crown, sized for someone who never grew
- *Benefit:* +1 die when others must defer to you
**Temptation — cup.** a second cup, always set out
- *Benefit:* share it and gain an ally among the dead for a scene
- *Accept:* free · *Use:* **+1 Bane** on the tab
- *Standing:* you must be addressed correctly or lose the benefit
- *Standing:* they expect to be included from now on
**Attention trigger:** disturbed.
**Bane beat — flattery.** Who: *whoever performs the appeasement*. When: *each time it is used*. repeatable. Say it aloud when it banks.