diff --git a/core/content/barrow.json b/core/content/barrow.json index 5239a0f..ce36ac7 100644 --- a/core/content/barrow.json +++ b/core/content/barrow.json @@ -2154,5 +2154,6 @@ "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/features below are FALLBACKS ONLY. Real content is motif-scoped under motifs.." + "_globalPoolsNote": "decisions/temptations/features below are FALLBACKS ONLY. Real content is motif-scoped under motifs..", + "placeNameStyle": "claimant" } \ No newline at end of file diff --git a/core/content/castle.json b/core/content/castle.json index efddf2c..c3281d5 100644 --- a/core/content/castle.json +++ b/core/content/castle.json @@ -1169,5 +1169,6 @@ } ] } - } + }, + "placeNameStyle": "claimant" } \ No newline at end of file diff --git a/core/content/forest.json b/core/content/forest.json new file mode 100644 index 0000000..6c37bbb --- /dev/null +++ b/core/content/forest.json @@ -0,0 +1,1176 @@ +{ + "id": "forest", + "label": "Forest", + "forgeStageType": "forest", + "schema": 1, + "_model": "The wild kernel: the APPETITE belongs to the place itself. A wood wants to be entered, fed, spread, or left uncounted, and the ACCOMMODATION is what it did to whoever was here — took them, grew through them, let them wander. Claimants are the wood's own names for itself.", + "facetProgression": { + "approach": "institution", + "complication": "ritual", + "turn": "demand", + "descent": "wound", + "threshold": "anchor", + "ending": "demand" + }, + "claimants": [ + "Green Man", + "Antlered Thing", + "Lady of Thorns", + "First Tree", + "Wood's Own", + "Charcoal-Burner", + "Hunt That Does Not End" + ], + "appetites": [ + { + "id": "entered", + "want": "to be walked into and never out of", + "lack": "walked out of", + "purpose": "nobody would ever find the far side", + "motif": "paths", + "prize": "lantern", + "conscript": "the travellers", + "asks": "\"Which way did you think you were going?\"", + "appeasement": { + "move": "walk in deliberately, and say aloud that you mean to", + "attribute": "Poise", + "successes": 2, + "why": "someone came in on purpose", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "fed", + "want": "to be given something at the edge", + "lack": "unfed", + "purpose": "nobody would ever pass without paying", + "motif": "tithe", + "prize": "bowl", + "conscript": "the offerings", + "asks": "\"What have you brought me?\"", + "appeasement": { + "move": "leave something of value at a root, without asking anything", + "attribute": "Flair", + "successes": 2, + "why": "the wood has been given something", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "spreading", + "want": "to grow over everything that was ever cleared", + "lack": "held back", + "purpose": "nothing would ever stay cut", + "motif": "reclaiming", + "prize": "axe", + "conscript": "the woodsmen", + "asks": "\"Why do you cut me?\"", + "appeasement": { + "move": "let something of yours be taken and grown over", + "attribute": "Poise", + "successes": 2, + "why": "the wood has taken back a little more", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "uncounted", + "want": "never to be mapped or measured", + "lack": "surveyed", + "purpose": "nobody would ever say how big it is", + "motif": "trackless", + "prize": "chain", + "conscript": "the surveyors", + "asks": "\"Do you know where you are?\"", + "appeasement": { + "move": "admit aloud that you are lost, and mean it", + "attribute": "Wits", + "successes": 2, + "why": "nobody can say where they are", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + } + ], + "accommodations": [ + { + "id": "took", + "text": "took {conscript} one at a time and did not give them back", + "cruelty": 3, + "fits": [ + "entered", + "fed", + "uncounted" + ] + }, + { + "id": "grewthrough", + "text": "grew through {conscript} until there was more wood than not", + "cruelty": 3, + "fits": [ + "spreading", + "fed", + "entered" + ] + }, + { + "id": "wandered", + "text": "let {conscript} wander until they stopped wanting to leave", + "cruelty": 2, + "fits": [ + "entered", + "uncounted", + "spreading" + ] + }, + { + "id": "traded", + "text": "took {conscript} for a season and returned something else", + "cruelty": 2, + "fits": [ + "fed", + "entered", + "uncounted" + ] + }, + { + "id": "edged", + "text": "kept {conscript} at the treeline, facing out, as a warning", + "cruelty": 3, + "fits": [ + "spreading", + "fed", + "uncounted" + ] + }, + { + "id": "rooted", + "text": "let {conscript} put down roots where they stood", + "cruelty": 1, + "fits": [ + "spreading", + "entered", + "fed" + ] + } + ], + "prizes": { + "lantern": { + "label": "the lantern that still shows the way out", + "function": "the only thing here that knows a direction" + }, + "bowl": { + "label": "the bowl the offerings were left in", + "function": "the only place the wood has ever been satisfied" + }, + "axe": { + "label": "the axe that held the treeline for a century", + "function": "the only thing that ever cut and stayed cut" + }, + "chain": { + "label": "a surveyor's chain, complete", + "function": "the only honest measurement anyone took" + } + }, + "placeNames": { + "first": [ + "The Wood of the", + "The Green of the", + "Under the", + "The Thicket of the", + "The Old Wood of the" + ] + }, + "areaNames": { + "approach": [ + "The Treeline", + "The Ride", + "The Verge", + "The Coppice Edge", + "The Old Track" + ], + "complication": [ + "The Coppice", + "The Charcoal Burns", + "The Deer Lawn", + "The Hollow Way", + "The Bramble Break" + ], + "turn": [ + "The Clearing", + "The Standing Stones", + "The Green Ride", + "The Crossways", + "The Sunken Glade" + ], + "descent": [ + "The Deep Wood", + "The Blackthorn", + "The Fallen Ground", + "The Wet Wood", + "The Root Hollow" + ], + "threshold": [ + "The Grove", + "The Ring of Oaks", + "The Last Clearing", + "The Thorn Gate", + "The Still Place" + ], + "ending": [ + "The First Tree", + "The Heart of the Wood", + "Where the Green Man Waits", + "The Oldest Clearing" + ] + }, + "factions": [ + { + "id": "taken", + "name": "the Taken", + "kind": "undead", + "essence": "still walking the paths they were lost on", + "handledBy": "courtesy" + }, + { + "id": "foresters", + "name": "charcoal-burners", + "kind": "living", + "essence": "working a wood that is working on them", + "handledBy": "trade" + }, + { + "id": "hunt", + "name": "the Hunt", + "kind": "beast", + "essence": "running something down, and has been for a long time", + "handledBy": "standing still" + }, + { + "id": "thorns", + "name": "what grew over the rest", + "kind": "beast", + "essence": "neither knows nor cares who came through", + "handledBy": "force" + } + ], + "triggerGlossary": { + "announced": "came in by the ride, singing or talking, as travellers do", + "seenTwice": "passed the same tree twice, or were watched from two sides", + "loud": "an axe, a shout, a horn — the wood minds all three", + "lingering": "stopped moving long enough for the wood to catch up", + "disturbed": "cut, broke or took something growing" + }, + "rosters": { + "skirmish": { + "line": "a Bat Swarm and 2 Giant Rats in the leaf-litter", + "foes": [ + { + "n": 1, + "name": "Bat Swarm", + "atk": 3, + "def": 3, + "grit": 1, + "nerve": 2, + "note": "disperses to nothing and re-forms" + }, + { + "n": 2, + "name": "Giant Rat", + "atk": 2, + "def": 2, + "grit": 1, + "nerve": 2, + "note": "flees from fire" + } + ], + "harmedBy": "anything; fire scatters all of it", + "avoid": "stand still and they pass around you" + }, + "fight": { + "line": "2 Dire Wolves", + "foes": [ + { + "n": 2, + "name": "Dire Wolf", + "atk": 4, + "def": 3, + "grit": 5, + "nerve": 3, + "note": "circles; takes the one who runs" + } + ], + "harmedBy": "anything", + "avoid": "nobody runs and they will not commit" + }, + "battle": { + "line": "1 Troll under the roots and 2 Dire Wolves", + "foes": [ + { + "n": 1, + "name": "Troll", + "atk": 5, + "def": 3, + "grit": 12, + "nerve": 4, + "note": "regrows unless the wound is burned" + }, + { + "n": 2, + "name": "Dire Wolf", + "atk": 4, + "def": 3, + "grit": 5, + "nerve": 3, + "note": "circles" + } + ], + "harmedBy": "anything, but the Troll only stays down if fire closes the wound", + "avoid": "it is territorial and will not follow past the treeline" + }, + "nightmare": { + "line": "the Hunt: 1 Wraith mounted, 1 Troll and 4 Dire Wolves", + "foes": [ + { + "n": 1, + "name": "Wraith", + "atk": 5, + "def": 3, + "grit": 10, + "nerve": 5, + "note": "INCORPOREAL — chill touch ignores armour, drains 1 max Grit" + }, + { + "n": 1, + "name": "Troll", + "atk": 5, + "def": 3, + "grit": 12, + "nerve": 4, + "note": "regrows unless burned" + }, + { + "n": 4, + "name": "Dire Wolf", + "atk": 4, + "def": 3, + "grit": 5, + "nerve": 3, + "note": "runs down anything that flees" + } + ], + "harmedBy": "blessed, silvered or magical weapons for the Wraith ONLY; fire for the Troll; anything for the wolves", + "avoid": "the Hunt passes over anyone standing perfectly still — say so before initiative" + } + }, + "motifs": { + "paths": { + "danger": "straying", + "dangerLine": "the wood is still taking people in, and it is patient about it", + "trigger": "lingering", + "facets": { + "institution": [ + "a ride cut straight for a mile and going nowhere", + "waymarks nailed to trees, all of them facing inward", + "a stile into the wood with no stile out" + ], + "ritual": [ + "boots left in a row at the treeline, toes pointing in", + "a path swept clear of leaf-fall by nothing at all", + "a lantern lit at dusk on a post with no road" + ], + "demand": [ + "a path that widens invitingly wherever you slow down", + "a clearing you keep arriving at from different directions", + "a track that is easier walking than the way back" + ], + "wound": [ + "one boot, worn through, a long way from any road", + "waymarks prised off and stacked at a root", + "a track worn deep by someone walking it for years" + ], + "anchor": [ + "a lantern still burning on a post at a crossway", + "a walking-staff planted upright, worn to the grain", + "a map-case, empty, hanging on a branch" + ] + }, + "features": [ + "a fresh blaze cut into bark, this season", + "a campfire cold but recent, with nobody's gear taken", + "a hat on a branch at head height", + "a path that was not there when you looked before", + "a coat folded neatly at a root", + "cart-ruts leading in and none leading out" + ], + "decisions": [ + { + "cue": "two paths, one plainly easier walking than the other", + "cost": "the wood made one of them easy on purpose", + "resolve": { + "roll": "Wits 2", + "success": "you read the leaf-fall and take the true path, losing no time", + "failure": "you take the easy path and it costs a Turn more than it should", + "orElse": "take the hard path deliberately: one Turn, but you know where you are" + } + }, + { + "cue": "a lantern burning on a post at a crossway", + "cost": "carrying it means the wood can see you coming", + "resolve": { + "roll": "Poise 2", + "success": "you take it and it shows the way — the party does not stray this delve", + "failure": "you take it and something starts walking toward the light", + "orElse": "leave it burning: no guidance, and no attention" + } + }, + { + "cue": "waymarks prised off and stacked at a root", + "cost": "resetting them is a service to whoever comes next", + "resolve": { + "roll": "Brawn 2", + "success": "you reset them and the Taken are grateful — they will guide you once", + "failure": "you are seen doing it and the wood closes a path behind you", + "orElse": "leave them stacked; you are not the wood's problem to solve" + } + }, + { + "cue": "a stranger's coat folded at a root, still dry", + "cost": "taking it is theft from someone probably still walking", + "resolve": { + "roll": "Wits 2", + "success": "you find the mark inside and learn who is still on these paths", + "failure": "you take it and something begins following at coat-distance", + "orElse": "leave it folded; you will pass it again" + } + }, + { + "cue": "a clearing you have now arrived at twice", + "cost": "the third time will not be a coincidence", + "resolve": { + "roll": "Wits 2", + "success": "you break the loop by leaving a mark and walking off it", + "failure": "you arrive a third time: lose a Turn and roll the clock", + "orElse": "walk out in a straight line whatever the ground does: one Turn, hard going" + } + }, + { + "cue": "a track worn deep by long use, going the wrong way", + "cost": "following it finds whoever wore it", + "resolve": { + "roll": "Poise 2", + "success": "you follow it and find them, and they can still be spoken to", + "failure": "you follow it and join it — the party walks it a Turn before noticing", + "orElse": "ignore it; the walker keeps walking" + } + } + ], + "situations": [ + { + "occupant": "one of the Taken", + "doing": "walking a path it has walked for a very long time", + "onArrival": "it falls into step beside you without a word", + "because": "it was never told it could stop", + "offer": "tell it the way out and it will show you a shortcut in return" + }, + { + "occupant": "a lantern on a post", + "doing": "burning steadily with nothing to burn", + "onArrival": "the flame turns toward you as you approach", + "because": "it was lit for someone who never came", + "offer": "carry it and the paths behave for one area" + }, + { + "occupant": "a living charcoal-burner", + "doing": "recutting a blaze the wood keeps growing over", + "onArrival": "they nod and keep working", + "because": "the marks must be kept or the burn cannot be found", + "offer": "help them cut and they will mark your route out" + }, + { + "occupant": "two of the Taken", + "doing": "standing at a fork, each facing a different way", + "onArrival": "they both turn to you to settle it", + "because": "they disagreed once and have not moved since", + "offer": "choose a path for them and both will walk it with you" + }, + { + "occupant": "the path", + "doing": "widening ahead of you into easy walking", + "onArrival": "the going becomes noticeably pleasant", + "because": "the wood is being welcoming", + "offer": "refuse the easy way aloud and the wood respects it" + }, + { + "occupant": "a walking-staff", + "doing": "standing upright where it was planted", + "onArrival": "the leaves around it are undisturbed", + "because": "whoever planted it meant to come back", + "offer": "take it up and the wood counts you a traveller, not a trespasser" + } + ], + "temptations": [ + { + "id": "lantern", + "cue": "a lantern that burns without fuel", + "benefit": "the party never loses its way", + "useCost": { + "bane": 1 + }, + "standingDrawback": "everything in the wood knows where you are" + }, + { + "id": "waymark", + "cue": "a waymark prised off a tree", + "benefit": "once, make a path lead where you say", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the path you displaced has to go somewhere" + }, + { + "id": "staff", + "cue": "a walking-staff worn to the grain", + "benefit": "once, walk out of anywhere in a straight line", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you cannot stop walking while you hold it" + }, + { + "id": "bootlace", + "cue": "a boot-lace from the row at the treeline", + "benefit": "once, retrace your steps exactly, however far", + "useCost": { + "bane": 2 + }, + "standingDrawback": "you retrace someone else's too", + "acceptanceCost": { + "vice": "Pride" + } + }, + { + "id": "mapcase", + "cue": "an empty map-case, oiled", + "benefit": "once, know the way to somewhere you have never been", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the wood learns where you wanted to go" + } + ] + }, + "tithe": { + "danger": "debt", + "dangerLine": "the wood is owed something, and it remembers who has not paid", + "trigger": "disturbed", + "facets": { + "institution": [ + "a stone at the treeline worn hollow by things set down on it", + "offerings nailed to a trunk at every height", + "a bowl at a root, never quite empty" + ], + "ritual": [ + "bread left out, untouched but not stale", + "a first cut of every coppice stacked and unburned", + "a horn sounded at the edge before anyone enters" + ], + "demand": [ + "a root grown across the path at exactly waist height", + "a hollow in a trunk at the height of an outstretched hand", + "a clearing where everything you carry feels heavier" + ], + "wound": [ + "offerings taken back, and the trees around them dead", + "a bowl smashed and the pieces kept in place", + "a treeline that has moved a field's width since the wall was built" + ], + "anchor": [ + "the offering-bowl itself, at the oldest root", + "a stone table with a hollow worn in the centre", + "a hoard of small given things in a hollow trunk" + ] + }, + "features": [ + "a fresh offering, still wet", + "a hollow tree stuffed with things nobody wanted", + "bread on a stone, untouched and not old", + "a coin pressed into bark and grown half over", + "a dead animal laid out deliberately, not eaten", + "a stack of first-cuttings, unburned" + ], + "decisions": [ + { + "cue": "a bowl at a root that is not quite empty", + "cost": "leaving something is cheap; taking something is not", + "resolve": { + "roll": "Flair 2", + "success": "you leave something well-chosen and the wood eases — no clock roll in this area", + "failure": "you leave something worthless and it is noticed: +1 Bane", + "orElse": "leave nothing and walk on; the wood keeps count" + } + }, + { + "cue": "a hollow trunk full of small given things", + "cost": "one of them is exactly what you need", + "resolve": { + "roll": "Wits 2", + "success": "you take one and leave one, and the exchange is accepted", + "failure": "you take without leaving, and the wood follows you the rest of the delve", + "orElse": "take nothing: the need goes unmet" + } + }, + { + "cue": "a root grown across the path at waist height", + "cost": "stepping over is trespass; going under is submission", + "resolve": { + "roll": "Poise 2", + "success": "you go under, which the wood counts as courtesy, and it lets you by", + "failure": "you step over and the wood treats you as a woodsman from here", + "orElse": "cut it: loud, roll the clock, and the wood remembers the cut" + } + }, + { + "cue": "a dead animal laid out deliberately at a crossway", + "cost": "it was left for something that has not come", + "resolve": { + "roll": "Wits 2", + "success": "you read what it was left for, and what that thing wants instead", + "failure": "you disturb it and whatever it was for arrives hungry", + "orElse": "leave it and go round: one Turn" + } + }, + { + "cue": "bread on a stone, fresh, in a wood with nobody in it", + "cost": "eating it accepts the wood's hospitality", + "resolve": { + "roll": "Poise 2", + "success": "you eat and are a guest — the Taken will not touch you this delve", + "failure": "you eat and are fed by the wood, which means you belong to it: +1 Bane", + "orElse": "do not eat; you stay hungry and free" + } + }, + { + "cue": "a coin pressed into bark and half grown over", + "cost": "prising it out takes back an offering", + "resolve": { + "roll": "Brawn 2", + "success": "you free it cleanly and the tree does not seem to mind", + "failure": "the bark tears and the wood takes something of yours instead", + "orElse": "leave it; it will be gone entirely in another century" + } + } + ], + "situations": [ + { + "occupant": "a living family", + "doing": "leaving bread on a stone and backing away from it", + "onArrival": "they gesture at you to be quiet, and to wait", + "because": "the tithe must be left and not watched", + "offer": "wait with them and they will share what the wood accepts" + }, + { + "occupant": "the offering-bowl", + "doing": "filling with rainwater that is not rain", + "onArrival": "the surface stills as you approach", + "because": "the bowl must not be empty", + "offer": "put something in it and the wood grants you one passage unmolested" + }, + { + "occupant": "one of the Taken", + "doing": "carrying an armful of small things toward a hollow trunk", + "onArrival": "it offers you the armful to hold", + "because": "the offerings must be collected and never are", + "offer": "help it carry and it will let you keep one" + }, + { + "occupant": "a charcoal-burner", + "doing": "stacking a first-cutting that will not be burned", + "onArrival": "they hand you an axe, handle first", + "because": "the first cut is owed and they cannot bring themselves to burn it", + "offer": "burn it for them and the wood counts the debt paid" + }, + { + "occupant": "the trees", + "doing": "closing a little around a stone with nothing on it", + "onArrival": "the gap you came through narrows", + "because": "something was due and was not left", + "offer": "leave anything at all and the gap opens" + }, + { + "occupant": "a horn", + "doing": "sounding at the treeline behind you", + "onArrival": "the note holds far longer than a horn should", + "because": "nobody announced themselves on the way in", + "offer": "answer it — shout back — and the wood treats you as expected" + } + ], + "temptations": [ + { + "id": "bowl", + "cue": "a shallow bowl worn smooth at the rim", + "benefit": "leave anything in it and the wood is satisfied, once", + "useCost": { + "bane": 1 + }, + "standingDrawback": "it must be filled again before you leave the wood" + }, + { + "id": "givenring", + "cue": "a ring from the hollow trunk, someone's offering", + "benefit": "once, be owed a favour by something in the wood", + "useCost": { + "bane": 1 + }, + "standingDrawback": "whoever gave it originally still wants it" + }, + { + "id": "firstcut", + "cue": "a bundle of first-cutting, unburned", + "benefit": "once, burn it to buy safe passage for a scene", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the smoke tells the wood exactly where you are" + }, + { + "id": "stonebread", + "cue": "bread from the offering-stone, still soft", + "benefit": "eat it and nothing in the wood will touch you", + "useCost": { + "bane": 2 + }, + "standingDrawback": "you are fed by the wood, and it counts you as its own", + "acceptanceCost": { + "vice": "Greed" + } + }, + { + "id": "barkcoin", + "cue": "a coin half grown into bark", + "benefit": "once, pay a debt you have not the means to pay", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the tree it came from is looking for it" + } + ] + }, + "reclaiming": { + "danger": "encroachment", + "dangerLine": "the wood is taking the ground back, and it does not stop while you watch", + "trigger": "lingering", + "facets": { + "institution": [ + "a field wall with trees growing out of the top of it", + "furrows still visible under twenty years of bramble", + "a gate standing on its own with wood on both sides" + ], + "ritual": [ + "coppice stools cut on a rotation nobody is keeping", + "a hedge laid by hands, thirty years ago, still holding", + "boundary trees marked and the marks grown shut" + ], + "demand": [ + "a clearing that is smaller than it was this morning", + "saplings standing in a doorway in a line", + "a path narrowing behind you as you walk it" + ], + "wound": [ + "a plough left in a furrow with a tree through it", + "a cottage with the roof gone and an oak in the hearth", + "an orchard gone feral, the grafts thrown off" + ], + "anchor": [ + "an axe in a stump, handle still sound", + "a hedging bill hung on a nail in a wall that is now a tree", + "a ring of stumps cut clean, and nothing regrown" + ] + }, + "features": [ + "a wall pushed over from the wood side, recently", + "a sapling in a doorway, this year's growth", + "a plough share polished by roots", + "a fence post with a living branch", + "a chimney standing alone in a thicket", + "a wheel-rut with a tree in the middle of it" + ], + "decisions": [ + { + "cue": "a clearing that is measurably smaller than the map says", + "cost": "the wood will not stop while you are watching it", + "resolve": { + "roll": "Wits 2", + "success": "you mark the edge and can tell how fast it is moving, which is useful", + "failure": "you lose the edge and the clearing closes a little around you", + "orElse": "move through fast and do not measure: one Turn, no knowledge" + } + }, + { + "cue": "an axe standing in a stump, handle sound", + "cost": "using it is a declaration; leaving it is a concession", + "resolve": { + "roll": "Brawn 2", + "success": "you cut what needs cutting and the ground stays open behind you", + "failure": "the cut does not take and the wood closes the way you came: lose a Turn", + "orElse": "leave the axe; the way narrows but nothing is provoked" + } + }, + { + "cue": "a cottage with an oak growing in the hearth", + "cost": "what is inside was never cleared out", + "resolve": { + "roll": "Wits 2", + "success": "you get in and out through the roots, and find what was left", + "failure": "the roots shift and the doorway closes: +1 Bane and a Turn to dig out", + "orElse": "leave it; whatever is inside stays inside" + } + }, + { + "cue": "a hedge laid by human hands, still holding, blocking the way", + "cost": "breaking it undoes a good piece of work", + "resolve": { + "roll": "Poise 2", + "success": "you find the layer's gap and pass without breaking a stem", + "failure": "you force through and the hedge is ruined: the wood counts it", + "orElse": "go round the hedge: two Turns" + } + }, + { + "cue": "saplings standing in a doorway in a deliberate line", + "cost": "pulling them is easy and will be noticed", + "resolve": { + "roll": "Brawn 2", + "success": "you pull them cleanly and replant them outside — the wood accepts the trade", + "failure": "you pull them and drop them: the wood takes something of yours in exchange", + "orElse": "step over them; the doorway is half closed and you are half through" + } + }, + { + "cue": "an orchard gone feral, and one tree still bearing", + "cost": "the fruit is good and it is not yours", + "resolve": { + "roll": "Flair 2", + "success": "you take fruit in a way the orchard permits, and are the better for it", + "failure": "you take too much and the orchard remembers the hand", + "orElse": "take none: you go hungry and unremarked" + } + } + ], + "situations": [ + { + "occupant": "a living farmer", + "doing": "cutting back a hedge that grew again behind them", + "onArrival": "they do not look up, and ask if you have a bill-hook", + "because": "the hedge must be kept and cannot be", + "offer": "cut with them and they will tell you where the old road ran" + }, + { + "occupant": "saplings", + "doing": "standing in a doorway in a straight line", + "onArrival": "the line shifts, very slightly, as you look at it", + "because": "the doorway is being closed", + "offer": "step through and say aloud that you are passing, and they let you" + }, + { + "occupant": "one of the Taken", + "doing": "laying a hedge with hands that are mostly root", + "onArrival": "it holds out a stem for you to bend", + "because": "the work was begun and must be finished", + "offer": "bend the stem and it will lay you a gap through anything" + }, + { + "occupant": "the clearing", + "doing": "closing by a hand's breadth while you stand in it", + "onArrival": "the light changes", + "because": "nothing cleared is permitted to stay cleared", + "offer": "cut one sapling and the clearing holds for the delve" + }, + { + "occupant": "an old orchard", + "doing": "dropping fruit in front of you as you pass", + "onArrival": "the fruit lands and does not roll", + "because": "the trees were tended once and remember it", + "offer": "eat, and the orchard will show you where the house was" + }, + { + "occupant": "two charcoal-burners", + "doing": "arguing over a coppice stool cut out of rotation", + "onArrival": "they appeal to you as a third opinion", + "because": "the rotation was lost and the wood is taking the difference", + "offer": "settle it and they will burn a path for you" + } + ], + "temptations": [ + { + "id": "axe", + "cue": "an axe with a sound handle", + "benefit": "once, cut a way through anything growing", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the wood counts every cut you make and settles later" + }, + { + "id": "hedgingbill", + "cue": "a hedging bill, oiled", + "benefit": "once, close a way behind you that nothing follows through", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the way stays shut for you too" + }, + { + "id": "graft", + "cue": "a graft from the last bearing tree", + "benefit": "once, make something grow where it should not", + "useCost": { + "bane": 1 + }, + "standingDrawback": "whatever you grow is the wood's, not yours" + }, + { + "id": "boundarystone", + "cue": "a boundary stone the wood has not yet swallowed", + "benefit": "once, hold a piece of ground against the wood for a scene", + "useCost": { + "bane": 2 + }, + "standingDrawback": "the wood takes twice that ground afterwards", + "acceptanceCost": { + "vice": "Greed" + } + }, + { + "id": "plough", + "cue": "an iron share off a buried plough", + "benefit": "once, break new ground and have it stay broken", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the wood knows there is iron in the party" + } + ] + }, + "trackless": { + "danger": "measurement", + "dangerLine": "the wood will not be counted, and it notices anyone trying", + "trigger": "seenTwice", + "facets": { + "institution": [ + "survey pegs driven in rows and every one at a different angle", + "a chain hung in a tree, complete, at head height", + "cairns built to mark a line that does not run straight" + ], + "ritual": [ + "a perambulation walked yearly and never finishing", + "a tally cut into a post, the count restarting", + "a rope measured out and coiled and measured again" + ], + "demand": [ + "ground that is longer walking than looking", + "a stand of trees that is not the same number twice", + "a distance that changes depending which way you go" + ], + "wound": [ + "a map torn into strips and nailed to six trees", + "a surveyor's theodolite smashed against its own tripod", + "a chain snapped and the links scattered along a mile" + ], + "anchor": [ + "a surveyor's chain, complete and coiled", + "a field-book with the last page filled in a shaking hand", + "a cairn with a brass plate under the top stone" + ] + }, + "features": [ + "survey pegs pulled and re-driven wrongly", + "a tally-post with the count started over", + "a rope coiled at a root, measured and unmeasured", + "a cairn built this season", + "a page of a field-book pinned to bark", + "chain-links scattered in a line through the leaf-litter" + ], + "decisions": [ + { + "cue": "a surveyor's chain hung complete in a tree", + "cost": "measuring anything here is the one thing the wood minds", + "resolve": { + "roll": "Wits 2", + "success": "you measure one distance honestly and it holds — you can trust that route", + "failure": "the measurement comes out different twice and you lose a Turn to it", + "orElse": "leave the chain hanging: no measurements, no offence" + } + }, + { + "cue": "a field-book with the last entry in a shaking hand", + "cost": "reading it tells you what the surveyor found", + "resolve": { + "roll": "Wits 1", + "success": "you read it and learn one true thing about the wood's shape", + "failure": "you read it aloud, and the wood hears itself described: +1 Bane", + "orElse": "leave it; the finding stays lost" + } + }, + { + "cue": "cairns marking a line that does not run straight", + "cost": "following the cairns is following someone else's error", + "resolve": { + "roll": "Wits 2", + "success": "you spot where the line was corrected and follow the true one", + "failure": "you follow the error and arrive somewhere you did not intend", + "orElse": "ignore the cairns entirely: one Turn, your own reckoning" + } + }, + { + "cue": "a stand of trees you have counted twice and got two answers", + "cost": "counting a third time is a challenge", + "resolve": { + "roll": "Poise 2", + "success": "you accept aloud that it cannot be counted, and the stand lets you through", + "failure": "you insist on a number and the stand does not open: lose a Turn", + "orElse": "do not count; walk through without looking too hard" + } + }, + { + "cue": "a map torn into strips and nailed to six trees", + "cost": "assembling it is possible and slow", + "resolve": { + "roll": "Wits 2", + "success": "you assemble enough of it to know where the far side is", + "failure": "you assemble it wrongly and are confidently mistaken for a Turn", + "orElse": "take one strip and go: you know a fragment, and no more" + } + }, + { + "cue": "a perambulation the Taken are still walking, and a gap in the line", + "cost": "joining the walk means walking it to the end", + "resolve": { + "roll": "Poise 2", + "success": "you join, walk one leg, and are let out at a place you chose", + "failure": "you join and the walk does not end where you hoped: lose a Turn", + "orElse": "let them pass: they nod, and the wood notes that you did not join" + } + } + ], + "situations": [ + { + "occupant": "a surveyor", + "doing": "measuring the same distance for the fourth time", + "onArrival": "it asks you to hold the far end of a chain", + "because": "the survey must close and has never closed", + "offer": "hold the chain and it will tell you the one distance it trusts" + }, + { + "occupant": "the trees", + "doing": "standing in a number that is not the same twice", + "onArrival": "the count you began comes out differently", + "because": "the wood will not be enumerated", + "offer": "stop counting aloud and the stand opens" + }, + { + "occupant": "one of the Taken", + "doing": "walking a perambulation with a gap in the line where someone dropped out", + "onArrival": "it beckons you into the gap", + "because": "the bounds must be walked by a full company", + "offer": "walk one leg with them and they will set you down wherever you name" + }, + { + "occupant": "a living cartographer", + "doing": "tearing up their own map, carefully, into strips", + "onArrival": "they offer you a strip without explanation", + "because": "the map was wrong and they would rather it were nowhere", + "offer": "take the strip and it shows one true thing" + }, + { + "occupant": "a cairn", + "doing": "standing where no cairn was a moment ago", + "onArrival": "the top stone is warm", + "because": "the line must be marked and the line keeps moving", + "offer": "add a stone and the cairns lead you somewhere useful, once" + }, + { + "occupant": "a tally-post", + "doing": "carrying a count that has restarted many times", + "onArrival": "the fresh cut is very fresh", + "because": "something is still counting and cannot finish", + "offer": "cut the next tally yourself and the wood accepts the number" + } + ], + "temptations": [ + { + "id": "chain", + "cue": "a surveyor's chain, complete", + "benefit": "once, know a true distance in the wood", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the wood knows you measured it" + }, + { + "id": "fieldbook", + "cue": "a field-book with one honest page", + "benefit": "once, know exactly where you are", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you cannot be lost, and the wood dislikes that" + }, + { + "id": "brassplate", + "cue": "a brass plate from under a cairn", + "benefit": "once, fix a place so it stays where it is", + "useCost": { + "bane": 1 + }, + "standingDrawback": "everything around that place moves instead" + }, + { + "id": "mapstrip", + "cue": "a strip of a torn map", + "benefit": "once, find the far side of anything", + "useCost": { + "bane": 2 + }, + "standingDrawback": "the rest of the map wants to be reassembled", + "acceptanceCost": { + "vice": "Pride" + } + }, + { + "id": "tallypost", + "cue": "a section of tally-post", + "benefit": "once, make a count come out the same twice", + "useCost": { + "bane": 1 + }, + "standingDrawback": "something begins counting you" + } + ] + } + }, + "placeNameStyle": "claimant" +} \ No newline at end of file diff --git a/core/content/index.json b/core/content/index.json index 65af274..9d363ae 100644 --- a/core/content/index.json +++ b/core/content/index.json @@ -12,6 +12,18 @@ "label": "Castle", "geometry": "barrow", "motifs": 4 + }, + { + "id": "forest", + "label": "Forest", + "geometry": "forest", + "motifs": 4 + }, + { + "id": "town", + "label": "Town", + "geometry": "village", + "motifs": 4 } ] } \ No newline at end of file diff --git a/core/content/town.json b/core/content/town.json new file mode 100644 index 0000000..01923f9 --- /dev/null +++ b/core/content/town.json @@ -0,0 +1,1190 @@ +{ + "id": "town", + "label": "Town", + "forgeStageType": "village", + "schema": 1, + "_model": "The settlement kernel: the APPETITE belongs to the place, not to a buried person. A town wants to be prosperous, respectable, safe or necessary, and its ACCOMMODATION is what a corporation does to keep it that way — price people out, charter them away, wall them off. Claimants are offices, not corpses.", + "facetProgression": { + "approach": "institution", + "complication": "ritual", + "turn": "demand", + "descent": "wound", + "threshold": "anchor", + "ending": "demand" + }, + "claimants": [ + "Guild of Mercers", + "Corporation", + "Watch Committee", + "Burgesses", + "Mayor-for-Life", + "Market Court", + "Company of Wool" + ], + "appetites": [ + { + "id": "prosperous", + "want": "never to be poor again", + "lack": "poor", + "purpose": "the money would never leave", + "motif": "ledger", + "prize": "charter", + "conscript": "the debtors", + "asks": "\"Who is paying for this?\"", + "appeasement": { + "move": "pay a debt that is not yours, in public", + "attribute": "Poise", + "successes": 2, + "why": "the books balance again", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "respectable", + "want": "never to be shamed", + "lack": "shamed", + "purpose": "nothing unseemly would ever be visible", + "motif": "appearances", + "prize": "portrait", + "conscript": "the shameful", + "asks": "\"What will people say?\"", + "appeasement": { + "move": "compliment the town on how well it is kept, in the street", + "attribute": "Flair", + "successes": 2, + "why": "the town is admired again", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "safe", + "want": "never to be sacked again", + "lack": "threatened", + "purpose": "nothing would ever get in", + "motif": "vigilance", + "prize": "keys", + "conscript": "the strangers", + "asks": "\"Who let you in?\"", + "appeasement": { + "move": "submit to being searched, without complaint", + "attribute": "Poise", + "successes": 2, + "why": "a stranger has been checked, properly", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "necessary", + "want": "never to be bypassed", + "lack": "bypassed", + "purpose": "the road would always come through here", + "motif": "thoroughfare", + "prize": "milestone", + "conscript": "the carters", + "asks": "\"Where do you think you are going?\"", + "appeasement": { + "move": "ask the town for directions, and take them", + "attribute": "Wits", + "successes": 2, + "why": "the town was needed for something", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + } + ], + "accommodations": [ + { + "id": "priced", + "text": "priced {conscript} out until they left of their own accord", + "cruelty": 2, + "fits": [ + "prosperous", + "respectable", + "necessary" + ] + }, + { + "id": "chartered", + "text": "chartered {conscript} away to another town entirely", + "cruelty": 2, + "fits": [ + "prosperous", + "respectable", + "safe" + ] + }, + { + "id": "walled", + "text": "walled {conscript} outside the gates and did not open them", + "cruelty": 3, + "fits": [ + "safe", + "respectable", + "prosperous" + ] + }, + { + "id": "indentured", + "text": "indentured {conscript} to the corporation for three generations", + "cruelty": 3, + "fits": [ + "prosperous", + "necessary" + ] + }, + { + "id": "struck", + "text": "struck {conscript} from the rolls, so the town could say they had never been here", + "cruelty": 3, + "fits": [ + "respectable", + "safe", + "necessary" + ] + }, + { + "id": "housed", + "text": "housed {conscript} where they could not be seen from the square", + "cruelty": 1, + "fits": [ + "respectable", + "safe", + "prosperous" + ] + } + ], + "prizes": { + "charter": { + "label": "the charter that made the town rich", + "function": "the only proof the privilege was ever granted" + }, + "portrait": { + "label": "the town's official portrait of itself", + "function": "the version everyone agreed to remember" + }, + "keys": { + "label": "the keys to the gates, all four", + "function": "the only things the walls answer to" + }, + "milestone": { + "label": "the milestone that says all roads pass here", + "function": "the reason anyone ever came" + } + }, + "placeNames": { + "first": [ + "Market", + "Nether", + "Old", + "Kings", + "Salt", + "Stone", + "Bridge", + "Cold" + ], + "second": [ + "Harrow", + "Weld", + "Combe", + "Barrow", + "Stanton", + "Marden", + "Fordwich", + "Thrale", + "Winbury", + "Cawley" + ] + }, + "areaNames": { + "approach": [ + "The Toll Road", + "The North Gate", + "The Bridge", + "The Weighbridge", + "The Outskirts" + ], + "complication": [ + "The Market Square", + "The Shambles", + "The Wool Hall", + "The Almshouse Row", + "The Cornmarket" + ], + "turn": [ + "The Guildhall", + "The Counting House", + "The Assembly Rooms", + "The Exchange", + "The Session House" + ], + "descent": [ + "The Undercrofts", + "The Debtors' Yard", + "The Tanneries", + "The Back Lanes", + "The Drain" + ], + "threshold": [ + "The Mayor's Parlour", + "The Muniment Chest", + "The Strongroom", + "The Charter Room", + "The Private Office" + ], + "ending": [ + "The Council Chamber", + "The High Table", + "The Mayor's Seat", + "The Corporation Assembled" + ] + }, + "factions": [ + { + "id": "corporation", + "name": "the Corporation", + "kind": "undead", + "essence": "still meeting, still minuting, still deciding", + "handledBy": "courtesy" + }, + { + "id": "debtors", + "name": "the debtors", + "kind": "living", + "essence": "owed on and owing, and still here", + "handledBy": "trade" + }, + { + "id": "watch", + "name": "the Watch", + "kind": "undead", + "essence": "checking papers nobody has issued for centuries", + "handledBy": "proof of right" + }, + { + "id": "outsiders", + "name": "what came in anyway", + "kind": "beast", + "essence": "never read the charter", + "handledBy": "force" + } + ], + "triggerGlossary": { + "announced": "came in by the main gate and paid the toll, publicly", + "seenTwice": "noticed by two different windows, or a window and a watchman", + "loud": "a raised voice in a public place — the town minds that", + "lingering": "stood about in the square long enough to be asked your business", + "disturbed": "moved something the Corporation had placed" + }, + "rosters": { + "skirmish": { + "line": "3 Bandits in watchmen's coats", + "foes": [ + { + "n": 3, + "name": "Bandit", + "atk": 3, + "def": 3, + "grit": 2, + "nerve": 2, + "note": "asks for your papers first" + } + ], + "harmedBy": "anything", + "avoid": "produce any document with a seal and they will accept it" + }, + "fight": { + "line": "4 Bandits and a Hobgoblin Soldier as sergeant", + "foes": [ + { + "n": 1, + "name": "Hobgoblin Soldier", + "atk": 4, + "def": 3, + "grit": 5, + "nerve": 3, + "note": "the others hold while he lasts" + }, + { + "n": 4, + "name": "Bandit", + "atk": 3, + "def": 3, + "grit": 2, + "nerve": 2, + "note": "breaks when the sergeant falls" + } + ], + "harmedBy": "anything", + "avoid": "drop the sergeant and the rest are Nerve 2" + }, + "battle": { + "line": "1 Necromancer of the Corporation and 4 Skeletons", + "foes": [ + { + "n": 1, + "name": "Necromancer", + "atk": 4, + "def": 3, + "grit": 6, + "nerve": 4, + "note": "raises one Skeleton per round from the paupers' ground" + }, + { + "n": 4, + "name": "Skeleton", + "atk": 3, + "def": 2, + "grit": 1, + "nerve": 5, + "note": "fearless" + } + ], + "harmedBy": "anything — but the Skeletons keep coming until the Necromancer stops", + "avoid": "he is a clerk and will take a bribe, in coin, publicly" + }, + "nightmare": { + "line": "1 Wraith of the Mayor, 1 Necromancer and 5 Skeletons", + "foes": [ + { + "n": 1, + "name": "Wraith", + "atk": 5, + "def": 3, + "grit": 10, + "nerve": 5, + "note": "INCORPOREAL — chill touch ignores armour, drains 1 max Grit" + }, + { + "n": 1, + "name": "Necromancer", + "atk": 4, + "def": 3, + "grit": 6, + "nerve": 4, + "note": "keeps raising" + }, + { + "n": 5, + "name": "Skeleton", + "atk": 3, + "def": 2, + "grit": 1, + "nerve": 5, + "note": "fearless" + } + ], + "harmedBy": "blessed, silvered or magical weapons for the Wraith ONLY; anything for the rest", + "avoid": "do not run this without an appeasement route open" + } + }, + "motifs": { + "ledger": { + "danger": "debt", + "dangerLine": "the town is still owed, and it keeps very good records", + "trigger": "lingering", + "facets": { + "institution": [ + "a debt-board in the square, names chalked and re-chalked", + "weights and measures chained to a bench, all of them shaved", + "a counting house with the shutters open at every hour" + ], + "ritual": [ + "a market bell rung at an hour when nobody trades", + "accounts read aloud to an empty hall, quarterly", + "coins counted into a box that is already full" + ], + "demand": [ + "a table set for a settlement, two chairs, one occupied", + "a room where a price is named before you ask", + "a hand out, palm up, at every doorway" + ], + "wound": [ + "a ledger with a page cut out and the stub still in", + "houses emptied for arrears and never re-let", + "a debtor's stone worn hollow by kneeling" + ], + "anchor": [ + "a charter under glass, the seal intact", + "a strongbox with one document and no coin", + "a tally-stick split and both halves kept" + ] + }, + "features": [ + "fresh chalk on a debt-board, this week's hand", + "a shop cleared out overnight and the door left open", + "coin scattered and not picked up, which never happens here", + "a stall taken down in a hurry, the frame still standing", + "a ledger left open at a page somebody wanted found", + "a lock changed on a door that was never locked" + ], + "decisions": [ + { + "cue": "a debt-board with a name you could pay off, or add to", + "cost": "paying is public and generous; adding is quiet and cruel", + "resolve": { + "roll": "Poise 2", + "success": "you pay in the square and the Corporation counts you a benefactor", + "failure": "your coin is refused as insufficient, publicly: +1 Bane", + "orElse": "walk past the board; nothing changes and nothing is owed" + } + }, + { + "cue": "a toll demanded at a gate by nobody in particular", + "cost": "the toll is real even if the collector is not", + "resolve": { + "roll": "Wits 2", + "success": "you work out the correct toll from the board and pay exactly it — the gate opens", + "failure": "you overpay and are marked as someone with money: every price rises for you", + "orElse": "go round to the weighbridge: two Turns, no toll" + } + }, + { + "cue": "a set of shaved weights and a merchant about to use them", + "cost": "exposing the fraud makes an enemy of the guild", + "resolve": { + "roll": "Flair 2", + "success": "you expose it in a way that flatters the Corporation's honesty and gain their favour", + "failure": "you expose it clumsily and the guild closes ranks: +1 Bane", + "orElse": "say nothing; the merchant remembers your discretion" + } + }, + { + "cue": "a strongbox that opens to whoever holds the charter", + "cost": "you do not hold the charter", + "resolve": { + "roll": "Wits 2", + "success": "you find the charter's copy in the muniment chest and the box opens", + "failure": "the box holds and the attempt is entered in a ledger somewhere", + "orElse": "break it: loud, roll the clock, contents damaged" + } + }, + { + "cue": "a debtor offering information for the price of their arrears", + "cost": "their information is good; their arrears are not small", + "resolve": { + "roll": "Poise 2", + "success": "you settle the debt at a discount and get the whole of what they know", + "failure": "you pay in full and they tell you half", + "orElse": "refuse: they tell you nothing and follow you at a distance" + } + }, + { + "cue": "a tally-stick, split, with the other half somewhere in the town", + "cost": "matching it proves a claim worth having", + "resolve": { + "roll": "Wits 2", + "success": "you match it against the counting-house half and hold a claim the town honours", + "failure": "you match it wrongly and hold a claim on nothing: +1 Bane", + "orElse": "leave it: no claim, no obligation" + } + } + ], + "situations": [ + { + "occupant": "a clerk of the Corporation", + "doing": "chalking a debt-board that has no room left", + "onArrival": "it asks whether you have come to settle", + "because": "the accounts must balance and never have", + "offer": "settle any debt at all and the whole board is wiped, which it badly wants" + }, + { + "occupant": "two living debtors", + "doing": "dividing a purse that is plainly not theirs", + "onArrival": "they stop and offer you a share", + "because": "they were paid to leave and could not", + "offer": "take the share and they will tell you who paid them" + }, + { + "occupant": "the Weighmaster", + "doing": "testing weights that are every one of them short", + "onArrival": "it hands you a weight and asks your honest opinion", + "because": "the measures must be certified and cannot be", + "offer": "certify them anyway and every trader in the town owes you" + }, + { + "occupant": "a market bell", + "doing": "ringing an hour when no trade is permitted", + "onArrival": "the square begins, very slowly, to fill", + "because": "the hour was never struck from the calendar", + "offer": "trade something, anything, and the market recognises you as a burgess" + }, + { + "occupant": "the Chamberlain", + "doing": "counting coin into a box that is already full", + "onArrival": "it does not look up, and asks you to hold the lid", + "because": "the count has never once come out right", + "offer": "hold the lid and it will tell you which house the shortfall went to" + }, + { + "occupant": "a living creditor", + "doing": "waiting outside a door with a writ and no bailiff", + "onArrival": "they ask if you are going in anyway", + "because": "the writ cannot be served without an officer", + "offer": "serve it for them and they hand you what is behind the door" + } + ], + "temptations": [ + { + "id": "charterseal", + "cue": "a seal matrix for the town's charter", + "benefit": "doors that check privilege open for you", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the Corporation expects you at its next meeting" + }, + { + "id": "tallystick", + "cue": "half a split tally-stick", + "benefit": "once, prove a debt is owed to you and be believed", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the other half is out there and its holder is looking" + }, + { + "id": "shavedweight", + "cue": "a weight, subtly light", + "benefit": "once, make a trade come out in your favour", + "useCost": { + "bane": 1 + }, + "standingDrawback": "traders begin to check everything you hand them" + }, + { + "id": "writ", + "cue": "a writ of distraint, unserved, name blank", + "benefit": "name someone and the Watch will detain them once", + "useCost": { + "bane": 2 + }, + "standingDrawback": "your own name is on the reverse in the same clerk's hand", + "acceptanceCost": { + "vice": "Greed" + } + }, + { + "id": "keytocounting", + "cue": "a small key to a counting-house drawer", + "benefit": "one locked box per scene opens", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the Corporation notices what has been opened" + } + ] + }, + "appearances": { + "danger": "scandal", + "dangerLine": "the town is being looked at, and it has arranged itself accordingly", + "trigger": "seenTwice", + "facets": { + "institution": [ + "a square where every frontage is painted and every back is not", + "shutters on the side of the street the road can see", + "a fine hall with a fine door and no rooms behind it" + ], + "ritual": [ + "a procession route swept daily, and only that route", + "a mayor's portrait unveiled every year to the same crowd", + "best clothes laid out in every house, for a visit that never comes" + ], + "demand": [ + "a street arranged so a visitor is always in view", + "a mirror set at the end of the square, facing in", + "a bench positioned for being seen sitting on" + ], + "wound": [ + "a row of houses with the fronts kept and the backs collapsed", + "a name painted over on a shopfront, badly", + "a portrait with one figure scraped out of the group" + ], + "anchor": [ + "the town's own portrait of itself, framed and lit", + "a visitor's book with one page and many signatures", + "a plan of the town as it would like to be" + ] + }, + "features": [ + "fresh paint on one side of a street only", + "a curtain drawn across an alley mouth", + "a scandal-sheet trodden into the mud, still legible", + "a shopfront boarded and painted to look occupied", + "chairs set out in the square for an audience", + "a signboard taken down and the hooks left" + ], + "decisions": [ + { + "cue": "an alley the town would rather you did not walk down", + "cost": "walking it sees what the frontage hides", + "resolve": { + "roll": "Wits 2", + "success": "you go down and back unobserved, and learn what the town is covering", + "failure": "you are seen coming out of it: +1 Bane and the Corporation cools toward you", + "orElse": "stay on the swept route: one Turn longer, no offence given" + } + }, + { + "cue": "a scandal-sheet naming somebody still influential here", + "cost": "reading it aloud is a weapon; pocketing it is leverage", + "resolve": { + "roll": "Flair 2", + "success": "you use it to open a door that flattery alone would not", + "failure": "you are seen holding it and become the story: +1 Bane", + "orElse": "burn it: the town relaxes and thanks you without saying so" + } + }, + { + "cue": "a group portrait with one figure scraped out", + "cost": "asking who it was is a rude question here", + "resolve": { + "roll": "Poise 2", + "success": "you ask it delicately enough to be answered honestly", + "failure": "you ask badly and the room closes: the next encounter starts hostile", + "orElse": "do not ask; the gap goes unexplained and you are liked for it" + } + }, + { + "cue": "a procession forming that expects you to join or stand aside", + "cost": "joining is endorsement; standing aside is comment", + "resolve": { + "roll": "Flair 2", + "success": "you join well and the town takes you for a person of standing", + "failure": "you join badly and are laughed at: +1 Bane", + "orElse": "stand aside respectfully: neutral, and you lose one Turn" + } + }, + { + "cue": "a house-front with no house behind it, and a way through", + "cost": "the way through is real; the pretence is what matters", + "resolve": { + "roll": "Brawn 2", + "success": "you slip through without bringing the frontage down", + "failure": "the frontage comes down, publicly: roll the clock", + "orElse": "go round the block: one Turn" + } + }, + { + "cue": "a visitor's book open at a blank page", + "cost": "signing puts you on the record, favourably or otherwise", + "resolve": { + "roll": "Flair 1", + "success": "you sign in a way that flatters the town and doors open", + "failure": "you sign plainly and the town judges the hand: +1 Bane", + "orElse": "leave it unsigned; you remain a stranger and are treated as one" + } + } + ], + "situations": [ + { + "occupant": "two of the Corporation", + "doing": "painting a frontage that is already perfect", + "onArrival": "they ask you to stand back and judge the colour", + "because": "the street must look well from the road", + "offer": "approve the colour warmly and they will let you behind it" + }, + { + "occupant": "a portrait-painter", + "doing": "scraping a figure out of a group portrait", + "onArrival": "it pauses, brush up, and asks whether you know the face", + "because": "the town resolved that person had never been here", + "offer": "name the face and it will tell you what they did" + }, + { + "occupant": "the Beadle", + "doing": "sweeping a route that is already clean", + "onArrival": "it sweeps around you rather than asking you to move", + "because": "the route must be ready and the visit never comes", + "offer": "tell it the visitor has arrived and it will escort you anywhere" + }, + { + "occupant": "a living journalist", + "doing": "copying a notice down before it is taken away", + "onArrival": "they pocket the paper and smile at you carefully", + "because": "the story is real and the town is faster than they are", + "offer": "offer to distract the Beadle and they will share what they have" + }, + { + "occupant": "the Mayor", + "doing": "rehearsing a welcome to an empty square", + "onArrival": "it welcomes you instead, warmly and at length", + "because": "the speech has never once been given", + "offer": "let it finish and the town treats you as its guest of honour" + }, + { + "occupant": "three of the town", + "doing": "standing in their best clothes at their doors", + "onArrival": "they nod as you pass, and keep standing", + "because": "word went round that someone important was coming", + "offer": "be that someone and every door on the street opens" + } + ], + "temptations": [ + { + "id": "townportrait", + "cue": "a small copy of the town's own portrait", + "benefit": "show it and be taken for a person of standing", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you are expected to behave like one, publicly" + }, + { + "id": "visitorsbook", + "cue": "a page torn from the visitor's book", + "benefit": "once, be remembered as having been welcome here", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the page is missed, and the Corporation asks after it" + }, + { + "id": "scandalsheet", + "cue": "a scandal-sheet, folded small", + "benefit": "once, make one person here do as you ask", + "useCost": { + "bane": 2 + }, + "standingDrawback": "they will tell others what you are holding", + "acceptanceCost": { + "vice": "Greed" + } + }, + { + "id": "bestcoat", + "cue": "a good coat, cut for the square", + "benefit": "the Watch does not stop you", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you cannot be seen in the back lanes wearing it" + }, + { + "id": "paintpot", + "cue": "a pot of the town's own paint", + "benefit": "once, make something look sound that is not", + "useCost": { + "bane": 1 + }, + "standingDrawback": "whatever you painted will fail at the worst moment" + } + ] + }, + "vigilance": { + "danger": "suspicion", + "dangerLine": "the town is still watching the road, and you came down it", + "trigger": "announced", + "facets": { + "institution": [ + "a gate that is shut at an hour nobody remembers agreeing", + "watch-boxes at every corner, all of them occupied", + "a wall built higher on the side facing the road" + ], + "ritual": [ + "papers demanded at a gate that has no gatekeeper", + "a curfew bell rung to an empty street", + "a roll of strangers read out nightly" + ], + "demand": [ + "a room you must be searched to leave", + "a bench where you are asked to wait and be looked at", + "a window arranged so the square can see who calls" + ], + "wound": [ + "a gate barred from inside with the bar broken anyway", + "a list of strangers with every name struck through", + "a house burned deliberately, alone in its row" + ], + "anchor": [ + "four gate-keys on one ring, hung where all can see", + "a strangers' book with the last entry unfinished", + "a bar for a gate, oiled, never used" + ] + }, + "features": [ + "a gate barred at midday, with no reason given", + "shutters closed on one house only", + "a watch-box with the brazier still warm", + "chalk marks on doors, recent, in a code", + "a barricade half-built across a lane", + "a dog kennel, empty, chain snapped" + ], + "decisions": [ + { + "cue": "a watchman demanding papers you do not have", + "cost": "any document with a seal will do, if given confidently", + "resolve": { + "roll": "Poise 2", + "success": "you produce something and it is accepted; the Watch passes you through", + "failure": "your papers are refused and you are entered in the strangers' book: +1 Bane", + "orElse": "go over the wall by the tannery: one Turn and a Brawn roll" + } + }, + { + "cue": "a gate shut against the hour, and a wicket beside it", + "cost": "the wicket admits one person at a time", + "resolve": { + "roll": "Wits 2", + "success": "you work out the wicket's trick and the party passes one by one, unremarked", + "failure": "the wicket sticks and the noise brings the Watch: roll the clock", + "orElse": "wait for the gate to open on the bell: two Turns" + } + }, + { + "cue": "a search you can submit to, or refuse", + "cost": "submitting means showing what you carry", + "resolve": { + "roll": "Poise 2", + "success": "you submit and the Watch counts you honest — no further checks this delve", + "failure": "you refuse and are followed for the rest of the delve", + "orElse": "let them search only one of you: partial trust, one Turn" + } + }, + { + "cue": "chalk marks on doors in a code the Watch uses", + "cost": "reading it tells you which houses are being watched", + "resolve": { + "roll": "Wits 2", + "success": "you read the code and know which doors are safe to knock at", + "failure": "you copy a mark wrongly onto yourselves without realising", + "orElse": "ignore the marks; knock and find out" + } + }, + { + "cue": "a curfew bell about to ring", + "cost": "being on the street after it is an offence here", + "resolve": { + "roll": "Flair 2", + "success": "you talk your way into a doorway before it rings and are sheltered", + "failure": "you are caught out after curfew: +1 Bane and the Watch escorts you", + "orElse": "run for the gate: one Turn, loud, roll the clock" + } + }, + { + "cue": "a strangers' book with your description already in it", + "cost": "somebody entered you before you arrived", + "resolve": { + "roll": "Wits 2", + "success": "you find who wrote it and what else they wrote", + "failure": "you alter the entry and the alteration is noticed: +1 Bane", + "orElse": "leave it; the Watch has your description and uses it" + } + } + ], + "situations": [ + { + "occupant": "a watchman", + "doing": "checking papers nobody has carried for a century", + "onArrival": "it puts out a hand and waits", + "because": "the order to stand the watch was never rescinded", + "offer": "hand it anything with a seal and it will wave you through and salute" + }, + { + "occupant": "the Constable", + "doing": "reading a roll of strangers aloud in an empty street", + "onArrival": "it reaches a blank and looks up at you", + "because": "the roll must be complete before the gate may open", + "offer": "give it names — any names — and the gate opens" + }, + { + "occupant": "two living smugglers", + "doing": "waiting for the curfew bell before moving a crate", + "onArrival": "they put a finger to their lips and shrug", + "because": "the Watch is predictable and they are patient", + "offer": "help them shift it and they show you the way through the wall" + }, + { + "occupant": "a gate", + "doing": "closing itself, slowly, on no schedule you can see", + "onArrival": "the bar begins to slide across", + "because": "the hour was set by a council that no longer sits", + "offer": "hold the bar and it will stay open behind you" + }, + { + "occupant": "the Searcher", + "doing": "turning out a bag that keeps refilling", + "onArrival": "it asks you to empty your pockets, apologetically", + "because": "the search must be thorough and never is", + "offer": "let it search you properly and the Watch leaves you alone thereafter" + }, + { + "occupant": "three of the Watch", + "doing": "standing at a corner, facing outward", + "onArrival": "they part to let you through without being asked", + "because": "something is expected from the road and it is not you", + "offer": "ask what they are watching for and they will tell you exactly" + } + ], + "temptations": [ + { + "id": "gatekeys", + "cue": "one of the four gate-keys", + "benefit": "one gate per scene opens for you", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the Watch counts the keys nightly and one is missing" + }, + { + "id": "papers", + "cue": "a set of papers with a good seal and a blank name", + "benefit": "pass any check in the town without a roll", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you must answer to the name you wrote" + }, + { + "id": "watchcode", + "cue": "a scrap listing the chalk-code", + "benefit": "once, know exactly which house is watched", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you begin marking doors yourself without noticing" + }, + { + "id": "curfewbell", + "cue": "a hand-bell from a watch-box", + "benefit": "ring it and the street empties for one scene", + "useCost": { + "bane": 2 + }, + "standingDrawback": "the Watch comes to see who rang", + "acceptanceCost": { + "vice": "Pride" + } + }, + { + "id": "strangersbook", + "cue": "a page of the strangers' book", + "benefit": "once, prove you were here all along", + "useCost": { + "bane": 1 + }, + "standingDrawback": "someone else's alibi is now missing" + } + ] + }, + "thoroughfare": { + "danger": "passage", + "dangerLine": "the town needs the road to come through it, and will arrange that", + "trigger": "lingering", + "facets": { + "institution": [ + "milestones all pointing here, some of them moved", + "a bridge that is the only bridge for a day's ride", + "roads that all bend, slightly, toward the square" + ], + "ritual": [ + "a toll taken at a bar that swings on nothing", + "carts waved through by a hand at a window", + "a road swept before a coach that never comes" + ], + "demand": [ + "a market you must cross to get anywhere at all", + "a square with one exit visible and three not", + "a street that returns you to where you started" + ], + "wound": [ + "a rival town's milestone, broken and kept", + "a road washed out and never repaired, deliberately", + "a bypass surveyed, staked, and the stakes pulled up" + ], + "anchor": [ + "the milestone that says all roads pass here", + "a map with one road drawn heavier than the rest", + "a bridge-toll board, the figures freshly cut" + ] + }, + "features": [ + "a signpost turned to point the wrong way", + "a road newly blocked with a felled tree", + "cart-ruts that stop in the middle of a field", + "a bridge plank taken up and laid beside the gap", + "survey stakes pulled up and stacked", + "a milestone with the distance recut" + ], + "decisions": [ + { + "cue": "a signpost that has plainly been turned", + "cost": "following it goes somewhere the town wants you to go", + "resolve": { + "roll": "Wits 2", + "success": "you read the wear on the post and work out the true direction", + "failure": "you follow it and lose a Turn, arriving where the town intended", + "orElse": "ask a local: they will tell you truly, and the town will know you asked" + } + }, + { + "cue": "a toll-bar across the only bridge", + "cost": "the toll is small; the record of paying it is not", + "resolve": { + "roll": "Poise 2", + "success": "you pay and are entered as legitimate traffic — the town stops obstructing you", + "failure": "you argue the toll and the bar stays down: lose a Turn, +1 Bane", + "orElse": "ford it downstream: one Turn, everything gets wet" + } + }, + { + "cue": "a market you must cross, and it does not want you to cross quickly", + "cost": "the crowd is the obstacle and it is deliberate", + "resolve": { + "roll": "Flair 2", + "success": "you move through by seeming to belong, and are not delayed", + "failure": "you are drawn into three transactions and lose a Turn", + "orElse": "go round by the back lanes: one Turn, and you are noticed doing it" + } + }, + { + "cue": "survey stakes for a bypass, pulled up and stacked", + "cost": "replanting them is a declaration of war on the town", + "resolve": { + "roll": "Brawn 2", + "success": "you replant enough to matter and the surveyors' ghosts owe you", + "failure": "you are seen at it: the Corporation treats you as hostile from here", + "orElse": "leave them stacked; the bypass stays unbuilt" + } + }, + { + "cue": "a square with three exits and only one that leaves", + "cost": "the other two return you here", + "resolve": { + "roll": "Wits 2", + "success": "you spot which street the ruts actually leave by", + "failure": "you take a returning street: lose a Turn and roll the clock", + "orElse": "follow a cart out: whichever way it goes, one Turn" + } + }, + { + "cue": "a milestone recut to move the town closer to everywhere", + "cost": "correcting it is honest and unwelcome", + "resolve": { + "roll": "Wits 1", + "success": "you read the older cut beneath and know the true distances", + "failure": "you accept the new figures and misjudge your time: lose a Turn", + "orElse": "take the milestone at its word and hurry" + } + } + ], + "situations": [ + { + "occupant": "the Tollkeeper", + "doing": "raising a bar that hangs on nothing at all", + "onArrival": "it names a toll and waits, hand out", + "because": "the bridge must be paid for and the bridge is gone", + "offer": "pay anything and it will tell you the true road" + }, + { + "occupant": "a carter", + "doing": "arguing with a signpost that has been turned", + "onArrival": "they appeal to you as a witness", + "because": "they have been round this way three times", + "offer": "settle the argument and they will carry you a stage" + }, + { + "occupant": "the Surveyor", + "doing": "staking out a bypass that the town keeps pulling up", + "onArrival": "it hands you the mallet without looking", + "because": "the survey must be completed and never is", + "offer": "drive one stake and it will show you the shortest way through" + }, + { + "occupant": "two of the Corporation", + "doing": "recutting a milestone, closer", + "onArrival": "they stand in front of the figures as you approach", + "because": "the distances must favour the town", + "offer": "admire the work and they will tell you the real distance, privately" + }, + { + "occupant": "a crowd", + "doing": "filling a square that was empty a moment ago", + "onArrival": "it closes gently around you and does not let you hurry", + "because": "the market must be busy when strangers pass", + "offer": "buy something and the crowd opens" + }, + { + "occupant": "the Bridge", + "doing": "holding itself up on a span that is not there", + "onArrival": "the planks settle as you step on", + "because": "the crossing must exist because the charter says so", + "offer": "cross confidently and it holds; hesitate and it does not" + } + ], + "temptations": [ + { + "id": "milestone", + "cue": "a milestone small enough to carry", + "benefit": "once, make a journey shorter than it is", + "useCost": { + "bane": 1 + }, + "standingDrawback": "distances you did not carry get longer" + }, + { + "id": "tollboard", + "cue": "a toll-board with the figures cut", + "benefit": "once, demand passage and be given it", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you are expected to keep the bridge in repair" + }, + { + "id": "roadmap", + "cue": "a map with one road drawn heavier", + "benefit": "never lose your way in the town", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you cannot see the roads it leaves out" + }, + { + "id": "bar", + "cue": "a length of toll-bar, iron-shod", + "benefit": "once, close a way behind you that nothing can pass", + "useCost": { + "bane": 2 + }, + "standingDrawback": "whatever you shut out waits at that spot", + "acceptanceCost": { + "vice": "Pride" + } + }, + { + "id": "carterswhip", + "cue": "a carter's whip, worn to the handle", + "benefit": "once, make anything give way and let you through", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the town treats you as traffic, not a guest" + } + ] + } + }, + "placeNameStyle": "own" +} \ No newline at end of file diff --git a/core/skeleton.mjs b/core/skeleton.mjs index 28e7ebe..48b1d36 100644 --- a/core/skeleton.mjs +++ b/core/skeleton.mjs @@ -64,6 +64,7 @@ export function generateSkeleton({ pack, areas = 6, ending = 'authored', rng }) const transgression = `The ${claimant} ${fill(accommodation.text, { conscript: appetite.conscript })}, ` + `so that ${appetite.purpose}.`; + // The bottom problem is the claimant itself — a person in a tomb, an office in a town. const bottomProblem = { label: `The ${claimant}`, @@ -79,8 +80,11 @@ export function generateSkeleton({ pack, areas = 6, ending = 'authored', rng }) }; const secondary = r.derive('faction2').pick(pack.factions.filter(f => f.id !== primary.id)); - // Named for its occupant. Drawing the name separately produced tombs named after strangers. - const placeName = `${r.derive('place').pick(pack.placeNames.first)} ${claimant}`; + // A barrow or keep is named for its occupant — drawing that separately produced tombs named + // after strangers. A settlement is not: it has its own name and the claimant merely runs it. + const placeName = pack.placeNameStyle === 'own' + ? `${r.derive('place1').pick(pack.placeNames.first)} ${r.derive('place2').pick(pack.placeNames.second)}` + : `${r.derive('place').pick(pack.placeNames.first)} ${claimant}`; // ---- the foreshadow chain ---------------------------------------------- const progression = pack.facetProgression ?? {}; diff --git a/foundry-module/module.json b/foundry-module/module.json index e5b55ed..76f694e 100644 --- a/foundry-module/module.json +++ b/foundry-module/module.json @@ -2,7 +2,7 @@ "id": "vanity-delve", "title": "DELVE — a dungeon layer for VANITY", "description": "Generates a coherent delve and sequences VANITY's Forge to stage it, one area at a time.", - "version": "0.2.0", + "version": "0.3.0", "compatibility": { "minimum": "13", "verified": "14.365" diff --git a/foundry-module/module/core/content/barrow.json b/foundry-module/module/core/content/barrow.json index b1c72d3..ce36ac7 100644 --- a/foundry-module/module/core/content/barrow.json +++ b/foundry-module/module/core/content/barrow.json @@ -25,7 +25,8 @@ "bane": 1 }, "repeatable": true - } + }, + "asks": "\"How do I look?\"" }, { "id": "remembered", @@ -47,7 +48,8 @@ "bane": 1 }, "repeatable": true - } + }, + "asks": "\"Say my name.\"" }, { "id": "obeyed", @@ -69,7 +71,8 @@ "bane": 1 }, "repeatable": true - } + }, + "asks": "\"Do as you are told.\"" }, { "id": "young", @@ -91,7 +94,8 @@ "bane": 1 }, "repeatable": true - } + }, + "asks": "\"Tell me I have not changed.\"" }, { "id": "envied", @@ -113,7 +117,8 @@ "bane": 1 }, "repeatable": true - } + }, + "asks": "\"What did you bring me?\"" }, { "id": "attended", @@ -135,7 +140,8 @@ "bane": 1 }, "repeatable": true - } + }, + "asks": "\"You are not leaving.\"" }, { "id": "forgiven", @@ -157,7 +163,8 @@ "bane": 1 }, "repeatable": true - } + }, + "asks": "\"Tell me it was not a sin.\"" }, { "id": "first", @@ -179,7 +186,8 @@ "bane": 1 }, "repeatable": true - } + }, + "asks": "\"Who goes first?\"" } ], "accommodations": [ @@ -2146,5 +2154,6 @@ "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/features below are FALLBACKS ONLY. Real content is motif-scoped under motifs.." + "_globalPoolsNote": "decisions/temptations/features below are FALLBACKS ONLY. Real content is motif-scoped under motifs..", + "placeNameStyle": "claimant" } \ No newline at end of file diff --git a/foundry-module/module/core/content/castle.json b/foundry-module/module/core/content/castle.json index efddf2c..c3281d5 100644 --- a/foundry-module/module/core/content/castle.json +++ b/foundry-module/module/core/content/castle.json @@ -1169,5 +1169,6 @@ } ] } - } + }, + "placeNameStyle": "claimant" } \ No newline at end of file diff --git a/foundry-module/module/core/content/forest.json b/foundry-module/module/core/content/forest.json new file mode 100644 index 0000000..6c37bbb --- /dev/null +++ b/foundry-module/module/core/content/forest.json @@ -0,0 +1,1176 @@ +{ + "id": "forest", + "label": "Forest", + "forgeStageType": "forest", + "schema": 1, + "_model": "The wild kernel: the APPETITE belongs to the place itself. A wood wants to be entered, fed, spread, or left uncounted, and the ACCOMMODATION is what it did to whoever was here — took them, grew through them, let them wander. Claimants are the wood's own names for itself.", + "facetProgression": { + "approach": "institution", + "complication": "ritual", + "turn": "demand", + "descent": "wound", + "threshold": "anchor", + "ending": "demand" + }, + "claimants": [ + "Green Man", + "Antlered Thing", + "Lady of Thorns", + "First Tree", + "Wood's Own", + "Charcoal-Burner", + "Hunt That Does Not End" + ], + "appetites": [ + { + "id": "entered", + "want": "to be walked into and never out of", + "lack": "walked out of", + "purpose": "nobody would ever find the far side", + "motif": "paths", + "prize": "lantern", + "conscript": "the travellers", + "asks": "\"Which way did you think you were going?\"", + "appeasement": { + "move": "walk in deliberately, and say aloud that you mean to", + "attribute": "Poise", + "successes": 2, + "why": "someone came in on purpose", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "fed", + "want": "to be given something at the edge", + "lack": "unfed", + "purpose": "nobody would ever pass without paying", + "motif": "tithe", + "prize": "bowl", + "conscript": "the offerings", + "asks": "\"What have you brought me?\"", + "appeasement": { + "move": "leave something of value at a root, without asking anything", + "attribute": "Flair", + "successes": 2, + "why": "the wood has been given something", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "spreading", + "want": "to grow over everything that was ever cleared", + "lack": "held back", + "purpose": "nothing would ever stay cut", + "motif": "reclaiming", + "prize": "axe", + "conscript": "the woodsmen", + "asks": "\"Why do you cut me?\"", + "appeasement": { + "move": "let something of yours be taken and grown over", + "attribute": "Poise", + "successes": 2, + "why": "the wood has taken back a little more", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "uncounted", + "want": "never to be mapped or measured", + "lack": "surveyed", + "purpose": "nobody would ever say how big it is", + "motif": "trackless", + "prize": "chain", + "conscript": "the surveyors", + "asks": "\"Do you know where you are?\"", + "appeasement": { + "move": "admit aloud that you are lost, and mean it", + "attribute": "Wits", + "successes": 2, + "why": "nobody can say where they are", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + } + ], + "accommodations": [ + { + "id": "took", + "text": "took {conscript} one at a time and did not give them back", + "cruelty": 3, + "fits": [ + "entered", + "fed", + "uncounted" + ] + }, + { + "id": "grewthrough", + "text": "grew through {conscript} until there was more wood than not", + "cruelty": 3, + "fits": [ + "spreading", + "fed", + "entered" + ] + }, + { + "id": "wandered", + "text": "let {conscript} wander until they stopped wanting to leave", + "cruelty": 2, + "fits": [ + "entered", + "uncounted", + "spreading" + ] + }, + { + "id": "traded", + "text": "took {conscript} for a season and returned something else", + "cruelty": 2, + "fits": [ + "fed", + "entered", + "uncounted" + ] + }, + { + "id": "edged", + "text": "kept {conscript} at the treeline, facing out, as a warning", + "cruelty": 3, + "fits": [ + "spreading", + "fed", + "uncounted" + ] + }, + { + "id": "rooted", + "text": "let {conscript} put down roots where they stood", + "cruelty": 1, + "fits": [ + "spreading", + "entered", + "fed" + ] + } + ], + "prizes": { + "lantern": { + "label": "the lantern that still shows the way out", + "function": "the only thing here that knows a direction" + }, + "bowl": { + "label": "the bowl the offerings were left in", + "function": "the only place the wood has ever been satisfied" + }, + "axe": { + "label": "the axe that held the treeline for a century", + "function": "the only thing that ever cut and stayed cut" + }, + "chain": { + "label": "a surveyor's chain, complete", + "function": "the only honest measurement anyone took" + } + }, + "placeNames": { + "first": [ + "The Wood of the", + "The Green of the", + "Under the", + "The Thicket of the", + "The Old Wood of the" + ] + }, + "areaNames": { + "approach": [ + "The Treeline", + "The Ride", + "The Verge", + "The Coppice Edge", + "The Old Track" + ], + "complication": [ + "The Coppice", + "The Charcoal Burns", + "The Deer Lawn", + "The Hollow Way", + "The Bramble Break" + ], + "turn": [ + "The Clearing", + "The Standing Stones", + "The Green Ride", + "The Crossways", + "The Sunken Glade" + ], + "descent": [ + "The Deep Wood", + "The Blackthorn", + "The Fallen Ground", + "The Wet Wood", + "The Root Hollow" + ], + "threshold": [ + "The Grove", + "The Ring of Oaks", + "The Last Clearing", + "The Thorn Gate", + "The Still Place" + ], + "ending": [ + "The First Tree", + "The Heart of the Wood", + "Where the Green Man Waits", + "The Oldest Clearing" + ] + }, + "factions": [ + { + "id": "taken", + "name": "the Taken", + "kind": "undead", + "essence": "still walking the paths they were lost on", + "handledBy": "courtesy" + }, + { + "id": "foresters", + "name": "charcoal-burners", + "kind": "living", + "essence": "working a wood that is working on them", + "handledBy": "trade" + }, + { + "id": "hunt", + "name": "the Hunt", + "kind": "beast", + "essence": "running something down, and has been for a long time", + "handledBy": "standing still" + }, + { + "id": "thorns", + "name": "what grew over the rest", + "kind": "beast", + "essence": "neither knows nor cares who came through", + "handledBy": "force" + } + ], + "triggerGlossary": { + "announced": "came in by the ride, singing or talking, as travellers do", + "seenTwice": "passed the same tree twice, or were watched from two sides", + "loud": "an axe, a shout, a horn — the wood minds all three", + "lingering": "stopped moving long enough for the wood to catch up", + "disturbed": "cut, broke or took something growing" + }, + "rosters": { + "skirmish": { + "line": "a Bat Swarm and 2 Giant Rats in the leaf-litter", + "foes": [ + { + "n": 1, + "name": "Bat Swarm", + "atk": 3, + "def": 3, + "grit": 1, + "nerve": 2, + "note": "disperses to nothing and re-forms" + }, + { + "n": 2, + "name": "Giant Rat", + "atk": 2, + "def": 2, + "grit": 1, + "nerve": 2, + "note": "flees from fire" + } + ], + "harmedBy": "anything; fire scatters all of it", + "avoid": "stand still and they pass around you" + }, + "fight": { + "line": "2 Dire Wolves", + "foes": [ + { + "n": 2, + "name": "Dire Wolf", + "atk": 4, + "def": 3, + "grit": 5, + "nerve": 3, + "note": "circles; takes the one who runs" + } + ], + "harmedBy": "anything", + "avoid": "nobody runs and they will not commit" + }, + "battle": { + "line": "1 Troll under the roots and 2 Dire Wolves", + "foes": [ + { + "n": 1, + "name": "Troll", + "atk": 5, + "def": 3, + "grit": 12, + "nerve": 4, + "note": "regrows unless the wound is burned" + }, + { + "n": 2, + "name": "Dire Wolf", + "atk": 4, + "def": 3, + "grit": 5, + "nerve": 3, + "note": "circles" + } + ], + "harmedBy": "anything, but the Troll only stays down if fire closes the wound", + "avoid": "it is territorial and will not follow past the treeline" + }, + "nightmare": { + "line": "the Hunt: 1 Wraith mounted, 1 Troll and 4 Dire Wolves", + "foes": [ + { + "n": 1, + "name": "Wraith", + "atk": 5, + "def": 3, + "grit": 10, + "nerve": 5, + "note": "INCORPOREAL — chill touch ignores armour, drains 1 max Grit" + }, + { + "n": 1, + "name": "Troll", + "atk": 5, + "def": 3, + "grit": 12, + "nerve": 4, + "note": "regrows unless burned" + }, + { + "n": 4, + "name": "Dire Wolf", + "atk": 4, + "def": 3, + "grit": 5, + "nerve": 3, + "note": "runs down anything that flees" + } + ], + "harmedBy": "blessed, silvered or magical weapons for the Wraith ONLY; fire for the Troll; anything for the wolves", + "avoid": "the Hunt passes over anyone standing perfectly still — say so before initiative" + } + }, + "motifs": { + "paths": { + "danger": "straying", + "dangerLine": "the wood is still taking people in, and it is patient about it", + "trigger": "lingering", + "facets": { + "institution": [ + "a ride cut straight for a mile and going nowhere", + "waymarks nailed to trees, all of them facing inward", + "a stile into the wood with no stile out" + ], + "ritual": [ + "boots left in a row at the treeline, toes pointing in", + "a path swept clear of leaf-fall by nothing at all", + "a lantern lit at dusk on a post with no road" + ], + "demand": [ + "a path that widens invitingly wherever you slow down", + "a clearing you keep arriving at from different directions", + "a track that is easier walking than the way back" + ], + "wound": [ + "one boot, worn through, a long way from any road", + "waymarks prised off and stacked at a root", + "a track worn deep by someone walking it for years" + ], + "anchor": [ + "a lantern still burning on a post at a crossway", + "a walking-staff planted upright, worn to the grain", + "a map-case, empty, hanging on a branch" + ] + }, + "features": [ + "a fresh blaze cut into bark, this season", + "a campfire cold but recent, with nobody's gear taken", + "a hat on a branch at head height", + "a path that was not there when you looked before", + "a coat folded neatly at a root", + "cart-ruts leading in and none leading out" + ], + "decisions": [ + { + "cue": "two paths, one plainly easier walking than the other", + "cost": "the wood made one of them easy on purpose", + "resolve": { + "roll": "Wits 2", + "success": "you read the leaf-fall and take the true path, losing no time", + "failure": "you take the easy path and it costs a Turn more than it should", + "orElse": "take the hard path deliberately: one Turn, but you know where you are" + } + }, + { + "cue": "a lantern burning on a post at a crossway", + "cost": "carrying it means the wood can see you coming", + "resolve": { + "roll": "Poise 2", + "success": "you take it and it shows the way — the party does not stray this delve", + "failure": "you take it and something starts walking toward the light", + "orElse": "leave it burning: no guidance, and no attention" + } + }, + { + "cue": "waymarks prised off and stacked at a root", + "cost": "resetting them is a service to whoever comes next", + "resolve": { + "roll": "Brawn 2", + "success": "you reset them and the Taken are grateful — they will guide you once", + "failure": "you are seen doing it and the wood closes a path behind you", + "orElse": "leave them stacked; you are not the wood's problem to solve" + } + }, + { + "cue": "a stranger's coat folded at a root, still dry", + "cost": "taking it is theft from someone probably still walking", + "resolve": { + "roll": "Wits 2", + "success": "you find the mark inside and learn who is still on these paths", + "failure": "you take it and something begins following at coat-distance", + "orElse": "leave it folded; you will pass it again" + } + }, + { + "cue": "a clearing you have now arrived at twice", + "cost": "the third time will not be a coincidence", + "resolve": { + "roll": "Wits 2", + "success": "you break the loop by leaving a mark and walking off it", + "failure": "you arrive a third time: lose a Turn and roll the clock", + "orElse": "walk out in a straight line whatever the ground does: one Turn, hard going" + } + }, + { + "cue": "a track worn deep by long use, going the wrong way", + "cost": "following it finds whoever wore it", + "resolve": { + "roll": "Poise 2", + "success": "you follow it and find them, and they can still be spoken to", + "failure": "you follow it and join it — the party walks it a Turn before noticing", + "orElse": "ignore it; the walker keeps walking" + } + } + ], + "situations": [ + { + "occupant": "one of the Taken", + "doing": "walking a path it has walked for a very long time", + "onArrival": "it falls into step beside you without a word", + "because": "it was never told it could stop", + "offer": "tell it the way out and it will show you a shortcut in return" + }, + { + "occupant": "a lantern on a post", + "doing": "burning steadily with nothing to burn", + "onArrival": "the flame turns toward you as you approach", + "because": "it was lit for someone who never came", + "offer": "carry it and the paths behave for one area" + }, + { + "occupant": "a living charcoal-burner", + "doing": "recutting a blaze the wood keeps growing over", + "onArrival": "they nod and keep working", + "because": "the marks must be kept or the burn cannot be found", + "offer": "help them cut and they will mark your route out" + }, + { + "occupant": "two of the Taken", + "doing": "standing at a fork, each facing a different way", + "onArrival": "they both turn to you to settle it", + "because": "they disagreed once and have not moved since", + "offer": "choose a path for them and both will walk it with you" + }, + { + "occupant": "the path", + "doing": "widening ahead of you into easy walking", + "onArrival": "the going becomes noticeably pleasant", + "because": "the wood is being welcoming", + "offer": "refuse the easy way aloud and the wood respects it" + }, + { + "occupant": "a walking-staff", + "doing": "standing upright where it was planted", + "onArrival": "the leaves around it are undisturbed", + "because": "whoever planted it meant to come back", + "offer": "take it up and the wood counts you a traveller, not a trespasser" + } + ], + "temptations": [ + { + "id": "lantern", + "cue": "a lantern that burns without fuel", + "benefit": "the party never loses its way", + "useCost": { + "bane": 1 + }, + "standingDrawback": "everything in the wood knows where you are" + }, + { + "id": "waymark", + "cue": "a waymark prised off a tree", + "benefit": "once, make a path lead where you say", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the path you displaced has to go somewhere" + }, + { + "id": "staff", + "cue": "a walking-staff worn to the grain", + "benefit": "once, walk out of anywhere in a straight line", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you cannot stop walking while you hold it" + }, + { + "id": "bootlace", + "cue": "a boot-lace from the row at the treeline", + "benefit": "once, retrace your steps exactly, however far", + "useCost": { + "bane": 2 + }, + "standingDrawback": "you retrace someone else's too", + "acceptanceCost": { + "vice": "Pride" + } + }, + { + "id": "mapcase", + "cue": "an empty map-case, oiled", + "benefit": "once, know the way to somewhere you have never been", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the wood learns where you wanted to go" + } + ] + }, + "tithe": { + "danger": "debt", + "dangerLine": "the wood is owed something, and it remembers who has not paid", + "trigger": "disturbed", + "facets": { + "institution": [ + "a stone at the treeline worn hollow by things set down on it", + "offerings nailed to a trunk at every height", + "a bowl at a root, never quite empty" + ], + "ritual": [ + "bread left out, untouched but not stale", + "a first cut of every coppice stacked and unburned", + "a horn sounded at the edge before anyone enters" + ], + "demand": [ + "a root grown across the path at exactly waist height", + "a hollow in a trunk at the height of an outstretched hand", + "a clearing where everything you carry feels heavier" + ], + "wound": [ + "offerings taken back, and the trees around them dead", + "a bowl smashed and the pieces kept in place", + "a treeline that has moved a field's width since the wall was built" + ], + "anchor": [ + "the offering-bowl itself, at the oldest root", + "a stone table with a hollow worn in the centre", + "a hoard of small given things in a hollow trunk" + ] + }, + "features": [ + "a fresh offering, still wet", + "a hollow tree stuffed with things nobody wanted", + "bread on a stone, untouched and not old", + "a coin pressed into bark and grown half over", + "a dead animal laid out deliberately, not eaten", + "a stack of first-cuttings, unburned" + ], + "decisions": [ + { + "cue": "a bowl at a root that is not quite empty", + "cost": "leaving something is cheap; taking something is not", + "resolve": { + "roll": "Flair 2", + "success": "you leave something well-chosen and the wood eases — no clock roll in this area", + "failure": "you leave something worthless and it is noticed: +1 Bane", + "orElse": "leave nothing and walk on; the wood keeps count" + } + }, + { + "cue": "a hollow trunk full of small given things", + "cost": "one of them is exactly what you need", + "resolve": { + "roll": "Wits 2", + "success": "you take one and leave one, and the exchange is accepted", + "failure": "you take without leaving, and the wood follows you the rest of the delve", + "orElse": "take nothing: the need goes unmet" + } + }, + { + "cue": "a root grown across the path at waist height", + "cost": "stepping over is trespass; going under is submission", + "resolve": { + "roll": "Poise 2", + "success": "you go under, which the wood counts as courtesy, and it lets you by", + "failure": "you step over and the wood treats you as a woodsman from here", + "orElse": "cut it: loud, roll the clock, and the wood remembers the cut" + } + }, + { + "cue": "a dead animal laid out deliberately at a crossway", + "cost": "it was left for something that has not come", + "resolve": { + "roll": "Wits 2", + "success": "you read what it was left for, and what that thing wants instead", + "failure": "you disturb it and whatever it was for arrives hungry", + "orElse": "leave it and go round: one Turn" + } + }, + { + "cue": "bread on a stone, fresh, in a wood with nobody in it", + "cost": "eating it accepts the wood's hospitality", + "resolve": { + "roll": "Poise 2", + "success": "you eat and are a guest — the Taken will not touch you this delve", + "failure": "you eat and are fed by the wood, which means you belong to it: +1 Bane", + "orElse": "do not eat; you stay hungry and free" + } + }, + { + "cue": "a coin pressed into bark and half grown over", + "cost": "prising it out takes back an offering", + "resolve": { + "roll": "Brawn 2", + "success": "you free it cleanly and the tree does not seem to mind", + "failure": "the bark tears and the wood takes something of yours instead", + "orElse": "leave it; it will be gone entirely in another century" + } + } + ], + "situations": [ + { + "occupant": "a living family", + "doing": "leaving bread on a stone and backing away from it", + "onArrival": "they gesture at you to be quiet, and to wait", + "because": "the tithe must be left and not watched", + "offer": "wait with them and they will share what the wood accepts" + }, + { + "occupant": "the offering-bowl", + "doing": "filling with rainwater that is not rain", + "onArrival": "the surface stills as you approach", + "because": "the bowl must not be empty", + "offer": "put something in it and the wood grants you one passage unmolested" + }, + { + "occupant": "one of the Taken", + "doing": "carrying an armful of small things toward a hollow trunk", + "onArrival": "it offers you the armful to hold", + "because": "the offerings must be collected and never are", + "offer": "help it carry and it will let you keep one" + }, + { + "occupant": "a charcoal-burner", + "doing": "stacking a first-cutting that will not be burned", + "onArrival": "they hand you an axe, handle first", + "because": "the first cut is owed and they cannot bring themselves to burn it", + "offer": "burn it for them and the wood counts the debt paid" + }, + { + "occupant": "the trees", + "doing": "closing a little around a stone with nothing on it", + "onArrival": "the gap you came through narrows", + "because": "something was due and was not left", + "offer": "leave anything at all and the gap opens" + }, + { + "occupant": "a horn", + "doing": "sounding at the treeline behind you", + "onArrival": "the note holds far longer than a horn should", + "because": "nobody announced themselves on the way in", + "offer": "answer it — shout back — and the wood treats you as expected" + } + ], + "temptations": [ + { + "id": "bowl", + "cue": "a shallow bowl worn smooth at the rim", + "benefit": "leave anything in it and the wood is satisfied, once", + "useCost": { + "bane": 1 + }, + "standingDrawback": "it must be filled again before you leave the wood" + }, + { + "id": "givenring", + "cue": "a ring from the hollow trunk, someone's offering", + "benefit": "once, be owed a favour by something in the wood", + "useCost": { + "bane": 1 + }, + "standingDrawback": "whoever gave it originally still wants it" + }, + { + "id": "firstcut", + "cue": "a bundle of first-cutting, unburned", + "benefit": "once, burn it to buy safe passage for a scene", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the smoke tells the wood exactly where you are" + }, + { + "id": "stonebread", + "cue": "bread from the offering-stone, still soft", + "benefit": "eat it and nothing in the wood will touch you", + "useCost": { + "bane": 2 + }, + "standingDrawback": "you are fed by the wood, and it counts you as its own", + "acceptanceCost": { + "vice": "Greed" + } + }, + { + "id": "barkcoin", + "cue": "a coin half grown into bark", + "benefit": "once, pay a debt you have not the means to pay", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the tree it came from is looking for it" + } + ] + }, + "reclaiming": { + "danger": "encroachment", + "dangerLine": "the wood is taking the ground back, and it does not stop while you watch", + "trigger": "lingering", + "facets": { + "institution": [ + "a field wall with trees growing out of the top of it", + "furrows still visible under twenty years of bramble", + "a gate standing on its own with wood on both sides" + ], + "ritual": [ + "coppice stools cut on a rotation nobody is keeping", + "a hedge laid by hands, thirty years ago, still holding", + "boundary trees marked and the marks grown shut" + ], + "demand": [ + "a clearing that is smaller than it was this morning", + "saplings standing in a doorway in a line", + "a path narrowing behind you as you walk it" + ], + "wound": [ + "a plough left in a furrow with a tree through it", + "a cottage with the roof gone and an oak in the hearth", + "an orchard gone feral, the grafts thrown off" + ], + "anchor": [ + "an axe in a stump, handle still sound", + "a hedging bill hung on a nail in a wall that is now a tree", + "a ring of stumps cut clean, and nothing regrown" + ] + }, + "features": [ + "a wall pushed over from the wood side, recently", + "a sapling in a doorway, this year's growth", + "a plough share polished by roots", + "a fence post with a living branch", + "a chimney standing alone in a thicket", + "a wheel-rut with a tree in the middle of it" + ], + "decisions": [ + { + "cue": "a clearing that is measurably smaller than the map says", + "cost": "the wood will not stop while you are watching it", + "resolve": { + "roll": "Wits 2", + "success": "you mark the edge and can tell how fast it is moving, which is useful", + "failure": "you lose the edge and the clearing closes a little around you", + "orElse": "move through fast and do not measure: one Turn, no knowledge" + } + }, + { + "cue": "an axe standing in a stump, handle sound", + "cost": "using it is a declaration; leaving it is a concession", + "resolve": { + "roll": "Brawn 2", + "success": "you cut what needs cutting and the ground stays open behind you", + "failure": "the cut does not take and the wood closes the way you came: lose a Turn", + "orElse": "leave the axe; the way narrows but nothing is provoked" + } + }, + { + "cue": "a cottage with an oak growing in the hearth", + "cost": "what is inside was never cleared out", + "resolve": { + "roll": "Wits 2", + "success": "you get in and out through the roots, and find what was left", + "failure": "the roots shift and the doorway closes: +1 Bane and a Turn to dig out", + "orElse": "leave it; whatever is inside stays inside" + } + }, + { + "cue": "a hedge laid by human hands, still holding, blocking the way", + "cost": "breaking it undoes a good piece of work", + "resolve": { + "roll": "Poise 2", + "success": "you find the layer's gap and pass without breaking a stem", + "failure": "you force through and the hedge is ruined: the wood counts it", + "orElse": "go round the hedge: two Turns" + } + }, + { + "cue": "saplings standing in a doorway in a deliberate line", + "cost": "pulling them is easy and will be noticed", + "resolve": { + "roll": "Brawn 2", + "success": "you pull them cleanly and replant them outside — the wood accepts the trade", + "failure": "you pull them and drop them: the wood takes something of yours in exchange", + "orElse": "step over them; the doorway is half closed and you are half through" + } + }, + { + "cue": "an orchard gone feral, and one tree still bearing", + "cost": "the fruit is good and it is not yours", + "resolve": { + "roll": "Flair 2", + "success": "you take fruit in a way the orchard permits, and are the better for it", + "failure": "you take too much and the orchard remembers the hand", + "orElse": "take none: you go hungry and unremarked" + } + } + ], + "situations": [ + { + "occupant": "a living farmer", + "doing": "cutting back a hedge that grew again behind them", + "onArrival": "they do not look up, and ask if you have a bill-hook", + "because": "the hedge must be kept and cannot be", + "offer": "cut with them and they will tell you where the old road ran" + }, + { + "occupant": "saplings", + "doing": "standing in a doorway in a straight line", + "onArrival": "the line shifts, very slightly, as you look at it", + "because": "the doorway is being closed", + "offer": "step through and say aloud that you are passing, and they let you" + }, + { + "occupant": "one of the Taken", + "doing": "laying a hedge with hands that are mostly root", + "onArrival": "it holds out a stem for you to bend", + "because": "the work was begun and must be finished", + "offer": "bend the stem and it will lay you a gap through anything" + }, + { + "occupant": "the clearing", + "doing": "closing by a hand's breadth while you stand in it", + "onArrival": "the light changes", + "because": "nothing cleared is permitted to stay cleared", + "offer": "cut one sapling and the clearing holds for the delve" + }, + { + "occupant": "an old orchard", + "doing": "dropping fruit in front of you as you pass", + "onArrival": "the fruit lands and does not roll", + "because": "the trees were tended once and remember it", + "offer": "eat, and the orchard will show you where the house was" + }, + { + "occupant": "two charcoal-burners", + "doing": "arguing over a coppice stool cut out of rotation", + "onArrival": "they appeal to you as a third opinion", + "because": "the rotation was lost and the wood is taking the difference", + "offer": "settle it and they will burn a path for you" + } + ], + "temptations": [ + { + "id": "axe", + "cue": "an axe with a sound handle", + "benefit": "once, cut a way through anything growing", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the wood counts every cut you make and settles later" + }, + { + "id": "hedgingbill", + "cue": "a hedging bill, oiled", + "benefit": "once, close a way behind you that nothing follows through", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the way stays shut for you too" + }, + { + "id": "graft", + "cue": "a graft from the last bearing tree", + "benefit": "once, make something grow where it should not", + "useCost": { + "bane": 1 + }, + "standingDrawback": "whatever you grow is the wood's, not yours" + }, + { + "id": "boundarystone", + "cue": "a boundary stone the wood has not yet swallowed", + "benefit": "once, hold a piece of ground against the wood for a scene", + "useCost": { + "bane": 2 + }, + "standingDrawback": "the wood takes twice that ground afterwards", + "acceptanceCost": { + "vice": "Greed" + } + }, + { + "id": "plough", + "cue": "an iron share off a buried plough", + "benefit": "once, break new ground and have it stay broken", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the wood knows there is iron in the party" + } + ] + }, + "trackless": { + "danger": "measurement", + "dangerLine": "the wood will not be counted, and it notices anyone trying", + "trigger": "seenTwice", + "facets": { + "institution": [ + "survey pegs driven in rows and every one at a different angle", + "a chain hung in a tree, complete, at head height", + "cairns built to mark a line that does not run straight" + ], + "ritual": [ + "a perambulation walked yearly and never finishing", + "a tally cut into a post, the count restarting", + "a rope measured out and coiled and measured again" + ], + "demand": [ + "ground that is longer walking than looking", + "a stand of trees that is not the same number twice", + "a distance that changes depending which way you go" + ], + "wound": [ + "a map torn into strips and nailed to six trees", + "a surveyor's theodolite smashed against its own tripod", + "a chain snapped and the links scattered along a mile" + ], + "anchor": [ + "a surveyor's chain, complete and coiled", + "a field-book with the last page filled in a shaking hand", + "a cairn with a brass plate under the top stone" + ] + }, + "features": [ + "survey pegs pulled and re-driven wrongly", + "a tally-post with the count started over", + "a rope coiled at a root, measured and unmeasured", + "a cairn built this season", + "a page of a field-book pinned to bark", + "chain-links scattered in a line through the leaf-litter" + ], + "decisions": [ + { + "cue": "a surveyor's chain hung complete in a tree", + "cost": "measuring anything here is the one thing the wood minds", + "resolve": { + "roll": "Wits 2", + "success": "you measure one distance honestly and it holds — you can trust that route", + "failure": "the measurement comes out different twice and you lose a Turn to it", + "orElse": "leave the chain hanging: no measurements, no offence" + } + }, + { + "cue": "a field-book with the last entry in a shaking hand", + "cost": "reading it tells you what the surveyor found", + "resolve": { + "roll": "Wits 1", + "success": "you read it and learn one true thing about the wood's shape", + "failure": "you read it aloud, and the wood hears itself described: +1 Bane", + "orElse": "leave it; the finding stays lost" + } + }, + { + "cue": "cairns marking a line that does not run straight", + "cost": "following the cairns is following someone else's error", + "resolve": { + "roll": "Wits 2", + "success": "you spot where the line was corrected and follow the true one", + "failure": "you follow the error and arrive somewhere you did not intend", + "orElse": "ignore the cairns entirely: one Turn, your own reckoning" + } + }, + { + "cue": "a stand of trees you have counted twice and got two answers", + "cost": "counting a third time is a challenge", + "resolve": { + "roll": "Poise 2", + "success": "you accept aloud that it cannot be counted, and the stand lets you through", + "failure": "you insist on a number and the stand does not open: lose a Turn", + "orElse": "do not count; walk through without looking too hard" + } + }, + { + "cue": "a map torn into strips and nailed to six trees", + "cost": "assembling it is possible and slow", + "resolve": { + "roll": "Wits 2", + "success": "you assemble enough of it to know where the far side is", + "failure": "you assemble it wrongly and are confidently mistaken for a Turn", + "orElse": "take one strip and go: you know a fragment, and no more" + } + }, + { + "cue": "a perambulation the Taken are still walking, and a gap in the line", + "cost": "joining the walk means walking it to the end", + "resolve": { + "roll": "Poise 2", + "success": "you join, walk one leg, and are let out at a place you chose", + "failure": "you join and the walk does not end where you hoped: lose a Turn", + "orElse": "let them pass: they nod, and the wood notes that you did not join" + } + } + ], + "situations": [ + { + "occupant": "a surveyor", + "doing": "measuring the same distance for the fourth time", + "onArrival": "it asks you to hold the far end of a chain", + "because": "the survey must close and has never closed", + "offer": "hold the chain and it will tell you the one distance it trusts" + }, + { + "occupant": "the trees", + "doing": "standing in a number that is not the same twice", + "onArrival": "the count you began comes out differently", + "because": "the wood will not be enumerated", + "offer": "stop counting aloud and the stand opens" + }, + { + "occupant": "one of the Taken", + "doing": "walking a perambulation with a gap in the line where someone dropped out", + "onArrival": "it beckons you into the gap", + "because": "the bounds must be walked by a full company", + "offer": "walk one leg with them and they will set you down wherever you name" + }, + { + "occupant": "a living cartographer", + "doing": "tearing up their own map, carefully, into strips", + "onArrival": "they offer you a strip without explanation", + "because": "the map was wrong and they would rather it were nowhere", + "offer": "take the strip and it shows one true thing" + }, + { + "occupant": "a cairn", + "doing": "standing where no cairn was a moment ago", + "onArrival": "the top stone is warm", + "because": "the line must be marked and the line keeps moving", + "offer": "add a stone and the cairns lead you somewhere useful, once" + }, + { + "occupant": "a tally-post", + "doing": "carrying a count that has restarted many times", + "onArrival": "the fresh cut is very fresh", + "because": "something is still counting and cannot finish", + "offer": "cut the next tally yourself and the wood accepts the number" + } + ], + "temptations": [ + { + "id": "chain", + "cue": "a surveyor's chain, complete", + "benefit": "once, know a true distance in the wood", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the wood knows you measured it" + }, + { + "id": "fieldbook", + "cue": "a field-book with one honest page", + "benefit": "once, know exactly where you are", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you cannot be lost, and the wood dislikes that" + }, + { + "id": "brassplate", + "cue": "a brass plate from under a cairn", + "benefit": "once, fix a place so it stays where it is", + "useCost": { + "bane": 1 + }, + "standingDrawback": "everything around that place moves instead" + }, + { + "id": "mapstrip", + "cue": "a strip of a torn map", + "benefit": "once, find the far side of anything", + "useCost": { + "bane": 2 + }, + "standingDrawback": "the rest of the map wants to be reassembled", + "acceptanceCost": { + "vice": "Pride" + } + }, + { + "id": "tallypost", + "cue": "a section of tally-post", + "benefit": "once, make a count come out the same twice", + "useCost": { + "bane": 1 + }, + "standingDrawback": "something begins counting you" + } + ] + } + }, + "placeNameStyle": "claimant" +} \ No newline at end of file diff --git a/foundry-module/module/core/content/index.json b/foundry-module/module/core/content/index.json index 65af274..9d363ae 100644 --- a/foundry-module/module/core/content/index.json +++ b/foundry-module/module/core/content/index.json @@ -12,6 +12,18 @@ "label": "Castle", "geometry": "barrow", "motifs": 4 + }, + { + "id": "forest", + "label": "Forest", + "geometry": "forest", + "motifs": 4 + }, + { + "id": "town", + "label": "Town", + "geometry": "village", + "motifs": 4 } ] } \ No newline at end of file diff --git a/foundry-module/module/core/content/town.json b/foundry-module/module/core/content/town.json new file mode 100644 index 0000000..01923f9 --- /dev/null +++ b/foundry-module/module/core/content/town.json @@ -0,0 +1,1190 @@ +{ + "id": "town", + "label": "Town", + "forgeStageType": "village", + "schema": 1, + "_model": "The settlement kernel: the APPETITE belongs to the place, not to a buried person. A town wants to be prosperous, respectable, safe or necessary, and its ACCOMMODATION is what a corporation does to keep it that way — price people out, charter them away, wall them off. Claimants are offices, not corpses.", + "facetProgression": { + "approach": "institution", + "complication": "ritual", + "turn": "demand", + "descent": "wound", + "threshold": "anchor", + "ending": "demand" + }, + "claimants": [ + "Guild of Mercers", + "Corporation", + "Watch Committee", + "Burgesses", + "Mayor-for-Life", + "Market Court", + "Company of Wool" + ], + "appetites": [ + { + "id": "prosperous", + "want": "never to be poor again", + "lack": "poor", + "purpose": "the money would never leave", + "motif": "ledger", + "prize": "charter", + "conscript": "the debtors", + "asks": "\"Who is paying for this?\"", + "appeasement": { + "move": "pay a debt that is not yours, in public", + "attribute": "Poise", + "successes": 2, + "why": "the books balance again", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "respectable", + "want": "never to be shamed", + "lack": "shamed", + "purpose": "nothing unseemly would ever be visible", + "motif": "appearances", + "prize": "portrait", + "conscript": "the shameful", + "asks": "\"What will people say?\"", + "appeasement": { + "move": "compliment the town on how well it is kept, in the street", + "attribute": "Flair", + "successes": 2, + "why": "the town is admired again", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "safe", + "want": "never to be sacked again", + "lack": "threatened", + "purpose": "nothing would ever get in", + "motif": "vigilance", + "prize": "keys", + "conscript": "the strangers", + "asks": "\"Who let you in?\"", + "appeasement": { + "move": "submit to being searched, without complaint", + "attribute": "Poise", + "successes": 2, + "why": "a stranger has been checked, properly", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + }, + { + "id": "necessary", + "want": "never to be bypassed", + "lack": "bypassed", + "purpose": "the road would always come through here", + "motif": "thoroughfare", + "prize": "milestone", + "conscript": "the carters", + "asks": "\"Where do you think you are going?\"", + "appeasement": { + "move": "ask the town for directions, and take them", + "attribute": "Wits", + "successes": 2, + "why": "the town was needed for something", + "gain": { + "vanity": 1 + }, + "cost": { + "bane": 1 + }, + "repeatable": true + } + } + ], + "accommodations": [ + { + "id": "priced", + "text": "priced {conscript} out until they left of their own accord", + "cruelty": 2, + "fits": [ + "prosperous", + "respectable", + "necessary" + ] + }, + { + "id": "chartered", + "text": "chartered {conscript} away to another town entirely", + "cruelty": 2, + "fits": [ + "prosperous", + "respectable", + "safe" + ] + }, + { + "id": "walled", + "text": "walled {conscript} outside the gates and did not open them", + "cruelty": 3, + "fits": [ + "safe", + "respectable", + "prosperous" + ] + }, + { + "id": "indentured", + "text": "indentured {conscript} to the corporation for three generations", + "cruelty": 3, + "fits": [ + "prosperous", + "necessary" + ] + }, + { + "id": "struck", + "text": "struck {conscript} from the rolls, so the town could say they had never been here", + "cruelty": 3, + "fits": [ + "respectable", + "safe", + "necessary" + ] + }, + { + "id": "housed", + "text": "housed {conscript} where they could not be seen from the square", + "cruelty": 1, + "fits": [ + "respectable", + "safe", + "prosperous" + ] + } + ], + "prizes": { + "charter": { + "label": "the charter that made the town rich", + "function": "the only proof the privilege was ever granted" + }, + "portrait": { + "label": "the town's official portrait of itself", + "function": "the version everyone agreed to remember" + }, + "keys": { + "label": "the keys to the gates, all four", + "function": "the only things the walls answer to" + }, + "milestone": { + "label": "the milestone that says all roads pass here", + "function": "the reason anyone ever came" + } + }, + "placeNames": { + "first": [ + "Market", + "Nether", + "Old", + "Kings", + "Salt", + "Stone", + "Bridge", + "Cold" + ], + "second": [ + "Harrow", + "Weld", + "Combe", + "Barrow", + "Stanton", + "Marden", + "Fordwich", + "Thrale", + "Winbury", + "Cawley" + ] + }, + "areaNames": { + "approach": [ + "The Toll Road", + "The North Gate", + "The Bridge", + "The Weighbridge", + "The Outskirts" + ], + "complication": [ + "The Market Square", + "The Shambles", + "The Wool Hall", + "The Almshouse Row", + "The Cornmarket" + ], + "turn": [ + "The Guildhall", + "The Counting House", + "The Assembly Rooms", + "The Exchange", + "The Session House" + ], + "descent": [ + "The Undercrofts", + "The Debtors' Yard", + "The Tanneries", + "The Back Lanes", + "The Drain" + ], + "threshold": [ + "The Mayor's Parlour", + "The Muniment Chest", + "The Strongroom", + "The Charter Room", + "The Private Office" + ], + "ending": [ + "The Council Chamber", + "The High Table", + "The Mayor's Seat", + "The Corporation Assembled" + ] + }, + "factions": [ + { + "id": "corporation", + "name": "the Corporation", + "kind": "undead", + "essence": "still meeting, still minuting, still deciding", + "handledBy": "courtesy" + }, + { + "id": "debtors", + "name": "the debtors", + "kind": "living", + "essence": "owed on and owing, and still here", + "handledBy": "trade" + }, + { + "id": "watch", + "name": "the Watch", + "kind": "undead", + "essence": "checking papers nobody has issued for centuries", + "handledBy": "proof of right" + }, + { + "id": "outsiders", + "name": "what came in anyway", + "kind": "beast", + "essence": "never read the charter", + "handledBy": "force" + } + ], + "triggerGlossary": { + "announced": "came in by the main gate and paid the toll, publicly", + "seenTwice": "noticed by two different windows, or a window and a watchman", + "loud": "a raised voice in a public place — the town minds that", + "lingering": "stood about in the square long enough to be asked your business", + "disturbed": "moved something the Corporation had placed" + }, + "rosters": { + "skirmish": { + "line": "3 Bandits in watchmen's coats", + "foes": [ + { + "n": 3, + "name": "Bandit", + "atk": 3, + "def": 3, + "grit": 2, + "nerve": 2, + "note": "asks for your papers first" + } + ], + "harmedBy": "anything", + "avoid": "produce any document with a seal and they will accept it" + }, + "fight": { + "line": "4 Bandits and a Hobgoblin Soldier as sergeant", + "foes": [ + { + "n": 1, + "name": "Hobgoblin Soldier", + "atk": 4, + "def": 3, + "grit": 5, + "nerve": 3, + "note": "the others hold while he lasts" + }, + { + "n": 4, + "name": "Bandit", + "atk": 3, + "def": 3, + "grit": 2, + "nerve": 2, + "note": "breaks when the sergeant falls" + } + ], + "harmedBy": "anything", + "avoid": "drop the sergeant and the rest are Nerve 2" + }, + "battle": { + "line": "1 Necromancer of the Corporation and 4 Skeletons", + "foes": [ + { + "n": 1, + "name": "Necromancer", + "atk": 4, + "def": 3, + "grit": 6, + "nerve": 4, + "note": "raises one Skeleton per round from the paupers' ground" + }, + { + "n": 4, + "name": "Skeleton", + "atk": 3, + "def": 2, + "grit": 1, + "nerve": 5, + "note": "fearless" + } + ], + "harmedBy": "anything — but the Skeletons keep coming until the Necromancer stops", + "avoid": "he is a clerk and will take a bribe, in coin, publicly" + }, + "nightmare": { + "line": "1 Wraith of the Mayor, 1 Necromancer and 5 Skeletons", + "foes": [ + { + "n": 1, + "name": "Wraith", + "atk": 5, + "def": 3, + "grit": 10, + "nerve": 5, + "note": "INCORPOREAL — chill touch ignores armour, drains 1 max Grit" + }, + { + "n": 1, + "name": "Necromancer", + "atk": 4, + "def": 3, + "grit": 6, + "nerve": 4, + "note": "keeps raising" + }, + { + "n": 5, + "name": "Skeleton", + "atk": 3, + "def": 2, + "grit": 1, + "nerve": 5, + "note": "fearless" + } + ], + "harmedBy": "blessed, silvered or magical weapons for the Wraith ONLY; anything for the rest", + "avoid": "do not run this without an appeasement route open" + } + }, + "motifs": { + "ledger": { + "danger": "debt", + "dangerLine": "the town is still owed, and it keeps very good records", + "trigger": "lingering", + "facets": { + "institution": [ + "a debt-board in the square, names chalked and re-chalked", + "weights and measures chained to a bench, all of them shaved", + "a counting house with the shutters open at every hour" + ], + "ritual": [ + "a market bell rung at an hour when nobody trades", + "accounts read aloud to an empty hall, quarterly", + "coins counted into a box that is already full" + ], + "demand": [ + "a table set for a settlement, two chairs, one occupied", + "a room where a price is named before you ask", + "a hand out, palm up, at every doorway" + ], + "wound": [ + "a ledger with a page cut out and the stub still in", + "houses emptied for arrears and never re-let", + "a debtor's stone worn hollow by kneeling" + ], + "anchor": [ + "a charter under glass, the seal intact", + "a strongbox with one document and no coin", + "a tally-stick split and both halves kept" + ] + }, + "features": [ + "fresh chalk on a debt-board, this week's hand", + "a shop cleared out overnight and the door left open", + "coin scattered and not picked up, which never happens here", + "a stall taken down in a hurry, the frame still standing", + "a ledger left open at a page somebody wanted found", + "a lock changed on a door that was never locked" + ], + "decisions": [ + { + "cue": "a debt-board with a name you could pay off, or add to", + "cost": "paying is public and generous; adding is quiet and cruel", + "resolve": { + "roll": "Poise 2", + "success": "you pay in the square and the Corporation counts you a benefactor", + "failure": "your coin is refused as insufficient, publicly: +1 Bane", + "orElse": "walk past the board; nothing changes and nothing is owed" + } + }, + { + "cue": "a toll demanded at a gate by nobody in particular", + "cost": "the toll is real even if the collector is not", + "resolve": { + "roll": "Wits 2", + "success": "you work out the correct toll from the board and pay exactly it — the gate opens", + "failure": "you overpay and are marked as someone with money: every price rises for you", + "orElse": "go round to the weighbridge: two Turns, no toll" + } + }, + { + "cue": "a set of shaved weights and a merchant about to use them", + "cost": "exposing the fraud makes an enemy of the guild", + "resolve": { + "roll": "Flair 2", + "success": "you expose it in a way that flatters the Corporation's honesty and gain their favour", + "failure": "you expose it clumsily and the guild closes ranks: +1 Bane", + "orElse": "say nothing; the merchant remembers your discretion" + } + }, + { + "cue": "a strongbox that opens to whoever holds the charter", + "cost": "you do not hold the charter", + "resolve": { + "roll": "Wits 2", + "success": "you find the charter's copy in the muniment chest and the box opens", + "failure": "the box holds and the attempt is entered in a ledger somewhere", + "orElse": "break it: loud, roll the clock, contents damaged" + } + }, + { + "cue": "a debtor offering information for the price of their arrears", + "cost": "their information is good; their arrears are not small", + "resolve": { + "roll": "Poise 2", + "success": "you settle the debt at a discount and get the whole of what they know", + "failure": "you pay in full and they tell you half", + "orElse": "refuse: they tell you nothing and follow you at a distance" + } + }, + { + "cue": "a tally-stick, split, with the other half somewhere in the town", + "cost": "matching it proves a claim worth having", + "resolve": { + "roll": "Wits 2", + "success": "you match it against the counting-house half and hold a claim the town honours", + "failure": "you match it wrongly and hold a claim on nothing: +1 Bane", + "orElse": "leave it: no claim, no obligation" + } + } + ], + "situations": [ + { + "occupant": "a clerk of the Corporation", + "doing": "chalking a debt-board that has no room left", + "onArrival": "it asks whether you have come to settle", + "because": "the accounts must balance and never have", + "offer": "settle any debt at all and the whole board is wiped, which it badly wants" + }, + { + "occupant": "two living debtors", + "doing": "dividing a purse that is plainly not theirs", + "onArrival": "they stop and offer you a share", + "because": "they were paid to leave and could not", + "offer": "take the share and they will tell you who paid them" + }, + { + "occupant": "the Weighmaster", + "doing": "testing weights that are every one of them short", + "onArrival": "it hands you a weight and asks your honest opinion", + "because": "the measures must be certified and cannot be", + "offer": "certify them anyway and every trader in the town owes you" + }, + { + "occupant": "a market bell", + "doing": "ringing an hour when no trade is permitted", + "onArrival": "the square begins, very slowly, to fill", + "because": "the hour was never struck from the calendar", + "offer": "trade something, anything, and the market recognises you as a burgess" + }, + { + "occupant": "the Chamberlain", + "doing": "counting coin into a box that is already full", + "onArrival": "it does not look up, and asks you to hold the lid", + "because": "the count has never once come out right", + "offer": "hold the lid and it will tell you which house the shortfall went to" + }, + { + "occupant": "a living creditor", + "doing": "waiting outside a door with a writ and no bailiff", + "onArrival": "they ask if you are going in anyway", + "because": "the writ cannot be served without an officer", + "offer": "serve it for them and they hand you what is behind the door" + } + ], + "temptations": [ + { + "id": "charterseal", + "cue": "a seal matrix for the town's charter", + "benefit": "doors that check privilege open for you", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the Corporation expects you at its next meeting" + }, + { + "id": "tallystick", + "cue": "half a split tally-stick", + "benefit": "once, prove a debt is owed to you and be believed", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the other half is out there and its holder is looking" + }, + { + "id": "shavedweight", + "cue": "a weight, subtly light", + "benefit": "once, make a trade come out in your favour", + "useCost": { + "bane": 1 + }, + "standingDrawback": "traders begin to check everything you hand them" + }, + { + "id": "writ", + "cue": "a writ of distraint, unserved, name blank", + "benefit": "name someone and the Watch will detain them once", + "useCost": { + "bane": 2 + }, + "standingDrawback": "your own name is on the reverse in the same clerk's hand", + "acceptanceCost": { + "vice": "Greed" + } + }, + { + "id": "keytocounting", + "cue": "a small key to a counting-house drawer", + "benefit": "one locked box per scene opens", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the Corporation notices what has been opened" + } + ] + }, + "appearances": { + "danger": "scandal", + "dangerLine": "the town is being looked at, and it has arranged itself accordingly", + "trigger": "seenTwice", + "facets": { + "institution": [ + "a square where every frontage is painted and every back is not", + "shutters on the side of the street the road can see", + "a fine hall with a fine door and no rooms behind it" + ], + "ritual": [ + "a procession route swept daily, and only that route", + "a mayor's portrait unveiled every year to the same crowd", + "best clothes laid out in every house, for a visit that never comes" + ], + "demand": [ + "a street arranged so a visitor is always in view", + "a mirror set at the end of the square, facing in", + "a bench positioned for being seen sitting on" + ], + "wound": [ + "a row of houses with the fronts kept and the backs collapsed", + "a name painted over on a shopfront, badly", + "a portrait with one figure scraped out of the group" + ], + "anchor": [ + "the town's own portrait of itself, framed and lit", + "a visitor's book with one page and many signatures", + "a plan of the town as it would like to be" + ] + }, + "features": [ + "fresh paint on one side of a street only", + "a curtain drawn across an alley mouth", + "a scandal-sheet trodden into the mud, still legible", + "a shopfront boarded and painted to look occupied", + "chairs set out in the square for an audience", + "a signboard taken down and the hooks left" + ], + "decisions": [ + { + "cue": "an alley the town would rather you did not walk down", + "cost": "walking it sees what the frontage hides", + "resolve": { + "roll": "Wits 2", + "success": "you go down and back unobserved, and learn what the town is covering", + "failure": "you are seen coming out of it: +1 Bane and the Corporation cools toward you", + "orElse": "stay on the swept route: one Turn longer, no offence given" + } + }, + { + "cue": "a scandal-sheet naming somebody still influential here", + "cost": "reading it aloud is a weapon; pocketing it is leverage", + "resolve": { + "roll": "Flair 2", + "success": "you use it to open a door that flattery alone would not", + "failure": "you are seen holding it and become the story: +1 Bane", + "orElse": "burn it: the town relaxes and thanks you without saying so" + } + }, + { + "cue": "a group portrait with one figure scraped out", + "cost": "asking who it was is a rude question here", + "resolve": { + "roll": "Poise 2", + "success": "you ask it delicately enough to be answered honestly", + "failure": "you ask badly and the room closes: the next encounter starts hostile", + "orElse": "do not ask; the gap goes unexplained and you are liked for it" + } + }, + { + "cue": "a procession forming that expects you to join or stand aside", + "cost": "joining is endorsement; standing aside is comment", + "resolve": { + "roll": "Flair 2", + "success": "you join well and the town takes you for a person of standing", + "failure": "you join badly and are laughed at: +1 Bane", + "orElse": "stand aside respectfully: neutral, and you lose one Turn" + } + }, + { + "cue": "a house-front with no house behind it, and a way through", + "cost": "the way through is real; the pretence is what matters", + "resolve": { + "roll": "Brawn 2", + "success": "you slip through without bringing the frontage down", + "failure": "the frontage comes down, publicly: roll the clock", + "orElse": "go round the block: one Turn" + } + }, + { + "cue": "a visitor's book open at a blank page", + "cost": "signing puts you on the record, favourably or otherwise", + "resolve": { + "roll": "Flair 1", + "success": "you sign in a way that flatters the town and doors open", + "failure": "you sign plainly and the town judges the hand: +1 Bane", + "orElse": "leave it unsigned; you remain a stranger and are treated as one" + } + } + ], + "situations": [ + { + "occupant": "two of the Corporation", + "doing": "painting a frontage that is already perfect", + "onArrival": "they ask you to stand back and judge the colour", + "because": "the street must look well from the road", + "offer": "approve the colour warmly and they will let you behind it" + }, + { + "occupant": "a portrait-painter", + "doing": "scraping a figure out of a group portrait", + "onArrival": "it pauses, brush up, and asks whether you know the face", + "because": "the town resolved that person had never been here", + "offer": "name the face and it will tell you what they did" + }, + { + "occupant": "the Beadle", + "doing": "sweeping a route that is already clean", + "onArrival": "it sweeps around you rather than asking you to move", + "because": "the route must be ready and the visit never comes", + "offer": "tell it the visitor has arrived and it will escort you anywhere" + }, + { + "occupant": "a living journalist", + "doing": "copying a notice down before it is taken away", + "onArrival": "they pocket the paper and smile at you carefully", + "because": "the story is real and the town is faster than they are", + "offer": "offer to distract the Beadle and they will share what they have" + }, + { + "occupant": "the Mayor", + "doing": "rehearsing a welcome to an empty square", + "onArrival": "it welcomes you instead, warmly and at length", + "because": "the speech has never once been given", + "offer": "let it finish and the town treats you as its guest of honour" + }, + { + "occupant": "three of the town", + "doing": "standing in their best clothes at their doors", + "onArrival": "they nod as you pass, and keep standing", + "because": "word went round that someone important was coming", + "offer": "be that someone and every door on the street opens" + } + ], + "temptations": [ + { + "id": "townportrait", + "cue": "a small copy of the town's own portrait", + "benefit": "show it and be taken for a person of standing", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you are expected to behave like one, publicly" + }, + { + "id": "visitorsbook", + "cue": "a page torn from the visitor's book", + "benefit": "once, be remembered as having been welcome here", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the page is missed, and the Corporation asks after it" + }, + { + "id": "scandalsheet", + "cue": "a scandal-sheet, folded small", + "benefit": "once, make one person here do as you ask", + "useCost": { + "bane": 2 + }, + "standingDrawback": "they will tell others what you are holding", + "acceptanceCost": { + "vice": "Greed" + } + }, + { + "id": "bestcoat", + "cue": "a good coat, cut for the square", + "benefit": "the Watch does not stop you", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you cannot be seen in the back lanes wearing it" + }, + { + "id": "paintpot", + "cue": "a pot of the town's own paint", + "benefit": "once, make something look sound that is not", + "useCost": { + "bane": 1 + }, + "standingDrawback": "whatever you painted will fail at the worst moment" + } + ] + }, + "vigilance": { + "danger": "suspicion", + "dangerLine": "the town is still watching the road, and you came down it", + "trigger": "announced", + "facets": { + "institution": [ + "a gate that is shut at an hour nobody remembers agreeing", + "watch-boxes at every corner, all of them occupied", + "a wall built higher on the side facing the road" + ], + "ritual": [ + "papers demanded at a gate that has no gatekeeper", + "a curfew bell rung to an empty street", + "a roll of strangers read out nightly" + ], + "demand": [ + "a room you must be searched to leave", + "a bench where you are asked to wait and be looked at", + "a window arranged so the square can see who calls" + ], + "wound": [ + "a gate barred from inside with the bar broken anyway", + "a list of strangers with every name struck through", + "a house burned deliberately, alone in its row" + ], + "anchor": [ + "four gate-keys on one ring, hung where all can see", + "a strangers' book with the last entry unfinished", + "a bar for a gate, oiled, never used" + ] + }, + "features": [ + "a gate barred at midday, with no reason given", + "shutters closed on one house only", + "a watch-box with the brazier still warm", + "chalk marks on doors, recent, in a code", + "a barricade half-built across a lane", + "a dog kennel, empty, chain snapped" + ], + "decisions": [ + { + "cue": "a watchman demanding papers you do not have", + "cost": "any document with a seal will do, if given confidently", + "resolve": { + "roll": "Poise 2", + "success": "you produce something and it is accepted; the Watch passes you through", + "failure": "your papers are refused and you are entered in the strangers' book: +1 Bane", + "orElse": "go over the wall by the tannery: one Turn and a Brawn roll" + } + }, + { + "cue": "a gate shut against the hour, and a wicket beside it", + "cost": "the wicket admits one person at a time", + "resolve": { + "roll": "Wits 2", + "success": "you work out the wicket's trick and the party passes one by one, unremarked", + "failure": "the wicket sticks and the noise brings the Watch: roll the clock", + "orElse": "wait for the gate to open on the bell: two Turns" + } + }, + { + "cue": "a search you can submit to, or refuse", + "cost": "submitting means showing what you carry", + "resolve": { + "roll": "Poise 2", + "success": "you submit and the Watch counts you honest — no further checks this delve", + "failure": "you refuse and are followed for the rest of the delve", + "orElse": "let them search only one of you: partial trust, one Turn" + } + }, + { + "cue": "chalk marks on doors in a code the Watch uses", + "cost": "reading it tells you which houses are being watched", + "resolve": { + "roll": "Wits 2", + "success": "you read the code and know which doors are safe to knock at", + "failure": "you copy a mark wrongly onto yourselves without realising", + "orElse": "ignore the marks; knock and find out" + } + }, + { + "cue": "a curfew bell about to ring", + "cost": "being on the street after it is an offence here", + "resolve": { + "roll": "Flair 2", + "success": "you talk your way into a doorway before it rings and are sheltered", + "failure": "you are caught out after curfew: +1 Bane and the Watch escorts you", + "orElse": "run for the gate: one Turn, loud, roll the clock" + } + }, + { + "cue": "a strangers' book with your description already in it", + "cost": "somebody entered you before you arrived", + "resolve": { + "roll": "Wits 2", + "success": "you find who wrote it and what else they wrote", + "failure": "you alter the entry and the alteration is noticed: +1 Bane", + "orElse": "leave it; the Watch has your description and uses it" + } + } + ], + "situations": [ + { + "occupant": "a watchman", + "doing": "checking papers nobody has carried for a century", + "onArrival": "it puts out a hand and waits", + "because": "the order to stand the watch was never rescinded", + "offer": "hand it anything with a seal and it will wave you through and salute" + }, + { + "occupant": "the Constable", + "doing": "reading a roll of strangers aloud in an empty street", + "onArrival": "it reaches a blank and looks up at you", + "because": "the roll must be complete before the gate may open", + "offer": "give it names — any names — and the gate opens" + }, + { + "occupant": "two living smugglers", + "doing": "waiting for the curfew bell before moving a crate", + "onArrival": "they put a finger to their lips and shrug", + "because": "the Watch is predictable and they are patient", + "offer": "help them shift it and they show you the way through the wall" + }, + { + "occupant": "a gate", + "doing": "closing itself, slowly, on no schedule you can see", + "onArrival": "the bar begins to slide across", + "because": "the hour was set by a council that no longer sits", + "offer": "hold the bar and it will stay open behind you" + }, + { + "occupant": "the Searcher", + "doing": "turning out a bag that keeps refilling", + "onArrival": "it asks you to empty your pockets, apologetically", + "because": "the search must be thorough and never is", + "offer": "let it search you properly and the Watch leaves you alone thereafter" + }, + { + "occupant": "three of the Watch", + "doing": "standing at a corner, facing outward", + "onArrival": "they part to let you through without being asked", + "because": "something is expected from the road and it is not you", + "offer": "ask what they are watching for and they will tell you exactly" + } + ], + "temptations": [ + { + "id": "gatekeys", + "cue": "one of the four gate-keys", + "benefit": "one gate per scene opens for you", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the Watch counts the keys nightly and one is missing" + }, + { + "id": "papers", + "cue": "a set of papers with a good seal and a blank name", + "benefit": "pass any check in the town without a roll", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you must answer to the name you wrote" + }, + { + "id": "watchcode", + "cue": "a scrap listing the chalk-code", + "benefit": "once, know exactly which house is watched", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you begin marking doors yourself without noticing" + }, + { + "id": "curfewbell", + "cue": "a hand-bell from a watch-box", + "benefit": "ring it and the street empties for one scene", + "useCost": { + "bane": 2 + }, + "standingDrawback": "the Watch comes to see who rang", + "acceptanceCost": { + "vice": "Pride" + } + }, + { + "id": "strangersbook", + "cue": "a page of the strangers' book", + "benefit": "once, prove you were here all along", + "useCost": { + "bane": 1 + }, + "standingDrawback": "someone else's alibi is now missing" + } + ] + }, + "thoroughfare": { + "danger": "passage", + "dangerLine": "the town needs the road to come through it, and will arrange that", + "trigger": "lingering", + "facets": { + "institution": [ + "milestones all pointing here, some of them moved", + "a bridge that is the only bridge for a day's ride", + "roads that all bend, slightly, toward the square" + ], + "ritual": [ + "a toll taken at a bar that swings on nothing", + "carts waved through by a hand at a window", + "a road swept before a coach that never comes" + ], + "demand": [ + "a market you must cross to get anywhere at all", + "a square with one exit visible and three not", + "a street that returns you to where you started" + ], + "wound": [ + "a rival town's milestone, broken and kept", + "a road washed out and never repaired, deliberately", + "a bypass surveyed, staked, and the stakes pulled up" + ], + "anchor": [ + "the milestone that says all roads pass here", + "a map with one road drawn heavier than the rest", + "a bridge-toll board, the figures freshly cut" + ] + }, + "features": [ + "a signpost turned to point the wrong way", + "a road newly blocked with a felled tree", + "cart-ruts that stop in the middle of a field", + "a bridge plank taken up and laid beside the gap", + "survey stakes pulled up and stacked", + "a milestone with the distance recut" + ], + "decisions": [ + { + "cue": "a signpost that has plainly been turned", + "cost": "following it goes somewhere the town wants you to go", + "resolve": { + "roll": "Wits 2", + "success": "you read the wear on the post and work out the true direction", + "failure": "you follow it and lose a Turn, arriving where the town intended", + "orElse": "ask a local: they will tell you truly, and the town will know you asked" + } + }, + { + "cue": "a toll-bar across the only bridge", + "cost": "the toll is small; the record of paying it is not", + "resolve": { + "roll": "Poise 2", + "success": "you pay and are entered as legitimate traffic — the town stops obstructing you", + "failure": "you argue the toll and the bar stays down: lose a Turn, +1 Bane", + "orElse": "ford it downstream: one Turn, everything gets wet" + } + }, + { + "cue": "a market you must cross, and it does not want you to cross quickly", + "cost": "the crowd is the obstacle and it is deliberate", + "resolve": { + "roll": "Flair 2", + "success": "you move through by seeming to belong, and are not delayed", + "failure": "you are drawn into three transactions and lose a Turn", + "orElse": "go round by the back lanes: one Turn, and you are noticed doing it" + } + }, + { + "cue": "survey stakes for a bypass, pulled up and stacked", + "cost": "replanting them is a declaration of war on the town", + "resolve": { + "roll": "Brawn 2", + "success": "you replant enough to matter and the surveyors' ghosts owe you", + "failure": "you are seen at it: the Corporation treats you as hostile from here", + "orElse": "leave them stacked; the bypass stays unbuilt" + } + }, + { + "cue": "a square with three exits and only one that leaves", + "cost": "the other two return you here", + "resolve": { + "roll": "Wits 2", + "success": "you spot which street the ruts actually leave by", + "failure": "you take a returning street: lose a Turn and roll the clock", + "orElse": "follow a cart out: whichever way it goes, one Turn" + } + }, + { + "cue": "a milestone recut to move the town closer to everywhere", + "cost": "correcting it is honest and unwelcome", + "resolve": { + "roll": "Wits 1", + "success": "you read the older cut beneath and know the true distances", + "failure": "you accept the new figures and misjudge your time: lose a Turn", + "orElse": "take the milestone at its word and hurry" + } + } + ], + "situations": [ + { + "occupant": "the Tollkeeper", + "doing": "raising a bar that hangs on nothing at all", + "onArrival": "it names a toll and waits, hand out", + "because": "the bridge must be paid for and the bridge is gone", + "offer": "pay anything and it will tell you the true road" + }, + { + "occupant": "a carter", + "doing": "arguing with a signpost that has been turned", + "onArrival": "they appeal to you as a witness", + "because": "they have been round this way three times", + "offer": "settle the argument and they will carry you a stage" + }, + { + "occupant": "the Surveyor", + "doing": "staking out a bypass that the town keeps pulling up", + "onArrival": "it hands you the mallet without looking", + "because": "the survey must be completed and never is", + "offer": "drive one stake and it will show you the shortest way through" + }, + { + "occupant": "two of the Corporation", + "doing": "recutting a milestone, closer", + "onArrival": "they stand in front of the figures as you approach", + "because": "the distances must favour the town", + "offer": "admire the work and they will tell you the real distance, privately" + }, + { + "occupant": "a crowd", + "doing": "filling a square that was empty a moment ago", + "onArrival": "it closes gently around you and does not let you hurry", + "because": "the market must be busy when strangers pass", + "offer": "buy something and the crowd opens" + }, + { + "occupant": "the Bridge", + "doing": "holding itself up on a span that is not there", + "onArrival": "the planks settle as you step on", + "because": "the crossing must exist because the charter says so", + "offer": "cross confidently and it holds; hesitate and it does not" + } + ], + "temptations": [ + { + "id": "milestone", + "cue": "a milestone small enough to carry", + "benefit": "once, make a journey shorter than it is", + "useCost": { + "bane": 1 + }, + "standingDrawback": "distances you did not carry get longer" + }, + { + "id": "tollboard", + "cue": "a toll-board with the figures cut", + "benefit": "once, demand passage and be given it", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you are expected to keep the bridge in repair" + }, + { + "id": "roadmap", + "cue": "a map with one road drawn heavier", + "benefit": "never lose your way in the town", + "useCost": { + "bane": 1 + }, + "standingDrawback": "you cannot see the roads it leaves out" + }, + { + "id": "bar", + "cue": "a length of toll-bar, iron-shod", + "benefit": "once, close a way behind you that nothing can pass", + "useCost": { + "bane": 2 + }, + "standingDrawback": "whatever you shut out waits at that spot", + "acceptanceCost": { + "vice": "Pride" + } + }, + { + "id": "carterswhip", + "cue": "a carter's whip, worn to the handle", + "benefit": "once, make anything give way and let you through", + "useCost": { + "bane": 1 + }, + "standingDrawback": "the town treats you as traffic, not a guest" + } + ] + } + }, + "placeNameStyle": "own" +} \ No newline at end of file diff --git a/foundry-module/module/core/skeleton.mjs b/foundry-module/module/core/skeleton.mjs index 28e7ebe..48b1d36 100644 --- a/foundry-module/module/core/skeleton.mjs +++ b/foundry-module/module/core/skeleton.mjs @@ -64,6 +64,7 @@ export function generateSkeleton({ pack, areas = 6, ending = 'authored', rng }) const transgression = `The ${claimant} ${fill(accommodation.text, { conscript: appetite.conscript })}, ` + `so that ${appetite.purpose}.`; + // The bottom problem is the claimant itself — a person in a tomb, an office in a town. const bottomProblem = { label: `The ${claimant}`, @@ -79,8 +80,11 @@ export function generateSkeleton({ pack, areas = 6, ending = 'authored', rng }) }; const secondary = r.derive('faction2').pick(pack.factions.filter(f => f.id !== primary.id)); - // Named for its occupant. Drawing the name separately produced tombs named after strangers. - const placeName = `${r.derive('place').pick(pack.placeNames.first)} ${claimant}`; + // A barrow or keep is named for its occupant — drawing that separately produced tombs named + // after strangers. A settlement is not: it has its own name and the claimant merely runs it. + const placeName = pack.placeNameStyle === 'own' + ? `${r.derive('place1').pick(pack.placeNames.first)} ${r.derive('place2').pick(pack.placeNames.second)}` + : `${r.derive('place').pick(pack.placeNames.first)} ${claimant}`; // ---- the foreshadow chain ---------------------------------------------- const progression = pack.facetProgression ?? {};