Initial commit: Theriapolis baseline at port/godot branch point
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>
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"id": "main_act_i_001_arrival",
|
||||
"title": "Arrival in Millhaven",
|
||||
"description": "A letter from Magistrate Vossler asks you to settle your parents' estate. Visit the magistrate, take the case file your parents left behind, and learn what they died investigating.",
|
||||
"hidden": false,
|
||||
|
||||
"auto_start_when": [
|
||||
{ "kind": "enter_anchor", "anchor": "millhaven" }
|
||||
],
|
||||
|
||||
"entry_step": "intro",
|
||||
|
||||
"steps": [
|
||||
{
|
||||
"id": "intro",
|
||||
"title": "Arrive in Millhaven",
|
||||
"description": "Make your way to the magistrate's hall in Millhaven.",
|
||||
"waypoint": "anchor:millhaven",
|
||||
"trigger_conditions": [
|
||||
{ "kind": "enter_anchor", "anchor": "millhaven" }
|
||||
],
|
||||
"on_enter": [
|
||||
{ "kind": "set_flag", "flag": "act_i_arrived_at_millhaven" }
|
||||
],
|
||||
"outcomes": [
|
||||
{ "next": "find_magistrate" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "find_magistrate",
|
||||
"title": "Speak with Magistrate Vossler",
|
||||
"description": "Magistrate Vossler holds the case file your parents left behind.",
|
||||
"waypoint": "role:millhaven.magistrate",
|
||||
"trigger_conditions": [
|
||||
{ "kind": "flag_set", "flag": "spoke_to_millhaven_magistrate" }
|
||||
],
|
||||
"outcomes": [
|
||||
{ "next": "investigate" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "investigate",
|
||||
"title": "Investigate Briarstead",
|
||||
"description": "Read the journal. Talk to Constable Fenn or Grandmother Asha. Learn who your parents were before they died — and what they were investigating.",
|
||||
"waypoint": "Briarstead — south of Millhaven, past the millpond",
|
||||
"trigger_conditions": [
|
||||
{ "kind": "flag_set", "flag": "act_i_briarstead_searched" }
|
||||
],
|
||||
"outcomes": [
|
||||
{
|
||||
"next": "complete",
|
||||
"effects": [
|
||||
{ "kind": "give_xp", "xp": 200 },
|
||||
{ "kind": "start_quest", "quest": "main_act_i_003_following_dead" }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "complete",
|
||||
"title": "What You Carry",
|
||||
"description": "You have the journal, the formula, the names list, and — depending on how the climax went — the Maw's sigil. The road out of Millhaven leads east toward Thornfield, where the first name on the list lives.",
|
||||
"completes_quest": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"id": "main_act_i_003_following_dead",
|
||||
"title": "Following the Dead",
|
||||
"description": "A coyote-folk stranger named Fen Lacroix arrived in Millhaven the same day you did. He claims to be a merchant. The journal in your pack says otherwise — the people who killed your parents are checking their work, and Lacroix is here to confirm the job is done.",
|
||||
"hidden": false,
|
||||
"entry_step": "find_lacroix",
|
||||
|
||||
"steps": [
|
||||
{
|
||||
"id": "find_lacroix",
|
||||
"title": "Confront Fen Lacroix",
|
||||
"description": "Lacroix is staying at the Millhaven inn. You'll need to find him there before he reports back to whoever sent him.",
|
||||
"waypoint": "role:millhaven.lacroix",
|
||||
"trigger_conditions": [
|
||||
{ "kind": "flag_set", "flag": "lacroix_climax_resolved" }
|
||||
],
|
||||
"outcomes": [
|
||||
{ "next": "complete_with_kill", "when": [ { "kind": "flag_set", "flag": "lacroix_killed" } ] },
|
||||
{ "next": "complete_with_intel", "when": [ { "kind": "flag_set", "flag": "lacroix_interrogated" } ] },
|
||||
{ "next": "complete_with_let_go", "when": [ { "kind": "flag_set", "flag": "lacroix_let_go" } ] },
|
||||
{ "next": "complete_with_kill" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "complete_with_kill",
|
||||
"title": "Lacroix is dead",
|
||||
"description": "The Maw will know one of their operatives didn't come back. They will adjust. Take what you have and head east.",
|
||||
"on_enter": [
|
||||
{ "kind": "give_xp", "xp": 100 }
|
||||
],
|
||||
"completes_quest": true
|
||||
},
|
||||
{
|
||||
"id": "complete_with_intel",
|
||||
"title": "Lacroix talked",
|
||||
"description": "He gave up a name — Sable. He gave up a sigil — the Maw's. He gave up the trail east — Thornfield, Dr. Marisol Venn. The conspiracy has shape now.",
|
||||
"on_enter": [
|
||||
{ "kind": "give_xp", "xp": 200 }
|
||||
],
|
||||
"completes_quest": true
|
||||
},
|
||||
{
|
||||
"id": "complete_with_let_go",
|
||||
"title": "Lacroix walked away",
|
||||
"description": "He left the sigil and a warning. Whoever sent him will know you let him live. The Maw owes you nothing now, but they remember favours like a debt.",
|
||||
"on_enter": [
|
||||
{ "kind": "give_xp", "xp": 50 },
|
||||
{ "kind": "rep_event", "event": { "kind": "Misc", "magnitude": 8, "faction": "maw", "note": "let an operative walk" } }
|
||||
],
|
||||
"completes_quest": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"id": "side_act_i_fence_lines",
|
||||
"title": "Fence Lines",
|
||||
"description": "Constable Fenn asked you to mediate a property dispute between Mira (Cervid farmer) and Voss (Canid rancher). Their fence has been a flashpoint for thirty years; this summer it became a war.",
|
||||
"hidden": false,
|
||||
"entry_step": "mediate",
|
||||
|
||||
"steps": [
|
||||
{
|
||||
"id": "mediate",
|
||||
"title": "Walk the disputed fence",
|
||||
"description": "Find Mira on the second left out of the south gate; find Voss along the eastern ridge. Pick an honest outcome — Constable Fenn will back any compromise that holds.",
|
||||
"waypoint": "south gate, then second left",
|
||||
"trigger_conditions": [
|
||||
{ "kind": "flag_set", "flag": "fence_lines_resolved" }
|
||||
],
|
||||
"outcomes": [
|
||||
{ "next": "complete",
|
||||
"effects": [
|
||||
{ "kind": "give_xp", "xp": 80 },
|
||||
{ "kind": "rep_event", "event": { "kind": "Quest", "magnitude": 6, "faction": "covenant_enforcers", "note": "mediated the south-fence dispute" } }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "complete",
|
||||
"title": "Fence Lines Mediated",
|
||||
"description": "The fence holds for now. Two families who weren't speaking are. Constable Fenn nods at you when you pass.",
|
||||
"completes_quest": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"id": "side_act_i_old_howl",
|
||||
"title": "Old Howl",
|
||||
"description": "Grandmother Asha asked you to retrieve her father's Howl-stone from the collapsed mine south of Millhaven. The mine has been camped recently — go armed.",
|
||||
"hidden": false,
|
||||
"entry_step": "find_stone",
|
||||
|
||||
"steps": [
|
||||
{
|
||||
"id": "find_stone",
|
||||
"title": "Search the Old Howl mine",
|
||||
"description": "Travel south past the millpond and take the right fork at the old fence. The brigands camping at the entrance won't let you pass without a fight; the back chamber holds Asha's heirloom.",
|
||||
"waypoint": "Old Howl mine — right fork at the old fence",
|
||||
"on_enter": [
|
||||
{ "kind": "give_item", "id": "howl_stone", "qty": 1 }
|
||||
],
|
||||
"outcomes": [
|
||||
{ "next": "return" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "return",
|
||||
"title": "Return the Howl-stone to Asha",
|
||||
"description": "Bring the Howl-stone back to Grandmother Asha in Millhaven.",
|
||||
"waypoint": "role:millhaven.grandmother_asha",
|
||||
"trigger_conditions": [
|
||||
{ "kind": "flag_set", "flag": "asha_received_howl_stone" }
|
||||
],
|
||||
"outcomes": [
|
||||
{
|
||||
"next": "complete",
|
||||
"effects": [
|
||||
{ "kind": "give_xp", "xp": 100 }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "complete",
|
||||
"title": "Old Howl Returned",
|
||||
"description": "Asha has her father's stone back. She'll speak openly about Sable Vasik now — that name will matter later.",
|
||||
"completes_quest": true
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user