Codex tab: Side Quests
Side Quests
revision 2 · exported 2026-11-03 · open the doc
(Idea) The side quests that fill Velan between the main beats, region by region, and the three recurring activities that keep the world open after Act 4 (Story Bible section 1: no endgame). Everything in this tab is a proposal for Ray to accept, change or cut, except where a quest restates one a walkthrough already specifies; those say so and point at the scene.
The regions are the Bestiary's eight. Each quest gives its giver, where and when it is available, one paragraph of story, its stages as quest JSON, its rewards and its Yarn node titles. Names, ids, flags, items and spells follow the walkthroughs and the continuity notes at the end of the Act 4 walkthrough.
How to read a quest Open page
- Ids. A side quest's id is
side_<slug>, unless a walkthrough named it first (aske_brace,mend_lesson,long_way_up,act4_side_last_wagon). Its file isData/Quests/<id>.json. - Stages are JSON in the shape of
Data/Quests/prologue.json(id,title,description,stages[{ id, text, completeWhen }]), with three fields the Game Screens tab asks for:"category": "side","giver"(a character id) and"startWhen"(the walkthroughs' gate, the same condition JSON ascompleteWhen). A quest on a notice board also names its"board". - Stage flags are
side.<slug>.stage, an integer that never goes backwards, asprologue.stagedoes. - Available from names the act and the condition that opens it: the Prologue's end is
prologue.stage >= 7, Act 1 isact1.stage >= 1, Act 2 isact1.done != 0, Act 3 isact2.done != 0, Act 4 isact3.done != 0, and the world after Act 4 isact4.stage >= 8. - Rewards are in copper (the only currency), catalogue item ids from the Items and Economy tab, spell ids from the Spell Roadmap, and reputation moves in steps of 5 on
rep.evane,rep.facets, the five faction tracks (rep.wardens,rep.tenders,rep.keepers,rep.choir,rep.waymakers),moralityand companions'<name>.trust. Side-quest pay follows the Items and Economy tab: 30–60 copper in Act 1, 80–150 in Act 2, 150–250 from Act 3. - Yarn node titles are
Side_<Place>_<Beat>inDialogue/Side/<region>.yarn, unless a walkthrough named them. - Fights use the Bestiary's enemy ids; a side quest's own encounters get their own ids, listed with the quest.
- Board quests carry
"postWhen": the condition for the notice to show on its board. Their"startWhen"is the quest's own stage flag at 1, which "Take" sets, so a job joins the Journal only once it is taken (Game Screens, Notice boards). - Companion trust stays 0–5 and moves by 1, as the canon flags have it (
aske.trust,tamsin.trust,hale.trust). Every other standing move is a step of 5. - Choices are recorded in
side.<slug>.choice(1, 2, 3 …), set once. A few quests count things inside.<slug>.<count>. Both only rise, like the stage flags. - Repeatable quests and hunts. A quest that can be taken again (The Next Wagon, caravan jobs) carries
"repeatable": trueand resets only its own run flags when retaken; a glyph hunt uses"category": "hunt". Both are new fields for the quest loader.
The Sallow Open page
River country: reeds, barges and a market under truce. Work comes from the neighbours in Sallowbank (Aske, Tobin, Fenn), from Halfway's Truce Board and stallholders, and from Dorrit on the Barge Landing. Yarn file: Dialogue/Side/sallow.yarn.
Hand over Hand (`aske_brace`)
- Giver / where: Aske (unaligned, ex-Warden),
sallowbank, the ferry landing,Mark_aske_ferry. - Available from: Act 1.
act1.stage >= 2(the quest shows once the player has reached Halfway; Aske is back at the ferry fromact1.stage >= 1). - Story: Detailed in walkthrough-act-1.md, scene 6.3. Aske isn't surprised to see the protagonist and doesn't say she's glad. She traces Brace with them hand over hand, her thumbs over theirs and her bands turned to the skin, and never casts. In the square Fenn shows off a chalk door-mark that sparked once (
fenn.spark). If the player bought Hob's boots that don't leak (item.dry_boots), Aske looks at them and says "Huh", which is the whole of the unused "Aske notices" hook from Act 1.
{
"id": "aske_brace",
"title": "Hand over Hand",
"description": "Aske is back at the ferry. She won't cast, but she might teach.",
"category": "side",
"giver": "aske",
"startWhen": { "flag": "act1.stage", "op": ">=", "value": 2 },
"stages": [
{ "id": "visit_aske", "text": "Go home to Sallowbank and see Aske at the ferry.",
"completeWhen": { "flag": "aske.brace", "op": "!=", "value": 0 } },
{ "id": "learn_brace", "text": "Trace Brace with Aske, hand over hand.",
"completeWhen": { "flag": "spell.learned.brace", "op": "!=", "value": 0 } }
]
}
- Rewards: spell
brace. No copper.aske.trust+1 if the player is wearing the dry boots. - Yarn:
Act1_Ferry_Aske(ends in<<learn_spell brace>>), and the_Act1branches ofPrologue_Villager_Tobin,_Marra,_Fenn(walkthrough). New:Side_Sallowbank_AskeBoots(the one line).
Sister Orla's Errand (`mend_lesson`)
- Giver / where: Sister Orla (Evane, Tenders),
halfway, her stall on the Pale Row,Mark_orla; then Dorrit at the Barge Landing. - Available from: Act 1.
orla.stage >= 1(Orla asks onceact1.stage >= 2). - Story: Detailed in walkthrough-act-1.md, scene 3.5. Orla needs three Mend Tonics carried to Dorrit's crew, who were cut by something under the river. Dorrit says something has been rocking barges near the Drowned Steps for two nights, the first rumour of the Wyrm. Back at the stall Orla teaches Mend hand over hand, because the protagonist has "two good hands and a long road". She heals what would heal anyway, and says so.
{
"id": "mend_lesson",
"title": "Sister Orla's Errand",
"description": "A Tender healer at Halfway needs tonics carried to the bargefolk, and has a glyph for a pair of good hands.",
"category": "side",
"giver": "orla",
"startWhen": { "flag": "orla.stage", "op": ">=", "value": 1 },
"stages": [
{ "id": "carry_tonics", "text": "Take Sister Orla's tonics to Dorrit's crew at the Barge Landing.",
"completeWhen": { "flag": "orla.stage", "op": ">=", "value": 2 } },
{ "id": "back_to_orla", "text": "Go back to Sister Orla on the Pale Row.",
"completeWhen": { "flag": "orla.stage", "op": ">=", "value": 3 } },
{ "id": "learn_mend", "text": "Trace Mend with Sister Orla.",
"completeWhen": { "flag": "spell.learned.mend", "op": "!=", "value": 0 } }
]
}
- Rewards: spell
mend;rep.evane+5. No copper: the lesson is the pay. The 3mend_tonicare Orla's, carried and handed over (<<give_item mend_tonic 3>>,<<take_item mend_tonic 3>>). - Yarn:
Act1_Orla_Errand,Act1_Landing_Dorrit_Tonics,Act1_Orla_Lesson(walkthrough).
Still Water (`still_water`)
- Giver / where: Quill (Facets),
halfway, Quill's Cut Glass on the Amber Row,Mark_quill; then Harl on the Pale Row,Mark_harl. - Available from: Act 1, after the Wyrm.
wyrm.defeated != 0. - Story: Detailed in walkthrough-act-1.md, scene 6.2. The wyrm plate still shows a sky that isn't this one. Quill can cut it but won't set it in silver; Harl can set it but won't cut mirror-glass. Carried between the two Rows, it becomes a Still-Water Locket, and each craftsman pretends not to know the other's work is in it.
{
"id": "still_water",
"title": "Still Water",
"description": "A plate from the Sallow Wyrm still holds a sky that isn't this one. Halfway's craftsmen could make something of it, if they'd work together.",
"category": "side",
"giver": "quill",
"startWhen": { "flag": "wyrm.defeated", "op": "!=", "value": 0 },
"stages": [
{ "id": "cut", "text": "Ask Quill on the Amber Row to cut the wyrm plate.",
"completeWhen": { "flag": "still_water.stage", "op": ">=", "value": 1 } },
{ "id": "set", "text": "Take the cut plate to Harl on the Pale Row to be set in a locket.",
"completeWhen": { "flag": "still_water.stage", "op": ">=", "value": 2 } }
]
}
- Rewards:
still_water_locket(charm: breath +8%). Costs 20 copper (Quill's cut) and 25 copper (Harl's setting); thewyrm_plategoes into the locket. - Yarn:
Act1_Quill_Plate,Act1_Harl_Plate(walkthrough).
The Line Between the Rows (`side_stall_line`)
- Giver / where: Reeve Hollin Tace (unaligned), a notice on the Truce Board,
halfway, the Middle Market,Event_truce_board; then Harl (Mark_harl) and Nell (Mark_nell). - Available from: Act 1. Posted when
act1.stage >= 2. - Story: Harl's Pale Row awning and Nell's free glyph table have crept toward each other for a year, and this week they met. The truce line down the Middle Market is a strip of white stones nobody has re-laid since the Reeve's grandmother, and each says the other is over it. The player borrows Sef's measuring cord and walks the stones from the Truce Stone to the Split Loaf, and finds the old line was laid crooked: by the old stones both stalls are over it, and by a straight line neither is. The protagonist decides where the line runs. Quill watched the whole thing from across the square, and afterwards offers to help them design a sigil of their own from two unlike shapes.
{
"id": "side_stall_line",
"title": "The Line Between the Rows",
"description": "Harl's awning and Nell's free table have finally met. The Reeve wants the truce line measured, and both Rows have promised to live with the answer.",
"category": "side",
"giver": "reeve",
"board": "truce_board",
"postWhen": { "flag": "act1.stage", "op": ">=", "value": 2 },
"startWhen": { "flag": "side.stall_line.stage", "op": ">=", "value": 1 },
"stages": [
{ "id": "both_sides", "text": "Hear both sides: Harl on the Pale Row, then Nell on the Amber Row.",
"completeWhen": { "all": [
{ "flag": "side.stall_line.harl", "op": "!=", "value": 0 },
{ "flag": "side.stall_line.nell", "op": "!=", "value": 0 } ] } },
{ "id": "walk_line", "text": "Walk the old truce stones from the Truce Stone to the Split Loaf, and measure them.",
"completeWhen": { "flag": "side.stall_line.stage", "op": ">=", "value": 2 } },
{ "id": "verdict", "text": "Tell the Reeve where the line runs.",
"completeWhen": { "flag": "side.stall_line.choice", "op": "!=", "value": 0 } }
]
}
- Rewards: 40 copper from the Reeve. Choice 1, the line favours the Pale Row (Nell moves):
rep.evane+5,rep.facets−5. Choice 2, the old stones stand (Harl moves):rep.facets+5,rep.evane−5. Choice 3, a new straight line down the middle (both move a little): no standing change, and the Reeve adds 10 copper ("Cheaper than a fight."). Afterwards Quill's sigil: flagsigil.own1 (cosmetic; Facet NPCs greet the player as someone with a sigil, and Evane gatekeepers notice it). - Later: after Act 4, a player who is Even-handed (
rep.evane >= 25andrep.facets >= 25) gets more Truce Board disputes on the same pattern, the "judging disputes at Halfway" half of Act 4's Even-handed hook: notice idside_truce_dispute, repeatable, 150 copper each, each verdict moving one side by 5 unless it splits the difference. - Yarn:
Side_Halfway_LineNotice,Side_Halfway_LineHarl,Side_Halfway_LineMott,Side_Halfway_LineWalk,Side_Halfway_LineVerdict,Side_Halfway_QuillSigil.
Dorrit's Cargo (`side_dorrit_cargo`)
- Giver / where: Dorrit Mallow (unaligned), a notice on the Truce Board, then the Barge Landing,
halfway,Mark_dorrit. The crates are on theoverworld(the Sallow Road), in the Sallow Fen stretch below the Drowned Steps' turning, markersFen_1toFen_4. - Available from: Act 1, after the Wyrm. Posted when
wyrm.defeated != 0. - Story: When the Wyrm took Dorrit's barge under, her cargo went into the fen and the reeds kept it. She can't run the barge until she has paid for what she lost, and she won't pay for what can still be found. A mirebelly toad has made a nest on one crate, and another sits in a pool with glints round it. The last crate isn't on Dorrit's list: it is small, sealed in amber wax with a Facet sigil and no name, and it rattles like glass. Opened, it holds rough warp-shards packed in reed that still smell of the river upstream. Return it sealed, open it, or hand it to Sef at the Bridge Gate; nobody in Act 1 knows who is digging up there, and this is only a hint.
{
"id": "side_dorrit_cargo",
"title": "Dorrit's Cargo",
"description": "The Wyrm put Dorrit's cargo in the reeds. She won't pay for what can still be found.",
"category": "side",
"giver": "dorrit",
"board": "truce_board",
"postWhen": { "flag": "wyrm.defeated", "op": "!=", "value": 0 },
"startWhen": { "flag": "side.dorrit_cargo.stage", "op": ">=", "value": 1 },
"stages": [
{ "id": "crates", "text": "Find the crates Dorrit lost in the Sallow Fen, below the Drowned Steps' turning.",
"completeWhen": { "flag": "side.dorrit_cargo.crates", "op": ">=", "value": 4 } },
{ "id": "odd_crate", "text": "One crate isn't on Dorrit's list. Decide what to do with it.",
"completeWhen": { "flag": "side.dorrit_cargo.choice", "op": "!=", "value": 0 } },
{ "id": "back", "text": "Take the crates back to Dorrit at the Barge Landing.",
"completeWhen": { "flag": "side.dorrit_cargo.stage", "op": ">=", "value": 2 } }
]
}
- Fights:
fen_toad(mirebelly_toad, atFen_2) andtoad_and_glints(mirebelly_toad+ 2glint, atFen_4), both the bestiary's. - Rewards: 50 copper; Dorrit's barge runs again, so her free passage (scene 6.1) becomes a fast route along the Sallow between Halfway and Sallowbank (
travel.barge1). Odd crate, choice 1, returned sealed:rep.facets+5. Choice 2, opened and closed again: no move, butside.dorrit_cargo.choice2 lets Sabe at the Sallow warp (Act 3, scene 1.3) recognise the player as "the one who opened our crate". Choice 3, handed to Sef:rep.evane+5,rep.facets−5. - Yarn:
Side_Halfway_DorritNotice,Side_Fen_Crates,Side_Fen_OddCrate,Side_Halfway_SefCrate,Side_Halfway_DorritPaid.
The Drowned Choir (`side_drowned_choir`)
- Giver / where: Tobin (unaligned),
sallowbank, by the river,Mark_tobin. The quest moves through Halfway's Middle Market (the Still Choir monk), Hushfold or Twinhold (someone who reads hand-signs), the Drowned Steps (drowned_steps,Event_deep_glyphs) and the Undermere's flooded nave (undermere,Event_nave). - Available from: Act 1,
heard.choir != 0(scene 1.1). It runs into Act 3: the drowned stair opens only onceact2.done != 0. - Story: Tobin has heard the Drowned Choir hum on still nights for forty years, and he'll talk about it to anyone who cuts him five green reeds for his weir. In Halfway a Still Choir monk watches the protagonist the way Tobin watches the river; stand with him long enough and he leaves a folded note in mirrored hand-signs, which Sister Ise or any Hushfold monk can read: "When the Sallow is still, the Steps sing. Listen with both hands." With Listen (or Drift's ford across the lowest step) the deep glyphs under the Steps (
steps.deep_glyphs) turn out to be no spell at all: they are the Choir's hymn, cut as marks down the stair, running on under the river. When the Act 3 warps crack the lowest step open, the stair leads down to the Undermere's flooded nave, where drowned choristers still sing the last lines and leave a hymn page when they are beaten. Tobin can't read it either, but he can hum it, and the Steps hum back; the protagonist decides whether the page stays with him or goes to Choirmistress Wen.
{
"id": "side_drowned_choir",
"title": "The Drowned Choir",
"description": "Tobin swears the Sallow hums on still nights. He'll tell you about it for five green reeds.",
"category": "side",
"giver": "tobin",
"startWhen": { "flag": "heard.choir", "op": "!=", "value": 0 },
"stages": [
{ "id": "reeds", "text": "Cut five river reeds on the Sallow banks for Tobin's weir.",
"completeWhen": { "flag": "side.drowned_choir.stage", "op": ">=", "value": 1 } },
{ "id": "monk", "text": "A Still Choir monk in Halfway's Middle Market keeps watching you. Stand with him a while.",
"completeWhen": { "flag": "side.drowned_choir.stage", "op": ">=", "value": 2 } },
{ "id": "read_note", "text": "Find someone who reads mirrored hand-signs.",
"completeWhen": { "flag": "side.drowned_choir.stage", "op": ">=", "value": 3 } },
{ "id": "listen", "text": "On a still night, cast Listen or Drift on the lowest Drowned Step.",
"completeWhen": { "flag": "side.drowned_choir.stage", "op": ">=", "value": 4 } },
{ "id": "nave", "text": "Follow the hymn down the drowned stair.",
"completeWhen": { "flag": "side.drowned_choir.stage", "op": ">=", "value": 5 } },
{ "id": "tobin", "text": "Bring the hymn page home to Tobin.",
"completeWhen": { "flag": "side.drowned_choir.choice", "op": "!=", "value": 0 } }
]
}
- Gates on the scene side: the monk leaves the note only at
side.drowned_choir.stage >= 1; the deep glyphs answer only atsteps.deep_glyphs != 0and withspell.learned.listenorspell.learned.drift; the stair trigger needsact2.done != 0. Question for the Lead: this makes the flooded nave a second way into one Undermere room, reached from the Steps and open to a clean player. The nave stays cut off from the den (a rope bridge nobody crosses), so it doesn't open the evil path's hub. - Fight:
drowned_hymn(2drowned_chorister, the bestiary's Undermere table, 75 XP). - Rewards: 30 copper for the first reed order (Tobin pays double "for the walk"; after that he buys
river_reedsat the catalogue's 1 copper whenever the player has them, his standing reed order). Thehymn_page(key item) from the choristers. Choice 1, the page stays with Tobin: Tobin gives 2reed_band(a matched pair),morality+5. Choice 2, the page goes to Wen:rep.choir+10, Wen sends 2still_water, and Tobin says he has it by ear now anyway.side_choir_guilt(region 4) reads the choice. - Later: after Act 4 (
act4.stage >= 8), Tobin has one more node at the Steps,Side_Steps_HumAfter, for Act 4's Drowned Choir hook: Mended, the hum is gone and he misses it; Shattered, it's louder and has words in it; Held, it's two tunes, and they fit. - Yarn:
Side_Sallowbank_TobinReeds,Side_Halfway_ChoirMonk,Side_Hushfold_ChoirNote(andSide_Twinhold_IseNoteif Sister Ise reads it at the courting),Side_Steps_DeepHymn,Side_Steps_DrownedStair,Side_Nave_Choristers,Side_Sallowbank_TobinHymn,Side_Steps_HumAfter.
The Stilled Weir (`side_tobin_weir`)
- Giver / where: Tobin, at the ferry landing in
sallowbank(he keeps the rope while Aske is away). The weir is at the reed bend,sallow_warp,Event_weir. - Available from: the end of Act 3, once Thaw is known.
composite.known.thaw != 0. - Story: When the Wardens' seal went over the Sallow warp, Tobin's eel weir at the reed bend went to glass with it: every stake, every trap and the eels inside (the whole bend, if the player declined the mending,
world.sallow_stilled == 2). Tobin has heard what happened at Corran and wants his weir back. Glints roost on the glass; once they are cleared, the protagonist threads Thaw over the weir. If Sabe's cut was let go or sent home (act3.hunters1 or 2), they are camped at the bend with a boat the glints stove in, and helping float it is one of Act 3's atonement deeds. When the weir wakes the eels come out of the glass alive and go straight downstream, and Tobin laughs for the first time in the game.
{
"id": "side_tobin_weir",
"title": "The Stilled Weir",
"description": "Tobin's eel weir went to glass with the Sallow warp. He has heard what happened at Corran.",
"category": "side",
"giver": "tobin",
"startWhen": { "flag": "composite.known.thaw", "op": "!=", "value": 0 },
"stages": [
{ "id": "look", "text": "Go up to the reed bend at the Sallow warp and look at Tobin's weir.",
"completeWhen": { "flag": "side.tobin_weir.stage", "op": ">=", "value": 1 } },
{ "id": "glints", "text": "Clear the glints roosting on the glass.",
"completeWhen": { "flag": "side.tobin_weir.stage", "op": ">=", "value": 2 } },
{ "id": "thaw", "text": "Thread Thaw over the weir.",
"completeWhen": { "flag": "side.tobin_weir.stage", "op": ">=", "value": 3 } },
{ "id": "boat", "text": "If Sabe's cut is at the bend, help them float their boat.",
"completeWhen": { "any": [
{ "flag": "side.tobin_weir.stage", "op": ">=", "value": 4 },
{ "flag": "act3.hunters", "op": ">=", "value": 3 } ] } },
{ "id": "tobin", "text": "Tell Tobin the eels are running.",
"completeWhen": { "flag": "side.tobin_weir.stage", "op": ">=", "value": 5 } }
]
}
- Fight:
weir_glints(new): 4glint+glint_brute, Act 3, difficulty about 3.5, 75 XP. - Field cast:
<<prompt_cast thaw>>atEvent_weir. - Rewards: 150 copper (Tobin's eel money, "saved for a new weir he won't need now"), 3
eel_pie. The boat (needs 2ropefrom Hob):morality+5 (an atonement deed),rep.facets+5, and Sabe gives afacet_token. Ifact3.hunters == 4the cut's camp is empty with a Warden notice nailed to the boat; if 3, only their spoil heaps are left. If Act 4 is over, Tobin's last line at the weir usesSide_Steps_HumAfter's outcome variant. - Yarn:
Side_Sallowbank_TobinWeir,Side_Bend_Glass,Side_Bend_Glints,Side_Bend_Thaw,Side_Bend_SabeBoat,Side_Sallowbank_EelsRun.
Fenn's Chalk (`side_fenn_chalk`)
- Giver / where: Fenn (unaligned),
sallowbank, the square,Event_square(Mark_fenn), beside the golem on guard; the last stage at the farm door,Event_farm_door. - Available from: Act 3,
act3.stage >= 2(Aske has left the golem on watch). The last stage waits for the world after Act 4 (act4.stage >= 8). - Story: Since Aske left the golem standing guard, Fenn has slept in the square beside it and chalked door-marks on every fence post to help. The golem's chest glyph is a little fainter each night. Fenn asks the protagonist to stand one night watch with them; at midnight glints come up from the river, and one of Fenn's chalk marks holds a glint back for a breath, as it did in scene 1.1. Fenn sees the protagonist see it, and from then on wants to be shown properly. That waits until the Pane is settled, and in scene 4.20 Fenn comes up the lane with chalk. In the Shattered world Fenn's chalk marks work, so the real question is the one Lio's arc asks: now, or not yet.
{
"id": "side_fenn_chalk",
"title": "Fenn's Chalk",
"description": "Fenn has been chalking door-marks on every fence in the square, to help the golem. One of them worked.",
"category": "side",
"giver": "fenn",
"startWhen": { "flag": "act3.stage", "op": ">=", "value": 2 },
"stages": [
{ "id": "watch", "text": "Stand a night watch in Sallowbank's square with Fenn and the golem.",
"completeWhen": { "flag": "side.fenn_chalk.stage", "op": ">=", "value": 1 } },
{ "id": "wait", "text": "Fenn wants to be shown properly, once things are quieter. Come home after the Heart Pane.",
"completeWhen": { "flag": "act4.stage", "op": ">=", "value": 8 } },
{ "id": "shown", "text": "Show Fenn the door-mark.",
"completeWhen": { "flag": "side.fenn_chalk.choice", "op": "!=", "value": 0 } }
]
}
- Fight:
square_night_glints(new): 5glint+ 1winged_glintat night, Act 3, difficulty about 2.8, 55 XP. - Rewards: the watch:
morality+5 (Act 3's "stand a night watch at Sallowbank with the golem" deed), 3ward_chalkfrom Fenn. The lesson: choice 1, teach Fenn at the farm door now (fenn.taught1):morality+5. Choice 2, take Fenn to Marra first and teach them at the bakehouse table (fenn.taught1):morality+5 and 3honey_bread. Choice 3, "not yet" (fenn.taught2): no move; in the Shattered world Fenn chalks the whole lane alone that night and the marks work. - Yarn:
Side_Sallowbank_FennWatch,Side_Sallowbank_NightGlints,Side_Sallowbank_GolemGlyph,Side_Sallowbank_FennShown(one variant peract4.outcome),Side_Sallowbank_MarraTable. It joins Act 4'sAct4_Home_Fenn: that node offers this quest's last stage.
The Long Road Open page
Wind, sails and a windmill on every ridge: the caravan road over the pass between the two courts. Work comes from Dace and Ness, from the drivers and windmillers along the road, and from the Choir's notice on Twinhold's Far Hand board. Yarn file: Dialogue/Side/long_road.yarn.
Ribbons First (`side_ness_ribbons`)
- Giver / where: Ness (Evane, Waymakers, Dace's outrider),
long_road, the camp below the pass,Event_camp. - Available from: Act 2, during the caravan job: Ness asks at the camp (
long_road.stage >= 2), which setsside.ness_ribbons.stage1. If the caravan moves on first, Ness waits at either yard. - Story: Detailed in walkthrough-act-2.md, scene 2.3. Ness marks the ridge route with ribbons on posts and lost three in last week's wind. She'll teach Drift, the Waymaker dodge, to whoever finds them. It is a short field search along the ridge, and the ribbons go back on Ness's wrist before the lesson.
{
"id": "side_ness_ribbons",
"title": "Ribbons First",
"description": "Ness lost three ribbons on the ridge in last week's wind. Ribbons first, questions later.",
"category": "side",
"giver": "ness",
"startWhen": { "flag": "side.ness_ribbons.stage", "op": ">=", "value": 1 },
"stages": [
{ "id": "ribbons", "text": "Find Ness's three lost ribbons along the ridge.",
"completeWhen": { "flag": "side.ness_ribbons.found", "op": ">=", "value": 3 } },
{ "id": "drift", "text": "Trace Drift with Ness.",
"completeWhen": { "flag": "spell.learned.drift", "op": "!=", "value": 0 } }
]
}
- Rewards: spell
drift(taught);rep.waymakers+5 (the walkthrough's move for joining in at the camp). The 3waymaker_ribbonare handed back. - Yarn:
Act2_Camp_Ness(walkthrough). New:Side_Ridge_Ribbon(one pickup node, three markersRibbon_1toRibbon_3),Side_LongRoad_NessDrift.
Wheel Before Dark (`side_first_job`)
- Giver / where: Caravan-master Dace (Evane, Waymakers), the caravan yard at either end of
long_road,Event_caravan_yard. The wagon is on the ridge road under the Quiet Fork,Event_stranded_wagon. - Available from: Act 2,
invite.waymaker_job != 0(Dace's offer at the summit, or at the courting on route B). This is the first Waymaker side job. - Story: A Waymaker wagon has thrown a wheel on the ridge road, and gale hounds hunt that ridge after dark. Dace has a spare wheel and nobody to roll it up there, and the light is going: the in-game clock matters, and arriving after dusk starts the fight with the wagon already hurt. The stranded driver is Pim, who offered the protagonist a lift to Halfway in Act 1 (he remembers if
met.pim). One of the hounds is a half-grown pup with glass in its paw, and the protagonist can pull it out instead of fighting it. Back at the yard Dace says the player ran it like the wind owed them money, and teaches Tailwind hand over hand so that next time it does.
{
"id": "side_first_job",
"title": "Wheel Before Dark",
"description": "A wagon has thrown a wheel on the ridge road, and the hounds hunt there after dark. Dace has a spare wheel and nobody to take it.",
"category": "side",
"giver": "dace",
"startWhen": { "flag": "invite.waymaker_job", "op": "!=", "value": 0 },
"stages": [
{ "id": "wheel", "text": "Take Dace's spare wheel from the caravan yard.",
"completeWhen": { "flag": "side.first_job.stage", "op": ">=", "value": 1 } },
{ "id": "ridge", "text": "Get the wheel to the stranded wagon on the ridge road before dark.",
"completeWhen": { "flag": "side.first_job.stage", "op": ">=", "value": 2 } },
{ "id": "back", "text": "Bring the wagon down and tell Dace.",
"completeWhen": { "flag": "side.first_job.stage", "op": ">=", "value": 3 } },
{ "id": "tailwind", "text": "Trace Tailwind with Dace.",
"completeWhen": { "flag": "spell.learned.tailwind", "op": "!=", "value": 0 } }
]
}
- Fight:
pass_hounds(3gale_hound, the bestiary's), with the wagon as a protect objective after dusk. - Rewards: 80 copper; spell
tailwind(taught by Dace);rep.waymakers+5. The pup (side.first_job.choice1):morality+5. Prop:spare_wheel. - Yarn:
Side_LongRoad_DaceWheel,Side_Ridge_StrandedWagon,Side_Ridge_Pup,Side_LongRoad_DaceTailwind.
The Last Known Camp (`side_last_camp`)
- Giver / where: Dace, at the yard. The camp is on the highest ridge above the last windmill, the storm shrine,
long_road,Event_last_camp. - Available from: Act 2, after the first job.
side.first_job.stage >= 3. - Story: The Waymakers keep a book of every camp the Endless Caravan is said to have made. The last entry is two hundred years old: a ring of stones on the highest ridge, above the storm line, and Dace has never had the time to go. Winged glints ride the storm wind at the shrine. Nailed to the cairn is a sail-patch with two peaks stitched in green, the Squall glyph, and round the cairn wagon ruts are cut into the stone, fresh: someone camped here this year. Waymaker custom says you leave a camp as you found it, so the protagonist can take the patch or trace it there and leave it for whoever comes next, and then tell Dace about the ruts or keep them.
{
"id": "side_last_camp",
"title": "The Last Known Camp",
"description": "The Waymakers' book of the Endless Caravan's camps ends at a ring of stones above the storm line. Dace has never had time to go.",
"category": "side",
"giver": "dace",
"startWhen": { "flag": "side.first_job.stage", "op": ">=", "value": 3 },
"stages": [
{ "id": "climb", "text": "Climb past the last windmill to the Endless Caravan's last known camp.",
"completeWhen": { "flag": "side.last_camp.stage", "op": ">=", "value": 1 } },
{ "id": "shrine", "text": "Clear the storm shrine at the camp.",
"completeWhen": { "flag": "side.last_camp.stage", "op": ">=", "value": 2 } },
{ "id": "squall", "text": "Trace the sail-patch on the cairn.",
"completeWhen": { "flag": "spell.learned.squall", "op": "!=", "value": 0 } },
{ "id": "dace", "text": "Go back down and tell Dace what you found.",
"completeWhen": { "flag": "side.last_camp.stage", "op": ">=", "value": 3 } }
]
}
- Fight:
ridge_winged(2winged_glint+ 2dust_glint, the bestiary's). - Rewards: 120 copper; spell
squall(whole glyph). Choice 1, take the patch: key itemfragment_squall(item.fragment_squall1),rep.waymakers+5. Choice 2, trace it and leave it:rep.waymakers+10, no key item (the patch stays at the cairn for relearning). Either way the Long Road fast-travel stops open (travel.long_road_stops1, Act 2's hook). Telling Dace about the ruts setsside.last_camp.ruts1, whichside_endless_caravanreads. - Yarn:
Side_LongRoad_DaceCampBook,Side_Ridge_StormShrine,Side_Ridge_Cairn,Side_Ridge_Ruts,Side_LongRoad_DaceRuts.
The Quiet Courier (`side_quiet_courier`)
- Giver / where: Sister Ise (Evane, Still Choir), a notice on Twinhold's Far Hand board (
Board_far, boardtwinhold_board_far). The search is onlong_roadat the Quiet Fork ravine,Event_courier_ravine. - Available from: Act 2. Posted when
twinhold.stage >= 1(Act 2's "find a missing Choir courier on the Long Road"). - Story: Brother Teague, a Still Choir courier, left Hushfold for Lanternfall eleven days ago and never reached the Sand Gate. The protagonist finds his tracks at the Quiet Fork below the snow line, and frost glints in the ravine. Teague is alive under a rock shelf with a broken ankle, and he signs that his satchel is not to be opened: in it is one letter, amber wax over Choir silver, Wen's to Lanternfall. The protagonist can carry it on to Lanternfall, take Teague and the letter back up to Hushfold, or take it to the Twinhold watch, which pays for "letters to the Shattered". If asked why he walked alone, Teague signs that Wen sends one courier at a time, so only one can be caught.
{
"id": "side_quiet_courier",
"title": "The Quiet Courier",
"description": "A Still Choir courier left Hushfold for Lanternfall eleven days ago and never arrived. The notice says only: missing on the Long Road.",
"category": "side",
"giver": "ise",
"board": "twinhold_board_far",
"postWhen": { "flag": "twinhold.stage", "op": ">=", "value": 1 },
"startWhen": { "flag": "side.quiet_courier.stage", "op": ">=", "value": 1 },
"stages": [
{ "id": "tracks", "text": "Look for Brother Teague on the Long Road, towards the Quiet Fork.",
"completeWhen": { "flag": "side.quiet_courier.stage", "op": ">=", "value": 2 } },
{ "id": "ravine", "text": "Clear the frost glints from the ravine.",
"completeWhen": { "flag": "side.quiet_courier.stage", "op": ">=", "value": 3 } },
{ "id": "letter", "text": "Decide what happens to the letter in Teague's satchel.",
"completeWhen": { "flag": "side.quiet_courier.choice", "op": "!=", "value": 0 } },
{ "id": "warm", "text": "Get Teague somewhere warm.",
"completeWhen": { "flag": "side.quiet_courier.stage", "op": ">=", "value": 4 } }
]
}
- Fight:
fork_frost_glints(new): 3frost_glint, Act 2, difficulty about 1.6, 30 XP. - Rewards: 100 copper from the Choir's house in Twinhold. Choice 1, on to Lanternfall:
rep.choir+5,rep.facets+5. Choice 2, back to Hushfold:rep.choir+5. Choice 3, the Twinhold watch: 50 copper bounty on top,rep.wardens+10,rep.choir−10,morality−5.side_wen_lettersreads the choice. Prop:courier_letter. - Yarn:
Side_Twinhold_ChoirNotice,Side_Fork_Tracks,Side_Fork_Ravine,Side_Fork_Teague,Side_Fork_LetterChoice,Side_Twinhold_WatchBounty.
Glass in the Antlers (`side_glass_stag`)
- Giver / where: Hesper, a windmiller (Evane, Waymakers),
long_road, the windmill ridge,Mark_hesper. The stag is in the misty highland meadow below her mill,Event_meadow. - Available from: Act 2, once the caravan has crossed.
long_road.stage >= 5. - Story: A glasshorn stag has charged three wagons on the meadow below Hesper's mill, and she wants it dead before it kills a driver. In the meadow the protagonist sees why: glass from the pass warp has grown into its antlers and keeps growing, and every charge is the stag trying to rub it off on something. They can fight it, or Calm it (Hushfold's spell, as a field cast), crack the glass off with Repel and close the wound with Mend. Hesper doesn't believe the stag is done until the next wagon goes through untouched. Then she sends a sack of flour and an apology she clearly wrote three times.
{
"id": "side_glass_stag",
"title": "Glass in the Antlers",
"description": "A glasshorn stag keeps charging wagons below Hesper's mill. She wants it dead before it kills a driver.",
"category": "side",
"giver": "hesper",
"startWhen": { "flag": "long_road.stage", "op": ">=", "value": 5 },
"stages": [
{ "id": "find", "text": "Find the glasshorn stag in the misty meadow below Hesper's mill.",
"completeWhen": { "flag": "side.glass_stag.stage", "op": ">=", "value": 1 } },
{ "id": "stop", "text": "Stop the stag charging the wagons.",
"completeWhen": { "flag": "side.glass_stag.choice", "op": "!=", "value": 0 } },
{ "id": "hesper", "text": "Tell Hesper.",
"completeWhen": { "flag": "side.glass_stag.stage", "op": ">=", "value": 2 } }
]
}
- Fight:
meadow_stag(glasshorn_stag, the bestiary's), choice 1. - Field casts: choice 2 needs
spell.learned.calm:<<prompt_cast calm>>, then<<prompt_cast repel>>, then<<prompt_cast mend>>if known. - Rewards: 90 copper;
rep.waymakers+5. Choice 1, fought: the bestiary's drops. Choice 2, calmed:morality+5 and abreath_tonicfrom Hesper. It answers the bestiary's wildlife question one way for one animal; the Lead can make it the rule. - Yarn:
Side_LongRoad_HesperMill,Side_Meadow_Stag,Side_Meadow_StagCalm,Side_LongRoad_HesperAfter.
The Outrider's Ribbon (`side_outrider_ribbon`)
- Giver / where: Dace, at either yard; the route is the ridge, past the three ribbon posts from
side_ness_ribbons(Ribbon_1toRibbon_3). - Available from: Act 3, if Ness was hurt at the pass and the Greenvault patient's fate is settled.
all[act2.done != 0, ness.hurt == 1, bramble.patient != 0]. - Story: Act 2's "Dace remembers" hook, in two versions on one route. If Ness didn't make it (
bramble.patient == 1, Bramble's word accepted), Dace has Ness's own ribbon and asks the protagonist to tie it at the last ribbon post, because Waymakers leave a ribbon where a rider stopped moving; Dace says once that it isn't the protagonist's fault, which is how they know Dace remembers. If Ness lived (bramble.patient2, 3 or 4), she rides again with a glass scar on her forearm and wants to race the protagonist over her ribbon route once, for the scar's sake. Dust glints are on the pass either way.
{
"id": "side_outrider_ribbon",
"title": "The Outrider's Ribbon",
"description": "Dace wants to talk about Ness.",
"category": "side",
"giver": "dace",
"startWhen": { "all": [
{ "flag": "act2.done", "op": "!=", "value": 0 },
{ "flag": "ness.hurt", "op": "==", "value": 1 },
{ "flag": "bramble.patient", "op": "!=", "value": 0 } ] },
"stages": [
{ "id": "meet", "text": "Talk to Dace at the caravan yard about Ness.",
"completeWhen": { "flag": "side.outrider_ribbon.stage", "op": ">=", "value": 1 } },
{ "id": "route", "text": "Run Ness's ribbon route along the ridge, past the three ribbon posts.",
"completeWhen": { "flag": "side.outrider_ribbon.stage", "op": ">=", "value": 2 } },
{ "id": "back", "text": "Ride back down to Dace.",
"completeWhen": { "flag": "side.outrider_ribbon.stage", "op": ">=", "value": 3 } }
]
}
- Fight:
pass_dust_glints(4dust_glint, the bestiary's). - Rewards:
rep.waymakers+5. Ness alive: 150 copper (Dace pays the run, win or lose the race) and awaymaker_bandfrom Ness. Ness gone: Dace gives Ness'swaymaker_bandand offers 150 copper "for the walk"; turning the copper down ismorality+5. Prop:ness_ribbon(the second version only). - Yarn:
Side_LongRoad_DaceNess,Side_Ridge_NessRace,Side_Ridge_NessRibbon,Side_LongRoad_DaceAfterNess.
The Endless Caravan (`side_endless_caravan`)
- Giver / where: Dace, at either yard; the night is at the last known camp,
Event_last_camp. - Available from: the world after Act 4.
act4.stage >= 8. - Story: The first Waymakers swore to keep moving until the Mere was whole again, and since the Pane every Waymaker is arguing about the oath. Mended: the Mere is still, so is the oath kept, and do they stop? Shattered: they mean to swear it again. Held: they argue whether a cracked Pane that stands counts. Dace calls a camp at the cairn and asks the protagonist to keep the night there and say their piece. At dawn new ruts run past the cairn that nobody heard being made, and Dace looks at them a long time before telling the wagons to roll.
{
"id": "side_endless_caravan",
"title": "The Endless Caravan",
"description": "The Waymakers swore to keep moving until the Mere was whole. Since the Pane, nobody agrees what that means now.",
"category": "side",
"giver": "dace",
"startWhen": { "flag": "act4.stage", "op": ">=", "value": 8 },
"stages": [
{ "id": "ride", "text": "Ride with Dace's wagons up to the last known camp.",
"completeWhen": { "flag": "side.endless_caravan.stage", "op": ">=", "value": 1 } },
{ "id": "night", "text": "Keep the night with the Waymakers at the cairn.",
"completeWhen": { "flag": "side.endless_caravan.stage", "op": ">=", "value": 2 } },
{ "id": "speak", "text": "Say your piece about the oath.",
"completeWhen": { "flag": "side.endless_caravan.choice", "op": "!=", "value": 0 } },
{ "id": "dawn", "text": "See what the morning shows.",
"completeWhen": { "flag": "side.endless_caravan.stage", "op": ">=", "value": 3 } }
]
}
- Fight:
ridge_wingedduring the night, Shattered and Held only (the Mended night is quiet). - Rewards:
windbreak_coatfrom Dace (unique.windbreak_coat1);rep.waymakers+10. Choice 1, keep moving:waymaker.oath1. Choice 2, stop:waymaker.oath2 (in Mended, the yards start building houses). Choice 3, it isn't mine to say:waymaker.oath3,morality+5. Ifside.last_camp.rutsis 1, Dace brings the player as "the one who found the ruts". - Yarn:
Side_LongRoad_DaceOath,Side_Ridge_OathCamp,Side_Ridge_OathSpeak,Side_Ridge_NewRuts.
Twinhold and Greenvault Open page
Pale stone, mirrored streets and a rule for everything, with the terraces downriver where everything grows and dies. Work comes from the two bulletin boards (Board_near, Board_far), the recruits' yard and the Warden court, and after Act 4 from Ondine and the Hall of Measure. Yarn file: Dialogue/Side/lowlands.yarn.
The Recruits' Yard (`side_tally_drill`)
- Giver / where: the Warden drill-master, named here Garrick Lisle (Evane, Wardens),
twinhold, the recruits' yard on the Near Hand,Event_drill. - Available from: Act 2, after Tamsin's offer at the courting.
offer.tally != 0. - Story: Detailed in walkthrough-act-2.md, scene 1.7. Tally is a whole glyph cut in the drill stone, and the drill-master runs anyone who traces it through a spar against a drill golem. This tab names him and gives him one habit: he is good with recruits and bad at looking at the Sallow on the yard's wall map. That pays off in Act 3: the Sallow ledger at the Hour Stair (scene 3.4) names him as one of the five menders of the first mending, beside Ansel Wray (Tamsin's Teacher, region 6).
{
"id": "side_tally_drill",
"title": "The Recruits' Yard",
"description": "Tamsin's offer stands: join the recruits' drill for a morning and learn the Wardens' counting glyph.",
"category": "side",
"giver": "garrick",
"startWhen": { "flag": "offer.tally", "op": "!=", "value": 0 },
"stages": [
{ "id": "tally", "text": "Trace the Tally glyph on the drill stone.",
"completeWhen": { "flag": "spell.learned.tally", "op": "!=", "value": 0 } },
{ "id": "spar", "text": "Spar with the drill golem.",
"completeWhen": { "flag": "side.tally_drill.stage", "op": ">=", "value": 1 } }
]
}
- Fight:
drill_spar(warden_golem, walkthrough and bestiary). - Rewards: spell
tally(whole);rep.wardens+5. No copper. - Yarn:
Act2_Drill_Tally(walkthrough). New:Side_Twinhold_DrillSpar(the after lines).
Grain for the Terraces (`side_valley_grain`)
- Giver / where: Quartermaster Rell (Evane, Wardens), a notice on the Near Hand board (
Board_near, boardtwinhold_board_near). The cart leaves from the Valley Gate and goes down the valley road togreenvault,Spawn_lower_gate. - Available from: Act 2. Posted when
twinhold.stage >= 1(Act 2's "escort grain to Greenvault"). - Story: The Wardens are sending a cart of grain to Greenvault and want a guard. Halfway down the valley road a thorn warden has walked off the terraces and stands in the road; the cart can't pass until it is beaten, or until a Root cast opens the vine-locked lane round it. At the lower gate Brother Fallow reads the note that came with the grain: in return, the Tenders are to take two Warden menders onto the terraces "to keep the decay in measure". The Tenders didn't ask for grain. The protagonist can hand over grain and note, leave the grain at the old orchard outside the walls for the gleaners and take the note back to Rell, or give Fallow the grain and lose the note on the way.
{
"id": "side_valley_grain",
"title": "Grain for the Terraces",
"description": "A cart of Warden grain for Greenvault needs a guard down the valley road. The notice doesn't say who asked for it.",
"category": "side",
"giver": "rell",
"board": "twinhold_board_near",
"postWhen": { "flag": "twinhold.stage", "op": ">=", "value": 1 },
"startWhen": { "flag": "side.valley_grain.stage", "op": ">=", "value": 1 },
"stages": [
{ "id": "road", "text": "Guard the grain cart down the valley road to Greenvault.",
"completeWhen": { "flag": "side.valley_grain.stage", "op": ">=", "value": 2 } },
{ "id": "gate", "text": "Hand over the grain at Greenvault's lower gate.",
"completeWhen": { "flag": "side.valley_grain.choice", "op": "!=", "value": 0 } },
{ "id": "pay", "text": "Go back to Quartermaster Rell in Twinhold.",
"completeWhen": { "flag": "side.valley_grain.stage", "op": ">=", "value": 3 } }
]
}
- Fight:
valley_thorn_warden(new): 1thorn_wardenon the valley road, Act 2, difficulty 3.2 (asgreenvault_terrace), 60 XP. Skipped with<<prompt_cast root>>at the vine lane (Root's field effect). - Rewards: choice 1, grain and note delivered: 90 copper,
rep.wardens+5,rep.tenders−5. Choice 2, grain to the orchard and the note back: 45 copper (Rell docks the grain),morality+5,rep.wardens−5. Choice 3, the note lost: 90 copper (Rell assumes it arrived),rep.tenders+5; a Warden mender turns up at Greenvault anyway later (a line). Prop:grain_tithe_note. - Yarn:
Side_Twinhold_GrainNotice,Side_Valley_ThornWarden,Side_Valley_VineLane,Side_Greenvault_FallowNote,Side_Twinhold_RellPay.
Chalk on the Far Hand (`side_far_hand_roofs`)
- Giver / where: Watch-captain Orme (Evane, Wardens), a notice on the Far Hand board (
Board_far, boardtwinhold_board_far). The roofs are intwinhold, markersEvent_roofs_1toEvent_roofs_3. - Available from: Act 2. Posted when
twinhold.stage >= 1(Act 2's "a reward for an unregistered caster seen on the Far Hand roofs"). - Story: The Far Hand watch wants the unregistered caster seen on the roofs at night. On the slates the protagonist finds chalk copies of Facet glyphs on chimney after chimney: halves of Prism Snare, the copies Pell gave away before the Bridge Court sealed him, a few with Nell's little mark from his free table at Halfway. The "caster" is Wick, a roofer's boy, who traces them every night and has never made one work, because a copy fizzles without a real fragment. But something did flash on the roofs: three glints have come up a hairline crack in an old chimney, and they copy his shapes back in loose light. The protagonist can give Orme the boy's name, report only the glints and the crack, or wash the chalk off, send Wick home and tell Orme the glints were the caster.
{
"id": "side_far_hand_roofs",
"title": "Chalk on the Far Hand",
"description": "The Far Hand watch wants the unregistered caster who has been seen on the roofs at night.",
"category": "side",
"giver": "orme",
"board": "twinhold_board_far",
"postWhen": { "flag": "twinhold.stage", "op": ">=", "value": 1 },
"startWhen": { "flag": "side.far_hand_roofs.stage", "op": ">=", "value": 1 },
"stages": [
{ "id": "watch", "text": "Watch the Far Hand roofs after dark.",
"completeWhen": { "flag": "side.far_hand_roofs.stage", "op": ">=", "value": 2 } },
{ "id": "glints", "text": "Deal with whatever is flashing on the chimneys.",
"completeWhen": { "flag": "side.far_hand_roofs.stage", "op": ">=", "value": 3 } },
{ "id": "verdict", "text": "Tell Watch-captain Orme who the caster was.",
"completeWhen": { "flag": "side.far_hand_roofs.choice", "op": "!=", "value": 0 } }
]
}
- Fight:
far_hand_glints(new): 3glinton the roofs, Act 2, difficulty about 1.0, 15 XP. It is the one wild fight inside an Evane city, because the warp crack is inside it. - Rewards: choice 1, Wick named: 120 copper,
rep.wardens+5,morality−10 (Wick has learned nothing and broken no law, so no court can seal anything, but his family is fined and shamed). Choice 2, the glints and the crack only: 120 copper,rep.wardens+5; Wick keeps tracing. Choice 3, the chalk washed off: 60 copper ("Glints aren't casters. Fine."),morality+5. - Note for the Lead: Act 1's hook says someone traced one of Nell's copies over a real fragment and it worked. This quest keeps Nell's copies and drops that twist, because every Facet glyph is split, taught, reflected or warp-born, so there is no whole Facet fragment for a copy to lie over.
- Yarn:
Side_Twinhold_RoofNotice,Side_Roofs_Chalk,Side_Roofs_Wick,Side_Roofs_Glints,Side_Twinhold_OrmeVerdict.
The Court Sits (`side_court_summons`)
- Giver / where: Clerk Amsel (Evane, Wardens), by a summons a Waymaker rider brings wherever the player is; the court is
hall_of_measure, the Bridge Court. - Available from: Act 3, if the player cast Table Mend in Greenvault's vine hall.
all[crime.table_mend == 1, act2.done != 0]. - Story: A Tender reported the Table Mend cast in the vine hall (Act 2, scene 6.2), and the Warden court has summoned the protagonist to the Bridge Court, where Pell was sealed. Un-teaching is real and narrow: a court seals the one spell used in the crime, and only after a crime. The protagonist can accept, argue, or not go. Arguing only works with someone to speak for them: the patient who lived because of the cast, Tamsin at
tamsin.trust >= 3, or Trusted standing with the Wardens (rep.wardens >= 25); then the court fines them instead. Whatever the verdict, Clerk Amsel asks quietly afterwards how the patient is.
{
"id": "side_court_summons",
"title": "The Court Sits",
"description": "A Warden court in Twinhold has summoned you over a Facet spell cast in Greenvault's vine hall.",
"category": "side",
"giver": "amsel",
"startWhen": { "all": [
{ "flag": "crime.table_mend", "op": "==", "value": 1 },
{ "flag": "act2.done", "op": "!=", "value": 0 } ] },
"stages": [
{ "id": "answer", "text": "Answer the summons at the Bridge Court in Twinhold.",
"completeWhen": { "any": [
{ "flag": "side.court_summons.stage", "op": ">=", "value": 1 },
{ "flag": "act3.done", "op": "!=", "value": 0 } ] } },
{ "id": "verdict", "text": "Stand before the court.",
"completeWhen": { "any": [
{ "flag": "side.court_summons.choice", "op": "!=", "value": 0 },
{ "flag": "act3.done", "op": "!=", "value": 0 } ] } }
]
}
- Rewards and costs: choice 1, accept: Table Mend is sealed (
<<seal_spell table_mend>>,spell.sealed.table_mend1; the Lanternfall healer will teach it again, or the unbinder breaks the seal for 200 copper),rep.wardens+5. Choice 2, argue with a speaker: a fine of 150 copper and no seal,rep.tenders−5 (the Tender who reported loses face). Choice 3, argue alone: sealed,rep.wardens−5. Not going: if Act 3 ends with the summons unanswered,side.court_summons.choice4,rep.wardens−10, andwarden_enforcerscan meet the player on Evane roads until they go. - Yarn:
Side_Road_SummonsRider,Side_Twinhold_BridgeCourt,Side_Twinhold_CourtVerdict,Side_Twinhold_ClerkAfter.
Iver's Trial (`side_iver_trial`)
- Giver / where: Clerk Amsel, by summons;
hall_of_measure, the Bridge Court. - Available from: the world after Act 4, Mended only.
all[act4.stage >= 8, act4.outcome == 1]. - Story: In the Mended world Iver Kest is taken to Twinhold for trial (the epilogue card), and the court calls the protagonist because they were at the Pane. A second un-teaching would seal the one glyph Iver retraced as a boy after his first. Iver doesn't ask the protagonist for anything. They can speak for him, speak against him, or say only what they saw. Afterwards, whatever the verdict, Iver asks one thing: whether Lanternfall's lanterns are as dark as people say.
{
"id": "side_iver_trial",
"title": "Iver's Trial",
"description": "Iver Kest is on trial in the Hall of Measure, and the court wants to hear from someone who was at the Pane.",
"category": "side",
"giver": "amsel",
"startWhen": { "all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "act4.outcome", "op": "==", "value": 1 } ] },
"stages": [
{ "id": "court", "text": "Go to the Bridge Court in Twinhold for Iver Kest's trial.",
"completeWhen": { "flag": "side.iver_trial.stage", "op": ">=", "value": 1 } },
{ "id": "speak", "text": "Speak when the court calls you.",
"completeWhen": { "flag": "side.iver_trial.choice", "op": "!=", "value": 0 } }
]
}
- Rewards: choice 1, for him:
rep.facets+10,rep.wardens−10,morality+5; Iver is not sealed again. Choice 2, against him:rep.wardens+10,rep.facets−10; Iver is sealed a second time. Choice 3, only what you saw: no move; the court seals him ifrep.evane >= 25and spares him otherwise. No copper.side.iver_trial.verdict(1 spared, 2 sealed) is for later Lanternfall lines. - Yarn:
Side_Twinhold_IverCalled,Side_Twinhold_IverTrial,Side_Twinhold_IverAfter.
Ondine's Hands (`side_ondine_hands`)
- Giver / where: Prelate Ondine Ash (Evane, Wardens),
hall_of_measure, the Speaker's Chamber; then Mother Bramble ingreenvault, the vine hall,Event_bramble. - Available from: the world after Act 4, Mended only.
all[act4.stage >= 8, act4.outcome == 1]. - Story: Ondine kept the Prelacy and lost her casting: her hands went still on the Pane. She asks the protagonist, privately, to find out whether a Tender can give them back. Mother Bramble won't, because nature wouldn't: it isn't a wound, it's a cost. The protagonist can also ask in Lanternfall, where the Facet healer says Table Mend doesn't touch it and Sorrel the unbinder says "A seal's only a knot. This isn't a knot." Back in Twinhold they tell Ondine the truth, a hope that isn't there, or that the people she had sealed live with exactly this. She pays them to the exact copper, as the Wardens always do, and then asks them to sit a while.
{
"id": "side_ondine_hands",
"title": "Ondine's Hands",
"description": "Ondine can't cast any more. She wants to know, privately, whether a Tender can give her hands back.",
"category": "side",
"giver": "ondine",
"startWhen": { "all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "act4.outcome", "op": "==", "value": 1 } ] },
"stages": [
{ "id": "bramble", "text": "Ask Mother Bramble at Greenvault whether a Tender can give Ondine's hands back.",
"completeWhen": { "flag": "side.ondine_hands.stage", "op": ">=", "value": 1 } },
{ "id": "tell", "text": "Go back to Ondine with what you found.",
"completeWhen": { "flag": "side.ondine_hands.choice", "op": "!=", "value": 0 } }
]
}
- Rewards: 200 copper. Choice 1, the truth:
morality+5. Choice 2, false hope:morality−5,rep.tenders−5 (she keeps asking them). Choice 3, the un-taught live with this:rep.facets+5,rep.wardens−5,morality+5. Asking in Lanternfall setsside.ondine_hands.lanternfall1 for an extra line. - Yarn:
Side_Twinhold_OndineAsks,Side_Greenvault_BrambleNo,Side_Lanternfall_HealersLane,Side_Twinhold_OndineTold.
Letters from Twinhold (`side_twinhold_letters`)
- Giver / where: Ondine, by an unsigned letter that Marra hands over in
sallowbank; the warp is on Greenvault's decay terrace,greenvault,Event_decay_terrace. - Available from: the world after Act 4, Shattered only.
all[act4.stage >= 8, act4.outcome == 2]. - Story: In the Shattered world Ondine leads mending crews that can mend nothing, and once a season an unsigned letter comes in a hand the protagonist knows, naming a place where her crew failed. The first names Greenvault's decay terrace, where a warp has opened under the dead stump that held the Wither glyph. The crew's mender stones are cracked, and glints and a thorn warden gone wild hold the terrace. Ondine is there herself, keeping the gardeners back with a rope and no spells. The protagonist can help her crew hold the line, tell her to stop and let the Tenders decide, or just clear the terrace and say nothing; she doesn't thank them, and next season another letter comes.
{
"id": "side_twinhold_letters",
"title": "Letters from Twinhold",
"description": "An unsigned letter, in a hand you know, names a place where a mending crew failed.",
"category": "side",
"giver": "ondine",
"startWhen": { "all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "act4.outcome", "op": "==", "value": 2 } ] },
"stages": [
{ "id": "letter", "text": "Read the unsigned letter and go to Greenvault's decay terrace.",
"completeWhen": { "flag": "side.twinhold_letters.stage", "op": ">=", "value": 1 } },
{ "id": "warp", "text": "Clear the warp on the decay terrace.",
"completeWhen": { "flag": "side.twinhold_letters.stage", "op": ">=", "value": 2 } },
{ "id": "ondine", "text": "Talk to Ondine at the rope line.",
"completeWhen": { "flag": "side.twinhold_letters.choice", "op": "!=", "value": 0 } }
]
}
- Fight:
decay_warp(new):glint_brute+thorn_warden+ 3glint, after Act 4, difficulty about 5.5, 120 XP. - Rewards: 200 copper, left with the letter "to the exact copper". Choice 1, hold the line with her crew:
rep.wardens+10,rep.tenders−5. Choice 2, tell her to stop:rep.tenders+10,morality+5. Choice 3, say nothing:rep.tenders+5. Each later season's letter adds 1 toside.twinhold_letters.seasonand posts a rumour for the warp-born glyph hunts (that activity's tab). Prop:letter_unsigned. - Yarn:
Side_Sallowbank_UnsignedLetter,Side_Greenvault_DecayWarp,Side_Greenvault_OndineRope.
Hushfold and the Hour Stair Open page
Snow, silence and bells: an abbey where nobody speaks and a cliff where every hour is kept. Work comes from Sister Ise and Choirmistress Wen in Hushfold (Act 2 on) and from Keeper Hale and Old Pim on the Stair (Act 3 on). Yarn file: Dialogue/Side/highlands.yarn.
The Owl on the Arch (`side_arch_owl`)
- Giver / where: Sister Ise (Evane, Still Choir, signs only),
hushfold, the signing hall,Mark_ise. The owl is on the broken arch above the abbey,Event_arch. - Available from: Act 2,
hushfold.stage >= 1. - Story: An echo owl has nested on the broken arch and repeats every sound in the valley back, footsteps, doors and the Choir's one evening tone, so the abbey hasn't had a silent night in a month. The monks are tired in a way only monks can be. The protagonist can fight it, or Calm it from the foot of the arch and stand still in the snow until it settles. Before it goes quiet the owl repeats a sound no monk made: a low hum, many voices, very far off. It has been copying the Sallow's hum, carried across the highlands.
{
"id": "side_arch_owl",
"title": "The Owl on the Arch",
"description": "Something on the broken arch repeats every sound in the valley back. Hushfold hasn't had a quiet night in a month.",
"category": "side",
"giver": "ise",
"startWhen": { "flag": "hushfold.stage", "op": ">=", "value": 1 },
"stages": [
{ "id": "arch", "text": "Climb to the broken arch above the abbey. Walk, don't run.",
"completeWhen": { "flag": "side.arch_owl.stage", "op": ">=", "value": 1 } },
{ "id": "owl", "text": "Quiet the echo owl.",
"completeWhen": { "flag": "side.arch_owl.choice", "op": "!=", "value": 0 } },
{ "id": "ise", "text": "Tell Sister Ise.",
"completeWhen": { "flag": "side.arch_owl.stage", "op": ">=", "value": 2 } }
]
}
- Fight:
arch_owl(echo_owl, the bestiary's), choice 1. Choice 2 is the field cast<<prompt_cast calm>>(needsspell.learned.calm). - Rewards: 80 copper from the abbey door and 2
still_water. Choice 1, fought:rep.choir+5. Choice 2, calmed:rep.choir+10,morality+5; the owl stays and the monks keep it as the abbey's one sound. - Yarn:
Side_Hushfold_IseOwl,Side_Arch_Owl,Side_Arch_OwlCalm,Side_Arch_OwlHum,Side_Hushfold_IseAfter.
Wen's Letters (`side_wen_letters`)
- Giver / where: Choirmistress Wen (Evane, Still Choir),
hushfold, her writing room,Event_wen. Deliveries go to Sorrel at Lanternfall's Unbinders' alcove (or to the open council's ring of seats if the player hasn't met Iver), and the last to Keeper Hale at the Hour Stair. - Available from: Act 2, once the first letter is delivered (
wen_letter.delivered != 0, thehushfoldquest). The last letter is given only afteract2.done != 0and delivered onceact3.stage >= 7. - Story: Act 2's "running courier chain between Hushfold and Lanternfall". With the first letter delivered, Wen gives the protagonist one letter per visit, each sealed in Choir silver with amber over it. Wardens at the Far Gate yard now check satchels on the Long Road, and harder if the courier on the board was handed to the watch (
side.quiet_courier.choice == 3): at each check the protagonist can show the letter, lie, or refuse. A seal can be broken in the letters viewer, and Wen knows by the next visit; the letters say sorry, over and over, for something two thousand years old, the first hint of the Choir's guilt. The last letter is addressed to the one Evane who already knows what the Choir did.
{
"id": "side_wen_letters",
"title": "Wen's Letters",
"description": "Wen has more letters for Lanternfall, one at a time, so that only one can be caught.",
"category": "side",
"giver": "wen",
"startWhen": { "flag": "wen_letter.delivered", "op": "!=", "value": 0 },
"stages": [
{ "id": "second", "text": "Carry Wen's second letter to Lanternfall.",
"completeWhen": { "any": [
{ "flag": "side.wen_letters.stage", "op": ">=", "value": 2 },
{ "flag": "side.wen_letters.caught", "op": "!=", "value": 0 } ] } },
{ "id": "third", "text": "Go back to Hushfold for the next letter, and carry it to Lanternfall.",
"completeWhen": { "any": [
{ "flag": "side.wen_letters.stage", "op": ">=", "value": 4 },
{ "flag": "side.wen_letters.caught", "op": "!=", "value": 0 } ] } },
{ "id": "hale", "text": "Carry Wen's last letter to Keeper Hale at the Hour Stair.",
"completeWhen": { "any": [
{ "flag": "side.wen_letters.stage", "op": ">=", "value": 6 },
{ "flag": "side.wen_letters.caught", "op": "!=", "value": 0 } ] } }
]
}
- Stage flag: 1 second letter taken, 2 delivered, 3 third taken, 4 delivered, 5 last taken, 6 delivered to Hale.
- Rewards: 40 copper from Wen per delivered letter (120 in all). Each Lanternfall delivery:
rep.choir+5,rep.facets+5. The letter to Hale:hale.trust+1,rep.keepers+5. At a satchel check, show it:rep.wardens+5,rep.choir−10, and the chain ends (side.wen_letters.caught1). Lie:morality−5. Refuse:rep.wardens−5. Breaking a seal:rep.choir−10,side.wen_letters.read1. Prop:wen_letter(the walkthrough's, reused for each letter in turn). - Yarn:
Side_Hushfold_WenChain,Side_Lanternfall_SorrelLetter,Side_LongRoad_SatchelCheck,Side_Hushfold_WenSealBroken,Side_Stair_HaleLetter.
The Third Bell (`side_bell_ringer`)
- Giver / where: Old Pim (Evane, Keepers),
hour_stair, the third bell landing,Event_ringer. - Available from: Act 3.
side.ringer.asked != 0, which Pim's ask sets atact3.stage >= 7. - Story: Detailed in walkthrough-act-3.md, scene 3.5. Old Pim has rung the third bell on the hour for sixty years, and his knees have gone. The protagonist rings it three times at the right in-game hours, a timing errand. Pim teaches Toll in return: "One loop, one rope. The bell does the rest, later."
{
"id": "side_bell_ringer",
"title": "The Third Bell",
"description": "Old Pim has rung the third bell of the Hour Stair for sixty years. His knees have stopped agreeing to it.",
"category": "side",
"giver": "old_pim",
"startWhen": { "flag": "side.ringer.asked", "op": "!=", "value": 0 },
"stages": [
{ "id": "ring_three", "text": "Ring the third bell on the hour, three times.",
"completeWhen": { "flag": "side.ringer.rings", "op": ">=", "value": 3 } },
{ "id": "learn_toll", "text": "Let Pim show you the bell's glyph.",
"completeWhen": { "flag": "spell.learned.toll", "op": "!=", "value": 0 } }
]
}
- Rewards: spell
toll(taught);rep.keepers+5. No copper. - Yarn:
Act3_Ringer_Ask,Act3_Ringer_Ring,Act3_Ringer_Teach(walkthrough).
Back on the Shelf (`side_back_on_shelf`)
- Giver / where: Keeper Hale (Evane, Keepers),
hour_stair, the archive, the confiscated-glyph shelf. The quest is also a deed on the Atonement board (undermere,Event_atonement). - Available from: Act 3, if the player stole from the archive: the triangle half of Prism Snare (scene 3.4) or the records after knocking Hale out (scene 6.3).
any[act3.stole_half != 0, hale.robbed != 0]. - Story: Act 3's atonement deed "return a stolen fragment to Hale". Keepers notice everything, so Hale knows what was taken. Taking it back means the gate if the player is clean enough (
moralityabove −20), or Nell's smugglers' climb if not, and Hale is waiting, as he was at the window. He puts the shard back on its shelf (the spell stays learned) or takes the stolen records back. Then he hands the protagonist the shelf label with their name on it, written the day they took it.
{
"id": "side_back_on_shelf",
"title": "Back on the Shelf",
"description": "You took something from the Hour Stair. Keeper Hale wrote it down.",
"category": "side",
"giver": "hale",
"startWhen": { "any": [
{ "flag": "act3.stole_half", "op": "!=", "value": 0 },
{ "flag": "hale.robbed", "op": "!=", "value": 0 } ] },
"stages": [
{ "id": "climb", "text": "Take what you took back up the Hour Stair.",
"completeWhen": { "flag": "side.back_on_shelf.stage", "op": ">=", "value": 1 } },
{ "id": "give", "text": "Give it back to Keeper Hale.",
"completeWhen": { "flag": "side.back_on_shelf.stage", "op": ">=", "value": 2 } }
]
}
- Rewards:
morality+5 (one atonement deed),hale.trust+1,rep.keepers+5.item.prism_snare_half_trianglegoes to 0 (relearning after an un-teaching would need the shelf again). Ifhale.robbed, the records stay closed to both courts (scene 6.3), butside_hundred_year_hourstill opens later. - Yarn:
Side_Stair_ShelfGate,Side_Stair_HaleShelf,Side_Undermere_ShelfDeed(the board entry). The fallen route reusesUndermere_Climb.
What the Choir Sang (`side_choir_guilt`)
- Giver / where: Choirmistress Wen,
hushfold,Event_wen; then the abbey's sealed undercroft,Event_undercroft. - Available from: Act 3, after the Hour Stair records.
all[lore.breaking != 0, hushfold.stage >= 1]. - Story: Act 3's "Still Choir's guilt" hook. The records showed that the Drowned Choir was the choir of the first Great Mending, the Still Choir's own forebears. When the protagonist tells Wen, she signs that the Choir has always known, and the letters to the Facets were its only apology. She takes them down to the sealed undercroft, and the hushed one that guards it wakes anyway, because the rule is older than she is. Inside is the Mending's score, the song that pulled the Glass taut, with its last page missing; if the player found the hymn page (
side_drowned_choir), it is a copy of those lines. Wen asks what to do with it: sing it once aloud, so the valley hears what the Choir did; keep it sealed and keep writing letters; or send it to Lanternfall's open council.
{
"id": "side_choir_guilt",
"title": "What the Choir Sang",
"description": "The Hour Stair showed you whose song broke the Mere. Choirmistress Wen will want to know that you know.",
"category": "side",
"giver": "wen",
"startWhen": { "all": [
{ "flag": "lore.breaking", "op": "!=", "value": 0 },
{ "flag": "hushfold.stage", "op": ">=", "value": 1 } ] },
"stages": [
{ "id": "tell", "text": "Tell Choirmistress Wen what the Hour Stair's records showed.",
"completeWhen": { "flag": "side.choir_guilt.stage", "op": ">=", "value": 1 } },
{ "id": "undercroft", "text": "Go down with Wen to the abbey's sealed undercroft.",
"completeWhen": { "flag": "side.choir_guilt.stage", "op": ">=", "value": 2 } },
{ "id": "score", "text": "Decide with Wen what happens to the Mending's score.",
"completeWhen": { "flag": "side.choir_guilt.choice", "op": "!=", "value": 0 } }
]
}
- Fight:
abbey_hushed(hushed_one, the bestiary's "forcing a sealed door"). - Rewards: 150 copper and 3
still_water. Choice 1, sing it:morality+5,rep.facets+5,rep.choir−5 (the silence is broken for one night). Choice 2, keep it sealed:rep.choir+10. Choice 3, send it to Lanternfall:rep.facets+10,rep.choir+5. Ifside.drowned_choir.choice == 2(the page went to Wen), the score is whole and Wen signs one line more. - Yarn:
Side_Hushfold_WenRecords,Side_Undercroft_Hushed,Side_Undercroft_Score,Side_Hushfold_ScoreChoice,Side_Hushfold_ChoirSings.
The Ledger's Other Seals (`side_other_stillings`)
- Giver / where: Keeper Hale,
hour_stair, the warp ledger lectern,Event_ledger; the stilled place is in Hushfold's echo valley,hushfold,Event_stilled_fold. - Available from: the end of Act 3, once Thaw is known.
all[lore.sallow_warp != 0, composite.known.thaw != 0]. - Story: Act 3's "other stilled places" hook. Hale's ledger has more five-person seals than Corran's, and he marks the nearest: a shepherd's fold in Hushfold's echo valley, stilled thirty-one years ago under a captain the ledger doesn't name. The Still Choir has walked past it in silence every day since, because silence was the rule. Frost glints and an echo owl have gathered on the old seal's leak. When the protagonist threads Thaw over the fold, the shepherd, Abner Coll, wakes thirty-one years late, and the abbey's goats turn out to be his flock's grandchildren. Then someone has to decide who hears about it.
{
"id": "side_other_stillings",
"title": "The Ledger's Other Seals",
"description": "Corran wasn't the only five-person seal in Keeper Hale's ledger. He has marked the nearest one.",
"category": "side",
"giver": "hale",
"startWhen": { "all": [
{ "flag": "lore.sallow_warp", "op": "!=", "value": 0 },
{ "flag": "composite.known.thaw", "op": "!=", "value": 0 } ] },
"stages": [
{ "id": "page", "text": "Read the ledger page Hale marked.",
"completeWhen": { "flag": "side.other_stillings.stage", "op": ">=", "value": 1 } },
{ "id": "fold", "text": "Find the stilled fold in Hushfold's echo valley.",
"completeWhen": { "flag": "side.other_stillings.stage", "op": ">=", "value": 2 } },
{ "id": "leak", "text": "Clear the leak from the old seal.",
"completeWhen": { "flag": "side.other_stillings.stage", "op": ">=", "value": 3 } },
{ "id": "thaw", "text": "Thread Thaw over the fold.",
"completeWhen": { "flag": "side.other_stillings.stage", "op": ">=", "value": 4 } },
{ "id": "who", "text": "Decide who hears about it.",
"completeWhen": { "flag": "side.other_stillings.choice", "op": "!=", "value": 0 } }
]
}
- Fight:
fold_glints(new): 3frost_glint+echo_owl, Act 3 on, difficulty about 3.5, 70 XP. Field cast<<prompt_cast thaw>>atEvent_stilled_fold. - Rewards: 200 copper ("the Keepers pay for corrections"),
hale.trust+1,morality+5. Choice 1, tell the Wardens in Twinhold:rep.wardens−5,rep.evane+5 (they have to answer for it, and Evane folk hear they will). Choice 2, tell Hale only:rep.keepers+5. Choice 3, let Abner and the Choir decide:rep.choir+5. Prop:ledger_page. The ledger's other seals are rumours for the warp-born glyph hunts. - Yarn:
Side_Stair_LedgerPage,Side_Valley_StilledFold,Side_Valley_FoldGlints,Side_Valley_FoldThaw,Side_Valley_AbnerWakes,Side_Valley_WhoHears.
Reading the Records (`side_reading_records`)
- Giver / where: Keeper Hale,
hour_stair, the archive,Event_pool. The seats: the Hall of Measure (hall_of_measure), the vine hall (greenvault), Wen's writing room (hushfold), Dace's yard (long_road) and the open council's ring of seats (lanternfall). - Available from: the world after Act 4, Held only.
all[act4.stage >= 8, act4.outcome == 3]. - Story: Act 4's Held hook. The Pane is cracked and standing, and Hale has decided that the records of the Breaking should not wait for each new Speaker to see them once. He gives the protagonist five copies and asks them to carry one to each seat and watch how it is taken. The Tenders are quiet, the Choir is relieved, Dace reads it on the tailboard of a wagon, Lanternfall's council argues all night, and the Hall of Measure reads it aloud if Tamsin stepped out on the Pane and shelves it if she didn't (the epilogue card). Hale asks to hear every reaction, word for word.
{
"id": "side_reading_records",
"title": "Reading the Records",
"description": "Keeper Hale wants the records of the Breaking read in every seat, not just shown to each Speaker once.",
"category": "side",
"giver": "hale",
"startWhen": { "all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "act4.outcome", "op": "==", "value": 3 } ] },
"stages": [
{ "id": "copies", "text": "Take the five copies from Keeper Hale.",
"completeWhen": { "flag": "side.reading_records.stage", "op": ">=", "value": 1 } },
{ "id": "seats", "text": "Carry a copy to each seat: Twinhold, Greenvault, Hushfold, the Long Road and Lanternfall.",
"completeWhen": { "flag": "side.reading_records.seats", "op": ">=", "value": 5 } },
{ "id": "hale", "text": "Tell Hale how each seat took it.",
"completeWhen": { "flag": "side.reading_records.stage", "op": ">=", "value": 2 } }
]
}
- Rewards: per seat: Greenvault
rep.tenders+5; Hushfoldrep.choir+5; the Long Roadrep.waymakers+5; Lanternfallrep.facets+5; Twinholdrep.wardens+5 iftamsin.stepped_out, −5 otherwise. From Hale: 250 copper, 3hour_sand,rep.keepers+10. Prop:records_copy(5). - Yarn:
Side_Stair_HaleCopies,Side_Twinhold_RecordsRead,Side_Greenvault_RecordsRead,Side_Hushfold_RecordsRead,Side_LongRoad_RecordsRead,Side_Lanternfall_RecordsRead,Side_Stair_HaleHears.
The Hundred-Year Hour (`side_hundred_year_hour`)
- Giver / where: Keeper Hale,
hour_stair, the archive; then the empty bell frame above the bell court,Event_thirteenth_frame, and the room behind it,Event_second_pool. - Available from: the world after Act 4, every outcome.
act4.stage >= 8. - Story: Act 4's long post-game mystery. Hale lets slip that the records were not the only thing the Keepers held in the Hour. The Stair has twelve bells, but the ledger of ringers counts thirteen, and above the bell court is a frame with no bell in it; Toll's field effect rings the hour-door behind it open, and an hour sentinel keeps the room. Inside is a second pool with the Hour still open, and in it the old shore, where two lake-folk draw one glyph between them across the water: the First Pair. "We never closed it," Hale says. "We couldn't find where it stops."
{
"id": "side_hundred_year_hour",
"title": "The Hundred-Year Hour",
"description": "Keeper Hale has let slip that the records weren't the only thing the Keepers held in the Hour.",
"category": "side",
"giver": "hale",
"startWhen": { "flag": "act4.stage", "op": ">=", "value": 8 },
"stages": [
{ "id": "ask", "text": "Ask Keeper Hale what else the Keepers hid in the Hour.",
"completeWhen": { "flag": "side.hundred_year_hour.stage", "op": ">=", "value": 1 } },
{ "id": "frame", "text": "Find the bell frame above the bell court that has no bell in it.",
"completeWhen": { "flag": "side.hundred_year_hour.stage", "op": ">=", "value": 2 } },
{ "id": "toll", "text": "Ring the hour-door open with Toll.",
"completeWhen": { "flag": "side.hundred_year_hour.stage", "op": ">=", "value": 3 } },
{ "id": "keep", "text": "Keep the hour behind the door.",
"completeWhen": { "flag": "side.hundred_year_hour.stage", "op": ">=", "value": 4 } },
{ "id": "pool", "text": "Look into the second pool.",
"completeWhen": { "flag": "side.hundred_year_hour.stage", "op": ">=", "value": 5 } }
]
}
- Fight:
thirteenth_hour(new):hour_sentinel(the bestiary's 500 HP), after Act 4, difficulty 5.0, 110 XP. Field cast<<prompt_cast toll>>atEvent_thirteenth_frame(needsspell.learned.toll, fromside_bell_ringer). - Rewards: 250 copper, 3
hour_sand,hale.trust+1,rep.keepers+5. The pool differs by outcome: Held, the glyph on the shore matches the Pane's dawn glyph; Mended, the shore is still and the two figures never finish; Shattered, the pool flickers through other skies. This is the first chapter; the rest stays open. - Yarn:
Side_Stair_HaleSlip,Side_Stair_ThirteenthFrame,Side_Stair_HourDoor,Side_Stair_ThirteenthHour,Side_Stair_SecondPool.
The Shardfield and Lanternfall Open page
Wind, ringing glass and amber light, and nobody asks who you are. Work comes from Facets, who would rather give than pay: the Bevel cut, Sorrel's alcove, the Lanternfall board (lanternfall_board, a new marker Event_board at the foot of the Giving Steps) and cuts caught out on the open field.
Lio's Door (`side_lios_door`)
- Giver / where: Lio (Facets), Lanternfall (
lanternfall), the Bevel cut's house,Event_lio_door. - Available from: Act 2, once the player has met Lio (walkthrough-act-2.md, scene 3.3).
startWhen:act1.done != 0andmet.lio != 0. - Story: This is the walkthrough's "Lio's door" hook (walkthrough-act-2.md, Hooks for Side Content). Lio has sat on her hands since her first cast of Bevel Lash went wild and turned her brother's forearm to glass. The player offers her the one spell that only pushes and that no court can ever seal: the door-mark, Repel. They trace it on the Bevel cut's doorposts, the player's hands over hers, the way Aske taught Brace at the ferry. Rook waits outside and doesn't come in. On the third trace Lio does it alone, slowly, and says the mark is warm. She paints the player a pendant with her first two shapes since the accident.
- Stages:
{
"id": "side_lios_door",
"title": "Lio's Door",
"description": "Lio won't use her hands since her first cast hurt her brother. There's one spell that only pushes, and no court can take it away.",
"category": "side",
"giver": "lio",
"startWhen": {
"all": [
{ "flag": "act1.done", "op": "!=", "value": 0 },
{ "flag": "met.lio", "op": "!=", "value": 0 }
]
},
"stages": [
{
"id": "offer",
"text": "Offer to teach Lio the door-mark.",
"completeWhen": { "flag": "side.lios_door.stage", "op": ">=", "value": 1 }
},
{
"id": "lesson",
"text": "Trace the door-mark with Lio, hand over hand, three times.",
"completeWhen": { "flag": "side.lios_door.stage", "op": ">=", "value": 2 }
},
{
"id": "her_own",
"text": "Watch Lio trace it on her own doorposts.",
"completeWhen": { "flag": "side.lios_door.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: no copper (Garnet won't pay for a gift);
sigil_pendant(Lio paints the shapes on it herself);morality+5,rep.facets+5,rook.trust+1. Setslio.door_mark= 1, which Lio's Hands and Act 4's lantern-line scene (4.9) can read. - Yarn:
Side_Lanternfall_LioOffer,Side_Lanternfall_LioLesson,Side_Lanternfall_LioDoor,Side_Lanternfall_RookOutside(Dialogue/Side/shardfield.yarn).
Pell's Hands (`side_pells_hands`)
- Giver / where: Pell (Facets, Rook's cut), Lanternfall, Sorrel's alcove off the Giving Steps,
Event_unbinder. - Available from: Act 2, only if the player told Pell about the unbinders after the un-teaching (walkthrough-act-2.md, scene 1.4).
startWhen:pell.told_unbinder != 0andlanternfall.stage >= 1. The slow way finishes in Act 3. - Story: This is the walkthrough's "Pell's hands" hook. Pell walked south from Twinhold on the player's word and now sits outside Sorrel's alcove with sealed hands and no money. Sorrel's price is 200 copper, and Sorrel gives no discounts ("A seal's only a knot. Knots have prices."). The player chooses: pay, or help Pell do it the slow way and retrace Prism Snare from real fragments. Pell's own triangle shard was taken with the copies in Twinhold and sent up to the Keepers' confiscated shelf, so the slow way waits until the player holds both halves in Act 3 (the Girdle house in Corran, the Hour Stair archive). Either way, Pell's hands answer again, and Pell's first words are "First thing I'll do is give it away."
- Stages:
{
"id": "side_pells_hands",
"title": "Pell's Hands",
"description": "Pell came to Lanternfall to have the seal broken, on your word, with no money at all.",
"category": "side",
"giver": "pell",
"startWhen": {
"all": [
{ "flag": "pell.told_unbinder", "op": "!=", "value": 0 },
{ "flag": "lanternfall.stage", "op": ">=", "value": 1 }
]
},
"stages": [
{
"id": "meet",
"text": "Pell is outside Sorrel's alcove with no money. Talk to Pell.",
"completeWhen": { "flag": "side.pells_hands.stage", "op": ">=", "value": 1 }
},
{
"id": "way_back",
"text": "Pay Sorrel 200 copper, or bring Pell both halves of Prism Snare to retrace it.",
"completeWhen": {
"any": [
{ "flag": "side.pells_hands.stage", "op": ">=", "value": 3 },
{
"all": [
{ "flag": "item.prism_snare_half_square", "op": "!=", "value": 0 },
{ "flag": "item.prism_snare_half_triangle", "op": "!=", "value": 0 }
]
}
]
}
},
{
"id": "hands_answer",
"text": "Retrace Prism Snare with Pell, or let Sorrel untie the knot.",
"completeWhen": { "flag": "side.pells_hands.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: no copper (Pell has none). Either way
morality+5. Paying Sorrel: −200 copper,rep.evane−5 (the Wardens hear that a sealed runner was unbound). Retracing:rep.facets+5,rook.trust+1. Setsside.pells_hands.way(1 paid, 2 retraced). - Yarn:
Side_Lanternfall_PellAlcove,Side_Lanternfall_PellPay,Side_Lanternfall_PellRetrace,Side_Lanternfall_PellGives.
The Hunter's Trail (`side_hunters_trail`)
- Giver / where: Ottie (Facets), a girl of eight, through the Lanternfall board (
board:lanternfall_board); the trail runs out into the Shardfield (shardfield). - Available from: Act 2.
startWhen:act1.done != 0andlanternfall.stage >= 2. - Story: Ottie found a shard on her own near the city with a line cut into it: the line half of Bevel Lash, the "shard near Lanternfall" source. A glyph-hunter took it off her to sell in Halfway, and her cut posted the job: "Taken from a child. Whoever brings it back, we'll owe them." The player follows the hunter between the standing shards and catches him with two shard glints (he runs at 30% unless staggered). Then comes the choice Lanternfall doesn't like hearing. The player can give the shard to Ottie, who is eight, the age Lio was. They can give it to her cut to keep until she's older, a "not yet" no Facet says out loud. Or they can keep it.
- Fights:
hunter_ambush(bestiary:glyph_hunter+ 2shard_glint). - Stages:
{
"id": "side_hunters_trail",
"title": "The Hunter's Trail",
"description": "A glyph-hunter took a found shard off a child to sell. Her cut wants it back.",
"category": "side",
"giver": "ottie",
"board": "lanternfall_board",
"startWhen": {
"all": [
{ "flag": "act1.done", "op": "!=", "value": 0 },
{ "flag": "lanternfall.stage", "op": ">=", "value": 2 }
]
},
"stages": [
{
"id": "posting",
"text": "Hear Ottie's cut out about the stolen shard.",
"completeWhen": { "flag": "side.hunters_trail.stage", "op": ">=", "value": 1 }
},
{
"id": "catch",
"text": "Track the glyph-hunter between the shards and get the shard back.",
"completeWhen": { "flag": "side.hunters_trail.stage", "op": ">=", "value": 2 }
},
{
"id": "whose",
"text": "Decide where the shard goes: to Ottie, to her cut for later, or with you.",
"completeWhen": { "flag": "side.hunters_trail.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: 120 copper from the cut's purse, unless the player keeps the shard. To Ottie:
rep.facets+5. To her cut, "not yet":morality+5,rep.facets−5. Kept:bevel_lash_half_line,morality−5,rep.facets−10 (hoarding). If it goes to Ottie or her cut, they let the player borrow it to trace Bevel Lash later: Facets share. Setsside.hunters_trail.choice(1 Ottie, 2 cut, 3 kept). - Yarn:
Side_Lanternfall_BoardShard,Side_Shardfield_HunterCaught,Side_Lanternfall_OttieChoice.
The Triangle Past the Corran Road (`side_bevel_triangle`)
- Giver / where: Cass (Facets, Bevel cut), Lio's brother, at the Bevel cut's house (
Event_lio_door). The shard is in the Shardfield past the old Corran road,Event_bevel_triangle(new). - Available from: late Act 2, after the glass storm, and any time in Act 3 or later.
startWhen:met.lio != 0andlanternfall.stage >= 4. - Story: Cass tells the player where Rook sent Lio for the triangle half of Bevel Lash: a standing shard deep past the Corran road, beyond the fallen shard line. She went alone, at nine. In Act 2 the only way past the shard line is a crack along the cracked lakebed, where a shardshell crab lives. From Act 3 the road is open. The triangle is still in the shard, and Lio's small hand-prints are still in the grit at its foot. The player traces it with the line half (from the Vault haul, or Ottie's shard). Then they choose: leave the shard standing, as Facets leave every glyph, or chip the triangle out so no other nine-year-old finds it alone, which Lanternfall will call hoarding.
- Fights:
lakebed_crab(Act 2 route only),shard_packat the shard. - Stages:
{
"id": "side_bevel_triangle",
"title": "The Triangle Past the Corran Road",
"description": "Rook told a nine-year-old where to find the other half of Bevel Lash, and she went alone. Cass wants you to go and look.",
"category": "side",
"giver": "cass",
"startWhen": {
"all": [
{ "flag": "met.lio", "op": "!=", "value": 0 },
{ "flag": "lanternfall.stage", "op": ">=", "value": 4 }
]
},
"stages": [
{
"id": "ask",
"text": "Ask Cass where Lio found her glyph.",
"completeWhen": { "flag": "side.bevel_triangle.stage", "op": ">=", "value": 1 }
},
{
"id": "line_half",
"text": "Get the line half of Bevel Lash: from the Vault haul, or Ottie's shard near Lanternfall.",
"completeWhen": {
"any": [
{ "flag": "item.bevel_lash_half_line", "op": "!=", "value": 0 },
{ "flag": "vault.glyph", "op": "==", "value": 1 },
{ "flag": "spell.learned.bevel_lash", "op": "!=", "value": 0 }
]
}
},
{
"id": "past_the_line",
"text": "Get past the fallen shard line to the triangle.",
"completeWhen": { "flag": "side.bevel_triangle.stage", "op": ">=", "value": 2 }
},
{
"id": "trace",
"text": "Trace Bevel Lash: the triangle on the shard, the line in your other hand.",
"completeWhen": { "flag": "spell.learned.bevel_lash", "op": "!=", "value": 0 }
},
{
"id": "leave_or_take",
"text": "Leave the triangle standing, or chip it out.",
"completeWhen": { "flag": "side.bevel_triangle.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: spell
bevel_lash. Left standing:rep.facets+5. Chipped out:bevel_lash_half_triangle(kept for relearning after a seal),morality+5,rep.facets−10. Crab and glint drops as the bestiary says. Setsside.bevel_triangle.choice(1 left, 2 chipped). - Yarn:
Side_Lanternfall_CassTells,Side_Shardfield_ShardLine,Side_Shardfield_LioPrints,Side_Shardfield_TriangleChoice.
Shelter from the Storm (`side_storm_shelter`)
- Giver / where: Marl (Facets), the eldest of the Star cut, at a shelter rock on the Shardfield road to Corran (overworld,
Event_star_shelter, new). - Available from: Act 3, on the road north of the Sallow warp (walkthrough-act-3.md, scene 1.4).
startWhen:act2.done != 0andact3.stage >= 3. The first walk north after the Sallow warp brings a storm in; later storms on this road are random, so the quest can be finished later. - Story: A glass storm comes in over the dry-bank road. Marl and three of the Star cut are pinned behind a shelter rock with a runner bleeding from a shard cut. Across the road one tall shard is showing a diamond and a straight stroke while the storm blows: Girdle Gate, a reflected glyph that is gone when the storm drops. The player chooses who comes first. If they shelter the cut through the shard volleys (Facet Seal or Brace), Marl points to the right shard, and after the storm the cut shows the player the thread they use to get home through storms: Girdle Gate into Repel, Rebound. If they run for the shard first, they get Girdle Gate, but the runner is cut badly and the Star cut gives nothing until the player comes back and mends them. Girdle Gate's field cast steps the player through marked standing shards, and one of them comes out at the Undermere's back door (sets
undermere.backdoor= 1 the first time). - Fights:
glass_storm(bestiary hazard boss, Act 3 form: no Facet Seal square; Girdle Gate shows in a roadside shard during the Eye instead). - Stages:
{
"id": "side_storm_shelter",
"title": "Shelter from the Storm",
"description": "A glass storm on the Corran road, a cut pinned behind a rock, and a glyph showing in a shard across the way.",
"category": "side",
"giver": "marl",
"startWhen": {
"all": [
{ "flag": "act2.done", "op": "!=", "value": 0 },
{ "flag": "act3.stage", "op": ">=", "value": 3 }
]
},
"stages": [
{
"id": "storm",
"text": "A glass storm. Get the Star cut into cover, or get to the shard that's showing a glyph.",
"completeWhen": { "flag": "side.storm_shelter.stage", "op": ">=", "value": 1 }
},
{
"id": "girdle_gate",
"text": "Trace the glyph in the shard while the storm still shows it.",
"completeWhen": { "flag": "spell.learned.girdle_gate", "op": "!=", "value": 0 }
},
{
"id": "storm_over",
"text": "Wait out the storm.",
"completeWhen": { "flag": "side.storm_shelter.stage", "op": ">=", "value": 2 }
},
{
"id": "rebound",
"text": "Go back to Marl. If their runner was hurt, mend them first.",
"completeWhen": { "flag": "composite.known.rebound", "op": "!=", "value": 0 }
}
]
}
- Rewards: spell
girdle_gate; threadrebound(composite.known.rebound); 2 ×facet_tokenfrom the Star cut. Shelter first:morality+5,rep.facets+5. Shard first:morality−5,rep.facets−5, and Rebound only after a Mend or Table Mend field cast on the runner. Setsside.storm_shelter.first(1 shelter, 2 shard). - Yarn:
Side_Shardfield_StormCut,Side_Shardfield_GirdleShard,Side_Shardfield_StormOver,Side_Shardfield_MarlRebound,Side_Shardfield_RunnerMend.
Cass's Arm (`side_cass_arm`)
- Giver / where: Garnet (Facets, Bevel cut), Lio's mother, at the Bevel cut's house (
Event_lio_door). - Available from: the end of Act 3 and later, once the player knows Thaw.
startWhen:composite.known.thaw != 0andmet.lio != 0. - Story: Word reaches Lanternfall that someone undid the stilling at Corran. Garnet asks the player to try the same on Cass, whose forearm has been clear glass since Lio's first cast. Thaw's field cast undoes a stilling, but the thread is long (1,360 ms; Hasten helps), and Cass's arm has been glass for years. Lio has to choose too, with the player: stay and watch her harm undone, or wait outside. The arm comes back cold and weak, and Cass flexes the fingers and laughs. If Lio stayed, she goes out and talks to Rook for the first time since the accident.
- Stages:
{
"id": "side_cass_arm",
"title": "Cass's Arm",
"description": "Someone undid a stilling at Corran. Cass's arm has been glass to the elbow for years.",
"category": "side",
"giver": "garnet",
"startWhen": {
"all": [
{ "flag": "composite.known.thaw", "op": "!=", "value": 0 },
{ "flag": "met.lio", "op": "!=", "value": 0 }
]
},
"stages": [
{
"id": "ask",
"text": "Hear what Garnet wants to try.",
"completeWhen": { "flag": "side.cass_arm.stage", "op": ">=", "value": 1 }
},
{
"id": "lio",
"text": "Let Lio stay and watch, or ask her to wait outside.",
"completeWhen": { "flag": "side.cass_arm.stage", "op": ">=", "value": 2 }
},
{
"id": "thaw",
"text": "Thread Thaw over Cass's arm.",
"completeWhen": { "flag": "side.cass_arm.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards:
shard_cuff(Cass's old cuff: "Not payment. A gift.");morality+5,rep.facets+5. If Lio stayed:rook.trust+1 andlio.saw_cass= 1. Setscass.thawed= 1. - Yarn:
Side_Lanternfall_GarnetAsks,Side_Lanternfall_LioStays,Side_Lanternfall_CassThaw,Side_Lanternfall_LioRook.
No More Seals (`side_no_more_seals`)
- Giver / where: Sorrel (Facets), the unbinder, Lanternfall,
Event_unbinder. - Available from: after Act 4, Shattered only.
startWhen:act4.stage >= 8andact4.outcome == 2. - Story: This is Act 4's "No more seals" hook (walkthrough-act-4.md, section 15). When the Pane broke, every seal in Velan broke with it, and no court can make a new one. Sorrel has no work left and a ledger of everyone who came to the alcove and couldn't pay. Some of them were sealed for a reason. Sorrel asks the player to find three before the glints or the Wardens do. A Warden runaway's Hush came back mid-sentence and won't stop. Pell is giving Prism Snare to anyone on the Giving Steps again, children included. A Hollow cut caster got Crown Surge back while still angry, and wild casting is drawing glints to a Shardfield hamlet. For each one the player helps them hold it, or brings them to Lanternfall's open council.
- Fights:
freed_caster(new:hollow_cut),freed_glints(new: 4glint+glint_brute). - Stages:
{
"id": "side_no_more_seals",
"title": "No More Seals",
"description": "Every seal broke with the Pane. Sorrel has a ledger of people who got their spells back all at once.",
"category": "side",
"giver": "sorrel",
"startWhen": {
"all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "act4.outcome", "op": "==", "value": 2 }
]
},
"stages": [
{
"id": "ledger",
"text": "Take Sorrel's ledger.",
"completeWhen": { "flag": "item.sorrel_ledger", "op": "!=", "value": 0 }
},
{
"id": "three",
"text": "Find three of the unsealed before the glints do.",
"completeWhen": { "flag": "side.no_more_seals.found", "op": ">=", "value": 3 }
},
{
"id": "back",
"text": "Bring the ledger back to Sorrel.",
"completeWhen": { "flag": "side.no_more_seals.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: 250 copper (Sorrel's last fees, given away);
morality+5,rep.facets+5. Each caster brought to the council instead of helped:rep.facets−5,rep.evane+5. - Yarn:
Side_Lanternfall_SorrelLedger,Side_Shardfield_FreedHush,Side_Lanternfall_FreedPell,Side_Shardfield_FreedSurge,Side_Lanternfall_SorrelBack.
Lio's Hands (`side_lios_hands`)
- Giver / where: Lio, Lanternfall, the Bevel cut's house (
Event_lio_door). - Available from: after Act 4, every outcome.
startWhen:act4.stage >= 8andmet.lio != 0. - Story: This is Act 4's "Lio's hands" hook, which follows the companions epilogue card. Mended: Lio's hands have gone quiet. If the player told her hands can learn (
act4.lio_hope), she wants a mirrored glyph, and the player teaches her one hand over hand (Repel if Lio's Door wasn't done, otherwise any mirrored spell they know). Shattered: she has been handed three more glyphs she didn't ask for. With hope, she wants to learn to say no, and the player goes with her to hand each one back or on to someone who can hold it. Held: she keeps her one glyph, Bevel Lash, and learns to hold it. She practises on a cut-glass post in the Shardfield while the player stands by with Brace, three casts at rising quality, and Cass watches if his arm is back. Without hope, each version is shorter and ends with "Maybe later." - Stages:
{
"id": "side_lios_hands",
"title": "Lio's Hands",
"description": "Whatever happened at the Pane happened to Lio's hands too.",
"category": "side",
"giver": "lio",
"startWhen": {
"all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "met.lio", "op": "!=", "value": 0 }
]
},
"stages": [
{
"id": "find",
"text": "Find Lio at the Bevel cut's house.",
"completeWhen": { "flag": "side.lios_hands.stage", "op": ">=", "value": 1 }
},
{
"id": "help",
"text": "Help Lio with her hands.",
"completeWhen": { "flag": "side.lios_hands.stage", "op": ">=", "value": 2 }
},
{
"id": "after",
"text": "See what she does with them.",
"completeWhen": { "flag": "side.lios_hands.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards:
morality+5. Mended:rep.evane+5. Shattered:rep.facets+5. Held:rep.facets+5 androok.trust+1. Setslio.hands(1 mirrored, 2 says no, 3 holds it). - Yarn:
Side_Lanternfall_LioAfter_Mended,Side_Lanternfall_LioAfter_Shattered,Side_Shardfield_LioAfter_Held,Side_Lanternfall_LioMaybeLater.
Corran Open page
A town twenty years late. In Act 3 it is silent glass and the only voice is Aske's. Once Corran wakes, the work is its people: the woken townsfolk, Hollis and Brin at the well, and the Warden seal-watch nobody told to go home.
First Light (`side_first_light`)
- Giver / where: Aske (unaligned), Corran (
corran), the well,Event_well; the glyph shows atEvent_well_dawn(new). - Available from: Act 3, after the glass has shown Aske's story (walkthrough-act-3.md, scene 2.3).
startWhen:act3.stage >= 5. - Story: After the third reflection, Aske says there was a Keeper with the five menders: "They always send one to write it down." The Keeper left something in the glass. At dawn, and only at dawn, a pink spiral shows in the clear glass beside the well: Recall, a reflected glyph. The player has to be at the well when the sun comes up, which means camping in a silent town. When it is traced, Recall's first replay shows the Keeper at the edge of the menders' ring, writing, then turning to cut the spiral into the glass on purpose, so somebody could look later. Before the town wakes the glyph shows in the stilled glass; afterwards it shows in the well water, which stays mirror-still.
- Stages:
{
"id": "side_first_light",
"title": "First Light",
"description": "Aske says the Keepers always send someone to write it down. Whoever it was left something in Corran's glass.",
"category": "side",
"giver": "aske",
"startWhen": { "flag": "act3.stage", "op": ">=", "value": 5 },
"stages": [
{
"id": "dawn",
"text": "Be at Corran's well when the sun comes up.",
"completeWhen": { "flag": "side.first_light.stage", "op": ">=", "value": 1 }
},
{
"id": "trace",
"text": "Trace the spiral in the glass before the dawn light moves off it.",
"completeWhen": { "flag": "spell.learned.recall", "op": "!=", "value": 0 }
}
]
}
- Rewards: spell
recall;aske.trust+1 (for staying up with her). No copper. - Yarn:
Side_Corran_KeeperMark,Side_Corran_DawnWait,Side_Corran_RecallReplay(Dialogue/Side/corran.yarn).
The Woken of Corran (`side_woken_<name>`)
- Giver / where: each woken townsperson, Corran. One small quest per figure.
- Available from: the end of Act 3, once Corran wakes, for each figure the player looked at in scene 2.2 or talks to after waking.
startWhen:act3.stage >= 14and (corran.looked.<name> != 0ormet.<name> != 0). - Story: This is the walkthrough's "woken of Corran" hook (walkthrough-act-3.md, section 15; the twelve names are in section 13). Every woken figure has kin outside who aged twenty years, or a job that stopped mid-step. The errands are small, and the point is the person at the end of each one. Every errand is morality-positive and counts as an atonement deed (
long_way_up). The walkthrough lists eleven names for twelve figures; the twelfth here is Abel, "a man halfway through a word" from scene 2.2.
| Figure (2.2 look) | Errand | Where | Fight | Gift |
|---|---|---|---|---|
| Oren (the man leading a goat) | The goat walked on twenty years ago. Its line ended in Sallowbank, and the player's own goat is its great-granddaughter (Marra remembers the stray nanny the player's father brought home). Give Oren the goat, or take Oren down to meet her (Tobin ferries him for free). | Sallowbank | none | facet_token |
| Della (the woman with the falling eggs) | Her little sister went to Halfway. Find Ama on the Amber Row, now the older sister by eleven years, and bring her up or carry a letter. | Halfway | none | 2 × raw_amber |
| Abel (the man halfway through a word) | He was halfway through asking Della to marry him. He wants to finish the question, but only with Ama there (do Della's errand first). | Corran | none | 2 × still_water (well water for the wedding) |
| Kit (the child a step ahead) | Their father walked to Lanternfall after the stilling to work the lens shops, and never came back. Carry the news to Lanternfall: he cuts glass in Iver's workshop now (in Act 4 he is on the cut line). | Lanternfall, Event_iver | none | facet_token |
| Pip (the child a step behind) | Pip wants the race finished. Run it again across Corran against Kit, who has grown no older either (a timed run; Drift and Tailwind help). | Corran | none | honey_bread |
| Teg (the cart-driver) | His cart of lamp glass was owed to a Lanternfall stall twenty years ago. The stall-keeper's daughter runs it now. Deliver it and settle the old debt. The glass is fine; it's glass. | Lanternfall, cut-and-carry stalls | none | 150 copper (Teg's half of the old price) |
| Tam (Hollis's pupil) | He wants to finish his lesson, and Hollis says he needs a fresh practice shard from the Shardfield edge. | Shardfield edge | edge_boar | 2 × mirror_grit |
| Bel (Hollis's pupil) | Her grandmother died while Bel stood in glass. Facet graves carry the sigil, so find the grave shard in Lanternfall by reading sigils, as in 2.2. | Lanternfall | none | none |
| Corr (Hollis's pupil) | His father went down into the Undermere after Corran and never came up. Carry word down (the den if the player is fallen; the diggings tunnel or the back door otherwise), and walk him up if he'll come. | The Undermere | roof_drop | morality +5 more |
| Gessa (the well-wright) | The well rope rotted away in twenty years. Bring 5 river_reeds to plait a new one. If corran.cracked_figure is set, she was the figure the colossus's blow cracked, and wears a glass seam on her shoulder. | Sallow banks | none | 2 × still_water |
| Lune (the door-painter) | Winged glints nest on the roofs by the hairline warp, so she can't get up a ladder to repaint the sigil doors. | Corran rooftops | warp_skies | Lune paints the player's sigil on the farm door at Sallowbank (home.sigil_door = 1) |
| Fitch (the old man asleep on the bench) | He slept through the stilling and woke up the same. He asks after his fishing friend Tobin, who is now twenty years older than him. Bring word, or bring Tobin up. | Sallowbank | none | 2 × eel_pie (Tobin's) |
- Stages: each figure is its own quest,
side_woken_<name>, with stage flagside.woken_<name>.stage. Oren's as the sample:
{
"id": "side_woken_oren",
"title": "Oren's Goat",
"description": "Oren was leading a goat to market when the glass came. The goat kept walking. That was twenty years ago.",
"category": "side",
"giver": "oren",
"startWhen": {
"all": [
{ "flag": "act3.stage", "op": ">=", "value": 14 },
{
"any": [
{ "flag": "corran.looked.oren", "op": "!=", "value": 0 },
{ "flag": "met.oren", "op": "!=", "value": 0 }
]
}
]
},
"stages": [
{
"id": "ask_around",
"text": "Ask Marra in Sallowbank about a stray nanny goat, twenty years back.",
"completeWhen": { "flag": "side.woken_oren.stage", "op": ">=", "value": 1 }
},
{
"id": "choose",
"text": "Give Oren your goat, or bring Oren down to Sallowbank to meet her.",
"completeWhen": { "flag": "side.woken_oren.stage", "op": ">=", "value": 2 }
},
{
"id": "tell",
"text": "Go back to Oren.",
"completeWhen": { "flag": "side.woken_oren.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: every errand gives
morality+5 andrep.facets+5 (walkthrough-act-3.md, section 10), counts as one atonement deed whilemorality≤ −10, and gives the gift in the table. Giving Oren the goat setshome.goat= 0 (Marra: "Hens'll be pleased."). - Yarn:
Act3_Woken_<Name>is the walkthrough's opening node for each figure (scene 5.3). The errand nodes areSide_Corran_Woken<Name>_AskandSide_Corran_Woken<Name>_Done, plusSide_Sallowbank_OrenGoat,Side_Halfway_DellaSister,Side_Lanternfall_KitFather,Side_Lanternfall_HobDebt,Side_Lanternfall_BelGrave,Side_Undermere_CorrFather,Side_Sallowbank_FitchTobin.
Tamsin's Teacher (`side_tamsins_teacher`)
- Giver / where: Tamsin Vale (Evane, Wardens), on the road or by letter; Mender Ansel Wray (new) is at Corran's seal-watch on the south road,
Event_seal_watch(new). - Available from: Act 3, after the Sallow ledger (walkthrough-act-3.md, scene 3.4), while Tamsin travels with the player; or any time after Act 3, by letter.
startWhen: (act3.stage >= 9andcompanion.tamsin == 1) oract3.done != 0. - Story: This is the walkthrough's "Tamsin's teacher" hook. One of the five menders named in the ledger for the Sallow mending is Ansel Wray, who taught Tamsin her first glyph. He has kept Corran's seal-watch ever since, because he couldn't face Twinhold, and he doesn't know what his mending did. Tamsin wants to know whether he knew. If she isn't with the player, she writes: "Find Ansel. Tell me what he says." The choice is the player's: tell Ansel that the mending he cast tore the Sallow warp open and brought the glints to Sallowbank, or let him keep his watch without knowing. Told, he takes off his bands and walks to the Sallow warp to help Tobin keep it.
- Fights:
corran_seal_watch(bestiary) only if the player starts pulling up seal-stones before talking. - Stages:
{
"id": "side_tamsins_teacher",
"title": "Tamsin's Teacher",
"description": "One of the five names in the Sallow ledger taught Tamsin her first glyph.",
"category": "side",
"giver": "tamsin",
"startWhen": {
"any": [
{
"all": [
{ "flag": "act3.stage", "op": ">=", "value": 9 },
{ "flag": "companion.tamsin", "op": "==", "value": 1 }
]
},
{ "flag": "act3.done", "op": "!=", "value": 0 }
]
},
"stages": [
{
"id": "name",
"text": "Ask Tamsin about the name she found in the ledger.",
"completeWhen": { "flag": "side.tamsins_teacher.stage", "op": ">=", "value": 1 }
},
{
"id": "find",
"text": "Find Mender Ansel Wray at Corran's seal-watch.",
"completeWhen": { "flag": "side.tamsins_teacher.stage", "op": ">=", "value": 2 }
},
{
"id": "tell",
"text": "Tell Ansel what his mending did, or let him keep his watch.",
"completeWhen": { "flag": "side.tamsins_teacher.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: no copper. Told: 2 ×
warden_band(Ansel's own pair),morality+5,tamsin.trust+1,rep.wardens−5; setsansel.told= 1. Spared:rep.wardens+5; Ansel stays on the watch. Setsmet.ansel. - Yarn:
Side_Corran_TamsinLedger,Side_Corran_TamsinLetter,Side_Corran_AnselWatch,Side_Corran_AnselTold,Side_Corran_AnselSpared.
The Ring of Stones (`side_seal_stones`)
- Giver / where: Hollis (Facets, the Girdle cut), Corran, the well (
Event_well). - Available from: after Act 3.
startWhen:act3.done != 0. - Story: The pale blue seal-stones Ondine's menders set round the well in scene 4.1 are still there, uncracked. Brin won't go near the well while they stand, and Hollis wants them gone. The seal-watch says the stones are Warden property and costly. Lifting them reveals why: each stone sits on a bead of glint quicksilver set into its base, the stuff that fed the warps. The player decides where they go: back to the menders, smashed in the square, or to Gessa, who can set them face down as a cap round the well. If Ansel was told the truth, the watch helps lift them. If not, lifting them while the menders watch means a fight, unless the player is Trusted with the Evane (
rep.evane≥ 25). - Fights:
corran_seal_watch(bestiary), avoidable as above. - Stages:
{
"id": "side_seal_stones",
"title": "The Ring of Stones",
"description": "Ondine's seal-stones still ring Corran's well. Brin won't go near it.",
"category": "side",
"giver": "hollis",
"startWhen": { "flag": "act3.done", "op": "!=", "value": 0 },
"stages": [
{
"id": "ask",
"text": "Hear Hollis out about the stones round the well.",
"completeWhen": { "flag": "side.seal_stones.stage", "op": ">=", "value": 1 }
},
{
"id": "lift",
"text": "Lift the seal-stones: talk the seal-watch round, or do it in front of them.",
"completeWhen": { "flag": "side.seal_stones.stage", "op": ">=", "value": 2 }
},
{
"id": "decide",
"text": "Return the stones to the menders, break them, or give them to Gessa for the well.",
"completeWhen": { "flag": "side.seal_stones.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: Returned: 200 copper from the seal-watch,
rep.wardens+5,rep.facets−5. Broken: 2 ×facet_tokenfrom the street,rep.facets+5,rep.wardens−5. Capped: 2 ×still_water,morality+5. Every route: 6 ×glint_quicksilverfrom the bases. Setscorran.stones(1 returned, 2 broken, 3 capped). - Yarn:
Side_Corran_HollisStones,Side_Corran_StonesLift,Side_Corran_StonesQuicksilver,Side_Corran_StonesChoice.
Brin's Word (`side_brins_word`)
- Giver / where: Brin (Facets, Girdle cut), Corran, the well (
Event_well; Act 4 calls the markerMark_well). - Available from: Act 4 and after, every outcome.
startWhen:act3.done != 0. - Story: This is Act 4's "Seli's word" hook, now Brin's word. Brin was halfway through a word when the glass took her, and she doesn't know which word. Hollis was teaching her to draw her own sigil, two unlike shapes like every Facet's, and Brin wears half of it on her collar. Recall cast at the well at dawn shows the moment, and Brin's mouth finishing the word: "wave". She wanted the low-wave half for her sigil, the shard the player picked up in the Shardfield. Without Recall, Hollis remembers it after a night's thought. The choice is the player's: give Brin the low-wave shard (they still know Pavilion Wake, and Brin will let them trace the shard at her door if it is ever sealed), or chalk her a copy to paint from. Brin paints her sigil, hourglass and wave. In the Mended world it is just paint and she knows it. In the Shattered world it glows faintly, like Fenn's chalk. In the Held world it is a sigil, and she's proud of it.
- Stages:
{
"id": "side_brins_word",
"title": "Brin's Word",
"description": "Brin was halfway through a word when the glass took her. Twenty years later she'd like to know which one.",
"category": "side",
"giver": "brin",
"startWhen": { "flag": "act3.done", "op": "!=", "value": 0 },
"stages": [
{
"id": "ask",
"text": "Hear Brin out at the well.",
"completeWhen": { "flag": "side.brins_word.stage", "op": ">=", "value": 1 }
},
{
"id": "the_word",
"text": "Cast Recall at the well at dawn, or ask Hollis what she remembers.",
"completeWhen": {
"any": [
{ "flag": "corran.saw_brin_word", "op": "!=", "value": 0 },
{ "flag": "side.brins_word.stage", "op": ">=", "value": 2 }
]
}
},
{
"id": "the_shard",
"text": "Give Brin the low-wave shard, or chalk her a copy.",
"completeWhen": { "flag": "side.brins_word.stage", "op": ">=", "value": 3 }
},
{
"id": "sigil",
"text": "Watch Brin paint her sigil.",
"completeWhen": { "flag": "side.brins_word.stage", "op": ">=", "value": 4 }
}
]
}
- Rewards:
amber_cufffrom Hollis;morality+5,rep.facets+5. Giving the shard:rep.facets+5 more anditem.corran_half_wave= 0. Setsbrin.sigil= 1. - Yarn:
Side_Corran_BrinWord,Side_Corran_BrinRecall,Side_Corran_HollisRemembers,Side_Corran_BrinShard,Side_Corran_BrinSigil_Mended,Side_Corran_BrinSigil_Shattered,Side_Corran_BrinSigil_Held.
The Undermere Open page
An upside-down sky on the cave roof, dripping water, and nobody asking which side you were on. Work comes from Mott, Vey and the bad-jobs board (undermere_board, Event_board); the one good job is the Atonement board nobody takes. The den (market, pit, boards) is for fallen players (morality ≤ −20, undermere.stage ≥ 1). The deep tunnels (the flooded nave, the carving, the diggings) are also reachable by the back door: Girdle Gate's shard-step from the Corran road (undermere.backdoor = 1, see Shelter from the Storm), or the diggings tunnel from Corran's north edge once Corran wakes (walkthrough-act-3.md, open question on the Undermere).
Vey's stall, the fence (undermere_fence). The canon calls it Mott's fence; Vey runs it.
| Item | What it is | Price | When |
|---|---|---|---|
fragment_crown_surge | A copy of Crown Surge dug out of the Sallow warp's lip before it faded | 400 | act3.stage >= 10 |
fragment_hasten | Hasten, taken from the Hour Stair by somebody's runaway (the fallen road's way to it) | 300 | undermere.stage >= 1 |
glint_quicksilver | From the diggings; the only shop in Velan that sells it | 10 | Always |
glyph_dust | Swept from faded warps | 60 | Always |
amber_cordial | As the catalogue, 20% dearer | 36 | Always |
waking_reeds | As the catalogue, 20% dearer | 72 | Always |
The Long Way Up (`long_way_up`)
- Giver / where: Mott, the Undermere den, the Atonement board by the ladder,
Event_atonement. Aske talks the player through it if she is in the party. - Available from: Act 3, when the player first falls.
startWhen:morality <= -20. - Story: Detailed in walkthrough-act-3.md, scene 6.5 (quest JSON in section 8). Every deed is worth +5
morality; each band of the fall is twice as deep as the one above, so climbing out takes 1, 2, 4 and then 8 deeds. The deeds come from the Atonement board, and any ordinary good side quest done whilemorality≤ −10 also counts as one. This part adds these board deeds:
| Deed | Quest | Where |
|---|---|---|
| Return a stolen fragment to Hale | (walkthrough deed; the Hour Stair) | The Hour Stair |
| Carry woken Corran folk's news to Lanternfall | side_woken_kit, side_woken_hob, side_woken_bel | Lanternfall |
| Rebuild the glyph-hunters' boat | (walkthrough deed; the Sallow) | The Sallow warp |
| Stand a night watch at Sallowbank with the golem | (walkthrough deed; the Sallow) | Sallowbank |
| Walk Corr's father up | side_woken_corr | The Undermere |
| Give a hoard back | side_hoard_raid, choice 2 | The Undermere |
| Shut the quicksilver dig | side_quicksilver_dig, choice 2 | Under Corran |
- Stages: as the walkthrough, with the side-quest fields added:
{
"id": "long_way_up",
"title": "The Long Way Up",
"description": "Nobody takes the Atonement board. That's why it's still up. Every deed counts the same; the deeper you are, the more of them it takes.",
"category": "side",
"giver": "mott",
"startWhen": { "flag": "morality", "op": "<=", "value": -20 },
"stages": [
{
"id": "out_of_the_depths",
"text": "Climb out of the depths: do 8 deeds from the Atonement board.",
"completeWhen": { "flag": "morality", "op": ">", "value": -80 }
},
{
"id": "out_of_the_dark",
"text": "Climb out of the dark: do 4 deeds from the Atonement board.",
"completeWhen": { "flag": "morality", "op": ">", "value": -40 }
},
{
"id": "back_to_the_gates",
"text": "Earn your way back through the gates: do 2 deeds from the Atonement board.",
"completeWhen": { "flag": "morality", "op": ">", "value": -20 }
},
{
"id": "trusted_again",
"text": "Be trusted again: one more deed.",
"completeWhen": { "flag": "morality", "op": ">", "value": -10 }
}
]
}
- Rewards:
morality+5 per deed (that is the reward);atonement.deeds+1 andatonement.deed.<slug>= 1 per deed. No copper: the board pays nothing. - Yarn:
Undermere_Atonement_Board,Atonement_Aske, one node per deed (walkthrough names). This part addsSide_Undermere_DeedCorr,Side_Undermere_DeedHoard,Side_Undermere_DeedDig.
The Quicksilver Dig (`side_quicksilver_dig`)
- Giver / where: Gessa (Facets), the well-wright, Corran, the well (
Event_well). A fallen player hears it from Mott instead. The dig is under Corran's warp,Event_diggings. - Available from: Act 3: after scene 6.4 on the fallen road, or once Corran wakes for everyone else.
startWhen:undermere.stage >= 3oract3.stage >= 14. - Story: This is the walkthrough's "quicksilver trade" hook. Gessa's new bucket keeps coming up with beads of quicksilver in it, and the trail leads down to the outlaws' dig under Corran's warp. If the player broke the dig's props in scene 6.4, the diggers have moved the rig further along. The player follows a load to its buyers and finds two. Iver's workshop polishes its lenses with it. The Warden menders' quartermaster sets seal-stones on it, the same stones that fed the Sallow warp and stood Corran's colossus up. Both sides are buying the stuff that widens the warps, and neither knows the other is. The player decides: take it to the Keepers, so Hale records it and both courts order the dig shut; tell Corran, whose folk can fill the tunnel from above; or take Vey's offer to broker the trade.
- Fights:
undermere_diggers(walkthrough) if the Keepers' order goes out while the player is below. - Stages:
{
"id": "side_quicksilver_dig",
"title": "The Quicksilver Dig",
"description": "Gessa's bucket keeps coming up with quicksilver in it. Somebody under the town is digging it out of the warp.",
"category": "side",
"giver": "gessa",
"startWhen": {
"any": [
{ "flag": "undermere.stage", "op": ">=", "value": 3 },
{ "flag": "act3.stage", "op": ">=", "value": 14 }
]
},
"stages": [
{
"id": "see",
"text": "Go down and see the dig under Corran's warp.",
"completeWhen": { "flag": "side.quicksilver_dig.stage", "op": ">=", "value": 1 }
},
{
"id": "follow",
"text": "Follow the quicksilver to whoever buys it.",
"completeWhen": {
"all": [
{ "flag": "side.quicksilver_dig.buyer_facet", "op": "!=", "value": 0 },
{ "flag": "side.quicksilver_dig.buyer_warden", "op": "!=", "value": 0 }
]
}
},
{
"id": "decide",
"text": "Tell the Keepers, tell Corran, or take Vey's offer.",
"completeWhen": { "flag": "side.quicksilver_dig.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: Keepers: 200 copper (the Keepers' bounty, paid to the coin),
rep.keepers+5. Corran:morality+5,rep.facets+5, and it counts as an atonement deed. Vey: 250 copper and 5 ×glint_quicksilver,morality−5. Itemdig_tally(the buyers' tally slate) while the quest runs. Setsside.quicksilver_dig.choice(1 Keepers, 2 Corran, 3 Vey). - Yarn:
Side_Corran_GessaBucket,Side_Undermere_DigAgain,Side_Lanternfall_LensBuyer,Side_Corran_MenderBuyer,Side_Undermere_DigChoice.
The Hoard (`side_hoard_raid`)
- Giver / where: Vey (outlaw), the fence, through the bad-jobs board (
board:undermere_board). The hoard is behind a false wall in the deep tunnels,Event_hoard(new). - Available from: Act 3, fallen players.
startWhen:undermere.stage >= 1. - Story: Vey wants a glyph hoard cleared out: a sack of stolen fragments behind a false wall, kept by a hollow cut caster who catches spells on shards and throws them back. If the player hurt Sabe's glyph-hunters at the Sallow warp (
act3.hunters= 3), the caster is Sabe, and the hoard is everything Sabe's cut has left. They remember the player. The choice: hand the sack to Vey, give it back to whoever owns it, or tip it out in the den so every outlaw can trace what's in it. - Fights:
hoard_raid(bestiary:hollow_cut). - Stages:
{
"id": "side_hoard_raid",
"title": "The Hoard",
"description": "Vey wants a hoard cleared out. Vey doesn't say whose it is.",
"category": "side",
"giver": "vey",
"board": "undermere_board",
"startWhen": { "flag": "undermere.stage", "op": ">=", "value": 1 },
"stages": [
{
"id": "job",
"text": "Take Vey's job: a hoard behind a false wall.",
"completeWhen": { "flag": "side.hoard_raid.stage", "op": ">=", "value": 1 }
},
{
"id": "raid",
"text": "Break into the hoard.",
"completeWhen": { "flag": "side.hoard_raid.stage", "op": ">=", "value": 2 }
},
{
"id": "sack",
"text": "Hand the sack to Vey, give it back, or tip it out in the den.",
"completeWhen": { "flag": "side.hoard_raid.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: Vey: 200 copper,
morality−5. Given back:morality+5 (an atonement deed); if it was Sabe's, Sabe's cut climbs out of the Undermere (sabe.left_undermere= 1). Tipped out:rep.facets+5 (glyphs free to anyone), and the duel pit's outlaws each gain one more spell. Thehoard_sackprop is held between stages 2 and 3. - Yarn:
Side_Undermere_VeyHoard,Side_Undermere_HoardWall,Side_Undermere_HoardSabe,Side_Undermere_HoardChoice.
The Pit (`side_duel_pit`)
- Giver / where: Mott, the Undermere den, the duelling pit,
Event_ring. - Available from: Act 3, fallen players.
startWhen:undermere.stage >= 1. - Story: The pit is the den's entertainment: NPC duels, not PvP, against outlaw casters who thread like the player. Three outlaws, each harder than the last. Before the third, Vey takes the player aside: the den has bet against the farmer, and a lost duel pays well. Win it straight or lose it for Vey. Either way Mott says the same thing: "Now they know your hands."
- Fights:
undermere_duel_1,undermere_duel_2,undermere_duel_3(walkthrough). - Stages:
{
"id": "side_duel_pit",
"title": "The Pit",
"description": "Outlaws from both sides cast against each other for the den's amusement. Mott has put your name up.",
"category": "side",
"giver": "mott",
"startWhen": { "flag": "undermere.stage", "op": ">=", "value": 1 },
"stages": [
{
"id": "first",
"text": "Win your first duel in the pit.",
"completeWhen": { "flag": "undermere.duels_won", "op": ">=", "value": 1 }
},
{
"id": "second",
"text": "Win your second duel.",
"completeWhen": { "flag": "undermere.duels_won", "op": ">=", "value": 2 }
},
{
"id": "third",
"text": "Win the third duel, or lose it for Vey.",
"completeWhen": {
"any": [
{ "flag": "undermere.duels_won", "op": ">=", "value": 3 },
{ "flag": "side.duel_pit.thrown", "op": "!=", "value": 0 }
]
}
}
]
}
- Rewards: each duel won drops a thread hint (bestiary). Won straight:
split_glyph_band. Thrown: 200 copper,morality−5. - Yarn:
Undermere_Pit(walkthrough),Side_Undermere_PitFirst,Side_Undermere_PitVeyBet,Side_Undermere_PitThird.
The Deepest Cut (`side_deep_cut`)
- Giver / where: Iver Kest (Facets), the Cutter's Workshop in Lanternfall (
Event_iver), if the player robbed the Vault for him. Otherwise the thread is carved on a cell wall in the deep tunnels,Event_deep_cut_wall(new), and the quest starts when the player finds it. - Available from: Act 3.
startWhen: (act2.done != 0andvault.outcome == 1) orundermere.stage >= 1orundermere.backdoor != 0. - Story: Deep Cut is Crown Surge into Bevel Lash: the biggest single hit in the set, paid for with 15 of the caster's own HP. Iver's cut teaches it hand over hand to anyone who stole for them. Everyone else finds it carved into the wall of a cell under the Shardfield, over and over, by someone retracing a glyph out of spite. Under the last carving is a name, scratched by a boy: Iver's. He walked south through these tunnels after his un-teaching. If the player tells him, he shrugs: "Twice, I said. I didn't say where."
- Stages:
{
"id": "side_deep_cut",
"title": "The Deepest Cut",
"description": "Crown Surge into Bevel Lash, the hardest hit there is. Somebody carved it into a cell wall a hundred times.",
"category": "side",
"giver": "iver",
"startWhen": {
"any": [
{
"all": [
{ "flag": "act2.done", "op": "!=", "value": 0 },
{ "flag": "vault.outcome", "op": "==", "value": 1 }
]
},
{ "flag": "undermere.stage", "op": ">=", "value": 1 },
{ "flag": "undermere.backdoor", "op": "!=", "value": 0 }
]
},
"stages": [
{
"id": "lead",
"text": "Find where Deep Cut is taught, or where it's carved.",
"completeWhen": { "flag": "side.deep_cut.stage", "op": ">=", "value": 1 }
},
{
"id": "parts",
"text": "Know both parts: Crown Surge and Bevel Lash.",
"completeWhen": {
"all": [
{ "flag": "spell.learned.crown_surge", "op": "!=", "value": 0 },
{ "flag": "spell.learned.bevel_lash", "op": "!=", "value": 0 }
]
}
},
{
"id": "trace",
"text": "Trace the thread.",
"completeWhen": { "flag": "composite.known.deep_cut", "op": "!=", "value": 0 }
}
]
}
- Rewards: thread
deep_cut. Taught by Iver's cut:rep.facets+5. Carved: no standing, but the name opens one extra line with Iver at the cut line in Act 4. - Yarn:
Side_Lanternfall_IverDeepCut,Side_Undermere_CellWall,Side_Undermere_IverName,Side_Lanternfall_IverShrug.
The Flooded Nave (`side_drowned_nave`)
- Giver / where: Mott (fallen players) or nobody: a back-door player hears the singing on their own. The nave is under the old Mere,
Event_nave(new). - Available from: Act 3.
startWhen:undermere.stage >= 1orundermere.backdoor != 0. - Story: Something sings in the flooded nave at night and keeps the den awake. Two drowned choristers hum the Mere Hymn in unison over black water. The Hour Stair records say the Drowned Choir was the Mending's choir (walkthrough-act-3.md, scene 3.3), and the verse they keep singing is the Mending's last note, never finished. Once the choristers are beaten, the player chooses: silence them for good with Hush, or listen while they finish the verse and fade on their own. Either way, a page of the hymn is left on the water. It is what Tobin has been waiting forty years to hear about (his quest is on the Sallow).
- Fights:
drowned_hymn(bestiary: 2 ×drowned_chorister). - Stages:
{
"id": "side_drowned_nave",
"title": "The Flooded Nave",
"description": "Something sings in the flooded nave at night. Nobody in the den has slept properly in a month.",
"category": "side",
"giver": "mott",
"startWhen": {
"any": [
{ "flag": "undermere.stage", "op": ">=", "value": 1 },
{ "flag": "undermere.backdoor", "op": "!=", "value": 0 }
]
},
"stages": [
{
"id": "hear",
"text": "Find where the singing comes from.",
"completeWhen": { "flag": "side.drowned_nave.stage", "op": ">=", "value": 1 }
},
{
"id": "nave",
"text": "Go down into the flooded nave.",
"completeWhen": { "flag": "side.drowned_nave.stage", "op": ">=", "value": 2 }
},
{
"id": "verse",
"text": "Silence the choir, or let them finish the verse.",
"completeWhen": { "flag": "side.drowned_nave.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards:
hymn_page(key item, for Tobin's side quest); 2 ×still_water(bestiary drop); 150 copper from Mott if the player is fallen. Finished verse:rep.choir+5. Silenced: no standing, and they never come back. Setsside.drowned_nave.choice(1 silenced, 2 finished). - Yarn:
Side_Undermere_NaveSinging,Side_Undermere_NaveChoir,Side_Undermere_NaveHush,Side_Undermere_NaveVerse.
Where Glyphs Still Take (`side_dark_glyphs`)
- Giver / where: Rook (Facets). If he stepped out of the cut (
rook.stepped_out= 1), he is in Lanternfall by Lio and asks the player to go and look. If not, he has gone down himself, and Lio asks the player to find him. The place is a blind cave in the deep tunnels where no reflection reaches,Event_blind_cave(new). - Available from: after Act 4, Mended only.
startWhen:act4.stage >= 8andact4.outcome == 1. - Story: This is Act 4's "The dark where glyphs still take" hook. Since the Mending, no asymmetric glyph surfaces anywhere in the light. There are rumours that in the Undermere's deepest dark, where there is no reflection to mend, they still take. The player goes down through the back door, past a toll gate run by forsworn menders, to the blind cave. There Rook, who couldn't cast since the Pane, draws Facet Seal one-handed, and it holds. The player decides who hears about it. Tell Lanternfall, and the dark becomes a Facet pilgrimage. Tell the Wardens, and they will try to mend the dark too. Or keep it between the player and Rook.
- Fights:
roof_drop,forsworn_toll(bestiary). - Stages:
{
"id": "side_dark_glyphs",
"title": "Where Glyphs Still Take",
"description": "They say asymmetric glyphs still take in the Undermere's dark. Rook has gone to find out.",
"category": "side",
"giver": "rook",
"startWhen": {
"all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "act4.outcome", "op": "==", "value": 1 }
]
},
"stages": [
{
"id": "rumour",
"text": "Hear the rumour about the dark.",
"completeWhen": { "flag": "side.dark_glyphs.stage", "op": ">=", "value": 1 }
},
{
"id": "blind_cave",
"text": "Go down past the forsworn toll to the blind cave.",
"completeWhen": { "flag": "side.dark_glyphs.stage", "op": ">=", "value": 2 }
},
{
"id": "who_hears",
"text": "Tell Lanternfall, tell the Wardens, or keep it between you and Rook.",
"completeWhen": { "flag": "side.dark_glyphs.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: Lanternfall: 200 copper from the open council,
rep.facets+10,rep.wardens−10. Wardens:rep.wardens+10,rep.facets−10,morality−5. Kept:rook.trust+1. Setsdark.known(1 Lanternfall, 2 Wardens, 3 kept), which glyph hunts read in the Mended world. - Yarn:
Side_Lanternfall_DarkRumour,Side_Lanternfall_LioRookGone,Side_Undermere_ForswornToll,Side_Undermere_BlindCave,Side_Undermere_DarkChoice.
The Split Cut (`side_split_cut`)
- Giver / where: Iver Kest, the Cutter's Workshop, Lanternfall (
Event_iver). The split half is at the top of the Undercrack (undercrack,Exit_pane_underside), led by Shale (new), a Culet cutter. - Available from: after Act 4, Held only.
startWhen:act4.stage >= 8andact4.outcome == 3. - Story: This is Act 4's "The split cut" hook. Iver went home claiming the Pane for the Facets, and half his cut stopped believing him. Led by Shale, they took their glass picks down into the Undermere to cut the Pane from underneath, where nobody keeps watch. Iver can't go after them without starting a fight in his own cut, so he asks the player. At the Undercrack the player decides: bring them in to Lanternfall's council, talk them down so they leave their picks and go to the Rim truce, or join them and help cut.
- Fights:
split_cut(new:hollow_cut+ 2culet_cutter), if bringing them in by force. - Stages:
{
"id": "side_split_cut",
"title": "The Split Cut",
"description": "Half of Iver's cut has gone under the Pane with their picks. Iver can't go after them himself.",
"category": "side",
"giver": "iver",
"startWhen": {
"all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "act4.outcome", "op": "==", "value": 3 }
]
},
"stages": [
{
"id": "ask",
"text": "Hear Iver out.",
"completeWhen": { "flag": "side.split_cut.stage", "op": ">=", "value": 1 }
},
{
"id": "find",
"text": "Find Shale's cutters at the top of the Undercrack.",
"completeWhen": { "flag": "side.split_cut.stage", "op": ">=", "value": 2 }
},
{
"id": "decide",
"text": "Bring them in, talk them down, or pick up a pick.",
"completeWhen": { "flag": "side.split_cut.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: Brought in (needs
rep.facets≥ 25, or the fight): 200 copper from Iver,rep.facets+5. Talked down:morality+5,rep.evane+5,rep.facets+5. Joined:morality−10,rep.evane−10,rep.facets−5, and the Pane's crack widens (glyph hunts at the Pane roll 5% more often). Setssplit_cut.outcome(1 brought in, 2 talked down, 3 joined). - Yarn:
Side_Lanternfall_IverSplit,Side_Undermere_ShalePicks,Side_Undermere_SplitChoice,Side_Lanternfall_IverAfter.
The Heart Pane and the deep Shardfield Open page
Taller, cleaner glass, every shard reflecting a sky a little closer to the Pane's doubled one. The deep Shardfield opens in Act 3 east of Corran (shardfield_inner, the area or location Act 4 proposes); the Pane is Act 4's. After Act 4 the place follows act4.outcome: stilled, a ring of standing pieces, or cracked and held. Work comes from Dace's wagons on the north rim, from whoever keeps the peace at the rim, and from people trying to live with what the player chose.
The Cache-Mark (`side_culet_cache`)
- Giver / where: Aske (unaligned), who spots the mark on the walk; the cache is in the deep Shardfield east of Corran,
Event_culet_cache(new). After Act 3, the mark starts the quest by itself. - Available from: Act 3, once Corran is reached.
startWhen:act3.stage >= 4. - Story: A sigil is cut into a shard east of Corran: a broken line inside a circle. If the player has met Iver, they know it. A shard sentinel stands over a cache at the shard's foot. Inside are glass picks with a cutter's sigil on every handle, and a map of the Heart Pane's cracks drawn from underneath. This is Iver's cut getting ready for Act 4, though nobody says so yet. The player decides what to do with the map: take it to Lanternfall's open council, so the plan is argued in the open; give it to Ondine's menders at Corran's seal-watch; or put it back where it was.
- Fights:
shard_guardian(bestiary:shard_sentinel). - Stages:
{
"id": "side_culet_cache",
"title": "The Cache-Mark",
"description": "A sigil cut into a shard east of Corran: a broken line inside a circle. Something stands guard under it.",
"category": "side",
"giver": "aske",
"startWhen": { "flag": "act3.stage", "op": ">=", "value": 4 },
"stages": [
{
"id": "mark",
"text": "Follow the cache-mark east of Corran.",
"completeWhen": { "flag": "side.culet_cache.stage", "op": ">=", "value": 1 }
},
{
"id": "guard",
"text": "Get past what guards the cache.",
"completeWhen": { "flag": "side.culet_cache.stage", "op": ">=", "value": 2 }
},
{
"id": "map",
"text": "Take the map to Lanternfall's council, give it to the menders, or put it back.",
"completeWhen": { "flag": "side.culet_cache.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: 3 ×
raw_amber,shard_cord, plus the sentinel's bestiary drops. Council:morality+5. Menders:rep.wardens+10,rep.facets−10. Put back: no change, and Iver thanks the player at the cut line in Act 4 ("You left it. Thanks."). Theculet_mapprop is held between stages 2 and 3. Setsside.culet_cache.map(1 council, 2 menders, 3 put back). - Yarn:
Side_DeepShardfield_AskeMark,Side_DeepShardfield_Cache,Side_DeepShardfield_CacheMap,Side_Lanternfall_CouncilMap.
The Other Seal (`side_other_seal`)
- Giver / where: Hollis (Facets, Girdle cut), Corran, the Girdle house (
Event_teacher_door). The hamlet is Saltglass (new), in the deep Shardfield,Event_saltglass(new). - Available from: Act 4 and after, once the player knows Thaw.
startWhen:act3.done != 0andcomposite.known.thaw != 0. - Story: This is the walkthrough's "other stilled places" hook (walkthrough-act-3.md, section 15). Hollis's grandmother came from Saltglass, a glass-cutters' hamlet nobody went back to, and Hale's warp ledger has it: a five-person seal sixty years ago, before Ondine's time. The player finds it stilled, as Corran was: a dozen people mid-step round a quiet warp, stilled glints in the lanes, and one standing shard that throws the player's own reflection back at them. One of the stilled is a Warden mender with his bands the right way out, standing inside his own ring. One of the five stayed. The player decides: thread Thaw and wake them into a world sixty years on, or leave them stilled, which the Keepers would prefer, since a stilled place is a record nobody can edit.
- Fights:
saltglass_glints(new: 3stilled_glint+ 2shard_glint),deep_double(bestiary). - Stages:
{
"id": "side_other_seal",
"title": "The Other Seal",
"description": "Ondine sealed Corran. Hale's ledger says she wasn't the first to seal somewhere.",
"category": "side",
"giver": "hollis",
"startWhen": {
"all": [
{ "flag": "act3.done", "op": "!=", "value": 0 },
{ "flag": "composite.known.thaw", "op": "!=", "value": 0 }
]
},
"stages": [
{
"id": "ask",
"text": "Ask Hollis about Saltglass.",
"completeWhen": { "flag": "side.other_seal.stage", "op": ">=", "value": 1 }
},
{
"id": "find",
"text": "Find Saltglass in the deep Shardfield.",
"completeWhen": { "flag": "side.other_seal.stage", "op": ">=", "value": 2 }
},
{
"id": "decide",
"text": "Wake Saltglass with Thaw, or leave it as it is.",
"completeWhen": { "flag": "side.other_seal.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: Woken: 3 ×
facet_token(old Saltglass tokens, still good at the weigh-house),morality+5,rep.facets+5,rep.keepers−5. Left:rep.keepers+5. Setssaltglass.woken(1 woken, 2 left). If woken, the mender's name in Hale's ledger is a later hook. - Yarn:
Side_Corran_HollisSaltglass,Side_DeepShardfield_Saltglass,Side_DeepShardfield_TheMender,Side_DeepShardfield_SaltglassWake,Side_DeepShardfield_SaltglassLeave.
The Last Wagon (`act4_side_last_wagon`)
- Giver / where: Caravan-master Dace (Evane, Waymakers), the Heart Pane's north rim, the Waymaker wagons,
Mark_caravans. - Available from: Act 4, once the player reaches the rim.
startWhen:act4.stage >= 2. - Story: Detailed in walkthrough-act-4.md, scene 4.10. Dace has refused both rites, and the Waymakers are doing what they always do: moving people, Lanternfall families north and Shardfield hamlets west. Dace asks the player to escort one wagon to the edge of the inner ring and back before dawn. If it isn't taken by the choice at dawn (scene 4.13), it lapses, and The Next Wagon takes over after Act 4.
- Fights:
inner_glints(walkthrough). - Stages: one stage, as the walkthrough sets out:
{
"id": "act4_side_last_wagon",
"title": "The Last Wagon",
"description": "Dace's wagons are moving families away from both rites. One more needs an escort to the inner ring's edge and back before dawn.",
"category": "side",
"giver": "dace",
"startWhen": { "flag": "act4.stage", "op": ">=", "value": 2 },
"stages": [
{
"id": "escort",
"text": "Escort Dace's wagon to the edge of the inner ring and back before dawn.",
"completeWhen": { "flag": "act4.wagon_escorted", "op": "==", "value": 1 }
}
]
}
- Rewards: 150 copper;
rep.evane+5,rep.facets+5,rep.waymakers+5 (the walkthrough's "both sides and Waymaker standing"). - Yarn:
Act4_Caravans_Dace(walkthrough),Side_HeartPane_WagonRoad,Side_HeartPane_WagonBack.
The Next Wagon (`side_next_wagon`)
- Giver / where: Dace, the Heart Pane's north rim,
Mark_caravans. - Available from: after Act 4, every outcome; a repeating job.
startWhen:act4.stage >= 8. - Story: This is Act 4's "The last wagon, and the next" hook. The wagons keep moving, and where they go depends on the outcome. Mended: Lanternfall families going home to a dark city, or on to Halfway. Shattered: families leaving the new warps for Halfway and Sallowbank, with stronger glints on the road. Held: supplies out to the Rim truce market. Dace doesn't make speeches about it: "When the Mere's in trouble you keep people moving."
- Fights:
inner_glints(Mended, Held),wagon_glints_strong(new, Shattered:inner_glints+glint_brute),deep_shoalon the long routes. - Stages: repeatable: when a run ends, the quest runner sets
side.next_wagon.stageback to 0 and adds 1 toside.next_wagon.runs. That is the one exception to "stages never go backwards", and it needs a"repeatable"field in the quest loader.
{
"id": "side_next_wagon",
"title": "The Next Wagon",
"description": "Dace's wagons never stop. There's always one more that needs a hand on the road.",
"category": "side",
"giver": "dace",
"repeatable": true,
"startWhen": { "flag": "act4.stage", "op": ">=", "value": 8 },
"stages": [
{
"id": "take",
"text": "Take Dace's next wagon from the north rim.",
"completeWhen": { "flag": "side.next_wagon.stage", "op": ">=", "value": 1 }
},
{
"id": "escort",
"text": "Get the wagon where it's going.",
"completeWhen": { "flag": "side.next_wagon.stage", "op": ">=", "value": 2 }
},
{
"id": "back",
"text": "Come back to the north rim for your pay.",
"completeWhen": { "flag": "side.next_wagon.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: 150 copper a run;
rep.waymakers+5 for each of the first three runs. - Yarn:
Side_HeartPane_DaceNext,Side_HeartPane_NextRoad_Mended,Side_HeartPane_NextRoad_Shattered,Side_HeartPane_NextRoad_Held,Side_HeartPane_NextPay.
The Rim Truce (`side_rim_truce`)
- Giver / where: Reeve Hollin Tace (Halfway), the Heart Pane's south rim, where Aske's fire was,
Mark_rim_truce(new). - Available from: after Act 4, Held only.
startWhen:act4.stage >= 8andact4.outcome == 3. - Story: This is Act 4's "The Rim truce" hook. People from both sides come to look at the First Pair glyph in the Pane at dawn, and Halfway's Reeve wants a Halfway-style truce at the rim: a few stalls and a meeting place, no casting except at a ring. Three incidents test it. A Warden picket takes a Facet's lantern off the rim "for safety". Someone chips at the Pane's edge at night with a glass pick. And a fresh warp opens at the rim, which both camps want. Each one can be talked through or fought, and each one moves standing with whoever the player sides with. A player who is Even-handed (Trusted with both sides,
rep.evane≥ 25 andrep.facets≥ 25) is simply asked to judge the first incident, and nobody argues. - Fights:
rim_cutters(new: 2culet_cutter); the warp is a glyph hunt atrim_warp(see Warp-born glyph hunts). - Stages:
{
"id": "side_rim_truce",
"title": "The Rim Truce",
"description": "Both sides come to look at the Pane at dawn. Halfway's Reeve wants them to be able to do it without a fight.",
"category": "side",
"giver": "reeve",
"startWhen": {
"all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "act4.outcome", "op": "==", "value": 3 }
]
},
"stages": [
{
"id": "agree",
"text": "Agree to help the Reeve keep a truce at the rim.",
"completeWhen": { "flag": "side.rim_truce.stage", "op": ">=", "value": 1 }
},
{
"id": "lantern",
"text": "A Warden picket has taken a Facet's lantern. Settle it.",
"completeWhen": { "flag": "side.rim_truce.stage", "op": ">=", "value": 2 }
},
{
"id": "night",
"text": "Someone is chipping at the rim at night. Find out who.",
"completeWhen": { "flag": "side.rim_truce.stage", "op": ">=", "value": 3 }
},
{
"id": "warp",
"text": "A fresh warp at the rim, and both camps want it. Settle that too.",
"completeWhen": { "flag": "side.rim_truce.stage", "op": ">=", "value": 4 }
},
{
"id": "stones",
"text": "Set the truce stones.",
"completeWhen": { "flag": "side.rim_truce.stage", "op": ">=", "value": 5 }
}
]
}
- Rewards: 250 copper from Halfway's market fund;
rep.evane+5,rep.facets+5; incident choices move one side +5 and the other −5. Opens a small rim market (shoprim_market). Setsrim.truce= 1. - Yarn:
Side_HeartPane_ReeveTruce,Side_HeartPane_TruceLantern,Side_HeartPane_TruceNight,Side_HeartPane_TruceWarp,Side_HeartPane_TruceStones.
The Pieces of the Pane (`side_pane_pieces`)
- Giver / where: Iver Kest, at the ring of standing pieces where the Pane was,
Mark_heart. - Available from: after Act 4, Shattered only.
startWhen:act4.stage >= 8andact4.outcome == 2. - Story: This is Act 4's "The pieces of the Pane" hook. The Pane is a ring of standing pieces now, each reflecting its own sky and showing a different glyph. Glyph-hunters are already chipping at them to sell. Iver, Lanternfall's hero who doesn't know what to do with it, asks the player to record every piece before they're gone. There are seven, and each shows its glyph only one way (the table below). At the end the player has a chart of all seven and decides where it goes: to the Giving Steps, so anyone can come and trace; to Ondine, whose crews might mend something from it; or nowhere.
| Piece | Shows its glyph | Guardian |
|---|---|---|
| East | At dawn | deep_shoal |
| West | Only to a precise mirrored cast (85% or better, the Pane rule) | none |
| North | In a glass storm | glass_storm |
| South | At night, among the stars | none |
| Low | Only from below, from the Undercrack | undercrack_outlaws |
| Leaning | After the player beats their own reflection in it | deep_double |
| Centre | When a fresh warp opens at the ring (a glyph hunt at pane_ring) | pane_guard |
Each piece holds one glyph from the warp-born pool (data, Data/PanePieces/<id>.json). Until new spells ship, a piece shows an optional reflected or whole glyph the player hasn't learned, or else leaves 2 × glyph_dust. The centre piece shows the First Pair to anyone who missed it at dawn (it needs Brace and Facet Seal).
- Stages:
{
"id": "side_pane_pieces",
"title": "The Pieces of the Pane",
"description": "The Pane is a ring of standing pieces now, each with its own sky and its own glyph. The hunters have started chipping.",
"category": "side",
"giver": "iver",
"startWhen": {
"all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "act4.outcome", "op": "==", "value": 2 }
]
},
"stages": [
{
"id": "chart",
"text": "Hear what Iver wants recorded.",
"completeWhen": { "flag": "side.pane_pieces.stage", "op": ">=", "value": 1 }
},
{
"id": "seven",
"text": "Find the glyph in each of the seven pieces.",
"completeWhen": { "flag": "pane.pieces", "op": ">=", "value": 7 }
},
{
"id": "where",
"text": "Give the chart to the Giving Steps, send it to Ondine, or keep it.",
"completeWhen": { "flag": "side.pane_pieces.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: 200 copper from Lanternfall's open council; each piece's glyph or
glyph_dust. Giving Steps:rep.facets+10. Ondine:rep.wardens+10,rep.facets−10. Kept:morality−5,rep.facets−10 (hoarding). Thepane_chartprop is held while the arc runs. Setspane.piece.<n>per piece and thepane.piecescount. - Yarn:
Side_HeartPane_IverPieces,Side_HeartPane_Piece<Name>(seven nodes),Side_HeartPane_ChartChoice.
The Same Sky (`side_same_sky`)
- Giver / where: Nim (Facets, Table cut), a sky-reader, in the deep Shardfield at a water-cache shard,
Event_sky_cache(new). - Available from: after Act 4, Mended only.
startWhen:act4.stage >= 8andact4.outcome == 1. - Story: Shardfield Facets find their water caches by which shard shows which sky. Since the Mending, every shard shows the same sky, and three of the Table cut's water carriers haven't come back. The player finds them. Listen shows where the caches are, and Recall cast on a cache's still water shows who drank there last and which way they went. The last carrier is at the one shard in the field that still shows something different, the player's own reflection, which steps out and fights. Then the choice: teach Nim a mirrored glyph to find water by (Listen, hand over hand), which a Facet would never have taken before the Mending, or chalk door-marks on the cache shards so the cut can find them by eye.
- Fights:
deep_double(bestiary),deep_shoalon the way. - Stages:
{
"id": "side_same_sky",
"title": "The Same Sky",
"description": "Every shard shows the same sky now. The Table cut found their water by the difference, and three carriers haven't come back.",
"category": "side",
"giver": "nim",
"startWhen": {
"all": [
{ "flag": "act4.stage", "op": ">=", "value": 8 },
{ "flag": "act4.outcome", "op": "==", "value": 1 }
]
},
"stages": [
{
"id": "ask",
"text": "Hear Nim out at the water-cache shard.",
"completeWhen": { "flag": "side.same_sky.stage", "op": ">=", "value": 1 }
},
{
"id": "carriers",
"text": "Find the three water carriers.",
"completeWhen": { "flag": "side.same_sky.found", "op": ">=", "value": 3 }
},
{
"id": "way_home",
"text": "Teach Nim Listen, or chalk door-marks on the caches.",
"completeWhen": { "flag": "side.same_sky.stage", "op": ">=", "value": 3 }
}
]
}
- Rewards: 200 copper (the Table cut's whip-round);
morality+5,rep.facets+5. Teaching Listen (needsspell.learned.listen):rep.facets+5 more,rep.choir+5. Chalking: uses 3 ×ward_chalk. - Yarn:
Side_DeepShardfield_NimSky,Side_DeepShardfield_Carrier,Side_DeepShardfield_OwnReflection,Side_DeepShardfield_NimListen,Side_DeepShardfield_NimChalk.
Recurring world activities Open page
Three activities keep the world open after Act 4 (Story Bible section 1: no endgame): the Proving Ring ladder, caravan jobs and warp-born glyph hunts. Each runs on its own flags and its own board or clock.
The Proving Ring ladder
The Ring in Halfway's old quarry, inside the truce stones, is the one place there where casting is allowed, under ring wards that make every spell pull its punches. It is Codex section 10's designated PvP place, and until there are servers it runs a ladder of NPC bouts. The Ring pays only a ladder place and standing: never copper, never items (the bestiary's ring_token is dropped; Ring bouts drop nothing). Bouts give the bestiary's XP. Ringmaster Ulla Stroud keeps the card. Yarn file: Dialogue/Side/ring.yarn.
How a bout is picked. The player reads the Ring Card (board ring_card, at Mark_ulla): ten places, the player's name at the bottom (10th), the nine names above with their rank and side. Tapping Challenge on an open name starts that bout. Each first win over a name moves the player up one place. A loss costs nothing: the wards stop the bout (canLose: true), and the player can challenge again.
| Rung | Opponent | Encounter | Opens when | Pay on first win |
|---|---|---|---|---|
| 1–3 | The Ring golem, ranks I, II, III (ring_golem), in order | ring_rank_1, _2, _3 (bestiary) | act1.stage >= 6 and seen.ring != 0 | the place only |
| 4–6 | Cadet Orrin Tey, a Warden cadet: Repel and Brace | ring_card_cadet | act1.stage >= 7 and ring.rank >= 3 | rep.wardens +5 |
| Ketter, a Facet duellist of the Crown cut: Bevel Lash | ring_card_duellist | same | rep.facets +5 | |
| Faye Linnet, a Waymaker who casts only Gale and won't teach it to anyone | ring_card_waymaker | same | rep.waymakers +5 | |
| 7–8 | Orrin again, back from Twinhold's yard: adds Tally | ring_court_cadet | twinhold.stage >= 1 and ring.card.cadet != 0 | rep.evane +5 |
| Ketter again, back from Lanternfall: adds Facet Seal | ring_court_duellist | lanternfall.stage >= 1 and ring.card.duellist != 0 | rep.facets +5 | |
| 9 | Ringmaster Ulla Stroud, threads from both sides | ring_ulla | act2.done != 0 and ring.rank >= 8 | rep.evane +5 and rep.facets +5; title Ring champion (ring.champion 1) |
The player's place on the card is 10 − ring.rank: 10th with no wins, 1st after Ulla. Within rungs 4–6 and 7–8 the order is the player's. Faye is the Act 1 seed for parallel casting: the player sees Gale drawn before the Long Road. Act 2's hook ("new opponents trained in each court") is rungs 7 and 8.
After Act 4. Act 4's Pane floor opens (ring.floor 2: a mirror slab where the Pane rule applies), and the Ring runs seasons, quarterly, alternating floors. Each season brings three seasonal challengers as server data (Data/Ring/<season>.json, no app update) on a season card beside the ladder; ring.season is the season number the player last fought in and ring.season.wins counts that season's wins (0–3). Winning all three in a season gives the title Season champion and rep.evane +5 and rep.facets +5, at most once a season.
The PvP link. When servers exist (Codex section 10: PvP only in the Ring, no co-op, scheduled tournaments with a leaderboard, server-side checks that the drawing is human), the Ring Card gains a Players tab. Being Ring champion (ring.champion 1) qualifies a player for player bouts and the scheduled tournaments. Player bouts pay a leaderboard place and nothing else; a loss takes nothing; the wards still stop every bout. The NPC ladder stays for offline play and as the way in.
Flags. ring.rank (0–9, wins over distinct names; the Game Screens tab reads it), ring.card.cadet, ring.card.duellist, ring.card.waymaker, ring.court.cadet, ring.court.duellist (1 once beaten), ring.champion, ring.floor (1 sand, 2 Pane), ring.season, ring.season.wins.
New opponents for the bestiary. The six Ring Card challengers (ring_cadet, ring_duellist, ring_waymaker, ring_cadet_2, ring_duellist_2, ring_ulla) are in the Bestiary under "Named opponents", with their HP and kits.
{
"id": "side_ring_ladder",
"title": "The Ring Card",
"description": "Ringmaster Ulla keeps a card of everyone who has stood on the sand. Your name goes at the bottom. The Ring pays in your place and what people think of you, and nothing else.",
"category": "side",
"giver": "ulla",
"board": "ring_card",
"startWhen": { "all": [
{ "flag": "seen.ring", "op": "!=", "value": 0 },
{ "flag": "act1.stage", "op": ">=", "value": 6 } ] },
"stages": [
{ "id": "golems", "text": "Beat the Ring golem at ranks I, II and III.",
"completeWhen": { "flag": "ring.rank", "op": ">=", "value": 3 } },
{ "id": "card", "text": "Beat the three Ring Card challengers: the Warden cadet, the Facet duellist and the Waymaker.",
"completeWhen": { "all": [
{ "flag": "ring.card.cadet", "op": "!=", "value": 0 },
{ "flag": "ring.card.duellist", "op": "!=", "value": 0 },
{ "flag": "ring.card.waymaker", "op": "!=", "value": 0 } ] } },
{ "id": "courts", "text": "Beat the cadet and the duellist again, now they have trained in their courts.",
"completeWhen": { "all": [
{ "flag": "ring.court.cadet", "op": "!=", "value": 0 },
{ "flag": "ring.court.duellist", "op": "!=", "value": 0 } ] } },
{ "id": "ulla", "text": "Ask Ulla for the top of the card.",
"completeWhen": { "flag": "ring.champion", "op": "!=", "value": 0 } }
]
}
Yarn: Side_Ring_Card (reading the card), Side_Ring_Challenge, Side_Ring_BoutGolem, Side_Ring_BoutCadet, Side_Ring_BoutDuellist, Side_Ring_BoutWaymaker, Side_Ring_BoutCadetCourt, Side_Ring_BoutDuellistCourt, Side_Ring_BoutUlla, Side_Ring_Result, Side_Ring_PaneFloor, Side_Ring_Season.
Caravan jobs
Dace's Waymakers carry anyone and anything, for whoever pays, which the other four factions resent. From Act 2 the player can ride guard on their runs between Halfway, Twinhold and Lanternfall. It is the steady side income of the game, and the Long Road run always crosses the wind pass, so it always ends in the recurring caravan_defence fight. Yarn file: Dialogue/Side/caravan.yarn.
How a run is picked. Runs are posted on Dace's caravan board (board caravan_board) at Twinhold's Far Gate yard and Lanternfall's Sand Gate yard (Event_caravan_yard), and Halfway's Truce Board carries the runs that leave Halfway. Each in-game day a board posts up to three runs leaving from its town, drawn from the route table below for that town; one of the three is always passengers. The player takes one (Take on the Notice boards screen); one run at a time, and while a run is under way every board says "You've a wagon waiting." Boards open once the first caravan job is done (long_road.stage >= 5), and a board posts nothing for a player Shunned by the Waymakers (rep.waymakers <= -60: "They won't take your work.").
| Route | Between | Fight on the way | Pay in Act 2 | Pay from Act 3 |
|---|---|---|---|---|
| The Pale Road | Halfway and Twinhold | one roll: road_glints; from Act 3 sallow_road_glints or sallow_road_winged; warden_enforcers instead if the player is Distrusted by the Evane | 80 | 150 |
| The Amber Road | Halfway and Lanternfall | one roll: road_glints or edge_boar; from Act 3 shard_pack or hunter_ambush | 80 | 150 |
| The Long Road | Twinhold and Lanternfall, over the wind pass | caravan_defence, every run (three waves; wagon HP as the protect objective from Act 2 scene 2.5) | 150 | 250 |
| The north rim (after Act 4) | The Heart Pane's north rim and Lanternfall or Twinhold | inner_glints (Act 4's encounter); Act 4's "the last wagon, and the next" | 250 | |
| Even-handed letters (after Act 4) | Twinhold and Lanternfall, sealed letters between the courts | caravan_defence | 250 |
- Cargo follows the direction, as Act 2 has it: towards Lanternfall, Evane grain and mirror-polish; towards Twinhold, salvaged shard-glass and lenses; to and from Halfway, both; passengers on every route. Even-handed letters are posted only for an Even-handed player (
rep.evane >= 25andrep.facets >= 25), Act 4's "carrying letters between the courts". - Pay by standing. The pay above moves with the player's standing with the side that receives the cargo (Twinhold:
rep.evane; Lanternfall:rep.facets; Halfway: no change), the Halfway Rows' bands turned round: Trusted +10%, Neutral as listed, Distrusted −15%, Shunned −30%. Trusted with the Waymakers (rep.waymakers >= 25) adds 10% more. A run has three wagons; each one lost takes 25% off. Rounded down to the copper. - Failing. If the player loses the fight, the wagons turn back and nobody is paid; nothing else is lost ("Roads are long."). Fleeing counts as losing.
- Standing. Each finished run:
rep.waymakers+5, for the first five runs only. Every fifth run Dace has a milestone line and a gift: the 5th awaymaker_band, the 10th a second one (a matched pair), the 15th 3breath_tonic, then Dace's Endless Caravan stories, one each fifth run.
The first job, in Act 1. Act 1's Truce Board hook "escort a Waymaker wagon to the milestone and back" is the trial run, before Dace: Jory's wagon, side_milestone_run.
{
"id": "side_milestone_run",
"title": "To the Milestone and Back",
"description": "Jory's wagon needs a pair of hands as far as the milestone and back. There are glints on the road, and Waymakers carry. That's the whole of it.",
"category": "side",
"giver": "jory",
"board": "truce_board",
"postWhen": { "flag": "act1.stage", "op": ">=", "value": 2 },
"startWhen": { "flag": "side.milestone_run.stage", "op": ">=", "value": 1 },
"stages": [
{ "id": "wagon", "text": "Meet Jory's wagon at Halfway's Bridge Gate.",
"completeWhen": { "flag": "side.milestone_run.stage", "op": ">=", "value": 2 } },
{ "id": "milestone", "text": "Walk the wagon down the Sallow Road to the milestone and back.",
"completeWhen": { "flag": "side.milestone_run.stage", "op": ">=", "value": 3 } },
{ "id": "pay", "text": "Collect your pay from Jory.",
"completeWhen": { "flag": "side.milestone_run.stage", "op": ">=", "value": 4 } }
]
}
It pays 40 copper, fights road_glint (3 glint) at the milestone, Road_1, and gives rep.waymakers +5. If met.jory, Jory remembers the lift. Yarn: Side_Halfway_JoryNotice, Side_Road_JoryWagon, Side_Road_MilestoneGlints, Side_Halfway_PimPaid.
A sample job. Generated runs use the quest shape with job fields added ("category": "job"), so the Journal and boards read them like any side quest. This is one posted on the Twinhold yard's board.
{
"id": "job_long_road_grain",
"title": "Grain over the Pass",
"description": "Three wagons of Evane grain for Lanternfall's bakers. Dace doesn't care who eats it.",
"category": "job",
"giver": "dace",
"board": "caravan_board",
"route": "long_road",
"from": "twinhold",
"to": "lanternfall",
"cargo": "grain",
"wagons": 3,
"encounter": "caravan_defence",
"pay": { "act2": 150, "act3": 250, "standing": "rep.facets", "waymakers": "rep.waymakers", "perWagonLost": 0.25 },
"postWhen": { "all": [
{ "flag": "long_road.stage", "op": ">=", "value": 5 },
{ "flag": "rep.waymakers", "op": ">=", "value": -59 } ] },
"startWhen": { "flag": "caravan.leg", "op": ">=", "value": 1 },
"stages": [
{ "id": "load", "text": "Meet the wagons at Twinhold's Far Gate yard.",
"completeWhen": { "flag": "caravan.leg", "op": ">=", "value": 2 } },
{ "id": "pass", "text": "Get the wagons over the wind pass.",
"completeWhen": { "flag": "caravan.leg", "op": ">=", "value": 3 } },
{ "id": "deliver", "text": "Bring the grain down to Lanternfall's Sand Gate yard and collect your pay.",
"completeWhen": { "flag": "caravan.leg", "op": ">=", "value": 4 } }
]
}
Flags. Per run, set when a run is taken: caravan.route (1 Pale Road, 2 Amber Road, 3 Long Road, 4 north rim, 5 Even-handed letters), caravan.cargo (1 grain, 2 mirror-polish, 3 shard-glass, 4 lenses, 5 passengers, 6 sealed letters), caravan.leg (1 taken, 2 set off, 3 fight won, 4 arrived and paid) and caravan.wagons_lost (0–2). Running totals that only rise: caravan.runs (finished runs) and caravan.failed. Note for the Lead: the four per-run flags are the one place in this tab where a flag goes back to 0, because Take resets them for the next run. The Journal must store a finished job as finished (the save's finished-quest list) so the reset can't reopen it.
Yarn: Side_Caravan_Board, Side_Caravan_Take, Side_Caravan_SetOff, Side_Caravan_Leg (starts the route's fight), Side_Caravan_Arrive (pay), Side_Caravan_TurnBack, Side_Caravan_DaceMilestone, Side_Caravan_EvenHanded.
Warp-born glyph hunts
The third recurring world activity. A fresh warp opens, a warp-born glyph surfaces at its lip and fades within days (Story Bible section 3), Facet glyph-hunters race the player for it, and Warden menders come to seal it. Act 4's "world after" makes warp-born glyphs the Living Spell Library's main channel (walkthrough-act-4.md, section 9). This section turns that into a rolled, timed activity. Crown Surge at the Sallow warp in Act 3 (scene 1.3) is the first warp-born glyph and stays a scripted scene; hunts start after it.
Flags
| Flag | Values | What it is |
|---|---|---|
world.day | 0 up | In-game day counter, +1 at each in-game dawn. Sleeping (farm, inn, Aske's fire) moves to the next dawn. New. |
hunt.open | 0–3 | How many fresh warps are open now. |
hunt.<id>.phase | 0–6 | The warp's own clock (table below). Set by the hunt controller each dawn; never goes backwards. |
hunt.<id>.stage | 0–3 | The player's progress: 1 reached the site, 2 guardian beaten, 3 glyph traced. |
hunt.<id>.result | 0–4 | 1 sealed, 2 shared, 3 hoarded, 4 missed (faded, dug or sealed without the player). |
hunt.count, hunt.sealed, hunt.shared, hunt.hoarded, hunt.missed | 0 up | Running tallies for the profile and for NPC lines ("You're the one who keeps sealing them"). |
spell.learned.<id> | 1 | As for any glyph. |
How a hunt is rolled
Hunts start once Act 3 is over (act3.done != 0). At each in-game dawn, if fewer warps are open than the cap, the hunt controller rolls once:
| World state | Chance per dawn | Max open | Sites | Glyph kinds |
|---|---|---|---|---|
Act 4, before the outcome (act3.done != 0, act4.stage < 8) | 15% | 1 | Any site except the Pane's | Any |
Mended (act4.outcome == 1) | 5% | 1 | Mending scars only: the Sallow warp, Corran's hairline, Saltglass, the Pane's centre | Mirrored and parallel. Asymmetric only at the Undermere site, and only once dark.known is set |
Shattered (act4.outcome == 2) | 40% | 3 | Any, plus the Pane's ring | Every kind; each guardian adds a glint_brute |
Held (act4.outcome == 3) | 20% | 2 | Any, plus the rim (rim_warp) | Every kind; the Pane at dawn shows a new reflected glyph now and then |
- Site: a weighted pick from the site table below. It is never the last site used, never in the region the player is standing in (so a hunt means a trip), and never in a region they haven't reached.
- Glyph: Crown Surge shows at every fresh warp's lip until the player has learned it, and again for anyone whose Crown Surge has been sealed (the spell roadmap's "resurfaces at every fresh warp"). In the Mended world it shows only at the Undermere site. Each warp also takes one pick from the warp-born pool, which is server data (Codex section 11), so new spells need no app update. If the pool has nothing the player lacks, the warp leaves
glyph_dustinstead. - Fixed windows: a server file (
Data/Warps/<id>.jsonwith real dates, Act 4's "7 days of real time" first guess) overrides the roll for special, world-wide warps. Rolled hunts run on in-game days.
| Region | Site id | Where | Near a town |
|---|---|---|---|
| 1. The Sallow | steps_lip | The Drowned Steps, under the water ("light on the water at the Drowned Steps") | yes (Sallowbank) |
| 2. The Long Road | pass_cliff | The wind pass cliff warp | yes (the camp) |
| 3. Twinhold and Greenvault | orchard_crack | Greenvault's old orchard outside the walls | yes (Greenvault) |
| 4. Hushfold and the Hour Stair | gorge_lip | The Hour Stair gorge, below the archive window | no |
| 5. The Shardfield | lakebed_lip | The cracked lakebed, past the storm shelters | no |
| 6. Corran | corran_hairline | Corran's hairline warp, the north edge | yes (Corran) |
| 7. The Undermere | warp_root | The warp root under Corran (the Mended world's "dark") | yes (the den) |
| 8. The Heart Pane | inner_ring, rim_warp, pane_ring | The inner-ring path; the rim (Held); the ring of pieces (Shattered) | no |
Timing (in-game days)
| Day | phase | What happens |
|---|---|---|
| 0 | 1 | The warp opens. A rumour goes up on the two nearest boards. |
| 1 | 2 | The glyph surfaces at the lip at dawn. The guardian is on site. |
| 2 | 3 | Facet glyph-hunters arrive and start digging. |
| 3 | 4 | Warden menders arrive and start setting seal-stones. |
| 4 | 5 | At dusk the glyph is gone: faded, dug out by the hunters, or sealed in by the menders' ring. glyph_dust is left at the lip. |
| 6 | 6 | The warp closes to a scar. |
In the Shattered world the menders still come on day 3 but fail (Ondine's crews "can mend nothing"), so the warp stays open after day 6 and spills glints into the nearest town once a week (hunt_spill) until someone seals it. In the Mended world the hunters only come at the Undermere site.
The race
- Day 1: only the guardian.
- Day 2: the hunters are digging. Talk (share the glyph with them), wait them out, or fight (
hunt_rival_hunters). If the player let Sabe's cut go at the Sallow warp (act3.hunters= 1), the hunters are Sabe's cut, and they wait for the player. If the player hurt them (act3.hunters= 3) and they've left the Undermere, they don't wait. Anyone else is the Crown cut, named for the glyph they chase. - Day 3: the menders are setting stones. Talk (seal it with them), fight (
hunt_menders), or trace inside the closing ring before it shuts (a timed trace).
Seal it, share it, hoard it
| Choice | What the player does | Moves |
|---|---|---|
| Seal | Close the warp with the menders, or alone with a mirrored field cast (Brace across the lip, as Aske did at Corran). The glyph goes with the warp, so trace it first if you want it. | rep.wardens +5; rep.facets −5 if hunters were on site; morality +5 if the site is near a town |
| Share | Trace it, then hold the guardian off while the hunters trace it too, or send word to the Giving Steps so anyone can come. The warp stays open until it fades. | rep.facets +5. If the site is near a town, glints spill into it that night (hunt_spill); morality −5 unless the player stays and fights them |
| Hoard | Trace it, then break the lip (Bevel Lash or Deep Cut on the warp's edge) so it fades for everyone, or run the hunters off. | rep.facets −10, morality −5; 2 × glyph_dust |
| Missed | Arrive after day 4. | 1 × glyph_dust at the lip |
Each result adds 1 to its tally and to hunt.count. A hunt can also yield the glyph itself, Crown Surge, the guardian's materials (mirror_grit, glint_quicksilver), and from humans who yield (canon rule 5) facet_token from hunters and evane_silver from menders. Glints never drop copper.
Guardians
| Region | Encounter (new) | Enemies |
|---|---|---|
| 1. The Sallow | hunt_guardian_sallow | 5 glint + glint_brute |
| 2. The Long Road | hunt_guardian_road | 3 dust_glint + 2 winged_glint |
| 3. Twinhold and Greenvault | hunt_guardian_lowlands | 4 glint + glint_brute |
| 4. Hushfold and the Hour Stair | hunt_guardian_highlands | 4 frost_glint + echo_owl |
| 5. The Shardfield | hunt_guardian_shardfield | 4 shard_glint + shardshell_crab |
| 6. Corran | hunt_guardian_corran | 3 stilled_glint + 2 winged_glint |
| 7. The Undermere | hunt_guardian_undermere | 4 roof_glint + drowned_chorister |
| 8. The Heart Pane | hunt_guardian_pane | sky_shoal + shard_sentinel |
Rivals: hunt_rival_hunters (2 glyph_hunter), hunt_menders (warden_menders). Spill: hunt_spill (4 glint + glint_brute, at the town).
Letters from Twinhold (Shattered)
This is Act 4's "Letters from Twinhold" hook, run as hunts. The first letter is the quest Letters from Twinhold (side_twinhold_letters, region 3); every letter after it opens a hunt. Every 28 in-game days in the Shattered world, an unsigned letter in Ondine's hand reaches the farm (letter_unsigned) naming a place where her crews failed to close a warp. It opens a hunt there at phase 1. The hunters don't know about it, because Facets don't read Ondine's letters, so the player gets a two-day head start. Sealing one of these sends no reply, but the next letter is shorter.
Yarn
Dialogue/Side/hunts.yarn, each node reading $hunt_id: Side_Hunt_Rumour (board notice), Side_Hunt_Arrive, Side_Hunt_Guardian_After, Side_Hunt_Hunters (with _Sabe and _CrownCut variants), Side_Hunt_Menders, Side_Hunt_Seal, Side_Hunt_Share, Side_Hunt_Hoard, Side_Hunt_Faded, Side_Hunt_Spill, Side_Hunt_OndineLetter.
Sample hunt: light on the lakebed
The warp file, Data/Warps/lakebed_lip.json (for a rolled hunt the controller writes openedDay; a server-delivered one carries dates instead):
{
"id": "lakebed_lip",
"region": "shardfield",
"site": { "location": "shardfield", "marker": "Event_warp_lakebed" },
"rumour": "Light on the cracked lakebed, two shelters past the Corran road marker.",
"boards": ["lanternfall_board", "truce_board"],
"glyphs": ["crown_surge"],
"poolPicks": 1,
"guardian": "hunt_guardian_shardfield",
"rivals": { "hunters": "hunt_rival_hunters", "menders": "hunt_menders" },
"window": { "unit": "world.day", "surface": 1, "hunters": 2, "menders": 3, "fade": 4, "close": 6 },
"nearTown": false,
"outcomes": [0, 2, 3]
}
outcomes lists the act4.outcome values the site can roll in (0 = before the outcome). The lakebed isn't a mending scar, so it never rolls in the Mended world.
Its quest, Data/Quests/hunt_lakebed_lip.json, which joins the Journal when the rumour is read:
{
"id": "hunt_lakebed_lip",
"title": "Light on the Lakebed",
"description": "A fresh warp has opened on the cracked lakebed. Whatever surfaces at its lip won't last the week, and you won't be the only one looking.",
"category": "hunt",
"giver": "lanternfall_board",
"board": "lanternfall_board",
"startWhen": { "flag": "hunt.lakebed_lip.phase", "op": ">=", "value": 1 },
"stages": [
{
"id": "reach",
"text": "Get to the cracked lakebed, past the storm shelters, before the glyph fades.",
"completeWhen": { "flag": "hunt.lakebed_lip.stage", "op": ">=", "value": 1 }
},
{
"id": "guardian",
"text": "Beat what came out of the warp.",
"completeWhen": { "flag": "hunt.lakebed_lip.stage", "op": ">=", "value": 2 }
},
{
"id": "trace",
"text": "Trace the glyph at the warp's lip while it shows.",
"completeWhen": {
"any": [
{ "flag": "hunt.lakebed_lip.stage", "op": ">=", "value": 3 },
{ "flag": "hunt.lakebed_lip.phase", "op": ">=", "value": 5 }
]
}
},
{
"id": "decide",
"text": "Seal the warp, share the glyph, or keep it to yourself.",
"completeWhen": { "flag": "hunt.lakebed_lip.result", "op": "!=", "value": 0 }
}
]
}
If the player never comes, the controller sets result = 4 at phase 5 and the quest closes as missed.
Items, flags and names this tab adds Open page
Quest props have no catalogue row; the Items and Economy tab's section 3.6 points here for them. Each is held as item.<id> while carried.
Regions 1–4, the Ring and caravans
Quest props (no catalogue row; for the items tab's "Key and quest items" table). Each is held as item.<id> while carried.
| Id | Name | Use |
|---|---|---|
choir_note | Folded Note | The Still Choir monk's note in mirrored hand-signs; read at Hushfold (side_drowned_choir). |
dorrit_crate | Dorrit's Crate | Three of Dorrit's lost crates, carried back from the fen (side_dorrit_cargo). |
shard_crate | Amber-Sealed Crate | The crate not on Dorrit's list: warp-shards packed in reed (side_dorrit_cargo). |
spare_wheel | Spare Wagon Wheel | Rolled up the ridge road to Jory's wagon (side_first_job). |
courier_letter | Teague's Letter | Wen's letter in the lost courier's satchel (side_quiet_courier). |
ness_ribbon | Ness's Ribbon | Tied at the last ribbon post if Ness didn't make it (side_outrider_ribbon). |
grain_tithe_note | Warden Grain Note | The terms that came with the Greenvault grain (side_valley_grain). |
letter_unsigned | Unsigned Letter | Ondine's seasonal letter in the Shattered world (side_twinhold_letters). |
ledger_page | Ledger Page | Hale's marked page naming the stilled fold (side_other_stillings). |
records_copy | Copy of the Records | Five copies of the Hour Stair records, one per seat (side_reading_records; stacks to 5). |
Reused, already in the walkthroughs or canon: hymn_page (key item, canon), wen_letter, waymaker_ribbon, rope, dry_boots, fragment_squall, prism_snare_half_triangle, wyrm_plate. Catalogue items given as rewards: still_water_locket, reed_band, still_water, eel_pie, honey_bread, ward_chalk, facet_token, waymaker_band, windbreak_coat, warden_band, breath_tonic, hour_sand.
New flag families
side.<slug>.stage,side.<slug>.choicefor every new quest above; counts:side.stall_line.harl,side.stall_line.nell,side.dorrit_cargo.crates,side.ness_ribbons.found,side.reading_records.seats,side.twinhold_letters.season,side.wen_letters.caught,side.wen_letters.read,side.ondine_hands.lanternfall,side.iver_trial.verdict,side.last_camp.ruts,side.court_summons.choice4 (unanswered).ring.*:ring.rank,ring.card.<name>,ring.court.<name>,ring.champion,ring.floor,ring.season,ring.season.wins.caravan.*:caravan.route,caravan.cargo,caravan.leg,caravan.wagons_lost(per run, reset on Take),caravan.runs,caravan.failed.travel.*(fast-travel unlocks):travel.barge(Dorrit's barge, Halfway to Sallowbank),travel.long_road_stops.- Single flags:
sigil.own(Quill's sigil),fenn.taught(1 taught, 2 "not yet"),waymaker.oath(1–3),unique.windbreak_coat(the existingunique.*family). - One flag for an existing scene:
act3.stole_half1, set inAct3_Archive_Shelfwhen the player steals the Prism Snare triangle half (Act 3 records only themorality−5 today).
New encounter ids, all built from bestiary enemies: square_night_glints, weir_glints (region 1); fork_frost_glints (region 2); valley_thorn_warden, far_hand_glints, decay_warp (region 3); fold_glints, thirteenth_hour (region 4); ring_card_cadet, ring_card_duellist, ring_card_waymaker, ring_court_cadet, ring_court_duellist, ring_ulla (the Ring, using the six new named opponents above).
New boards: truce_board, twinhold_board_near, twinhold_board_far, caravan_board, ring_card. New markers: Event_truce_board, Mark_harl, Mark_nell, Mark_dorrit, Fen_1–Fen_4, Event_deep_glyphs, Event_nave, Event_weir, Ribbon_1–Ribbon_3, Event_stranded_wagon, Event_last_camp, Event_courier_ravine, Mark_hesper, Event_meadow, Event_roofs_1–_3, Mark_ise, Event_arch, Event_undercroft, Event_stilled_fold, Event_thirteenth_frame, Event_second_pool.
New characters (ids): Garrick Lisle (garrick, Warden drill-master), Quartermaster Rell (rell), Watch-captain Orme (orme), Wick (wick, a roofer's boy), Clerk Amsel (amsel), Hesper (hesper, a Waymaker windmiller), Brother Teague (teague, a Choir courier), Abner Coll (abner, the stilled shepherd), and the Ring's Cadet Orrin Tey (orrin), Ketter (ketter) and Faye Linnet (faye). Existing characters get these ids here: old_pim (the Hour Stair bell-ringer) and jory (the Act 1 drover, renamed from Pim in VEL-63).
Regions 5–8 and glyph hunts
Quest props and key items
Catalogue items are used wherever one fits. These are new, and all are key items unless noted.
| Id | Name | Use |
|---|---|---|
bevel_lash_half_line | Bevel Lash: the Line | The straight-stroke half (Vault haul, or Ottie's shard). Canon names the halves but no id existed. |
bevel_lash_half_triangle | Bevel Lash: the Triangle | Held only if the player chips it out (The Triangle Past the Corran Road), for relearning. |
fragment_crown_surge | Crown Surge (stolen) | Sold by Vey. Learn or relearn Crown Surge (warp-born, so this is the only item form). |
fragment_hasten | Hasten (stolen) | Sold by Vey. The fallen road's Hasten (walkthrough-act-3.md, scene 6.3). |
sorrel_ledger | Sorrel's Ledger | No More Seals: the unbinder's list of people who couldn't pay. |
hoard_sack | Sack of Stolen Glyphs | The Hoard: handed to Vey, given back or tipped out. A quest prop, never sold. |
dig_tally | Quicksilver Tally Slate | The Quicksilver Dig: the diggers' slate of buyers, both sides. |
culet_map | Map of the Pane's Cracks | The Cache-Mark: Iver's cut's map, drawn from underneath. |
records_copy | Copies of the Hour Stair Records | Reading the Records: one per seat. |
pane_chart | Chart of the Pieces | The Pieces of the Pane: filled in piece by piece. |
letter_unsigned | An Unsigned Letter | Shattered world: Ondine's seasonal letter naming a failed warp; opens a hunt. |
Catalogue items these quests hand out: sigil_pendant, shard_cuff, amber_cuff, warden_band, shard_cord, still_water, honey_bread, eel_pie, ward_chalk (spent), raw_amber, mirror_grit, glint_quicksilver, glyph_dust, facet_token, and the canon's unique split_glyph_band and key hymn_page.
New encounters (built from bestiary enemies)
freed_caster (hollow_cut); freed_glints (4 glint + glint_brute); saltglass_glints (3 stilled_glint + 2 shard_glint); rim_cutters (2 culet_cutter); split_cut (hollow_cut + 2 culet_cutter); wagon_glints_strong (inner_glints + glint_brute); the hunt set hunt_guardian_<region> (eight, table above), hunt_rival_hunters, hunt_menders, hunt_spill. Everything else uses existing bestiary or walkthrough ids.
New flag families
- Side quests:
side.<slug>.stagefor every quest above. Choice and counter sub-flags:side.pells_hands.way,side.hunters_trail.choice,side.bevel_triangle.choice,side.storm_shelter.first,side.cass_arm.lio,side.no_more_seals.found,side.quicksilver_dig.buyer_facet,.buyer_warden,.choice,side.duel_pit.thrown,side.drowned_nave.choice,side.culet_cache.map,side.reading_records.<seat>(greenvault,hushfold,long_road,lanternfall,twinhold),side.same_sky.found,side.next_wagon.runs. - World clock:
world.day. - Hunts:
hunt.open,hunt.<id>.phase,hunt.<id>.stage,hunt.<id>.result,hunt.count,hunt.sealed,hunt.shared,hunt.hoarded,hunt.missed. - Access:
undermere.backdoor(1 once the Girdle Gate shard-step or the Corran diggings tunnel is used; opens the deep tunnels, not the den). - People and places:
lio.door_mark,lio.saw_cass,lio.hands,cass.thawed,ansel.told,corran.stones,corran.saw_brin_word,brin.sigil,home.goat,home.sigil_door,sabe.left_undermere,dark.known,split_cut.outcome,rim.truce,saltglass.woken,pane.pieces,pane.piece.<n>,atonement.deed.<slug>. - Met:
met.ottie,met.marl,met.ansel,met.nim,met.shale,met.<woken name>(met.oren,met.della,met.abel,met.kit,met.pip,met.teg,met.tam,met.bel,met.corr,met.gessa,met.lune,met.fitch), andcorran.looked.abelfor the twelfth figure.
Notes for the Lead
- Companion trust (
<name>.trust) runs 0–5 in the canon, so it moves by 1 here; every other track moves in steps of 5. - Two loader needs: a
"repeatable"quest field (The Next Wagon resets its own stage), and quest category"hunt". - New names: Ottie, Marl and the Star cut, Mender Ansel Wray, Ama, Shale, Nim (Table cut), Saltglass.