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:
Christopher Wiebe
2026-04-30 20:40:51 -07:00
commit b451f83174
525 changed files with 75786 additions and 0 deletions
@@ -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
}
]
}