Fix contact transitions and dining car access
This commit is contained in:
+4
-2
@@ -39,11 +39,13 @@ Eibenreith authored content uses a mandatory bucket architecture. Rooms are inst
|
||||
|
||||
`helpers.ink` owns global helper variables, helper functions, `TURN`, and active choice-surface dispatch. `buckets.ink` owns the game-wide bucket. Even when empty, `game_bucket` remains a real content bucket and must stay available for cross-episode game material.
|
||||
|
||||
Companion-aware dialogue should use Ink helpers instead of repeating location checks. `present(character)` checks whether an NPC is in the current room. `alone()` is true when no tracked NPC is present. `alone_with(character)` is true when exactly that tracked NPC is present, and is intended for private dialogue options.
|
||||
Companion-aware dialogue and reunion reactions must use the central Ink contact manager instead of room-specific flags. `present(character)` checks whether an NPC is in the current room. `first_meeting(character)`, `reunion(character)`, and `parting(character)` are one-choice-surface transition helpers created by traversal and cleared automatically by the next turn. Authored content may query these helpers but must never clear or consume contact transitions manually. `alone()` is true when no tracked NPC is present. `alone_with(character)` is true when exactly that tracked NPC is present, and is intended for private dialogue options.
|
||||
|
||||
`loc_move_to(location)` updates Valerie's current location, moves active companions, and refreshes contact state. `companion_join(character)` and `companion_leave(character)` only control whether a character follows Valerie through traversal; they are not story-memory flags. Episode setup is responsible for initial character locations and companion state. After manual multi-character setup, call `contact_sync()` to establish current contact without firing first-meeting or reunion transitions.
|
||||
|
||||
Player-choice impact uses three distinct mechanisms. Cascades use semantic state chains when a choice changes the route, episode outcome, or later structure. Callbacks use named facts for exact remembered choices. Heuristics use route counters and relationship-matrix queries to color tone or summarize repeated patterns. Do not use a route heuristic when the later text needs to remember one specific earlier line.
|
||||
|
||||
When multiple choices from one prioritized family can appear on the same choice surface, use `claim_choice_gate(gate)` to allow only the first valid item in source order. This is mainly for `#auto` families such as Viktor return comments. The helper is transient and resets at the start of every `provide_choices`; it must not be used as story memory.
|
||||
When multiple choices from one prioritized family can appear on the same choice surface, use `claim_choice_gate_if(gate, available)` to allow only the first valid item in source order. This is mainly for `#auto` families such as Viktor return comments, which should also include a contact transition such as `reunion(viktor)` in their availability expression. The helper is transient and resets at the start of every `provide_choices`; it must not be used as story memory.
|
||||
|
||||
## Choice Text Perspective
|
||||
|
||||
|
||||
Reference in New Issue
Block a user