b451f83174
Captures the pre-Godot-port state of the codebase. This is the rollback anchor for the Godot port (M0 of theriapolis-rpg-implementation-plan-godot-port.md). All Phase 0 through Phase 6.5 work is included; Phase 7 is in flight. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
123 lines
6.7 KiB
JSON
123 lines
6.7 KiB
JSON
{
|
|
"id": "millhaven_grandmother_asha",
|
|
"root": "intro",
|
|
"nodes": [
|
|
{
|
|
"id": "intro",
|
|
"speaker": "npc",
|
|
"text": "\"Sit, sit. The chair likes company.\"\n\nGrandmother Asha is a wolf-folk older than the timbers of her cottage. Her eyes are pale and watchful. A small fire burns even in the warm hour. \"You smell like a long road, child. What pulls you to this old door?\"",
|
|
"options": [
|
|
{ "text": "I'm here about my parents.", "next": "parents" },
|
|
{ "text": "The magistrate said you'd know things about Millhaven.", "next": "lore" },
|
|
{
|
|
"text": "[Has Briarstead Journal] My parents kept this journal. Did you know them?",
|
|
"conditions": [{ "kind": "has_item", "id": "briarstead_journal" }],
|
|
"next": "journal_recognised"
|
|
},
|
|
{ "text": "I should be on my way.", "next": "<end>" }
|
|
]
|
|
},
|
|
{
|
|
"id": "parents",
|
|
"speaker": "npc",
|
|
"text": "\"I knew them when the millpond still froze every winter. Quiet people. Good with chemistry. Your mother could tell a forged Pheromone from a real one before the salesman finished his pitch.\" Her ears flatten briefly. \"They were not killed by a wild thing. I have walked this country my whole life. I know what a real rawfang scent leaves on the wind.\"",
|
|
"options": [
|
|
{ "text": "What did the wind smell like, then?", "next": "wind_smell" },
|
|
{ "text": "What do you mean?", "next": "wind_smell" }
|
|
]
|
|
},
|
|
{
|
|
"id": "wind_smell",
|
|
"speaker": "npc",
|
|
"text": "\"Manufactured. Adrenaline without fear. Saliva without hunger. Someone deployed a pheromone compound to write the wrong story across the field.\" She watches your face for a long moment. \"You are not the first to ask. Read what they left you. Then come back and tell me whose names are on the list.\"",
|
|
"options": [
|
|
{ "text": "I'd like to ask a favour, if I may.", "next": "favour_offer",
|
|
"conditions": [{ "kind": "has_flag", "flag": "asha_offered_favour" }] },
|
|
{ "text": "Will you help me?", "next": "favour" },
|
|
{ "text": "I'll come back.", "next": "<end>" }
|
|
]
|
|
},
|
|
{
|
|
"id": "favour",
|
|
"speaker": "npc",
|
|
"text": "\"I am old, child, and the old keep accounts. There is a stone in the Old Howl mine — your magistrate told you the lane forks. Left to the farm, right to the mine. The mine has been collapsed since my mother's time. My father's Howl-stone is in there. Bring it to me, and I will tell you what I know about the people whose names you carry.\"\n\n\"You'll need to be careful. The mine has not been empty. Someone has been using it. Bring no one with you who you do not trust completely.\"",
|
|
"options": [
|
|
{
|
|
"text": "I'll fetch the stone.",
|
|
"next": "<end>",
|
|
"effects": [
|
|
{ "kind": "set_flag", "flag": "asha_offered_favour", "value": 1 },
|
|
{ "kind": "start_quest", "quest": "side_act_i_old_howl" }
|
|
]
|
|
},
|
|
{ "text": "Maybe later.", "next": "<end>" }
|
|
]
|
|
},
|
|
{
|
|
"id": "favour_offer",
|
|
"speaker": "npc",
|
|
"text": "\"The mine, the stone, my father's hand. Either you've gone, or you're remembering. Speak, then.\"",
|
|
"options": [
|
|
{
|
|
"text": "[Has Howl-stone] I brought your stone back.",
|
|
"conditions": [{ "kind": "has_item", "id": "howl_stone" }],
|
|
"next": "stone_returned",
|
|
"effects": [
|
|
{ "kind": "take_item", "id": "howl_stone", "qty": 1 },
|
|
{ "kind": "set_flag", "flag": "asha_received_howl_stone", "value": 1 },
|
|
{ "kind": "rep_event", "event": { "kind": "Aid", "magnitude": 30, "role_tag": "millhaven.grandmother_asha", "note": "returned the Howl-stone" } },
|
|
{ "kind": "give_xp", "xp": 150 }
|
|
]
|
|
},
|
|
{ "text": "Still working on it.", "next": "<end>" }
|
|
]
|
|
},
|
|
{
|
|
"id": "stone_returned",
|
|
"speaker": "npc",
|
|
"text": "She closes her hand around the stone and is silent for a long beat. The fire behind her snaps.\n\n\"Thank you, child. The Old Howl is quieter now.\" She presses something thin and folded into your palm — a name, an old address, a route. \"This is who I would speak to in Thornfield, if I were going. Don't show it to a stranger.\"\n\n\"Now ask me what you came for.\"",
|
|
"options": [
|
|
{ "text": "Tell me about the Maw.", "next": "maw_lore",
|
|
"conditions": [{ "kind": "has_item", "id": "maw_sigil" }] },
|
|
{ "text": "What do you know about Sable Vasik?", "next": "vasik_lore",
|
|
"conditions": [{ "kind": "has_flag", "flag": "asha_received_howl_stone" }] },
|
|
{ "text": "Just thank you.", "next": "<end>" }
|
|
]
|
|
},
|
|
{
|
|
"id": "vasik_lore",
|
|
"speaker": "npc",
|
|
"text": "\"That name. I have heard it twice in fifty years, and both times the speaker apologised for saying it aloud.\" She thinks. \"A Covenant-Keeper of the Bridge oath, retired thirty years. People who knew the work say the work was good. People who knew the keeper say the keeper was tired. Be careful with what tired people decide is true.\"",
|
|
"options": [
|
|
{ "text": "Thank you. Goodbye.", "next": "<end>" }
|
|
]
|
|
},
|
|
{
|
|
"id": "maw_lore",
|
|
"speaker": "npc",
|
|
"text": "\"A circle of teeth. Predators of every clade biting the same prey at the same moment. The pictograph is older than the Covenant — it used to mean a hunting truce. Whoever uses it now has read history badly, or read it too well.\"",
|
|
"options": [
|
|
{ "text": "Thank you for your help.", "next": "<end>" }
|
|
]
|
|
},
|
|
{
|
|
"id": "journal_recognised",
|
|
"speaker": "npc",
|
|
"text": "She turns the journal over in her hands as carefully as a wounded bird.\n\n\"Yes. Your parent's hand. Read the early entries first — they were a careful writer. The later entries are not as careful. Something had begun to frighten them. By the time they crossed names off this list, they were sleeping in shifts.\" Her eyes meet yours. \"I am sorry, child. I am old enough to recognise what fear looks like in handwriting.\"",
|
|
"options": [
|
|
{ "text": "Will you help me?", "next": "favour" },
|
|
{ "text": "I'll come back when I know more.", "next": "<end>" }
|
|
]
|
|
},
|
|
{
|
|
"id": "lore",
|
|
"speaker": "npc",
|
|
"text": "\"Millhaven sits where the southern road and the millrace meet. Cervid farmers and Canid ranchers, with a few of every other clade between. Most years, the grain is good and the constable is bored. This year is not most years.\"\n\n\"Ask me something specific and I'll answer the part I know.\"",
|
|
"options": [
|
|
{ "text": "What about my parents?", "next": "parents" },
|
|
{ "text": "Goodbye.", "next": "<end>" }
|
|
]
|
|
}
|
|
]
|
|
}
|