// Shared declarations for the whole project. // // This node is never played. Declaring every variable in one place means the // compiler catches typos ("$reputaton") instead of silently creating a second // variable at runtime. // // Writing rules the code deliberately does not enforce (Skill Bible §7 / refactor plan §2.1): // - Wrong Truth failures carry 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. // // Modifier Yarn commands (see YarnSkillCommands): // <> — source key "scene" = situational; clear on scene exit // <> // Other source keys (drunk, injured, …) are state buckets. title: Declarations --- // How much the door staff likes you. <> // Written by <> (YarnSkillCommands). Never <> these by hand. <> <> <> <> <> <> <> // Used by top_skill <> <> // Candidate lean. Three permanently-live readings of who the PC is; they are // not mutually exclusive and never resolve into a canonical identity. // // DESIGN DECISION 2026-08-16 — amends the "no code ever reads lean" guardrail in // docs/candidate-system-implementation-plan.md §6.1: scenes are meant to tilt // toward one reading and NPCs are meant to act on the current tilt, so that a // player who thinks they have settled on a path gets challenged on it in the // next scene. Reading lean through top_skill(...) is therefore sanctioned, as in // SC101_Asks_Candidate_Chevalier_Cassian_Thal_Talk. top_skill returns its FIRST // argument on a tie, which is why made_asset is passed first — the Made Asset // bias on an even score is deliberate, not an accident of argument order. // // What the amendment does NOT license: a stored winner. There is still no // $dominant_candidate, no ground-truth identity field, and nothing in save data // beyond these three integers. $winner above is scratch, recomputed per use. <> <> <> // Scene witnessed. Convention: $seen_. <> // Clue coverage flags. One per registry clue id ($found_). Writers // <> these at the discovery beat alongside the lean write. Lean tracks // belief (and can move on a Wrong Truth failure); $found_* tracks coverage. // No code reads these. <> <> <> <> <> <> <> <> <> <> <> <> <> <> // Exploration gating. Clue availability is exploration-gated, never skill-gated. // Convention: $visited_ on first arrival; $errand_ when // an errand reaches the state that matters. Writers <> these from scene // content. unlockFlag fields in candidates.json may only name these families. <> <> <> <> <> <> <> <> <> <> <> <> // Player name substitution. Uppercase [PC] in the Skill Bible means the full, // formal form (STANDING ORDER, PROVENANCE); lowercase [pc] means the familiar // short form (CONFLUENCE, FACEWORK). Two variables, not one — collapsing them // loses a characterisation rule the bible states for four separate voices. // Defaults are placeholders; naming the PC is design's call. <> <> // Club alias. Smart variable: deterministically derived from $player_name via // AliasNameGenerator.alias_name (hash-seeded pick from two word pools), so it // is never in sync-drift and never <> by hand. Same real name always // yields the same alias; the alias itself bears no resemblance to the input. <> // Information about history and symbols <> <> // Character dialogue gates <> <> <> <> ===