integrated candidate system
This commit is contained in:
@@ -5,6 +5,14 @@
|
||||
// Writing rules (code does not enforce these):
|
||||
// - Wrong Truth failures: no failure signal in the prose; the UI banner is the only tell.
|
||||
// - Documentary routes are gated on Act and errand state, never on a voice.
|
||||
//
|
||||
// TODO: ambient fallback. Every voice in the Skill Bible has one context-free
|
||||
// PASSIVE VOICE line, and right now those lines have nowhere to live — a voice
|
||||
// with no Commentary_{context}_{id} node simply stays silent in that context.
|
||||
// Proposal: when no context node matches an eligible skill, CommentarySystem
|
||||
// falls back to Commentary_Ambient_{id}. Deferred from the refactor as optional;
|
||||
// only worth doing if it doesn't complicate the candidate loop.
|
||||
// See docs/skill-system-refactor-plan.md §5.6.
|
||||
|
||||
title: Commentary_Entrance_Queue_facework
|
||||
---
|
||||
|
||||
@@ -36,4 +36,15 @@ title: Declarations
|
||||
<<declare $check_modifier = 0 as number>>
|
||||
<<declare $check_degree = "" as string>>
|
||||
<<declare $check_skill = "" as string>>
|
||||
|
||||
// Candidate lean. Three permanently-live readings of who the PC is; they are
|
||||
// not mutually exclusive and never resolve. Writers <<set>> these; no code
|
||||
// reads them. There is deliberately NO derived "winning candidate" variable —
|
||||
// see docs/candidate-system-plan.md §5.
|
||||
<<declare $self_lean_made_asset = 0 as number>>
|
||||
<<declare $self_lean_journalist = 0 as number>>
|
||||
<<declare $self_lean_inheritor = 0 as number>>
|
||||
|
||||
// Scene witnessed. New convention: $seen_<scene_id>.
|
||||
<<declare $seen_sc_101 = false as bool>>
|
||||
===
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Scratch node for verifying the skill-check plumbing. Not part of the story.
|
||||
// Point DialogueRunner.startNode at "Debug_SkillCheck" to run it, then set it
|
||||
// Scratch nodes for verifying mechanics in isolation. Not part of the story.
|
||||
// Point DialogueRunner.startNode at the node you want to run, then set it
|
||||
// back to "Start" when you're done.
|
||||
|
||||
title: Debug_SkillCheck
|
||||
@@ -20,3 +20,16 @@ Narrator: Confluence came out {$check_degree}.
|
||||
<<check nosuchskill routine>>
|
||||
Narrator: Survived the bad skill id.
|
||||
===
|
||||
|
||||
// Candidate lean accumulator round-trip. Expect made_asset 2 / journalist 1 /
|
||||
// inheritor 0, and the threshold branch to fire.
|
||||
title: Debug_CandidateLean
|
||||
---
|
||||
<<set $self_lean_made_asset += 1>>
|
||||
<<set $self_lean_made_asset += 1>>
|
||||
<<set $self_lean_journalist += 1>>
|
||||
Narrator: made_asset {$self_lean_made_asset} / journalist {$self_lean_journalist} / inheritor {$self_lean_inheritor}
|
||||
<<if $self_lean_made_asset >= 2>>
|
||||
Narrator: threshold branch reached.
|
||||
<<endif>>
|
||||
===
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
// SC-101 — The Card at the Desk. Opening candidate hooks.
|
||||
//
|
||||
// Scene files stay thin: set the stage, <<detour>> into hook nodes, return.
|
||||
// Prose is TODO until the writing pass; structure and flag writes are locked.
|
||||
//
|
||||
// Evidence rule (design §1.3): each candidate gets exactly one of each evidence
|
||||
// type — object, testimony, document, intuition. Preserve that balance; do not
|
||||
// stack types so trust becomes an artifact of imbalance.
|
||||
//
|
||||
// Discovery order (§1.5): hooks are independently reachable in any order via
|
||||
// <<detour>> from the desk. Never <<if>>-guard a hook on another hook having
|
||||
// fired, on any $self_lean_*, or on skill_rank(...). Never make a hook only
|
||||
// reachable as fall-through from another.
|
||||
|
||||
title: SC101_Desk
|
||||
---
|
||||
<<set $seen_sc_101 = true>>
|
||||
Narrator: TODO — desk / card stage-setting.
|
||||
-> Made Asset hook
|
||||
<<detour SC101_Hook_MadeAsset>>
|
||||
<<jump SC101_Desk>>
|
||||
-> Journalist hook
|
||||
<<detour SC101_Hook_Journalist>>
|
||||
<<jump SC101_Desk>>
|
||||
-> Inheritor hook
|
||||
<<detour SC101_Hook_Inheritor>>
|
||||
<<jump SC101_Desk>>
|
||||
-> Neutral hook
|
||||
<<detour SC101_Hook_Neutral>>
|
||||
<<jump SC101_Desk>>
|
||||
-> Leave the desk
|
||||
Narrator: TODO — exit the desk beat.
|
||||
===
|
||||
|
||||
title: SC101_Hook_MadeAsset
|
||||
---
|
||||
CONFLUENCE: TODO — Made Asset intuition.
|
||||
<<set $self_lean_made_asset += 1>>
|
||||
===
|
||||
|
||||
title: SC101_Hook_Journalist
|
||||
---
|
||||
FACEWORK: TODO — Journalist intuition.
|
||||
<<set $self_lean_journalist += 1>>
|
||||
===
|
||||
|
||||
title: SC101_Hook_Inheritor
|
||||
---
|
||||
STANDING ORDER: TODO — Inheritor intuition.
|
||||
<<set $self_lean_inheritor += 1>>
|
||||
===
|
||||
|
||||
title: SC101_Hook_Neutral
|
||||
---
|
||||
HOUSE POUR: TODO — neutral Body texture; no lean.
|
||||
===
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ef4adc1687e744cd0afd7041ab38c377
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 11500000, guid: 94073015eacc34c1d8fc6786e43d60ca, type: 3}
|
||||
Reference in New Issue
Block a user