Story
The Heart Pane and the deep Shardfield
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.