Checkpoint ink architecture updates

This commit is contained in:
2026-05-24 16:00:22 +02:00
parent 01c8b1aff6
commit 510901f5bf
14 changed files with 1218 additions and 643 deletions
+151 -140
View File
@@ -1,4 +1,4 @@
// ============================================================================
// ============================================================================
// EIBENREITH 01 ZUG
// ============================================================================
// Kapitel 01: Das Abteil / Der Zug.
@@ -40,10 +40,11 @@ Für alle Fremden ist er nun dein Sekretär. Er öffnet Türen, trägt Gepäck,
* {lacks(body_def)}
{loc(loc_train_clergy_corridor) || loc(loc_train_washroom_corridor)}
{not (loc(loc_train_clergy_corridor) && lacks(relig_def))} [AUTO: Tunnelspiegelung] #auto(3)
-> train_corridor_tunnel_event
-> train_corridor_tunnel_event ->
-> TURN
* {present(viktor)}
{loc(loc_train_dining_car)} [__Frage__: Ob ein Auftrag erst am Ziel beginnt.]
{loc(loc_train_dining_car)} [__Prüfe Viktor__: „Beginnt ein Auftrag erst dort, wo man aussteigt?“]
-> episode_begin_question
* {present(viktor)}
@@ -51,6 +52,39 @@ Für alle Fremden ist er nun dein Sekretär. Er öffnet Türen, trägt Gepäck,
Der Speisewagen braucht keinen Wappenrock, um Rang herzustellen: Der eine bestellt, der andere wartet ab; der Kellner lächelt, weil es Arbeit ist; Viktor beobachtet, weil es Dienst ist. Hohenreith wird dieselbe Kunst beherrschen, nur mit älteren Möbeln.
-> TURN
* {present(viktor)}
{train_compartment_bucket.examined_viktor_map}
{loc(loc_train_compartment) || loc(loc_train_dining_car)} [__Prüfe Viktor__: „Ist alles in Ihrer Mappe für meine Augen bestimmt?“]
„Ihre Mappe ist sehr geordnet“, sagst du. „Ist alles darin für meine Augen bestimmt?“
„Nein.“
Die Antwort kommt rasch genug, um ehrlich zu sein.
{route_repeated(detective, 2):
„Sie wollten wissen, ob ich lüge“, sagt Viktor.
„Ich wollte wissen, ob Sie es merken.“
„Das ist nicht dasselbe?“
„Nein.“
~ rel_inc(viktor_insightful)
- else:
„Manche Ordnung besteht darin, Grenzen sichtbar zu lassen.“
}
-> TURN
* {present(viktor)}
{train_compartment_bucket.looked_from_train_window}
{loc(loc_train_compartment) || loc(loc_train_dining_car)} [__Bemerke__: Dass Wien im Fenster länger bleibt.]
„Wien verschwindet langsamer, als der Fahrplan behauptet.“
Viktor folgt deinem Blick hinaus. „Städte tun das. Besonders die, die glauben, man sei ihnen noch Rechenschaft schuldig.“
Das ist zu persönlich für eine Reisebemerkung und zu allgemein, um ihn darauf festzulegen.
-> TURN
* {has((name_def, relig_def, body_def, face_def, belief_def))}
{state_reached(CourtMission.hidden_instruction_revealed)} [__Weiter__: Den Umstieg kommen lassen.]
-> train_intro_end
@@ -61,12 +95,12 @@ Für alle Fremden ist er nun dein Sekretär. Er öffnet Türen, trägt Gepäck,
„Nur im Bericht“, sagt Viktor. „Menschen beginnen früher. Beim Packen. Beim Schweigen. Beim Entschluss, welche Frage man höflich nicht stellt.“
* [__Prüfe__: „Dann begann meiner schon in Wien.“]
* * [__Prüfe__: „Dann begann meiner schon in Wien.“]
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
„Wahrscheinlich davor“, sagt er. „Wien bemerkt seine eigenen Anfänge selten.“
* [__Wahre Form__: „Dann achten wir auf die fehlenden Fragen.“]
* * [__Wahre Form__: „Dann achten wir auf die fehlenden Fragen.“]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
„Eine Gewohnheit, die in fremden Häusern selten schadet.“
@@ -88,38 +122,93 @@ Für alle Fremden ist er nun dein Sekretär. Er öffnet Türen, trägt Gepäck,
#alert[Links erscheinen Entscheidungen. Du kannst sie mit der Maus wählen oder mit der angezeigten Taste auslösen. Das hervorgehobene Wort beschreibt, was Valerie versucht; Kürzel wie L für Schaue oder X für Untersuche folgen Textadventure-Gewohnheiten.]
}
* {lacks(washroom_return_acknowledged)}
{has(washroom_claim_freshen_up) || has(washroom_claim_explore_train) || has(washroom_claim_mirror) || has(washroom_claim_privacy) || has(washroom_claim_unwell) || has(washroom_claim_silent)} [AUTO: Viktors Rückkehrreaktion] #auto
~ mark(washroom_return_acknowledged)
{
- has(washroom_freshened_up):
Viktor hebt den Blick, als du wieder eintrittst. Er bemerkt zuerst nicht dein Gesicht, sondern die Arbeit daran: glattere Nadeln, kühlere Hände, ein Blick, der wieder dort sitzt, wo andere ihn erwarten.
* {state_reached(freshen_up_started)} {state_before(freshen_up_done)} {claim_choice_gate(return_auto)} [AUTO: Viktors Rückkehr nach unerledigtem Frischmachen] #auto:return(2)
Viktor hebt den Blick. Du bist zu rasch zurück, um die Begründung erfüllt zu haben, mit der du gegangen bist.
"Besser?", fragt er.
„Das war ein sehr kurzer Augenblick“, sagt er.
Das Wort ist praktisch genug, um keine Sorge sein zu müssen, und aufmerksam genug, um keine bloße Höflichkeit zu sein.
~ rel_inc(viktor_reliable)
- has(washroom_entered):
Viktor hebt den Blick. Du bist wirklich im Waschraum gewesen, aber nicht ganz mit dem Ergebnis zurückgekehrt, das deine Ausrede versprach. Wasser an den Händen, ja. Die Reise sitzt dir trotzdem noch in Gesicht und Schultern.
"Ein kurzer Augenblick", sagt er. "Oder ein unergiebiger."
~ rel_inc(viktor_insightful)
- has(washroom_claim_explore_train):
Viktor hebt den Blick und sieht nicht zu deinem Gesicht, sondern zu deinen Schuhen, als könne der Gang Staub genug verraten.
"Und?", fragt er. "Reicht der Zug weiter, als er sollte?"
~ rel_inc(viktor_insightful)
- else:
Viktor hebt den Blick. Du bist zu rasch zurück, um die Begründung erfüllt zu haben, mit der du gegangen bist.
"Das war ein sehr kurzer Augenblick", sagt er.
Es ist kein Vorwurf. Noch nicht. Aber ein Vermerk.
~ rel_inc(viktor_closed)
}
Es ist kein Vorwurf. Noch nicht. Aber ein Vermerk.
~ rel_inc(viktor_closed)
-> TURN
* {not class} [__Sprich__: Viktor auf die Reise an.]
* {state_reached(freshen_up_done)} {claim_choice_gate(return_auto)} [AUTO: Viktors Rückkehr nach Frischmachen] #auto:return(2)
Viktor hebt den Blick, als du wieder eintrittst. Er bemerkt zuerst nicht dein Gesicht, sondern die Arbeit daran: glattere Nadeln, kühlere Hände, ein Blick, der wieder dort sitzt, wo andere ihn erwarten.
„Besser?“, fragt er.
Das Wort ist praktisch genug, um keine Sorge sein zu müssen, und aufmerksam genug, um keine bloße Höflichkeit zu sein.
~ rel_inc(viktor_reliable)
-> TURN
* {state_reached(explore_train_started)} {state_before(explore_train_done)} {claim_choice_gate(return_auto)} [AUTO: Viktors Rückkehr nach kurzer Erkundung] #auto:return(2)
Viktor hebt den Blick und sieht nicht zu deinem Gesicht, sondern zu deinen Schuhen, als könne der Gang Staub genug verraten.
„Und?“, fragt er. „Reicht der Zug weiter, als er sollte?“
Noch nicht weit genug, um diese Frage zu verdienen.
~ rel_inc(viktor_insightful)
-> TURN
* {state_reached(explore_train_done)} {claim_choice_gate(return_auto)} [AUTO: Viktors Rückkehr nach Erkundung] #auto:return(2)
Viktor hebt den Blick und sieht nicht zu deinem Gesicht, sondern zu deinen Schuhen, als könne der Gang Staub genug verraten.
„Und?“, fragt er. „Reicht der Zug weiter, als er sollte?“
Weit genug für einen Speisewagen. Weit genug für eine neue Möglichkeit.
~ rel_inc(viktor_insightful)
-> TURN
* {state_reached(mirror_started)} {state_before(mirror_done)} {claim_choice_gate(return_auto)} [AUTO: Viktors Rückkehr ohne Spiegel] #auto:return(2)
Viktor hebt den Blick. Dein Hut sitzt wie zuvor, dein Gesicht auch.
„Der Spiegel war offenbar streng“, sagt er.
Das ist beinahe höflich. Beinahe.
~ rel_inc(viktor_closed)
-> TURN
* {state_reached(mirror_done)} {claim_choice_gate(return_auto)} [AUTO: Viktors Rückkehr nach Spiegel] #auto:return(2)
Viktor hebt den Blick. Der Hut sitzt fester, die Nadeln besser, und dein Gesicht ist wieder die Fassung, in der Fremde es lesen sollen.
„Gut“, sagt er. Nicht schön, nicht besser. Gut. Ein dienstliches Urteil über eine gesellschaftliche Oberfläche.
~ rel_inc(viktor_reliable)
-> TURN
* {state_reached(privacy_started)} {state_before(privacy_taken)} {claim_choice_gate(return_auto)} [AUTO: Viktors Rückkehr ohne Augenblick allein] #auto:return(2)
Viktor hebt den Blick. Du bist gegangen, um Aufsicht loszuwerden, und warst doch kaum lange genug fort, um sie wirklich abzuschütteln.
„Hat der Augenblick genügt?“
Er fragt es, als müsse die Antwort nicht laut werden.
~ rel_inc(viktor_insightful)
-> TURN
* {state_reached(privacy_taken)} {claim_choice_gate(return_auto)} [AUTO: Viktors Rückkehr nach privatem Augenblick] #auto:return(2)
Viktor hebt den Blick. Für eine kleine Weile gehörte dein Gesicht nur dir. Das merkt er, und weil er nicht dumm ist, benennt er es nicht.
„Wir fahren noch“, sagt er nur.
~ rel_inc(viktor_open)
-> TURN
* {state_reached(unwell_started)} {state_before(unwell_managed)} {claim_choice_gate(return_auto)} [AUTO: Viktors Rückkehr nach Unwohlsein] #auto:return(2)
Viktor hebt den Blick. Die Sorge kommt schneller als sein Misstrauen.
„Setzen Sie sich“, sagt er. „Langsam.“
Du bist kaum lange genug fort gewesen, um dich zu erholen. Vielleicht reicht es, dass er das nicht sofort gegen dich verwendet.
~ rel_inc(viktor_open)
-> TURN
* {state_reached(unwell_managed)} {claim_choice_gate(return_auto)} [AUTO: Viktors Rückkehr nach Erleichterung] #auto:return(2)
Viktor hebt den Blick, prüft deinen Gang und lässt die Frage in der Mappe verschwinden, aus der sie nie ganz herauskam.
„Besser?“, fragt er.
Diesmal ist Sorge darin. Nicht viel. Genug.
~ rel_inc(viktor_open)
-> TURN
* {not class} [__Prüfe Viktor__: „Wie lange bis zum Umstieg?“]
„Wie lange bis zum Umstieg?“
Viktor zieht den Fahrplan aus der Mappe, obwohl er die Antwort vermutlich auswendig kennt. „Lang genug, um eine Sache zu erledigen, die sonst bei der Ankunft ungeschickt würde.“
@@ -128,7 +217,7 @@ Für alle Fremden ist er nun dein Sekretär. Er öffnet Türen, trägt Gepäck,
-> identity_papers_tunnel ->
-> TURN
* [__Untersuche__: Viktors Mappe. #key:x #optional]
* (examined_viktor_map) [__Untersuche__: Viktors Mappe. #key:x #optional]
{class && tutorial(tut_optional_intro):
#alert[Optionale Entscheidungen vertiefen Szene, Welt oder Haltung. Sie können wichtig sein, ohne allein den Weg zu versperren.]
}
@@ -139,7 +228,7 @@ Für alle Fremden ist er nun dein Sekretär. Er öffnet Türen, trägt Gepäck,
}
-> TURN
* [__Schaue__: Aus dem Fenster. #key:f #optional]
* (looked_from_train_window) [__Schaue__: Aus dem Fenster. #key:f #optional]
{class && tutorial(tut_optional_intro):
#alert[Optionale Entscheidungen vertiefen Szene, Welt oder Haltung. Sie können wichtig sein, ohne allein den Weg zu versperren.]
}
@@ -163,8 +252,8 @@ Für alle Fremden ist er nun dein Sekretär. Er öffnet Türen, trägt Gepäck,
}
-> TURN
+ {has(class_def)}
{lacks(route_language_def)} [__Frage__: Viktor, weshalb er wirklich mitreist.]
+ (asked_viktor_role) {has(class_def)}
{lacks(route_language_def)} [__Stelle Viktor__: Wegen seiner Rolle zur Rede.]
~ state_reach(ViktorRelationFrame.escort_present)
~ state_reach(ViktorRelationFrame.secretary_cover_understood)
@@ -278,7 +367,7 @@ Für alle Fremden ist er nun dein Sekretär. Er öffnet Türen, trägt Gepäck,
~ state_reach(ViktorRelationFrame.skepticism_registered)
-> train_compartment
* {has(class_def)}
* (read_hohenreith_request) {has(class_def)}
{lacks(belief_def)} [__Verlange__: Zu sehen, weshalb du gerufen wurdest.]
~ state_reach(CourtMission.sealed_letter_known)
~ state_reach(CourtMission.official_cover_understood)
@@ -293,7 +382,7 @@ Für alle Fremden ist er nun dein Sekretär. Er öffnet Türen, trägt Gepäck,
>
> Die Anwesenheit einer Dame von Bildung, Verschwiegenheit und bekannter Sensibilität für ungewöhnliche seelische oder spiritistische Erscheinungen wäre der Familie willkommen, sofern sie ohne Aufsehen, Polizei, Presse oder kirchliche Untersuchung erfolgen kann. #gloss[spiritistische Erscheinungen](Erscheinungen im Umkreis des Spiritismus. Sehr brauchbar, wenn Unheimliches behandelt werden soll, ohne zuzugeben, dass ein Amt an Geister glaubt.) #gloss[kirchliche Untersuchung](Prüfung durch geistliche Stellen. Besonders beruhigend, solange man sicher ist, dass der Schrecken der richtigen Art angehört.)
Niemand hat das Wort Geist geschrieben. Niemand hat das Wort Betrug geschrieben. Niemand hat das Wort Tochter geschrieben. Gerade deshalb treten die Auslassungen hervor, wie Möbel um einen Fleck, den niemand ansehen will.
Niemand hat das Wort Geist geschrieben. Niemand hat das Wort Betrug geschrieben. Niemand benennt, wem im Haus geholfen werden soll. Gerade deshalb treten die Auslassungen hervor, wie Möbel um einen Fleck, den niemand ansehen will.
Nun bleibt die Frage, was du selbst für möglich hältst.
@@ -325,7 +414,7 @@ Für alle Fremden ist er nun dein Sekretär. Er öffnet Türen, trägt Gepäck,
~ mark(belief_def)
-> train_compartment
+ {has(dining_car_known_def)}
+ {state_reached(dining_car_seen)}
{meal(meal_unset)} [__Schlage vor__: Die Mittagsfrage zu klären.]
„Beim Umstieg“, sagt Viktor, „wird Zeit sein, wenn wir sie nicht verlieren. Speisewagen, Bahnhofsrestauration oder nur etwas Kleines im Abteil. Alles spart etwas und kostet etwas.“ #gloss[Bahnhofsrestauration](Gastwirtschaft am Bahnhof. Reisezeit wird dort zu Suppe, Kaffee, Gedränge und sehr genauer Beobachtung von Gepäck und Stand.)
@@ -392,7 +481,7 @@ Viktor sitzt noch immer dort, wo die Form ihn hingestellt hat: nah genug, um nü
+ [__Wahre Form__: „Ich werde mich einen Augenblick frisch machen.“]
„Ich werde mich einen Augenblick frisch machen.“
~ mark(washroom_claim_freshen_up)
~ state_reach(freshen_up_started)
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
~ rel_inc(viktor_closed)
@@ -401,7 +490,7 @@ Viktor sitzt noch immer dort, wo die Form ihn hingestellt hat: nah genug, um nü
+ [__Prüfe__: „Ich möchte wissen, wie weit dieser Wagen reicht.“]
„Ich möchte wissen, wie weit dieser Wagen reicht.“
~ mark(washroom_claim_explore_train)
~ state_reach(explore_train_started)
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
~ rel_inc(viktor_bold)
@@ -410,7 +499,7 @@ Viktor sitzt noch immer dort, wo die Form ihn hingestellt hat: nah genug, um nü
+ [__Entwaffne__: „Verzeihen Sie. Ich traue mir einen Spiegel ohne amtliche Hilfe zu.“]
„Verzeihen Sie. Ich traue mir einen Spiegel ohne amtliche Hilfe zu.“
~ mark(washroom_claim_mirror)
~ state_reach(mirror_started)
~ route_inc(route_lover)
~ rel_inc(viktor_open)
~ rel_inc(viktor_open)
@@ -419,7 +508,7 @@ Viktor sitzt noch immer dort, wo die Form ihn hingestellt hat: nah genug, um nü
+ [__Schütze dich__: „Ich brauche einen Augenblick ohne Aufsicht.“]
„Ich brauche einen Augenblick ohne Aufsicht.“
~ mark(washroom_claim_privacy)
~ state_reach(privacy_started)
~ route_inc(route_sapphic)
~ rel_inc(viktor_closed)
~ rel_inc(viktor_unreliable)
@@ -428,7 +517,7 @@ Viktor sitzt noch immer dort, wo die Form ihn hingestellt hat: nah genug, um nü
+ [__Verplappere dich__: „Mir ist zu warm. Oder zu eng. Ich weiß nicht genau.“]
„Mir ist zu warm. Oder zu eng. Ich weiß nicht genau.“
~ mark(washroom_claim_unwell)
~ state_reach(unwell_started)
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
~ rel_inc(viktor_unreliable)
@@ -436,7 +525,6 @@ Viktor sitzt noch immer dort, wo die Form ihn hingestellt hat: nah genug, um nü
-> to_corridor
+ [__Benenne__: Aufstehen, ohne um Erlaubnis zu bitten.]
~ mark(washroom_claim_silent)
~ route_inc(route_eccentric)
~ rel_inc(viktor_adversarial)
~ rel_inc(viktor_bold)
@@ -448,7 +536,7 @@ Viktor sitzt noch immer dort, wo die Form ihn hingestellt hat: nah genug, um nü
- (silent_challenge)
+ [__Wahre Form__: „Zum Waschraum, Herr Nowak. Nicht aus der Monarchie.“]
„Zum Waschraum, Herr Nowak. Nicht aus der Monarchie.“
~ mark(washroom_claim_freshen_up)
~ state_reach(freshen_up_started)
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
Er setzt sich wieder. „Dann will ich die Monarchie beruhigt wissen.“
@@ -456,7 +544,7 @@ Viktor sitzt noch immer dort, wo die Form ihn hingestellt hat: nah genug, um nü
+ [__Trotze__: „Dorthin, wo Ihre Augen nicht zuerst ankommen.“]
„Dorthin, wo Ihre Augen nicht zuerst ankommen.“
~ mark(washroom_claim_privacy)
~ state_reach(privacy_started)
~ route_inc(route_eccentric)
~ rel_inc(viktor_adversarial)
~ rel_inc(viktor_unreliable)
@@ -466,6 +554,7 @@ Viktor sitzt noch immer dort, wo die Form ihn hingestellt hat: nah genug, um nü
- (to_corridor)
Du öffnest die Abteiltür. Der Griff ist kühler, als Messing sein sollte. Dahinter schwankt der schmale Gang des ersten Wagens in Fahrtrichtung.
~ companion_leave(viktor)
~ state_reach_if_started(privacy_taken)
-> train_home_corridor
-> DONE
@@ -530,31 +619,7 @@ Die Tür ist nicht verschlossen wie ein Tresor. Sie ist verschlossen wie eine so
=== train_clergy_corridor_bucket ===
* {lacks(relig_def)} [AUTO: Priesterbegegnung] #auto
Eine Abteiltür öffnet sich, bevor du sie erreicht hast. Ein Priester tritt heraus, eine Mappe unter dem Arm, das Gesicht noch bei den Menschen im Abteil. Er will an dir vorbei und bleibt doch einen halben Schritt zu lange stehen. Hinter ihm hebt eine Nonne den Blick, senkt ihn wieder und sieht gerade dadurch genug. #gloss[Nonne](Ordensfrau. Von der Welt getrennt zu sein bedeutet nicht, sie nicht lesen zu können.)
* [__Bekenne__: Dich bekreuzigen und ehrerbietig grüßen.]
~ relig = catholic
Gott ist kein Gesprächsthema für Abteile. Du glaubst nicht kindlich, aber tief: an Sünde, Gnade, Sakrament, Versuchung und an die gefährliche Nähe der unsichtbaren Welt. #gloss[Sakrament](Heilige Handlung der katholischen Kirche. In einer katholischen Gesellschaft ist es zugleich Gnade, Ordnung und öffentliche Form.)
* [__Ordne ein__: Höflich nicken, wie man es gelernt hat.]
~ relig = social
Du nickst mit der richtigen Mischung aus Achtung und Distanz. Du kennst Feiertage, Beichten, Prozessionen und die Macht eines Pfarrers über Menschen, die behaupten, ihn nicht zu fürchten.
* [__Misstraue__: Den Blick halten, aber keinen Schritt zu viel weichen.]
~ relig = reform
Du weichst höflich genug aus, aber nicht demütig. Priester erklären zu oft, was sie zuerst besitzen möchten: Schuld, Frauen, Armut und Angst.
* [__Verbinde__: Im Segen auch die Toten hören.]
~ relig = spiritist
Heiligenbilder, Totenmessen, Séancen, Träume: Die sauberen Grenzen dazwischen scheinen dir eher von Männern gezogen als von der Ewigkeit selbst. #gloss[Séancen](Geistersitzungen mit Tisch, gedämpftem Licht und sehr viel Erwartung. Je dunkler der Raum, desto leichter glauben die Anwesenden, sie sähen klar.)
* [__Erinnere dich__: Dass der Glaube dich formte, bevor du dich wehren konntest.]
~ relig = wounded
Du kennst die Gebete zu gut, um sie einfach abzulegen, und die Schuld zu gut, um sie fromm zu nennen. Katholische Bilder sind für dich keine Dekoration. Sie greifen nach Stellen, die du lieber versiegelt hieltest.
-
~ mark(relig_def)
Der Priester neigt den Kopf, als habe er genau so viel erfahren, wie Höflichkeit erlaubt. Dann tritt er in sein Abteil zurück und schließt die Tür.
-> clergy_religion_tunnel ->
-> TURN
* [__Lies__: Die Wagenanschrift.]
@@ -628,11 +693,12 @@ Der dritte Wagen ist praktischer gebaut. Türen stehen enger, der Boden antworte
+ [__Betrete__: Den Waschraum. #key:e]
Du öffnest die schmale Tür zur Seite. Der Gang bleibt hinter dir zurück; vor dir wartet ein Raum, der kaum mehr als Spiegel, Wasser und Verriegelung ist.
~ mark(washroom_entered)
~ state_reach_if_started(unwell_managed)
-> train_washroom
+ {lacks(dining_car_known_def)} [__Sieh nach__: Was hinter der Tür in Fahrtrichtung liegt. #key:s]
~ mark(dining_car_known_def)
+ {state_before(dining_car_seen)} [__Sieh nach__: Was hinter der Tür in Fahrtrichtung liegt. #key:s]
~ state_reach(dining_car_seen)
~ state_reach_if_started(explore_train_done)
Du öffnest die Tür in Fahrtrichtung nur weit genug, um hineinzusehen. Dahinter liegt der Speisewagen: weiße Tücher, Glas, Besteck, Kellner mit ruhigen Händen. Allein weiterzugehen wäre auffällig; mit Viktor wäre es eine Mahlzeit.
-> TURN
-> DONE
@@ -655,24 +721,24 @@ Der dritte Wagen ist praktischer gebaut. Türen stehen enger, der Boden antworte
Die Kellner bewegen sich mit einer Art unauffälligem Heldentum. Ein Glas kippt nicht, ein Teller findet die Tischkante nicht, ein Lächeln bleibt an seinem Platz. Das alles sieht nach Dienst aus und ist in Wahrheit Akrobatik in gestärkter Wäsche.
-> TURN
+ {present(viktor)} [__Frage__: Wen Viktor hier beobachtet. #key:x]
+ {present(viktor)} [__Prüfe Viktor__: „Wer sieht uns an?“ #key:x]
„Wer sieht uns an?“, fragst du, während der Kellner die Suppe abstellt.
Viktor nimmt das Messer auf, als sei auch Besteck eine Gelegenheit zur Tarnung. „Der Kellner, weil er muss. Der Herr am zweiten Tisch, weil Sie nicht hierher passen wollen. Die ältere Dame am Fenster, weil sie hofft, dass Sie es doch tun.“
* [__Prüfe__: „Und Sie?“]
* * [__Prüfe__: „Und Sie?“]
„Und Sie?“
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
„Ich sehe nach Ausgängen“, sagt er. „Das ist weniger poetisch, aber zuverlässiger.“
* [__Entwaffne__: „Wie schade. Ich hoffte, Sie hätten wenigstens Hunger.“]
* * [__Entwaffne__: „Wie schade. Ich hoffte, Sie hätten wenigstens Hunger.“]
„Wie schade. Ich hoffte, Sie hätten wenigstens Hunger.“
~ route_inc(route_lover)
~ rel_inc(viktor_open)
Er sieht auf den Teller. „Hunger lässt sich besser verbergen als Sorge.“
* [__Wahre Form__: „Dann essen wir, bevor die Beobachtung auffällt.“]
* * [__Wahre Form__: „Dann essen wir, bevor die Beobachtung auffällt.“]
„Dann essen wir, bevor die Beobachtung auffällt.“
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
@@ -681,22 +747,22 @@ Der dritte Wagen ist praktischer gebaut. Türen stehen enger, der Boden antworte
-> TURN
+ {present(viktor)}
{state_reached(CourtMission.supernatural_pretext_named)} [__Sprich__: Über Hohenreith, solange Geschirr klirrt.]
{state_reached(CourtMission.supernatural_pretext_named)} [__Nutze__: Das Klirren des Geschirrs als Deckung.]
Das Essen gibt dem Gespräch Deckung. Eine Frage kann unter Porzellan verschwinden, eine Antwort unter dem Ruck der Kupplung.
* [__Präzisiere__: „Warum keine Polizei?“]
* * [__Präzisiere__: „Warum keine Polizei?“]
„Warum keine Polizei?“
~ route_inc(route_detective)
~ rel_inc(viktor_reliable)
„Weil Polizei Öffentlichkeit erzeugt. Und weil manche Familien lieber gefährdet sind als lächerlich.“
* [__Benenne__: „Eine Familie, die Geister bestellt, fürchtet Lebende.“]
* * [__Benenne__: „Eine Familie, die Geister bestellt, fürchtet Lebende.“]
„Eine Familie, die Geister bestellt, fürchtet Lebende.“
~ route_inc(route_eccentric)
~ rel_inc(viktor_insightful)
Viktor hebt den Blick. „Oder sie hat gelernt, dass Lebende sich besser hinter Geistern verstecken.“
* [__Schütze dich__: „Und wenn man dort vor allem mich prüfen will?“]
* * [__Schütze dich__: „Und wenn man dort vor allem mich prüfen will?“]
„Und wenn man dort vor allem mich prüfen will?“
~ route_inc(route_sapphic)
~ rel_inc(viktor_unreliable)
@@ -727,61 +793,6 @@ Der Speisewagen ist schmaler Luxus in Bewegung: Tische mit zu weißen Tüchern,
-> DONE
=== train_corridor_tunnel_event ===
Der Zug stößt in einen Tunnel.
Das Land draußen erlischt. Die Scheiben verlieren Felder, Himmel und die hellen Fetzen von Ortschaften; übrig bleiben Messinggriffe, dunkles Holz und der bleiche Umriss deines Körpers.
Ausgerechnet jetzt wird das Glas nützlich. Es zeigt die Frau, die in Eibenreith aussteigen wird.
* {lacks(body_def)} [__Erkenne__: Eine kleine, schmale Gestalt.]
~ body = small_slender
Unter Mantel, Rock und Haltung bleibt etwas Knappes, Schnelles an dir: schmale Schultern, feine Handgelenke, ein Körper, den Räume leicht übersehen und Gespräche zu spät bemerken.
-> outfit_choice
* {lacks(body_def)} [__Erkenne__: Eine mittelgroße Gestalt mit ruhiger Gegenwart.]
~ body = medium_soft
Du wirkst nicht zerbrechlich. Die Taille ist geformt, nicht mädchenhaft; die Schultern sind ruhig, die Anwesenheit fester, als manche Männer an einer jungen Frau bequem finden.
-> outfit_choice
* {lacks(body_def)} [__Erkenne__: Eine hochgewachsene, schlanke Gestalt.]
~ body = tall_slender
Aufrecht stehend nimmst du mehr Raum ein, als deine Rolle verspricht: lange Linien, schmale Hände, eine Haltung, die Disziplin beinahe wie Herkunft aussehen lässt.
-> outfit_choice
* {lacks(body_def)} [__Erkenne__: Eine kompakte, kräftigere Gestalt.]
~ body = compact_strong
Reisekleidung und Korsett ordnen dich, aber sie verleugnen nicht alles. In Nacken, Unterarmen und Gleichgewicht liegt mehr Kraft, als man einer Dame höflich zutraut.
-> outfit_choice
- (outfit_choice)
Die Spiegelung spricht auch durch Stoff: was verborgen werden soll, was gezeigt werden darf, was nur eine andere Frau sofort versteht.
* [__Trage__: Ein dunkel anthrazitfarbenes Reisekostüm mit pflaumenfarbenem Samtkragen.]
~ outfit = charcoal_plum_velvet
Anthrazitfarbene Wolle, pflaumenfarbener Samt an Kragen und Manschetten: gedämpft genug für den Tag, teuer genug für Menschen mit Augen. #gloss[Reisekostüm](Damenkleidung für die Reise. Fest genug für Bahnhofsschmutz, korrekt genug für fremde Blicke, und unbequem genug, damit niemand vergisst, dass auch Zweckmäßigkeit weiblich auszusehen hat.)
* [__Trage__: Ein schwarzbraunes Wollkostüm mit elfenbeinfarbener Bluse und schmaler Spitze.]
~ outfit = black_brown_ivory_lace
Der Rock ist dunkel und schwer genug für die Reise, die Jacke streng, die elfenbeinfarbene Bluse am Hals hochgeschlossen. Die Spitze ist schmal, sauber und gefährlich nahe an Frömmigkeit.
* [__Trage__: Ein graublaues Kostüm mit kurzem Mantel und praktischen Knöpfen.]
~ outfit = blue_grey_practical
Graublaue Wolle, ein kurzer Mantel, ein Rock, der beim Aussteigen nicht sofort Verrat übt, und Knöpfe, die mehr nach Zweck als nach Schmuck aussehen.
* [__Trage__: Ein dunkelgrünes Kostüm mit schwarzem Besatz und passendem Hut.]
~ outfit = dark_green_black_trim
Das Grün ist so dunkel, dass es erst im Licht der Fenster sichtbar wird. Schwarzer Besatz, passende Handschuhe, ein Hut mit kleiner Feder: nicht laut, aber schwer zu vergessen.
* [__Trage__: Ein schwarzes Reisekleid mit Schleier, zu ernst für bloße Mode.]
~ outfit = black_veil_severe
Das Schwarz ist nicht Trauer, jedenfalls nicht offiziell. Ein schmaler Schleier, dunkle Handschuhe, glatter Rock. Kleidung, in der skeptische Männer leichter an Ahnungen glauben.
-
~ mark(body_def)
-> TURN
// ============================================================================
// ROOM: WASHROOM
// ============================================================================
@@ -801,7 +812,7 @@ Die Spiegelung spricht auch durch Stoff: was verborgen werden soll, was gezeigt
+ [__Wasche__: Die Hände.]
Kaltes Wasser läuft über deine Finger und nimmt Kohlerauch, Papierstaub und die feuchte Wärme der Handschuhe nicht ganz fort, aber genug, dass du dich wieder genauer anfühlst.
~ mark(washroom_freshened_up)
~ state_reach_if_started(freshen_up_done)
-> TURN
* [__Prüfe__: Den Riegel.]
+120 -103
View File
@@ -1,4 +1,4 @@
// ============================================================================
// ============================================================================
// EIBENREITH 02 BAHNHOF
// ============================================================================
// Kapitel 02: Mittag / Bahnhof und Umstieg.
@@ -28,7 +28,7 @@ Die Station ist klein genug, dass der Zug kurz verlegen wirkt, als er dort hält
Dampf hängt unter dem Stationsdach. Ein Gepäckträger mit zu großer Kappe eilt über den Bahnsteig. Jenseits des Gebäudes stampft ein Kutschpferd im gefrorenen Schlamm. Der Ortsname steht auf einem Schild, sachlich und kaiserlich, als hätte er nie vorgehabt, in einem Salon ausgesprochen zu werden. #gloss[Gepäckträger](Bahnhofsdienstmann für Koffer, Schachteln und jene kleine Demütigung, dass auch Besitz getragen werden muss.) #gloss[Stationsdach](Überdachung des Bahnsteigs. Sie schützt Reisende vor Wetter, nicht vor Blicken.)
{meal(MealPlan.dining_car):
~ state_reach(meal_taken_in_train)
~ mark(meal_taken_in_train)
Der Speisewagen hat dir ein kontrolliertes Mittagessen gegeben. Tischtuch, Besteck, gedämpfte Stimmen, Suppe unter Bewegung. Jetzt bleibt am Bahnhof vor allem der Umstieg.
- else:
{meal(MealPlan.station_restaurant):
@@ -46,12 +46,40 @@ Dampf hängt unter dem Stationsdach. Ein Gepäckträger mit zu großer Kappe eil
=== station_midday_episode_bucket ===
* {present(viktor)} {loc(loc_station_platform)} [__Frage__: Viktor, was er vom Bahnhof hält.]
"Ein Bahnhof ist selten nur ein Bahnhof", sagt Viktor. "Er zeigt, wer erwartet wird, wer abgefertigt wird und wer glaubt, ungesehen warten zu können."
* {present(viktor)} {loc(loc_station_platform)} [__Erkundige dich bei Viktor__: „Was sehen Sie, wenn Sie einen Bahnhof sehen?“]
„Was sehen Sie, wenn Sie einen Bahnhof sehen?“
„Ein Bahnhof ist selten nur ein Bahnhof“, sagt Viktor. „Er zeigt, wer erwartet wird, wer abgefertigt wird und wer glaubt, ungesehen warten zu können.“
-> TURN
* {present(viktor)} {state_between(noticed_as_official_arrival, public_mask_established)} [__Frage__: Viktor, ob die Leute dich ansehen.]
"Ja", sagt er. "Aber noch nicht gefährlich. Neugier ist leichter zu lenken als Misstrauen."
* {present(viktor)} {state_reached(noticed_as_official_arrival)} {lacks(public_mask_established)} [__Prüfe Viktor__: „Sehen die Leute mich an?“]
„Sehen die Leute mich an?“
„Ja“, sagt er. „Aber noch nicht gefährlich. Neugier ist leichter zu lenken als Misstrauen.“
-> TURN
* {present(viktor)}
{state_reached(staff_as_witnesses_noticed)} [__Bemerke__: Dass Dienstleute selten nur Dienst tun.]
„Der Gepäckträger hat mehr verstanden, als er zeigen durfte.“
„Das ist häufig so“, sagt Viktor. „Wer beruflich übersieht, sieht manchmal am meisten.“
{route_repeated(detective, 2):
Du merkst dir das nicht als Sentenz, sondern als Arbeitsregel.
- else:
Der Satz bleibt an dir hängen, weil er in diesem Bahnhof zu viele mögliche Zeugen hat.
}
-> TURN
* {present(viktor)}
{has(public_mask_strained)} [__Entschärfe__: Den kleinen Riss in der Form.]
„Das war nicht meine eleganteste Ankunft.“
{rel_up(viktor_open, viktor_closed):
„Nein“, sagt Viktor. „Aber eine nützliche. Man erfährt wenig über Leute, solange alles gelingt.“
- else:
„Sie war bemerkbar“, sagt Viktor. „Mehr sollte sie nicht werden.“
}
-> TURN
-> DONE
@@ -85,7 +113,36 @@ Der Zug atmet aus. Menschen bewegen sich nicht chaotisch, sondern nach unsichtba
=== station_platform_exits ===
+ {state_reached(baggage_handed_over)} [__Gehe__: Zur Kutsche. #key:s]
-> station_baggage_and_carriage
~ state_reach(carriage_arranged)
~ state_reach(road_departure_ready)
Die Kutsche aus Hohenreith wartet jenseits des Stationshofes. Dunkelgrüner Lack, schwarze Räder, das gräfliche Wappen dezent auf der Tür, zwei Pferde bereits unruhig im Geschirr. Der Kutscher nimmt den Hut ab, als er dich sieht. Nicht zu tief. Tief genug für Rang, nicht tief genug für Ehrfurcht. #sfx[horse-neigh.ogg]
"Gnädiges Fräulein? Herr Sekretär?"
{class ? noble:
Man hat ihm genug gesagt, um dich einzuordnen. Das ist eine Höflichkeit. Es ist auch eine Warnung.
- else:
Er zögert bei dir um das kleinste Maß. Das Zögern ist keine Unhöflichkeit. Es ist Berechnung. Erste Klasse, Hofschreiben, kein Titel außer Fräulein, und ein Mann neben dir, der aussieht, als hätte er Menschen für weniger verhaften lassen als Starren.
}
Viktor antwortet, bevor du es kannst.
"Vom Jagdhaus Hohenreith?"
"Jawohl, Herr Sekretär. Der Weg ist befahrbar. Wenn der Nebel nicht dichter wird, sollten wir Eibenreith vor Einbruch der Dunkelheit erreichen."
Das Wort tritt ohne Zeremonie in die Luft.
Eibenreith.
Nicht Hohenreith, der Name, der in sauberer Hand auf der Einladung steht. Eibenreith. Das Dorf darunter. Ein kleinerer Name. Älter im Mund. Ein Name mit Wurzeln statt Briefpapier.
~ episode_end("normal")
~ time_move_to(afternoon)
~ loc_move_to(loc_carriage)
-> carriage_ride
-> DONE
@@ -102,29 +159,29 @@ Der Zug atmet aus. Menschen bewegen sich nicht chaotisch, sondern nach unsichtba
Niemand scheint nur zu warten. Die einen zählen Gepäckstücke, die anderen Rangzeichen, wieder andere mögliche Fehler. Der Bahnhof ist kein Ort, an dem man unbemerkt ankommt. Er ist nur höflich genug, diese Tatsache nicht auszusprechen.
-> TURN
+ {meal(MealPlan.station_restaurant)} {state_before(meal_taken_at_station)} [__Speise__: In der Bahnhofsrestauration.]
+ {meal(MealPlan.station_restaurant)} {lacks(meal_taken_at_station)} [__Speise__: In der Bahnhofsrestauration.]
-> station_restaurant_room
+ {meal(MealPlan.meal_unset)} {state_before(meal_skipped_or_light)} [__Speise__: In der Bahnhofsrestauration, auch wenn es eilt.]
+ {meal(MealPlan.meal_unset)} {lacks(meal_skipped_or_light)} [__Speise__: In der Bahnhofsrestauration, auch wenn es eilt.]
Viktor sieht auf die Bahnhofsuhr. "Für ein ordentliches Essen ist wenig Zeit. Für eine schlechte Entscheidung immer genug."
~ meal_choose(MealPlan.station_restaurant)
Eine warme Suppe ist kein Luxus, wenn ein fremdes Haus den restlichen Tag besitzen wird.
-> station_restaurant_room
+ {meal(MealPlan.meal_unset)} {state_before(meal_skipped_or_light)} [__Nimm__: Nur Tee und etwas Gebäck.]
+ {meal(MealPlan.meal_unset)} {lacks(meal_skipped_or_light)} [__Nimm__: Nur Tee und etwas Gebäck.]
Viktor sieht auf die Bahnhofsuhr. "Für ein ordentliches Essen ist wenig Zeit. Für eine schlechte Entscheidung immer genug."
~ meal_choose(MealPlan.light_refreshment)
~ state_reach(meal_skipped_or_light)
~ mark(meal_skipped_or_light)
Tee, Gebäck, ein paar Minuten Sitzen. Nicht genug, aber genug, um später nicht von Schwäche überrascht zu werden.
-> TURN
+ {meal(MealPlan.meal_unset)} {state_before(meal_skipped_or_light)} [__Verzichte__: Auf eine eigentliche Mahlzeit.]
+ {meal(MealPlan.meal_unset)} {lacks(meal_skipped_or_light)} [__Verzichte__: Auf eine eigentliche Mahlzeit.]
Viktor sieht auf die Bahnhofsuhr. "Für ein ordentliches Essen ist wenig Zeit. Für eine schlechte Entscheidung immer genug."
~ meal_choose(MealPlan.skipped)
~ state_reach(meal_skipped_or_light)
~ mark(meal_skipped_or_light)
Du behältst Zeit und verlierst Wärme. Der Körper wird sich die Rechnung merken.
-> TURN
@@ -133,105 +190,100 @@ Der Zug atmet aus. Menschen bewegen sich nicht chaotisch, sondern nach unsichtba
~ route_inc(route_detective)
Zuerst kommt ein nüchterner Reisekoffer mit vom Gebrauch stumpfen Messingecken, dann eine Aktenmappe, dann eine Hutschachtel, dann der schmale schwarze Kasten, dessen Inhalt sowohl einen Priester als auch einen Taschenspieler in Verlegenheit bringen würde, falls einer von beiden ihn ohne Phantasie durchsuchte.
-> station_baggage_after_choice
-> station_baggage_manners
+ {state_before(baggage_handed_over)} [__Überblicke__: Das Gepäck einer eleganten Dame.]
Dein Gepäck wird in Etappen ausgeladen. Was zuerst sichtbar wird, ist nie ganz zufällig. Gepäck ist die kleine Autobiographie, die Bedienstete lesen dürfen.
~ route_inc(route_composure)
Zuerst kommt ein großer Koffer aus dunklem Leder, dann ein kleinerer für Wäsche, dann eine runde Hutschachtel, ein Reise-Necessaire und das Ridikül, das du zu nahe bei der Hand behältst, als dass ein Gepäckträger seine Bedeutung missverstehen dürfte. #gloss[Reise-Necessaire](Kasten oder Tasche für Waschzeug, Fläschchen, Bürsten und jene Ausrüstung, mit der eine Dame nach einer Reise wieder wie eine Dame auszusehen hat.)
-> station_baggage_after_choice
-> station_baggage_manners
+ {state_before(baggage_handed_over)} [__Überblicke__: Das Gepäck einer Darstellerin.]
Dein Gepäck wird in Etappen ausgeladen. Was zuerst sichtbar wird, ist nie ganz zufällig. Gepäck ist die kleine Autobiographie, die Bedienstete lesen dürfen.
~ route_inc(route_lover)
Zuerst kommt ein respektabler Koffer, dann eine Hutschachtel, dann ein Reisekasten mit Handschuhen, Schleiern, Bändern, Visitenkarten und kleinen Gegenständen, mit denen man ein Zimmer überreden kann, an Kräfte zu glauben, die längst anwesend sind.
-> station_baggage_after_choice
-> station_baggage_manners
+ {state_before(baggage_handed_over)} [__Überblicke__: Eine praktische Auswahl, die zu viel Vorbereitung verrät.]
Dein Gepäck wird in Etappen ausgeladen. Was zuerst sichtbar wird, ist nie ganz zufällig. Gepäck ist die kleine Autobiographie, die Bedienstete lesen dürfen.
~ route_inc(route_detective)
Zuerst kommt ein abgenützter, an den Ecken verstärkter Koffer, dann eine Ledertasche mit Notizheften, Bleistiften, gefalteten Karten, Ersatzhandschuhen, einer kleinen Lampe und genug Notwendigkeiten, um jeden zu beleidigen, der Frauen lieber dekorativ hat.
-> station_baggage_after_choice
-> station_baggage_manners
+ {state_before(baggage_handed_over)} [__Überblicke__: Ein übertriebener Haufen, der jede Tarnung erschwert.]
Dein Gepäck wird in Etappen ausgeladen. Was zuerst sichtbar wird, ist nie ganz zufällig. Gepäck ist die kleine Autobiographie, die Bedienstete lesen dürfen.
~ route_inc(route_careless)
Zuerst kommt ein Koffer, dann ein zweiter, dann eine Hutschachtel, dann eine Reisedecke, dann ein Toilettenkasten, dann der schmale schwarze Kasten, dann ein kleineres Paket, von dem du vergessen hattest, dass es das Packen überlebt hat. Am Ende sieht selbst Viktor einen Augenblick lang zahlenmäßig unterlegen aus.
-> station_baggage_after_choice
-> DONE
-> station_baggage_manners
- (station_baggage_manners)
Viktor überwacht die Umladung mit knapper Höflichkeit. Er trägt nicht wie ein Diener. Er weist an wie ein Mann, der vorgibt, nicht zu befehlen.
=== station_baggage_after_choice ===
Viktor überwacht die Umladung mit knapper Höflichkeit. Er trägt nicht wie ein Diener. Er weist an wie ein Mann, der vorgibt, nicht zu befehlen.
Die kleine Szene vor dem Waggon ist harmlos genug, um gefährlich zu sein. Ein Gepäckträger wartet mit geneigtem Kopf. Der Kutscher steht einige Schritte entfernt. Viktor ist nah genug, um dir beim Aussteigen die Hand zu reichen, aber nicht so nah, dass er es ohne dein stilles Einverständnis täte. Drei Männer, drei Stände, drei verschiedene Arten von Nützlichkeit.
Die kleine Szene vor dem Waggon ist harmlos genug, um gefährlich zu sein. Ein Gepäckträger wartet mit geneigtem Kopf. Der Kutscher steht einige Schritte entfernt. Viktor ist nah genug, um dir beim Aussteigen die Hand zu reichen, aber nicht so nah, dass er es ohne dein stilles Einverständnis täte. Drei Männer, drei Stände, drei verschiedene Arten von Nützlichkeit.
Was hier geschieht, wird niemand in einem Bericht erwähnen. Gerade deshalb wird es behalten.
Was hier geschieht, wird niemand in einem Bericht erwähnen. Gerade deshalb wird es behalten.
-> station_manners_puzzle
=== station_manners_puzzle ===
* {class ? noble} [__Warte__: Bis Viktor seine Hand anbietet. #key:z]
* * {class ? noble} [__Warte__: Bis Viktor seine Hand anbietet. #key:z]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
Du wartest einen Atemzug, bis Viktor seine Hand anbietet, und nimmst sie dann, als wäre dies keine Hilfe, sondern die Ordnung der Welt.
Du gibst ihm nicht dein Gewicht. Nur deine Hand. Genau genug, dass er dienen darf, ohne Diener zu werden. Der Gepäckträger senkt den Blick ein wenig tiefer. Der Kutscher sieht, was er sehen muss. Eine Dame, die ihren Rang nicht beweist, weil Beweise für Leute ohne Rang sind.
~ state_reach(public_mask_established)
~ mark(public_mask_established)
* [__Gewähre__: Viktor die Hand und dem Gepäckträger das Gepäck.]
* * [__Gewähre__: Viktor die Hand und dem Gepäckträger das Gepäck.]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
Du nimmst Viktors angebotene Hand knapp und sicher, dankst ihm mit einem Nicken und lässt den Gepäckträger das Gepäck nehmen.
Es ist gutes Benehmen ohne Prunk. Nicht zu vertraut gegenüber Viktor, nicht zu freundlich gegenüber dem Gepäckträger, nicht so kalt, dass es nach Unsicherheit riecht. Mittelstand könnte dies lernen. Adel könnte es billigen. Dienstboten würden erkennen, dass du ihre Arbeit nicht mit Herablassung verwechselst.
~ state_reach(public_mask_established)
~ mark(public_mask_established)
* [__Dirigiere__: "Zuerst den kleineren Kasten, wenn ich bitten darf."]
* * [__Dirigiere__: "Zuerst den kleineren Kasten, wenn ich bitten darf."]
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
Du steigst selbst aus, bevor Viktor sich entscheiden kann, und bittest den Gepäckträger sachlich, zuerst den kleineren Kasten zu nehmen.
Das ist nicht ganz falsch, aber auch nicht ganz richtig. Viktor bemerkt die kleine Missachtung der erwarteten Form. Der Gepäckträger gehorcht erleichtert, weil klare Anweisungen leichter zu tragen sind als feine Ungewissheit. Der Kutscher ordnet dich eher der Nützlichkeit als dem Rang zu.
~ state_reach(public_mask_strained)
~ mark(public_mask_strained)
~ state_reach(staff_as_witnesses_noticed)
* [__Reize__: Viktor einen Augenblick zu lang mit ausgestreckter Hand warten lassen.]
* * [__Reize__: Viktor einen Augenblick zu lang mit ausgestreckter Hand warten lassen.]
~ route_inc(route_lover)
~ rel_inc(viktor_unreliable)
~ rel_inc(viktor_open)
Du lässt Viktor zu lange mit ausgestreckter Hand warten und lächelst erst dann, als hättest du ihn absichtlich geprüft.
Es ist fast ein Fauxpas, gerettet durch Anmut und die Tatsache, dass Männer Demütigungen leichter verzeihen, wenn sie sich wie Aufmerksamkeit fühlen. Viktor hilft dir hinunter. Seine Hand bleibt vollkommen korrekt. Sein Blick nicht ganz.
~ state_reach(public_mask_strained)
~ mark(public_mask_strained)
* [__Verplappere dich__: "Ach, das macht doch zu viel Mühe."]
* * [__Verplappere dich__: "Ach, das macht doch zu viel Mühe."]
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
Du entschuldigst dich beim Gepäckträger dafür, dass deine Sachen Mühe machen, und greifst selbst nach einem Koffer.
Der Gepäckträger erstarrt, als hättest du ihm eine philosophische Frage gestellt. Viktor tritt sofort dazwischen, höflich genug, um die Rettung wie Zufall aussehen zu lassen. Du hast gegen keine Moral verstoßen, nur gegen die unsichtbare Arbeitsteilung, auf der diese kleine Welt ruht.
~ state_reach(public_mask_strained)
~ mark(public_mask_strained)
~ state_reach(staff_as_witnesses_noticed)
* {class ? working} [__Greife zu__: Dem Gepäckträger beinahe den Koffer abnehmen. #key:t]
* * {class ? working} [__Greife zu__: Dem Gepäckträger beinahe den Koffer abnehmen. #key:t]
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
~ rel_inc(viktor_closed)
Du springst hinunter, bevor jemand dir helfen kann, und nimmst dem Gepäckträger beinahe den Koffer aus der Hand.
Für eine Sekunde bist du schneller als deine Verkleidung. Der Gepäckträger hält fest, Viktor greift nach deinem Ellbogen, der Kutscher sieht weg, weil Wegsehen manchmal die höflichste Form von Zeugenschaft ist. Es ist kein Unglück. Nur ein Riss, klein genug, um ihn mit Haltung zu schließen.
~ state_reach(public_mask_strained)
~ mark(public_mask_strained)
~ state_reach(staff_as_witnesses_noticed)
-
~ state_reach(baggage_handed_over)
-> TURN
-> DONE
// ============================================================================
@@ -243,7 +295,7 @@ Was hier geschieht, wird niemand in einem Bericht erwähnen. Gerade deshalb wird
=== station_restaurant_entry ===
~ state_reach(meal_taken_at_station)
~ mark(meal_taken_at_station)
Die Bahnhofsrestauration ist wärmer als der Bahnsteig und weniger privat als das Abteil. Ein Kellner wischt einen Tisch, als könne er Reise, Klasse und Hunger mit demselben Tuch ordnen. An der Wand hängt eine Uhr, unter ihr ein Fahrplan, daneben ein Bild des Kaisers, das in diesem Licht mehr Geduld als Macht zeigt. #gloss[Fahrplan](Gedruckte Zusicherung, dass selbst Entfernung eine Bürokratie besitzt.)
@@ -267,71 +319,36 @@ Viktor wählt einen Tisch, von dem aus er Tür und Fenster sehen kann. Du wähls
=== station_restaurant_bucket ===
* [__Wahre Form__: "Ein Tisch, der Ihnen Ausblick erlaubt. Wie aufmerksam."]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
"Ein Tisch, der Ihnen Ausblick erlaubt. Wie aufmerksam."
* [__Bemerke__: Viktors Sitzwahl.]
Viktor wählt den Platz nicht zufällig. Er sitzt mit Blick zur Tür, zum Fenster und zum Kellner, als wäre selbst eine Bahnhofsrestauration ein Lageplan.
Viktor zieht den Stuhl nicht zu rasch zurück. "Gewohnheit, gnädiges Fräulein."
-> station_restaurant_lunch_end
* * [__Wahre Form__: "Ein Tisch, der Ihnen Ausblick erlaubt. Wie aufmerksam."]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
"Ein Tisch, der Ihnen Ausblick erlaubt. Wie aufmerksam."
* [__Prüfe__: "Sie setzen sich nie mit dem Rücken zur Tür."]
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
"Sie setzen sich nie mit dem Rücken zur Tür."
Viktor zieht den Stuhl nicht zu rasch zurück. "Gewohnheit, gnädiges Fräulein."
"Nicht, solange ich dafür bezahlt werde, es nicht zu tun."
-> station_restaurant_lunch_end
* * [__Prüfe__: "Sie setzen sich nie mit dem Rücken zur Tür."]
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
"Sie setzen sich nie mit dem Rücken zur Tür."
* [__Entschärfe__: "Ich verspreche, weder durch das Fenster noch durch die Küche zu entkommen."]
~ route_inc(route_careless)
~ rel_inc(viktor_open)
~ rel_inc(viktor_unreliable)
"Ich verspreche, weder durch das Fenster noch durch die Küche zu entkommen."
"Nicht, solange ich dafür bezahlt werde, es nicht zu tun."
"Nehmen Sie mir nicht alle beruflichen Hoffnungen."
-> station_restaurant_lunch_end
* * [__Entschärfe__: "Ich verspreche, weder durch das Fenster noch durch die Küche zu entkommen."]
~ route_inc(route_careless)
~ rel_inc(viktor_open)
~ rel_inc(viktor_unreliable)
"Ich verspreche, weder durch das Fenster noch durch die Küche zu entkommen."
"Nehmen Sie mir nicht alle beruflichen Hoffnungen."
-
-> station_restaurant_lunch_done
- (station_restaurant_lunch_done)
Das Essen ist einfach. Suppe, Brot, Kaffee, vielleicht ein Stück kaltes Fleisch. Es erfüllt keinen Traum, aber einen Zweck. Als du wieder aufstehst, hat der Bahnhof dich nicht weniger fremd gemacht, nur etwas belastbarer.
-> station_platform
-> DONE
=== station_restaurant_lunch_end ===
Das Essen ist einfach. Suppe, Brot, Kaffee, vielleicht ein Stück kaltes Fleisch. Es erfüllt keinen Traum, aber einen Zweck. Als du wieder aufstehst, hat der Bahnhof dich nicht weniger fremd gemacht, nur etwas belastbarer.
-> station_platform
// ============================================================================
// EXIT TO CHAPTER 03
// ============================================================================
=== station_baggage_and_carriage ===
~ state_reach(carriage_arranged)
~ state_reach(road_departure_ready)
Die Kutsche aus Hohenreith wartet jenseits des Stationshofes. Dunkelgrüner Lack, schwarze Räder, das gräfliche Wappen dezent auf der Tür, zwei Pferde bereits unruhig im Geschirr. Der Kutscher nimmt den Hut ab, als er dich sieht. Nicht zu tief. Tief genug für Rang, nicht tief genug für Ehrfurcht. #sfx[horse-neigh.ogg]
"Gnädiges Fräulein? Herr Sekretär?"
{class ? noble:
Man hat ihm genug gesagt, um dich einzuordnen. Das ist eine Höflichkeit. Es ist auch eine Warnung.
- else:
Er zögert bei dir um das kleinste Maß. Das Zögern ist keine Unhöflichkeit. Es ist Berechnung. Erste Klasse, Hofschreiben, kein Titel außer Fräulein, und ein Mann neben dir, der aussieht, als hätte er Menschen für weniger verhaften lassen als Starren.
}
Viktor antwortet, bevor du es kannst.
"Vom Jagdhaus Hohenreith?"
"Jawohl, Herr Sekretär. Der Weg ist befahrbar. Wenn der Nebel nicht dichter wird, sollten wir Eibenreith vor Einbruch der Dunkelheit erreichen."
Das Wort tritt ohne Zeremonie in die Luft.
Eibenreith.
Nicht Hohenreith, der Name, der in sauberer Hand auf der Einladung steht. Eibenreith. Das Dorf darunter. Ein kleinerer Name. Älter im Mund. Ein Name mit Wurzeln statt Briefpapier.
~ episode_end("normal")
~ time_move_to(afternoon)
~ loc_move_to(loc_carriage)
-> carriage_ride
+231 -220
View File
@@ -1,16 +1,28 @@
// ============================================================================
// ============================================================================
// EIBENREITH 03 ROUTES / ANKUNFT HOHENREITH
// ============================================================================
// Zielknoten der Nachmittags-Episode "Anreise nach Hohenreith".
// Diese Datei gehört strukturell zu Kapitel 03: Kutschenfahrt, Eibenreith,
// Routenentscheidung und Ankunft in Hohenreith.
// Zielräume und Übergänge der Nachmittags-Episode "Anreise nach Hohenreith".
//
// Architektur:
// - Hohenreith-Ankunft und Eibenreith-Dorf sind Räume mit entry/look/exits/bucket.
// - Jede Entscheidung liegt direkt in dem Provider, der sie anbietet.
// - Längere Sozialweaves bleiben als vollständige Weaves im jeweiligen Exit- oder
// Bucket-Provider, nicht als ausgelagerte _choices-Knoten.
// ============================================================================
// ============================================================================
// ROOM: HOHENREITH ARRIVAL, PUNCTUAL
// ============================================================================
=== direct_hohenreith_arrival ===
~ loc_move_to(loc_hohenreith_arrival)
~ state_reach(HohenreithArrivalFrame.punctual_official_guest)
~ state_reach(HohenreithArrivalFrame.household_form_preserved)
~ mark(punctual_official_guest)
~ mark(household_form_preserved)
-> enter_room(loc_hohenreith_arrival, -> direct_hohenreith_entry, -> hohenreith_arrival_look, -> direct_hohenreith_exits, -> direct_hohenreith_bucket) -> TURN
=== direct_hohenreith_entry ===
Die Kutsche lässt Eibenreith unterhalb der Straße zurück. #chapter[Hohenreith]
Das Dorf bleibt nicht ungesehen, nur unbetreten: ein Kirchturm, niedrige Dächer, Rauch, ein paar Gesichter in Fenstern. Dann nimmt der Wald es wieder an sich. Der Weg steigt, und mit jedem Ruck der Kutsche wird der Nachmittag förmlicher. Du fährst nicht mehr irgendwohin. Du wirst erwartet.
@@ -21,13 +33,30 @@ Viktor steigt zuerst aus. Der Kutscher öffnet den Schlag. Ein Diener steht bere
Du kommst pünktlich an. Das ist keine Kleinigkeit. In Häusern wie diesem ist Pünktlichkeit die erste Lüge, die alle Beteiligten gemeinsam schützen.
-> DONE
=== hohenreith_arrival_look ===
+ [__Schaue__: Zum Jagdhaus hinauf. #key:l]
Hohenreith steht nicht prunkvoll da. Es steht sicher da, und das ist schlimmer. Wo ein Schloss beeindrucken will, erwartet dieses Haus, dass man seine Regeln schon vor der Schwelle errät.
-> TURN
-> DONE
=== direct_hohenreith_exits ===
+ {state_reached(HohenreithArrivalFrame.expected_guest)} [__Betrete__: Das Haus. #key:n]
-> hohenreith_direct_butler_welcome
-> DONE
=== direct_hohenreith_bucket ===
* [__Wahre Form__: Den ersten Blick des Hauses annehmen.]
~ route_inc(route_composure)
~ state_reach(HohenreithArrivalFrame.expected_guest)
Du steigst aus, nimmst Viktor nur so weit in Anspruch, wie die Form verlangt, und lässt Mantel, Hut und Handschuhe sprechen, bevor du selbst etwas sagst.
Der Diener verneigt sich. Nicht tief. Richtig. Das Haus hat entschieden, dich zunächst als Dame zu behandeln.
-> hohenreith_direct_butler_welcome
-> TURN
* [__Prüfe__: Die Fassade, bevor du dich ihr überlässt.]
~ route_inc(route_detective)
@@ -35,7 +64,7 @@ Du kommst pünktlich an. Das ist keine Kleinigkeit. In Häusern wie diesem ist P
Dein Blick folgt den Linien des Hauses: neue Fenster über älterem Mauerwerk, ein sauberer Eingang über feuchtem Stein, Försterordnung über etwas, das nicht nach Jagd aussieht.
Viktor bemerkt deinen Blick. Er sagt nichts. Das ist klug von ihm.
-> pre_dinner_transition
-> TURN
* [__Entschärfe__: „Es sieht fast so aus, als wolle es uns gefallen.“]
„Es sieht fast so aus, als wolle es uns gefallen.“
@@ -44,18 +73,33 @@ Du kommst pünktlich an. Das ist keine Kleinigkeit. In Häusern wie diesem ist P
„Häuser wollen nichts“, sagt Viktor.
„Dann ist dieses besonders schlecht darin.“
-> pre_dinner_transition
~ state_reach(HohenreithArrivalFrame.expected_guest)
-> TURN
-> DONE
=== hohenreith_direct_butler_welcome ===
Ein Butler tritt an die unterste Stufe. Nicht der Diener von vorhin, sondern ein Mann, der dem Haus seine Stimme geliehen hat: schwarz gekleidet, glatt rasiert, mit dem leeren Gesichtsausdruck vollendeter Haushaltskenntnis. Er verneigt sich zuerst vor dir, dann vor Viktor.
„Willkommen in Hohenreith.“
Die Worte sind vollkommen richtig. Genau deshalb ist unklar, ob sie Gruß, Urteil oder Besitzanzeige sind.
-> pre_dinner_transition
// ============================================================================
// VILLAGE DETOUR ROUTE
// ROOM: EIBENREITH VILLAGE
// ============================================================================
=== village_detour_start ===
~ loc_move_to(loc_eibenreith_village)
~ mark(AfternoonOutcome.village_knowledge_prioritised)
~ mark(village_knowledge_prioritised)
~ state_reach(EibenreithPublicFace.curious)
-> enter_room(loc_eibenreith_village, -> village_detour_entry, -> village_detour_look, -> village_detour_exits, -> village_detour_bucket) -> TURN
=== village_detour_entry ===
Zuerst kommt der Geruch von Rauch. Dann ein Dach, niedrig und dunkel vom Wetter. Dann ein zweites. Dann ein Kirchturm, nicht hoch, nicht anmutig, sondern breitschultrig und blass vor dem Hang dahinter. Seine Mauern wirken älter als das Dorf um sie her und weniger sicher ihres Sieges. Die Fenster sind klein. Die Kirchhofmauer hält die Straße auf Abstand, als bräuchten die Toten Schutz vor den Lebenden oder die Lebenden vor etwas anderem. #chapter[Eibenreith] #sfx[church-bells.ogg](max=8, fade) #image[eibenreith.png](landscape)
Eibenreith erscheint nicht, wie ein Dorf auf einem Bild erscheint, auf einmal und zur Bewunderung geordnet, sondern in Bruchstücken.
@@ -70,24 +114,24 @@ Niemand läuft herbei, um dich zu begrüßen. Niemand muss das. Die Nachricht is
Du sitzt sehr gerade, während Eibenreith dich zum ersten Mal betrachtet.
-> village_detour_surface
-> DONE
// ============================================================================
// VILLAGE DETOUR SURFACE
// ============================================================================
=== village_detour_look ===
+ [__Schaue__: Die Dorfstraße entlang. #key:l]
Die Dorfstraße ist kein Salon und gerade deshalb nicht weniger gesellschaftlich. Jeder Blick hat hier weniger Politur, aber mehr Gedächtnis.
-> TURN
-> DONE
=== village_detour_surface ===
Die Dorfstraße ist kein Salon und gerade deshalb nicht weniger gesellschaftlich. Jeder Blick hat hier weniger Politur, aber mehr Gedächtnis.
* [__Schaue__: In die Gesichter am Straßenrand. #key:l]
=== village_detour_bucket ===
* [__Schaue__: In die Gesichter am Straßenrand.]
Die Gesichter verschwinden nicht, wenn du hinsiehst. Sie verändern nur ihre Begründung: Eine Frau prüft plötzlich ihren Eimer. Ein Bub entdeckt die Gänse neu. Ein Mann tut, als habe er schon immer zum Kirchtor gesehen. Das Dorf besitzt keine Bühne, aber jeder hier kennt seinen Auftritt.
-> village_detour_surface
-> TURN
* [__Höre__: Auf das Wasser unter der Straße.]
Unter den Rädern, unter Brettern und Steinen, unter der höflichen Behauptung einer Dorfstraße läuft Wasser. Es klingt nicht tief, aber schnell. Als hätte der Ort einen zweiten Atem, einen kalten, verborgenen, der nicht durch menschliche Münder geht.
-> village_detour_surface
-> TURN
* [__Untersuche__: Die Kirche. #key:x]
~ state_reach(VillageReligiousTension.church_as_center_seen)
@@ -101,230 +145,188 @@ Die Dorfstraße ist kein Salon und gerade deshalb nicht weniger gesellschaftlich
- else:
Die Kirche sieht nicht aus, als habe sie den älteren Dingen im Tal widersprochen. Eher, als habe sie gelernt, über ihnen zu stehen.
}
-> village_detour_surface
-> TURN
* [__Betrachte__: Das Bild neben dem Kirchhofstor.]
-> religious_image_reaction
~ state_reach(VillageReligiousTension.christian_surface_noted)
~ state_reach(VillageReligiousTension.older_presence_hint)
Über dem alten Putz neben dem Kirchtor blickt eine verblasste gemalte Frau unter einem abblätternden blauen Mantel herab. Ihre Hände sind zum Gebet gefaltet. Ihre Augen, vom Wetter beschädigt, zeigen nicht mehr in dieselbe Richtung.
* [__Warte__: Bis die Kutsche wieder bereit ist. #required #key:z]
-> village_exit_puzzle
{
- relig ? catholic:
Für einen Atemzug stört dich nicht, dass das Bild alt ist. Es stört dich, dass es nicht mehr ganz heilig wirkt.
- relig ? reform:
Für einen Atemzug wirkt das Bild weniger wie Andacht als wie Verwaltung: ein aufgemaltes Siegel über etwas, das man nicht fortschaffen konnte.
- relig ? social:
Für einen Atemzug erkennst du die vertraute Geste und misstraust trotzdem dem Ort, an dem sie gemalt wurde.
- else:
Für einen Atemzug, als die Räder über ein verborgenes Wasserrinnsal fahren, wirkt das gemalte Gesicht weniger wie die Heilige Mutter als wie eine Maske, die etwas aufgesetzt wurde, das länger gewartet hatte.
}
-> TURN
* {present(viktor)}
{village_detour_exits.named_village_watching} [__Greife auf__: Deinen Satz über die Blicke zurück.]
„Sie sagten, das werde heute kaum besser“, sagst du. „Das Beobachtetwerden.“
„Ich sagte es, bevor das Dorf Gelegenheit hatte, mir recht zu geben.“
Zwischen euch liegt nicht Trost, sondern Genauigkeit. Für heute ist das vielleicht die brauchbarere Form.
-> TURN
-> DONE
=== religious_image_reaction ===
~ state_reach(VillageReligiousTension.christian_surface_noted)
~ state_reach(VillageReligiousTension.older_presence_hint)
Über dem alten Putz neben dem Kirchtor blickt eine verblasste gemalte Frau unter einem abblätternden blauen Mantel herab. Ihre Hände sind zum Gebet gefaltet. Ihre Augen, vom Wetter beschädigt, zeigen nicht mehr in dieselbe Richtung.
{
- relig ? catholic:
Für einen Atemzug stört dich nicht, dass das Bild alt ist. Es stört dich, dass es nicht mehr ganz heilig wirkt.
- relig ? reform:
Für einen Atemzug wirkt das Bild weniger wie Andacht als wie Verwaltung: ein aufgemaltes Siegel über etwas, das man nicht fortschaffen konnte.
- relig ? social:
Für einen Atemzug erkennst du die vertraute Geste und misstraust trotzdem dem Ort, an dem sie gemalt wurde.
- else:
Für einen Atemzug, als die Räder über ein verborgenes Wasserrinnsal fahren, wirkt das gemalte Gesicht weniger wie die Heilige Mutter als wie eine Maske, die etwas aufgesetzt wurde, das länger gewartet hatte.
}
-> village_detour_surface
// ============================================================================
// VILLAGE EXIT SOCIAL PUZZLE
// ============================================================================
=== village_exit_puzzle ===
~ state_reach(EibenreithPublicFace.cautious)
Der Kutscher hält vor dem Wirtshaus oder vielleicht nur vor dem Gebäude, das in einem besseren Dorf eines gewesen wäre. Ein Knecht aus dem Dorf tritt aus dem Schatten des Tors. Viktor öffnet die Kutschentür von innen nicht sofort; der Kutscher steigt ab, um den Schlag zu öffnen. Der Knecht sieht auf dein Gepäck, dann auf deine Handschuhe, dann auf Viktor.
Wieder stellt die Welt eine Frage, ohne sie auszusprechen: Wer darf dir helfen, wer muss dir helfen, und wem erlaubst du, dabei wichtig zu wirken?
* {class ? noble} [__Warte__ · **Adel**: Bis der Kutscher den Schlag öffnet und Viktor zuerst aussteigt. #key:z]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
Du wartest, bis der Kutscher den Schlag öffnet und Viktor zuerst aussteigt; erst dann reichst du Viktor die behandschuhte Hand.
Es geschieht langsam genug, dass alle Beteiligten ihre Rolle finden. Der Kutscher ist Dienst, Viktor ist Begleitung, der Knecht ist noch nicht wichtig genug, um dich zu berühren. Dein Fuß erreicht den Boden, als hätte die Straße sich dafür bereitgehalten.
=== village_detour_exits ===
+ [__Warte__: Bis die Kutsche wieder bereit ist. #key:z]
~ state_reach(EibenreithPublicFace.cautious)
Der Kutscher hält vor dem Wirtshaus oder vielleicht nur vor dem Gebäude, das in einem besseren Dorf eines gewesen wäre. Ein Knecht aus dem Dorf tritt aus dem Schatten des Tors. Viktor öffnet die Kutschentür von innen nicht sofort; der Kutscher steigt ab, um den Schlag zu öffnen. Der Knecht sieht auf dein Gepäck, dann auf deine Handschuhe, dann auf Viktor.
* [__Gewähre__: Viktor die Hand und dem Kutscher den Dank.]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
Du lässt Viktor aussteigen, nimmst seine Hand beim Abtreten und dankst dem Kutscher erst danach mit einem knappen Blick.
Wieder stellt die Welt eine Frage, ohne sie auszusprechen: Wer darf dir helfen, wer muss dir helfen, und wem erlaubst du, dabei wichtig zu wirken?
Der Ablauf ist korrekt genug, um keine Geschichte zu erzeugen. In einem Dorf, das von Geschichten lebt, ist das ein kleiner Sieg.
~ state_reach(EibenreithPublicFace.cautious)
* * {class ? noble} [__Warte__ · **Adel**: Bis der Kutscher den Schlag öffnet und Viktor zuerst aussteigt. #key:z]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
Du wartest, bis der Kutscher den Schlag öffnet und Viktor zuerst aussteigt; erst dann reichst du Viktor die behandschuhte Hand.
* [__Dirigiere__: „Zuerst den kleineren Kasten.“]
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
Du gibst dem Knecht eine klare Anweisung, welches Gepäck zuerst abgeladen werden soll, bevor er danach fragen kann.
Es geschieht langsam genug, dass alle Beteiligten ihre Rolle finden. Der Kutscher ist Dienst, Viktor ist Begleitung, der Knecht ist noch nicht wichtig genug, um dich zu berühren. Dein Fuß erreicht den Boden, als hätte die Straße sich dafür bereitgehalten.
~ state_reach(EibenreithPublicFace.cautious)
Er gehorcht sofort. Viktor registriert die Zweckmäßigkeit. Der Kutscher registriert die Ungewöhnlichkeit. Eine Dame, die Gepäckreihenfolgen kennt, ist entweder sehr erfahren, sehr nervös oder beides.
~ state_reach(EibenreithPublicFace.suspicious)
~ state_reach(ServiceWorld.staff_as_witnesses_noticed)
* * [__Gewähre__: Viktor die Hand und dem Kutscher den Dank.]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
Du lässt Viktor aussteigen, nimmst seine Hand beim Abtreten und dankst dem Kutscher erst danach mit einem knappen Blick.
* [__Reize__: Den Kutscher mit zu warmer Freundlichkeit.]
~ route_inc(route_lover)
~ rel_inc(viktor_open)
~ rel_inc(viktor_unreliable)
Du bietest dem Kutscher ein sichtbares Lächeln und ein zu freundliches „Danke“ an.
Der Ablauf ist korrekt genug, um keine Geschichte zu erzeugen. In einem Dorf, das von Geschichten lebt, ist das ein kleiner Sieg.
~ state_reach(EibenreithPublicFace.cautious)
Der Mann senkt den Blick, verwirrt und geschmeichelt. Viktor wird stiller. Freundlichkeit über Standesgrenzen hinweg kann Güte sein, Taktik oder Unachtsamkeit. Auf dem Dorf wird niemand lange brauchen, eine vierte Möglichkeit zu erfinden.
~ state_reach(EibenreithPublicFace.suspicious)
* * [__Dirigiere__: „Zuerst den kleineren Kasten.“]
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
Du gibst dem Knecht eine klare Anweisung, welches Gepäck zuerst abgeladen werden soll, bevor er danach fragen kann.
* [__Verplappere dich__: „Ach, das macht doch zu viel Mühe.“]
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
Du entschuldigst dich beim Knecht dafür, dass deine Sachen Mühe machen, und greifst selbst nach einem Koffer.
Er gehorcht sofort. Viktor registriert die Zweckmäßigkeit. Der Kutscher registriert die Ungewöhnlichkeit. Eine Dame, die Gepäckreihenfolgen kennt, ist entweder sehr erfahren, sehr nervös oder beides.
~ state_reach(EibenreithPublicFace.suspicious)
~ state_reach(ServiceWorld.staff_as_witnesses_noticed)
Der Knecht erstarrt, als hättest du ihm eine philosophische Frage gestellt. Viktor tritt sofort dazwischen, höflich genug, um die Rettung wie Zufall aussehen zu lassen. Du hast gegen keine Moral verstoßen, nur gegen die unsichtbare Arbeitsteilung, auf der diese kleine Welt ruht.
~ state_reach(EibenreithPublicFace.unsettled)
~ state_reach(ServiceWorld.staff_as_witnesses_noticed)
* * [__Reize__: Den Kutscher mit zu warmer Freundlichkeit.]
~ route_inc(route_lover)
~ rel_inc(viktor_open)
~ rel_inc(viktor_unreliable)
Du bietest dem Kutscher ein sichtbares Lächeln und ein zu freundliches „Danke“ an.
* {class ? working} [__Rutsche aus__ · **Unterschicht**: Allein, bevor jemand dir helfen kann.]
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
~ rel_inc(viktor_closed)
Du steigst allein aus, nimmst deinen Rock hoch genug, um den Schlamm zu sehen, und sagst dem Knecht, er solle mit dem schweren Koffer vorsichtig sein.
Der Mann senkt den Blick, verwirrt und geschmeichelt. Viktor wird stiller. Freundlichkeit über Standesgrenzen hinweg kann Güte sein, Taktik oder Unachtsamkeit. Auf dem Dorf wird niemand lange brauchen, eine vierte Möglichkeit zu erfinden.
~ state_reach(EibenreithPublicFace.suspicious)
Es ist praktisch, schnell und völlig falsch. Nicht, weil du unrecht hast, sondern weil du recht hast wie jemand, der selbst schon getragen hat. Der Knecht erkennt es. Viktor auch.
~ state_reach(EibenreithPublicFace.unsettled)
~ state_reach(ServiceWorld.staff_as_witnesses_noticed)
* * [__Verplappere dich__: „Ach, das macht doch zu viel Mühe.“]
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
Du entschuldigst dich beim Knecht dafür, dass deine Sachen Mühe machen, und greifst selbst nach einem Koffer.
-
Der Knecht erstarrt, als hättest du ihm eine philosophische Frage gestellt. Viktor tritt sofort dazwischen, höflich genug, um die Rettung wie Zufall aussehen zu lassen. Du hast gegen keine Moral verstoßen, nur gegen die unsichtbare Arbeitsteilung, auf der diese kleine Welt ruht.
~ state_reach(EibenreithPublicFace.unsettled)
~ state_reach(ServiceWorld.staff_as_witnesses_noticed)
Neben dir senkt Viktor die Stimme.
* * {class ? working} [__Rutsche aus__ · **Unterschicht**: Allein, bevor jemand dir helfen kann.]
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
~ rel_inc(viktor_closed)
Du steigst allein aus, nimmst deinen Rock hoch genug, um den Schlamm zu sehen, und sagst dem Knecht, er solle mit dem schweren Koffer vorsichtig sein.
„Vergessen Sie nicht: In Hohenreith wird jede Höflichkeit etwas bedeuten. Hier wird es jedes Schweigen tun.“
Es ist praktisch, schnell und völlig falsch. Nicht, weil du unrecht hast, sondern weil du recht hast wie jemand, der selbst schon getragen hat. Der Knecht erkennt es. Viktor auch.
~ state_reach(EibenreithPublicFace.unsettled)
~ state_reach(ServiceWorld.staff_as_witnesses_noticed)
* [__Prüfe__: „Dann werden wir bereits empfangen.“]
„Dann werden wir bereits empfangen.“
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
„Ja“, sagt er. „Und geprüft.“
-
* [__Benenne__: „Sie lassen es klingen, als stünde das Dorf über dem Grafen.“]
„Sie lassen es klingen, als stünde das Dorf über dem Grafen.“
~ route_inc(route_eccentric)
~ rel_inc(viktor_adversarial)
„Nein“, sagt Viktor. „Nur, als hätte es vielleicht mehr als einen überlebt.“
Neben dir senkt Viktor die Stimme.
* [__Entwaffne__: „Wie glücklich, dass ich mehrere Arten des Schweigens eingepackt habe.“]
„Wie glücklich, dass ich mehrere Arten des Schweigens eingepackt habe.“
~ route_inc(route_lover)
~ rel_inc(viktor_open)
Sein Mund bewegt sich beinahe. „Verwenden Sie zuerst das schlichteste.“
„Vergessen Sie nicht: In Hohenreith wird jede Höflichkeit etwas bedeuten. Hier wird es jedes Schweigen tun.“
* [__Verplappere dich__: „Ich mag es nicht, von Leuten beobachtet zu werden, die sich nicht vorstellen.“]
„Ich mag es nicht, von Leuten beobachtet zu werden, die sich nicht vorstellen.“
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
Das“, sagt er,wird sich heute kaum bessern.“
* * [__Prüfe__: „Dann werden wir bereits empfangen.“]
„Dann werden wir bereits empfangen.“
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
Ja“, sagt er.Und geprüft.“
* [__Schone sie__: „Wenn Amalia ihr ganzes Leben unter diesem Blick gelebt hat, beginne ich zu verstehen, weshalb man nach Geistern sandte.“]
Wenn Amalia ihr ganzes Leben unter diesem Blick gelebt hat, beginne ich zu verstehen, weshalb man nach Geistern sandte.“
~ route_inc(route_sapphic)
~ rel_inc(viktor_insightful)
Viktor sieht dich an, doch welche Antwort er auch erwägt, er behält sie hinter den Zähnen.
* * [__Benenne__: „Sie lassen es klingen, als stünde das Dorf über dem Grafen.“]
Sie lassen es klingen, als stünde das Dorf über dem Grafen.“
~ route_inc(route_eccentric)
~ rel_inc(viktor_adversarial)
„Nein“, sagt Viktor. „Nur, als hätte es vielleicht mehr als einen überlebt.“
-
~ state_reach(EibenreithPublicFace.openly_watching_valerie)
-> village_departure_choice
* * [__Entwaffne__: „Wie glücklich, dass ich mehrere Arten des Schweigens eingepackt habe.“]
„Wie glücklich, dass ich mehrere Arten des Schweigens eingepackt habe.“
~ route_inc(route_lover)
~ rel_inc(viktor_open)
Sein Mund bewegt sich beinahe. „Verwenden Sie zuerst das schlichteste.“
* * (named_village_watching) [__Verplappere dich__: „Ich mag es nicht, von Leuten beobachtet zu werden, die sich nicht vorstellen.“]
„Ich mag es nicht, von Leuten beobachtet zu werden, die sich nicht vorstellen.“
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
„Das“, sagt er, „wird sich heute kaum bessern.“
* * [__Schone sie__: „Wenn dort jemand unter diesem Blick lebt, beginne ich zu verstehen, weshalb man nach Geistern sandte.“]
„Wenn dort jemand unter diesem Blick lebt, beginne ich zu verstehen, weshalb man nach Geistern sandte.“
~ route_inc(route_sapphic)
~ rel_inc(viktor_insightful)
Viktor sieht dich an, doch welche Antwort er auch erwägt, er behält sie hinter den Zähnen.
-
~ state_reach(EibenreithPublicFace.openly_watching_valerie)
Die Kutsche wartet. Das Dorf wartet nicht; es sieht nur so aus. Zwischen den Häusern haben sich die Blicke anders verteilt. Ein paar Menschen sind verschwunden, aber die Fenster haben mehr Augen bekommen.
Viktor hält die Kutschentür offen. „Wenn wir jetzt fahren, lässt sich die Verspätung noch als Wegverhältnis erklären.“
Der Kutscher sieht zu dir. Er hat verstanden, dass nicht er entscheidet, wann die Reise weitergeht.
* * [__Wahre Form__: Wieder einsteigen und nach Hohenreith weiterfahren.]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
~ mark(delayed_after_village_detour)
Du steigst wieder ein. Die Entscheidung rettet nicht die Pünktlichkeit, aber die Form: Verspätung durch Aufenthalt, nicht durch Auflehnung.
-> delayed_hohenreith_arrival
* * [__Prüfe__: Das Dorf gesehen haben; jetzt das Haus sehen.]
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
~ mark(delayed_after_village_detour)
Du steigst ein, bevor das Dorf den Aufenthalt in eine zweite Szene verwandeln kann. Du hast nicht genug gesehen. Aber genug, um zu wissen, welche Fragen im Haus falsch beantwortet werden könnten.
-> delayed_hohenreith_arrival
* * (send_carriage_ahead_from_village) [__Verfüge__: Die Kutsche mit Gepäck und Nachricht vorausschicken.]
„Die Kutsche fährt voraus“, sagst du. „Mit dem Gepäck. Und mit einer Nachricht, dass wir nachkommen.“
~ route_inc(route_eccentric)
~ rel_inc(viktor_bold)
~ rel_inc(viktor_adversarial)
~ rel_inc(viktor_unreliable)
~ mark(household_form_disturbed)
Viktor sieht dich an, als hättest du nicht einen Weg, sondern eine Dienstvorschrift verlassen.
Der Kutscher nimmt die Nachricht entgegen, als sei Papier unter bestimmten Umständen gefährlicher als Glatteis. Viktor prüft jedes Wort, das du ihm diktierst, ohne offen zu widersprechen. Das Gepäck wird wieder aufgeladen. Der Kutscher fährt an, langsam genug, dass das Dorf den Vorgang vollständig verstehen kann.
Zurück bleiben du, Viktor, die Straße nach Hohenreith und ein Schweigen, das nicht mehr in die Kutsche passt.
-> footpath_to_hohenreith
-> DONE
// ============================================================================
// DIRECT CARRIAGE WELCOME
// ============================================================================
=== hohenreith_direct_butler_welcome ===
Ein Butler tritt an die unterste Stufe. Nicht der Diener von vorhin, sondern ein Mann, der dem Haus seine Stimme geliehen hat: schwarz gekleidet, glatt rasiert, mit dem leeren Gesichtsausdruck vollendeter Haushaltskenntnis. Er verneigt sich zuerst vor dir, dann vor Viktor.
„Willkommen in Hohenreith.“
Die Worte sind vollkommen richtig. Genau deshalb ist unklar, ob sie Gruß, Urteil oder Besitzanzeige sind.
-> pre_dinner_transition
// ============================================================================
// VILLAGE DEPARTURE CHOICE
// ============================================================================
=== village_departure_choice ===
Die Kutsche wartet. Das Dorf wartet nicht; es sieht nur so aus. Zwischen den Häusern haben sich die Blicke anders verteilt. Ein paar Menschen sind verschwunden, aber die Fenster haben mehr Augen bekommen.
Viktor hält die Kutschentür offen. „Wenn wir jetzt fahren, lässt sich die Verspätung noch als Wegverhältnis erklären.“
Der Kutscher sieht zu dir. Er hat verstanden, dass nicht er entscheidet, wann die Reise weitergeht.
* [__Wahre Form__: Wieder einsteigen und nach Hohenreith weiterfahren.]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
~ state_reach(HohenreithArrivalFrame.delayed_after_village_detour)
Du steigst wieder ein. Die Entscheidung rettet nicht die Pünktlichkeit, aber die Form: Verspätung durch Aufenthalt, nicht durch Auflehnung.
-> delayed_hohenreith_arrival
* [__Prüfe__: Das Dorf gesehen haben; jetzt das Haus sehen.]
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
~ state_reach(HohenreithArrivalFrame.delayed_after_village_detour)
Du steigst ein, bevor das Dorf den Aufenthalt in eine zweite Szene verwandeln kann. Du hast nicht genug gesehen. Aber genug, um zu wissen, welche Fragen im Haus falsch beantwortet werden könnten.
-> delayed_hohenreith_arrival
* [__Verfüge__: Die Kutsche mit Gepäck und Nachricht vorausschicken.]
„Die Kutsche fährt voraus“, sagst du. „Mit dem Gepäck. Und mit einer Nachricht, dass wir nachkommen.“
~ route_inc(route_eccentric)
~ rel_inc(viktor_bold)
~ rel_inc(viktor_adversarial)
~ rel_inc(viktor_unreliable)
~ state_reach(HohenreithArrivalFrame.household_form_disturbed)
Viktor sieht dich an, als hättest du nicht einen Weg, sondern eine Dienstvorschrift verlassen.
-> village_send_carriage_ahead
// ============================================================================
// CARRIAGE SENT AHEAD / ARRIVAL ON FOOT
// FOOTPATH TRANSITION
// ============================================================================
=== village_send_carriage_ahead ===
~ mark(household_form_disturbed)
Der Kutscher nimmt die Nachricht entgegen, als sei Papier unter bestimmten Umständen gefährlicher als Glatteis. Viktor prüft jedes Wort, das du ihm diktierst, ohne offen zu widersprechen. Das Gepäck wird wieder aufgeladen. Der Kutscher fährt an, langsam genug, dass das Dorf den Vorgang vollständig verstehen kann.
Zurück bleiben du, Viktor, die Straße nach Hohenreith und ein Schweigen, das nicht mehr in die Kutsche passt.
* [__Wahre Form__: Eine knappe, korrekte Nachricht schicken.]
„Teilen Sie mit, dass wir dem Jagdhaus zu Fuß folgen und vor dem Abend eintreffen.“
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
Die Nachricht klingt wie Absicht. Das ist das Mindeste, was man einer Unordnung schuldig ist.
-> footpath_to_hohenreith
* [__Prüfe__: Die Nachricht sachlich halten.]
„Wir kommen zu Fuß nach. Das Gepäck soll bereits aufgenommen werden. Man möge unseren verspäteten Eintritt erwarten.“
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
Keine Entschuldigung, keine Erklärung. Eine Erklärung vor der Beobachtung wäre Verschwendung.
-> footpath_to_hohenreith
* [__Benenne__: Die Nachricht als Warnung formulieren.]
„Sagen Sie, wir wollten Eibenreith nicht durchqueren wie ein Möbelstück im Besitz des Hauses.“
~ route_inc(route_eccentric)
~ rel_inc(viktor_adversarial)
Viktor schließt kurz die Augen. „Das werde ich nicht diktieren.“
„Dann schreiben Sie: Wir kommen zu Fuß.“
-> footpath_to_hohenreith
-> footpath_to_hohenreith
=== footpath_to_hohenreith ===
~ loc_move_to(loc_eibenreith_village)
~ state_reach(HohenreithArrivalFrame.delayed_after_village_detour)
~ state_reach(HohenreithArrivalFrame.household_form_disturbed)
~ mark(delayed_after_village_detour)
~ mark(household_form_disturbed)
Der Weg nach Hohenreith steigt nicht steil genug an, um dramatisch zu sein, aber stetig genug, um deine Schuhe, deinen Saum und deine Atmung an die Wirklichkeit zu erinnern. Hinter dir bleibt Eibenreith. Vor dir liegt das Jagdhaus. Dazwischen ist kein Salon, keine Kutsche, keine Polsterung der Verhältnisse.
@@ -371,14 +373,17 @@ Der Satz nimmt euch auf. Er verzeiht nichts.
// ============================================================================
// DELAYED ARRIVAL AFTER VILLAGE DETOUR BY CARRIAGE
// ROOM: HOHENREITH ARRIVAL, DELAYED
// ============================================================================
=== delayed_hohenreith_arrival ===
~ loc_move_to(loc_hohenreith_arrival)
~ state_reach(HohenreithArrivalFrame.delayed_after_village_detour)
~ state_reach(HohenreithArrivalFrame.household_form_disturbed)
~ mark(delayed_after_village_detour)
~ mark(household_form_disturbed)
-> enter_room(loc_hohenreith_arrival, -> delayed_hohenreith_entry, -> hohenreith_arrival_look, -> delayed_hohenreith_exits, -> delayed_hohenreith_bucket) -> TURN
=== delayed_hohenreith_entry ===
Die Pferde ziehen die Kutsche an der Kirchhofmauer vorbei und aus dem Dorf hinaus. Die Straße biegt zur unsichtbaren Höhe, auf der Jagdhaus Hohenreith über Eibenreith unter seinem neueren Namen steht.
Als das Jagdhaus erscheint, ist der Nachmittag bereits weiter fortgeschritten, als die Einladung vorsah. Das Haus empfängt dich nicht unhöflich. Das wäre zu ehrlich. Es empfängt dich mit jener gesteigerten Korrektheit, mit der bessere Häuser kleine Verstöße festhalten, ohne sie beim Namen zu nennen.
@@ -389,19 +394,31 @@ Viktor sagt leise: „Jetzt weiß man, dass Sie eigene Umwege nehmen.“
Der Kutscher bringt die Pferde zum Stehen. Noch einmal wird der Schlag geöffnet. Wer verspätet mit der Kutsche ankommt, erhält die Form ein zweites Mal; nur ist sie nun nicht mehr unschuldig.
-> DONE
=== delayed_hohenreith_exits ===
+ {state_reached(HohenreithArrivalFrame.expected_guest)} [__Betrete__: Das Haus. #key:n]
-> hohenreith_delayed_butler_welcome
-> DONE
=== delayed_hohenreith_bucket ===
* [__Wahre Form__: Aussteigen, als sei die Verspätung Teil des Plans.]
„Dann wollen wir dafür sorgen, dass der Umweg Absicht war.“
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
Du wartest, bis Viktor aussteigt, und nimmst seine Hand gerade lange genug. Die Geste schützt euch beide vor der gröberen Wahrheit: dass du im Dorf getan hast, was eine eingeladene Dame nicht tun muss und vielleicht nicht tun sollte.
-> hohenreith_delayed_butler_welcome
~ state_reach(HohenreithArrivalFrame.expected_guest)
-> TURN
* [__Prüfe__: Beim Aussteigen das Fenster beachten.]
„Wer am Fenster stand, wusste es schon vor dem Diener.“
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
Du steigst aus und siehst nicht zum Fenster. Nicht sofort. Das ist die einzige Höflichkeit, die Beobachtung manchmal braucht.
-> hohenreith_delayed_butler_welcome
~ state_reach(HohenreithArrivalFrame.expected_guest)
-> TURN
* [__Benenne__: Die Verspätung nicht entschuldigen.]
„Ein Haus, das Verspätung kränkt, hat Angst vor eigener Zeit.“
@@ -410,11 +427,12 @@ Der Kutscher bringt die Pferde zum Stehen. Noch einmal wird der Schlag geöffnet
„Bitte sagen Sie das nicht beim Abendessen.“
„Ich sagte es Ihnen. Das ist beinahe dasselbe wie Zurückhaltung.“
-> hohenreith_delayed_butler_welcome
~ state_reach(HohenreithArrivalFrame.expected_guest)
-> TURN
-> DONE
=== hohenreith_delayed_butler_welcome ===
Der Butler tritt an die unterste Stufe. Seine Verneigung ist nicht kürzer als sie bei pünktlicher Ankunft gewesen wäre. Das ist die Härte daran.
„Willkommen in Hohenreith.“
@@ -422,10 +440,3 @@ Der Butler tritt an die unterste Stufe. Seine Verneigung ist nicht kürzer als s
Die Worte lassen keinen Vorwurf hören. Sie brauchen keinen.
-> pre_dinner_transition
// ============================================================================
// PRE-DINNER TRANSITION / INTRO SCORE
// ============================================================================
+181 -153
View File
@@ -1,4 +1,4 @@
// ============================================================================
// ============================================================================
// EIBENREITH 03 KUTSCHENFAHRT
// ============================================================================
// Kapitel 03: Nachmittag / Kutschenfahrt.
@@ -36,17 +36,45 @@ Der Kutscher nennt Orte, wenn Viktor fragt, doch die Namen sind örtlich und pra
=== carriage_ride_episode_bucket ===
* {present(viktor)} {loc(loc_carriage)} [__Frage__: Viktor nach dem Weg.]
* {present(viktor)} {loc(loc_carriage)} [__Prüfe Viktor__: „Was erwarten Sie dort oben?“]
"Was erwarten Sie dort oben?", fragst du.
"Ein Haus, das Ordnung zeigen möchte", sagt Viktor. "Das genügt fast immer, um Unordnung zu verbergen."
-> TURN
* {loc(loc_carriage)} [__Frage__: Den Kutscher nach den Namen am Weg.]
* {loc(loc_carriage)} [__Erkundige dich beim Kutscher__: „Wie heißen die Höfe hier am Weg?“]
„Wie heißen die Höfe hier am Weg?“
Der Kutscher nennt die Höfe, Gräben und Stege ohne die kleinste Absicht, poetisch zu sein. Gerade deshalb wirken die Namen älter als die Karten.
~ state_reach(old_name_heard)
-> TURN
* {present(viktor)}
{state_reached(old_boundary_felt)} [__Prüfe Viktor__: „Hohenreith klingt neu. Der Weg dorthin nicht.“]
„Hohenreith klingt neu. Der Weg dorthin nicht.“
„Häuser wechseln Namen leichter als Gründe“, sagt Viktor.
{route_repeated(sapphic, 2):
Du denkst an Menschen, für die dasselbe gilt. Nicht, weil du schon wüsstest, wer dort oben wartet, sondern weil ein Haus selten nur seine Mauern schützt.
- else:
Du behältst den Gedanken, weil er noch keinen rechten Platz hat.
}
-> TURN
* {present(viktor)}
{roadside_statue_bucket.stopped_for_statue} [__Erinnere__: Viktor an den Stein im Wald.]
„Sie hielten das Wegzeichen für undeutlich.“
„Ich halte es noch immer für undeutlich“, sagt Viktor. „Nur nicht mehr für unwichtig.“
{rel_up(viktor_insightful, viktor_dull):
Dass er das zugibt, ist beinahe mehr als Zustimmung. Es ist die Bereitschaft, seine erste Deutung nicht als Rangfrage zu behandeln.
- else:
Er sagt es, als müsse der Satz erst dienstlich abkühlen, bevor er gelten darf.
}
-> TURN
-> DONE
@@ -77,7 +105,28 @@ Die Kutsche schaukelt nicht wie ein Salon. Sie widerspricht dem Körper bei jede
=== carriage_exits ===
+ [__Warte__: Während das Tal enger wird. #key:z]
-> carriage_graben_entry
~ state_reach(managed_landscape_seen)
~ state_reach(city_order_receding)
Das Haupttal verengt sich.
Der Weg biegt davon in einen Seitengraben, und die Veränderung ist augenblicklich. Der Klang ändert sich. Die Räder klingen nicht mehr gegen offene Entfernung, sondern mahlen zwischen Böschungen, Wurzeln und nassem Stein. Die Luft riecht nach Lauberde, Harz und kaltem Wasser. Eiben erscheinen zwischen den Fichten in dunkler, unwahrscheinlicher Geduld, ihre Nadeln zu schwarz für den Nachmittag. #gloss[Seitengraben](Ein kleineres Tal, das von einem Haupttal abzweigt. Auf der Karte eine Linie, in der Kutsche ein Eintritt.) #gloss[Eiben](Dunkle, langsam wachsende Nadelbäume. Giftig, langlebig und daher für Menschen mit Aberglauben oder Bildung gleichermaßen verdächtig.)
"Eibenreither Graben", sagt der Kutscher und bekreuzigt sich so rasch, dass die Geste auch einem Schlagloch gegolten haben könnte.
Viktor bemerkt es. Natürlich bemerkt er es.
"Schlechter Weg?", fragt er.
"Alter Weg", sagt der Kutscher.
Eine Weile spricht niemand.
~ state_reach(valley_order_emerging)
~ state_reach(local_rules_beginning)
~ state_reach(old_boundary_felt)
-> roadside_statue_room
-> DONE
@@ -100,31 +149,6 @@ Die Kutsche schaukelt nicht wie ein Salon. Sie widerspricht dem Körper bei jede
-> DONE
=== carriage_graben_entry ===
~ state_reach(managed_landscape_seen)
~ state_reach(city_order_receding)
Das Haupttal verengt sich.
Der Weg biegt davon in einen Seitengraben, und die Veränderung ist augenblicklich. Der Klang ändert sich. Die Räder klingen nicht mehr gegen offene Entfernung, sondern mahlen zwischen Böschungen, Wurzeln und nassem Stein. Die Luft riecht nach Lauberde, Harz und kaltem Wasser. Eiben erscheinen zwischen den Fichten in dunkler, unwahrscheinlicher Geduld, ihre Nadeln zu schwarz für den Nachmittag. #gloss[Seitengraben](Ein kleineres Tal, das von einem Haupttal abzweigt. Auf der Karte eine Linie, in der Kutsche ein Eintritt.) #gloss[Eiben](Dunkle, langsam wachsende Nadelbäume. Giftig, langlebig und daher für Menschen mit Aberglauben oder Bildung gleichermaßen verdächtig.)
"Eibenreither Graben", sagt der Kutscher und bekreuzigt sich so rasch, dass die Geste auch einem Schlagloch gegolten haben könnte.
Viktor bemerkt es. Natürlich bemerkt er es.
"Schlechter Weg?", fragt er.
"Alter Weg", sagt der Kutscher.
Eine Weile spricht niemand.
~ state_reach(valley_order_emerging)
~ state_reach(local_rules_beginning)
~ state_reach(old_boundary_felt)
-> roadside_statue_room
// ============================================================================
// ROOM: ROADSIDE STATUE
// ============================================================================
@@ -159,110 +183,105 @@ Der Eindruck bleibt im Nacken sitzen.
=== roadside_statue_exits ===
+ {state_reached(faculty_committed)} [__Warte__: Bis der Graben sich öffnet. #key:z]
Der Graben öffnet sich widerwillig.
-> afternoon_approach_choice
-> afternoon_approach_room
-> DONE
=== roadside_statue_bucket ===
+ {state_before(faculty_committed)} [__Leugne__: Nichts. Nur altes Gestein und bewegte Zweige.]
~ route_inc(route_composure)
~ state_reach(no_claim_made)
~ mark(no_claim_made)
~ state_reach(faculty_committed)
Du hältst dich an das, was ein Bericht tragen kann. Stein. Hang. Unterholz. Bewegung. Alles andere ist Ermüdung, Erwartung oder die Unverschämtheit eines Waldes, der zu gut komponiert ist.
-> TURN
+ {state_before(faculty_committed)} [__Spüre__: Eine körperliche Warnung, ehe der Gedanke folgt.]
~ route_inc(route_sapphic)
~ state_reach(sensory_anomaly_framed)
~ mark(sensory_anomaly_framed)
~ state_reach(faculty_committed)
Der Nacken zieht sich zusammen, bevor du einen Grund dafür hast. Nicht Furcht. Wiedererkennen wäre schlimmer. Dein Körper ist manchmal schneller als deine gebildeten Ausreden.
-> TURN
+ {state_before(faculty_committed)} [__Deute__: Ein Muster, das andere übersehen würden.]
~ route_inc(route_detective)
~ state_reach(intuition_framed)
~ mark(intuition_framed)
~ state_reach(faculty_committed)
Du glaubst nicht an zufällige Blickführung. Der Hang, der Stein, der alte Weg, das Kreuzzeichen des Kutschers: Es ist noch kein Beweis. Aber es ist eine Anordnung.
-> TURN
+ {state_before(faculty_committed)} [__Nutze__: Den Eindruck, weil andere ihn von dir erwarten.]
~ route_inc(route_lover)
~ state_reach(performance_framed)
~ mark(performance_framed)
~ state_reach(faculty_committed)
Vielleicht ist dort nichts. Vielleicht ist dort etwas. Für den Moment genügt, dass alle Beteiligten glauben, du könntest mehr gesehen haben als sie. Ein Ruf ist manchmal ein Instrument, ehe er eine Lüge wird.
-> TURN
* {state_reached(faculty_committed)} {state_before(methods_negotiated)} [__Wahre Form__: "Ein Zeichen am Weg. Ich möchte es nicht voreilig benennen."]
"Ein Zeichen am Weg. Ich möchte es nicht voreilig benennen."
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
"Vorsicht ist in fremden Gegenden selten ein Fehler."
* {state_reached(faculty_committed)} {state_before(methods_negotiated)} [__Prüfe mit Viktor__: Das Wegzeichen.]
Viktor blickt durch das kleine rückwärtige Fenster. Die Biegung hat den Hang bereits ausgelöscht.
* * [__Wahre Form__: "Ein Zeichen am Weg. Ich möchte es nicht voreilig benennen."]
"Ein Zeichen am Weg. Ich möchte es nicht voreilig benennen."
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
"Vorsicht ist in fremden Gegenden selten ein Fehler."
* * [__Prüfe__: "Ein Grenz- oder Wegzeichen. Ich wüsste gern, wohin dieser Pfad führt."]
"Ein Grenz- oder Wegzeichen. Ich wüsste gern, wohin dieser Pfad führt."
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
"Sie haben einen Pfad gesehen?"
"Nicht deutlich. Genug, um später danach zu fragen."
"Fragen Sie vorsichtig. Orte, die man nicht erwähnt, sind oft aufschlussreicher als jene, die man empfiehlt."
* * [__Benenne__: "Vielleicht eine Frau im Wald. Oder ein Stein, der eine sein wollte."]
"Vielleicht eine Frau im Wald. Oder ein Stein, der eine sein wollte."
~ route_inc(route_eccentric)
~ rel_inc(viktor_adversarial)
~ rel_inc(viktor_bold)
Er betrachtet die vorbeiziehenden Bäume. "Ein Wegheiligtum?"
"Wenn es ein Heiligtum ist, wurde es seit langem nicht mehr geliebt."
"Sie sprechen, als bemerkten Steine Vernachlässigung."
* * [__Entschärfe__: "Nur Bäume. Die Art, bei der man für Herren mit Revolvern dankbar wird."]
"Nur Bäume. Die Art, bei der man für Herren mit Revolvern dankbar wird."
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
Sein Ausdruck verdunkelt sich um einen amtlichen Grad. "Ein Revolver ist ein schlechtes Werkzeug gegen Bäume."
"Dann werde ich mich darauf verlassen, dass Ihre Unterhaltung sie einschüchtert."
Der Kutscher tut, als höre er nichts. Seine Schultern jedoch hören alles.
* * [__Locke__: "Würden Sie mir glauben, wenn ich sagte, ich hätte etwas gesehen?"]
"Würden Sie mir glauben, wenn ich sagte, ich hätte etwas gesehen?"
~ route_inc(route_lover)
~ rel_inc(viktor_unreliable)
"Das hinge davon ab, welchen Vorteil Sie sich von der Antwort versprechen."
"Herr Nowak. Sie verletzen mich."
"Noch nicht."
Es ist das Erste, was er an diesem Tag gesagt hat, das beinahe wie ein Flirt klingt, wenn auch vielleicht nur deshalb, weil Gefahr ein Talent dafür hat, wärmere Kleider zu borgen.
* * [__Verberge__: "Nein."]
"Nein."
~ route_inc(route_sapphic)
~ rel_inc(viktor_closed)
Die Verneinung kommt zu rasch, und ihr hört es beide.
Du denkst nicht mehr an den Stein. Du denkst an den Haushalt, der einen fremden Titel bemüht, ohne den Grund sauber zu nennen; an ein Haus, das Hilfe ruft und zugleich verschweigt, wem geholfen werden soll.
-
~ state_reach(methods_negotiated)
-> TURN
* {state_reached(faculty_committed)} {state_before(methods_negotiated)} [__Prüfe__: "Ein Grenz- oder Wegzeichen. Ich wüsste gern, wohin dieser Pfad führt."]
"Ein Grenz- oder Wegzeichen. Ich wüsste gern, wohin dieser Pfad führt."
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
"Sie haben einen Pfad gesehen?"
"Nicht deutlich. Genug, um später danach zu fragen."
Viktor blickt durch das kleine rückwärtige Fenster. Die Biegung hat den Hang bereits ausgelöscht. "Fragen Sie vorsichtig. Orte, die man nicht erwähnt, sind oft aufschlussreicher als jene, die man empfiehlt."
~ state_reach(methods_negotiated)
-> TURN
* {state_reached(faculty_committed)} {state_before(methods_negotiated)} [__Benenne__: "Vielleicht eine Frau im Wald. Oder ein Stein, der eine sein wollte."]
"Vielleicht eine Frau im Wald. Oder ein Stein, der eine sein wollte."
~ route_inc(route_eccentric)
~ rel_inc(viktor_adversarial)
~ rel_inc(viktor_bold)
Er betrachtet die vorbeiziehenden Bäume. "Ein Wegheiligtum?"
"Wenn es ein Heiligtum ist, wurde es seit langem nicht mehr geliebt."
"Sie sprechen, als bemerkten Steine Vernachlässigung."
~ state_reach(methods_negotiated)
-> TURN
* {state_reached(faculty_committed)} {state_before(methods_negotiated)} [__Entschärfe__: "Nur Bäume. Die Art, bei der man für Herren mit Revolvern dankbar wird."]
"Nur Bäume. Die Art, bei der man für Herren mit Revolvern dankbar wird."
~ route_inc(route_careless)
~ rel_inc(viktor_unreliable)
Sein Ausdruck verdunkelt sich um einen amtlichen Grad. "Ein Revolver ist ein schlechtes Werkzeug gegen Bäume."
"Dann werde ich mich darauf verlassen, dass Ihre Unterhaltung sie einschüchtert."
Der Kutscher tut, als höre er nichts. Seine Schultern jedoch hören alles.
~ state_reach(methods_negotiated)
-> TURN
* {state_reached(faculty_committed)} {state_before(methods_negotiated)} [__Locke__: "Würden Sie mir glauben, wenn ich sagte, ich hätte etwas gesehen?"]
"Würden Sie mir glauben, wenn ich sagte, ich hätte etwas gesehen?"
~ route_inc(route_lover)
~ rel_inc(viktor_unreliable)
"Das hinge davon ab, welchen Vorteil Sie sich von der Antwort versprechen."
"Herr Nowak. Sie verletzen mich."
"Noch nicht."
Es ist das Erste, was er an diesem Tag gesagt hat, das beinahe wie ein Flirt klingt, wenn auch vielleicht nur deshalb, weil Gefahr ein Talent dafür hat, wärmere Kleider zu borgen.
~ state_reach(methods_negotiated)
-> TURN
* {state_reached(faculty_committed)} {state_before(methods_negotiated)} [__Verberge__: "Nein."]
"Nein."
~ route_inc(route_sapphic)
~ rel_inc(viktor_closed)
Die Verneinung kommt zu rasch, und ihr hört es beide.
Du denkst nicht mehr an den Stein. Du denkst an die junge Frau, die irgendwo vor euch wartet: die Tochter des Grafen, der Grund, der sorgsam nicht im Memorandum steht, die Fremde, deren Haushalt dich unter einem Titel herbeigerufen hat, der zugleich lächerlich und nützlich ist.
~ state_reach(methods_negotiated)
-> TURN
* {state_reached(faculty_committed)} {state_before(methods_negotiated)} [__Halte__: Die Kutsche anhalten und zurückgehen.]
* (stopped_for_statue) {state_reached(faculty_committed)} {state_before(methods_negotiated)} [__Halte__: Die Kutsche anhalten und zurückgehen.]
"Halten Sie an", sagst du.
Der Kutscher hört zuerst die Stimme, dann die Unmöglichkeit des Befehls. Die Pferde gehen noch ein paar Längen weiter, ehe der Wagen schwer in den Schlamm sinkt und steht.
@@ -331,7 +350,7 @@ Die Kutsche hält eine Biegung weiter, dort, wo der Weg breiter wird und trotzde
=== carriage_halt_bucket ===
* [__Frage__: Den Kutscher, ob hier jemand anhält.]
* [__Erkundige dich beim Kutscher__: „Hält hier manchmal jemand an?“]
"Hier?", sagt der Kutscher.
Er blickt nicht zurück. Das genügt als Antwort beinahe.
@@ -410,7 +429,19 @@ Viktor bleibt am Rand der Lichtung stehen.
=== forest_clearing_exits ===
+ {state_reached(old_site_has_claim)} [__Kehre__: Zur Kutsche zurück. #key:s]
-> return_to_carriage_with_tear
Der Rückweg ist enger, als er beim Hineingehen war. Oder du bist unvorsichtiger. Eine Brombeerranke fängt den Saum deines Reisekleids, hält ihn einen Atemzug lang fest und gibt ihn mit einem kleinen, beleidigend klaren Reißen wieder frei.
Viktor hört es.
Natürlich hört er es.
"Verletzt?"
"Nur beleidigt."
Der Riss ist klein. Sichtbar genug, um später nicht mehr ganz zu verschwinden.
-> afternoon_approach_room
-> DONE
@@ -430,27 +461,15 @@ Viktor bleibt am Rand der Lichtung stehen.
-> DONE
=== return_to_carriage_with_tear ===
Der Rückweg ist enger, als er beim Hineingehen war. Oder du bist unvorsichtiger. Eine Brombeerranke fängt den Saum deines Reisekleids, hält ihn einen Atemzug lang fest und gibt ihn mit einem kleinen, beleidigend klaren Reißen wieder frei.
Viktor hört es.
Natürlich hört er es.
"Verletzt?"
"Nur beleidigt."
Der Riss ist klein. Sichtbar genug, um später nicht mehr ganz zu verschwinden.
-> afternoon_approach_choice
// ============================================================================
// AFTERNOON APPROACH CHOICE
// ============================================================================
=== afternoon_approach_choice ===
=== afternoon_approach_room ===
-> enter_room(loc_carriage, -> afternoon_approach_entry, -> afternoon_approach_look, -> afternoon_approach_exits, -> afternoon_approach_bucket) -> TURN
=== afternoon_approach_entry ===
Der Kutscher zeigt mit der Peitsche nicht auf etwas, sondern in eine Richtung.
"Dort unten liegt Eibenreith. Wenn gnädiges Fräulein wünscht, kann ich im Dorf halten. Das Jagdhaus liegt höher, hinterm Wald. Wenn wir gleich weiterfahren, kommen wir ordentlich vor dem Abend an."
@@ -459,21 +478,42 @@ Viktor sieht dich nicht an, was bei ihm die strengere Form von Erwartung ist.
Nun zum ersten Mal gehört der Nachmittag dir.
+ [__Fahre__: Direkt nach Hohenreith.]
-> DONE
=== afternoon_approach_look ===
+ [__Schaue__: Zwischen Dorf und Jagdhaus. #key:l]
Unterhalb der Straße liegt Eibenreith. Oberhalb liegt Hohenreith. Dazwischen hängt die Frage, ob man ein Haus besser versteht, wenn man zuerst sieht, worüber es steht.
-> TURN
-> DONE
=== afternoon_approach_exits ===
+ [__Fahre__: Direkt nach Hohenreith. #key:s]
~ route_inc(route_composure)
~ rel_inc(viktor_reliable)
~ mark(punctual_arrival_preserved)
Du entscheidest dich für die Form. Wer eingeladen wurde, erscheint nicht verspätet, nur weil ein Dorf Fragen verspricht. Fragen laufen nicht davon. Ein erster Eindruck manchmal schon.
-> direct_to_hohenreith
~ companion_join(viktor)
~ loc_move_to(loc_hohenreith_arrival)
+ [__Halte__: In Eibenreith, aber lass die Kutsche warten.]
Die Kutsche fährt am Dorf vorbei, nicht schnell genug, um ungesehen zu bleiben. Häuser, Kirche, ein Brunnen, ein paar Gesichter im Fenster: Eibenreith wird zur Randnotiz eines höflichen Entschlusses. Doch Randnotizen haben die schlechte Gewohnheit, später den Sinn eines Schreibens zu verändern.
-> direct_hohenreith_arrival
+ [__Halte__: In Eibenreith, aber lass die Kutsche warten. #key:w]
~ route_inc(route_detective)
~ rel_inc(viktor_insightful)
~ mark(village_knowledge_prioritised)
Ein Haus erklärt sich selten selbst. Ein Dorf tut es ebenfalls nicht, aber es verrät manchmal, wo die Erklärungen begraben liegen.
-> depart_for_village_detour
~ companion_join(viktor)
~ loc_move_to(loc_eibenreith_village)
+ [__Verfüge__: In Eibenreith aussteigen und die Kutsche voraus schicken.]
Die Kutsche hält im Dorf. Sofort verändert sich das Verhältnis der Dinge: Das Jagdhaus ist nicht mehr Ziel, sondern Verspätung; Viktor nicht mehr nur Begleiter, sondern Zeuge; Eibenreith nicht mehr Kulisse, sondern erster Gesprächspartner.
-> village_detour_start
+ (send_carriage_ahead_from_carriage) [__Verfüge__: In Eibenreith aussteigen und die Kutsche voraus schicken. #key:n]
"Die Kutsche fährt voraus", sagst du. "Mit dem Gepäck. Und mit einer Nachricht, dass wir nachkommen."
~ route_inc(route_eccentric)
~ rel_inc(viktor_bold)
@@ -482,35 +522,23 @@ Nun zum ersten Mal gehört der Nachmittag dir.
~ mark(village_knowledge_prioritised)
~ mark(arrival_form_compromised)
Viktor sieht dich an, als hättest du nicht einen Weg, sondern eine Dienstvorschrift verlassen.
-> depart_for_village_on_foot
~ companion_join(viktor)
~ loc_move_to(loc_eibenreith_village)
Die Kutsche hält im Dorf. Das Jagdhaus ist nicht mehr Ziel, sondern eine Adresse, an die Gepäck und Nachricht vorausgeschickt werden können. Viktor ist nicht mehr nur Begleiter, sondern Zeuge einer Eigenmächtigkeit. Eibenreith wird nicht Kulisse, sondern Boden unter deinen Schuhen.
-> village_send_carriage_ahead
-> DONE
// ============================================================================
// EXIT BRANCHES INTO CHAPTER 04
// ============================================================================
=== afternoon_approach_bucket ===
* [__Prüfe Viktor__: „Welchen ersten Eindruck erwartet man dort oben?“]
"Welchen ersten Eindruck erwartet man dort oben?"
=== direct_to_hohenreith ===
~ companion_join(viktor)
~ loc_move_to(loc_hohenreith_arrival)
"Einen pünktlichen", sagt Viktor.
Die Kutsche fährt am Dorf vorbei, nicht schnell genug, um ungesehen zu bleiben. Häuser, Kirche, ein Brunnen, ein paar Gesichter im Fenster: Eibenreith wird zur Randnotiz eines höflichen Entschlusses. Doch Randnotizen haben die schlechte Gewohnheit, später den Sinn eines Schreibens zu verändern.
"Das war nicht meine Frage."
-> direct_hohenreith_arrival
=== depart_for_village_detour ===
~ companion_join(viktor)
~ loc_move_to(loc_eibenreith_village)
Die Kutsche hält im Dorf. Sofort verändert sich das Verhältnis der Dinge: Das Jagdhaus ist nicht mehr Ziel, sondern Verspätung; Viktor nicht mehr nur Begleiter, sondern Zeuge; Eibenreith nicht mehr Kulisse, sondern erster Gesprächspartner.
-> village_detour_start
=== depart_for_village_on_foot ===
~ companion_join(viktor)
~ loc_move_to(loc_eibenreith_village)
Die Kutsche hält im Dorf. Das Jagdhaus ist nicht mehr Ziel, sondern eine Adresse, an die Gepäck und Nachricht vorausgeschickt werden können. Viktor ist nicht mehr nur Begleiter, sondern Zeuge einer Eigenmächtigkeit. Eibenreith wird nicht Kulisse, sondern Boden unter deinen Schuhen.
-> village_send_carriage_ahead
"Doch", sagt er. "Nur nicht Ihre ganze."
-> TURN
-> DONE
+6 -6
View File
@@ -155,17 +155,17 @@ Noch bevor du die Familie siehst, ist aus der Reise eine Person geworden, die ma
}
{
- route_composure >= route_detective && route_composure >= route_lover && route_composure >= route_sapphic && route_composure >= route_careless && route_composure >= route_eccentric && route_composure > 0:
- route_is_highest(composure):
~ score_route = "Ihre bisher stärkste Maske ist Fassung: Form, Abstand und Selbstbeherrschung als Waffe."
- route_detective >= route_composure && route_detective >= route_lover && route_detective >= route_sapphic && route_detective >= route_careless && route_detective >= route_eccentric && route_detective > 0:
- route_is_highest(detective):
~ score_route = "Ihre bisher stärkste Methode ist Untersuchung: Sie ordnet, prüft und entlarvt, bevor sie sich rühren lässt."
- route_lover >= route_composure && route_lover >= route_detective && route_lover >= route_sapphic && route_lover >= route_careless && route_lover >= route_eccentric && route_lover > 0:
- route_is_highest(lover):
~ score_route = "Ihre bisher stärkste Methode ist Wirkung: Charme, Blick und soziale Wärme werden zu Werkzeugen."
- route_sapphic >= route_composure && route_sapphic >= route_detective && route_sapphic >= route_lover && route_sapphic >= route_careless && route_sapphic >= route_eccentric && route_sapphic > 0:
- route_is_highest(sapphic):
~ score_route = "Ihre bisher stärkste Bewegung ist Resonanz: Sie erkennt besonders dort Gefangenschaft, wo Frauen gelernt haben, sie schön zu nennen."
- route_careless >= route_composure && route_careless >= route_detective && route_careless >= route_lover && route_careless >= route_sapphic && route_careless >= route_eccentric && route_careless > 0:
- route_is_highest(careless):
~ score_route = "Ihre bisher stärkste Bewegung ist entwaffnende Unsicherheit: kleine Kontrollverluste, die andere näher heranlassen."
- route_eccentric >= route_composure && route_eccentric >= route_detective && route_eccentric >= route_lover && route_eccentric >= route_sapphic && route_eccentric >= route_careless && route_eccentric > 0:
- route_is_highest(eccentric):
~ score_route = "Ihre bisher stärkste Bewegung ist Regelbruch: Sie benennt, was höfliche Menschen nur umstellen."
- else:
~ score_route = "Ihre Persönlichkeit ist noch nicht auf eine einzige Maske festgelegt. Sie trägt mehrere Möglichkeiten nach Hohenreith hinein."
+75
View File
@@ -12,4 +12,79 @@
=== game_bucket ===
* {present(viktor)}
{train_compartment_bucket.asked_viktor_role} [__Prüfe Viktor__: „Hat sich Ihre Rolle seit dem Abteil geändert?“]
„Seit dem Abteil nennen wir Sie Sekretär“, sagst du. „Hat sich Ihre Rolle seitdem geändert?“
„Nein“, sagt Viktor. „Nur die Umgebung. Das ist meist gefährlicher.“
{rel_up(viktor_open, viktor_closed):
Er sagt es ohne Spott. Vielleicht, weil er inzwischen weiß, dass du die Antwort nicht mit dem Titel verwechselst.
- else:
Er sagt es so korrekt, dass die Korrektheit selbst wieder Teil der Rolle wird.
}
-> TURN
* {present(viktor)}
{train_compartment_bucket.read_hohenreith_request} [__Benenne__: Dass das Hilfsgesuch ausweicht.]
„Das Schreiben aus Hohenreith nennt vieles nicht.“
„Gute Schreiben tun das“, sagt Viktor. „Schlechte nur auffälliger.“
{route_repeated(detective, 3):
„Sie zählen Auslassungen wie andere Leute Namen zählen.“
„Namen lügen seltener durch Schweigen.“
- else:
„Das Schwierige wird sein, nicht jeder Lücke sofort einen Körper zu geben.“
}
-> TURN
* {present(viktor)}
{route_is_clear(detective, 2)} [__Prüfe__: Ob Viktor deine Fragen erwartet.]
„Sie sehen aus, als warteten Sie bereits auf meine nächste Frage.“
„Ich rechne mit ihr“, sagt Viktor. „Das ist weniger anstrengend, als überrascht zu werden.“
Seine Wachsamkeit hat die Form gewechselt. Sie steht nicht mehr nur zwischen dir und der Welt. Manchmal steht sie neben dir.
~ rel_inc(viktor_insightful)
-> TURN
* {present(viktor)}
{route_is_clear(eccentric, 2)} [__Benenne__: Dass Gehorsam nicht immer Klugheit ist.]
„Sie werden nicht mögen, dass ich das sage“, sagst du. „Aber Gehorsam ist nur in Berichten eine Tugend ohne Nebenwirkungen.“
Viktor sieht dich lange genug an, um eine dienstliche Antwort zu prüfen und zu verwerfen.
„Ich mag es nicht“, sagt er. „Das macht es nicht falsch.“
~ rel_inc(viktor_bold)
~ rel_inc(viktor_adversarial)
-> TURN
* {present(viktor)}
{route_is_clear(composure, 2)} [__Wahre Form__: Die höfliche Oberfläche als Werkzeug behandeln.]
„Man kann sehr viel sagen, ohne eine Regel sichtbar zu brechen.“
„Das ist der Grund, weshalb Regeln überleben“, sagt Viktor.
Für einen Augenblick klingt es nicht wie Warnung, sondern wie Anerkennung.
~ rel_inc(viktor_reliable)
-> TURN
* {present(viktor)}
{afternoon_approach_exits.send_carriage_ahead_from_carriage || village_detour_exits.send_carriage_ahead_from_village || village_send_carriage_ahead} [__Erinnere__: An die vorausgeschickte Kutsche.]
„Die Kutsche ist jetzt wahrscheinlich vor uns.“
„Ja“, sagt Viktor. „Mit Ihrem Gepäck, Ihrer Nachricht und dem Beweis, dass Sie Anweisungen sehr eigenwillig auslegen.“
{rel_up(viktor_bold, viktor_passive):
„Ich hätte widersprechen können“, fügt er hinzu.
„Haben Sie aber nicht.“
„Nein.“
- else:
„Ich nehme an, Sie möchten daraus eine Methode machen.“
}
-> TURN
-> DONE
@@ -1,4 +1,4 @@
// ============================================================================
// ============================================================================
// EIBENREITH CHARACTER GENERATOR
// ============================================================================
// Enthält Charaktergenerator-Weaves, die aus konkreten Spielsituationen
@@ -697,6 +697,98 @@
->->
// ============================================================================
// TRAIN CORRIDOR BODY / OUTFIT CHARACTER GENERATOR
// ============================================================================
=== train_corridor_tunnel_event ===
Der Zug stößt in einen Tunnel.
Das Land draußen erlischt. Die Scheiben verlieren Felder, Himmel und die hellen Fetzen von Ortschaften; übrig bleiben Messinggriffe, dunkles Holz und der bleiche Umriss deines Körpers.
Ausgerechnet jetzt wird das Glas nützlich. Es zeigt die Frau, die in Eibenreith aussteigen wird.
* {lacks(body_def)} [__Erkenne__: Eine kleine, schmale Gestalt.]
~ body = small_slender
Unter Mantel, Rock und Haltung bleibt etwas Knappes, Schnelles an dir: schmale Schultern, feine Handgelenke, ein Körper, den Räume leicht übersehen und Gespräche zu spät bemerken.
-> outfit_choice
* {lacks(body_def)} [__Erkenne__: Eine mittelgroße Gestalt mit ruhiger Gegenwart.]
~ body = medium_soft
Du wirkst nicht zerbrechlich. Die Taille ist geformt, nicht mädchenhaft; die Schultern sind ruhig, die Anwesenheit fester, als manche Männer an einer jungen Frau bequem finden.
-> outfit_choice
* {lacks(body_def)} [__Erkenne__: Eine hochgewachsene, schlanke Gestalt.]
~ body = tall_slender
Aufrecht stehend nimmst du mehr Raum ein, als deine Rolle verspricht: lange Linien, schmale Hände, eine Haltung, die Disziplin beinahe wie Herkunft aussehen lässt.
-> outfit_choice
* {lacks(body_def)} [__Erkenne__: Eine kompakte, kräftigere Gestalt.]
~ body = compact_strong
Reisekleidung und Korsett ordnen dich, aber sie verleugnen nicht alles. In Nacken, Unterarmen und Gleichgewicht liegt mehr Kraft, als man einer Dame höflich zutraut.
-> outfit_choice
- (outfit_choice)
Die Spiegelung spricht auch durch Stoff: was verborgen werden soll, was gezeigt werden darf, was nur eine andere Frau sofort versteht.
* [__Trage__: Ein dunkel anthrazitfarbenes Reisekostüm mit pflaumenfarbenem Samtkragen.]
~ outfit = charcoal_plum_velvet
Anthrazitfarbene Wolle, pflaumenfarbener Samt an Kragen und Manschetten: gedämpft genug für den Tag, teuer genug für Menschen mit Augen. #gloss[Reisekostüm](Damenkleidung für die Reise. Fest genug für Bahnhofsschmutz, korrekt genug für fremde Blicke, und unbequem genug, damit niemand vergisst, dass auch Zweckmäßigkeit weiblich auszusehen hat.)
* [__Trage__: Ein schwarzbraunes Wollkostüm mit elfenbeinfarbener Bluse und schmaler Spitze.]
~ outfit = black_brown_ivory_lace
Der Rock ist dunkel und schwer genug für die Reise, die Jacke streng, die elfenbeinfarbene Bluse am Hals hochgeschlossen. Die Spitze ist schmal, sauber und gefährlich nahe an Frömmigkeit.
* [__Trage__: Ein graublaues Kostüm mit kurzem Mantel und praktischen Knöpfen.]
~ outfit = blue_grey_practical
Graublaue Wolle, ein kurzer Mantel, ein Rock, der beim Aussteigen nicht sofort Verrat übt, und Knöpfe, die mehr nach Zweck als nach Schmuck aussehen.
* [__Trage__: Ein dunkelgrünes Kostüm mit schwarzem Besatz und passendem Hut.]
~ outfit = dark_green_black_trim
Das Grün ist so dunkel, dass es erst im Licht der Fenster sichtbar wird. Schwarzer Besatz, passende Handschuhe, ein Hut mit kleiner Feder: nicht laut, aber schwer zu vergessen.
* [__Trage__: Ein schwarzes Reisekleid mit Schleier, zu ernst für bloße Mode.]
~ outfit = black_veil_severe
Das Schwarz ist nicht Trauer, jedenfalls nicht offiziell. Ein schmaler Schleier, dunkle Handschuhe, glatter Rock. Kleidung, in der skeptische Männer leichter an Ahnungen glauben.
-
~ mark(body_def)
->->
// ============================================================================
// TRAIN CLERGY RELIGION CHARACTER GENERATOR
// ============================================================================
=== clergy_religion_tunnel ===
Eine Abteiltür öffnet sich, bevor du sie erreicht hast. Ein Priester tritt heraus, eine Mappe unter dem Arm, das Gesicht noch bei den Menschen im Abteil. Er will an dir vorbei und bleibt doch einen halben Schritt zu lange stehen. Hinter ihm hebt eine Nonne den Blick, senkt ihn wieder und sieht gerade dadurch genug. #gloss[Nonne](Ordensfrau. Von der Welt getrennt zu sein bedeutet nicht, sie nicht lesen zu können.)
* [__Bekenne__: Dich bekreuzigen und ehrerbietig grüßen.]
~ relig = catholic
Gott ist kein Gesprächsthema für Abteile. Du glaubst nicht kindlich, aber tief: an Sünde, Gnade, Sakrament, Versuchung und an die gefährliche Nähe der unsichtbaren Welt. #gloss[Sakrament](Heilige Handlung der katholischen Kirche. In einer katholischen Gesellschaft ist es zugleich Gnade, Ordnung und öffentliche Form.)
* [__Ordne ein__: Höflich nicken, wie man es gelernt hat.]
~ relig = social
Du nickst mit der richtigen Mischung aus Achtung und Distanz. Du kennst Feiertage, Beichten, Prozessionen und die Macht eines Pfarrers über Menschen, die behaupten, ihn nicht zu fürchten.
* [__Misstraue__: Den Blick halten, aber keinen Schritt zu viel weichen.]
~ relig = reform
Du weichst höflich genug aus, aber nicht demütig. Priester erklären zu oft, was sie zuerst besitzen möchten: Schuld, Frauen, Armut und Angst.
* [__Verbinde__: Im Segen auch die Toten hören.]
~ relig = spiritist
Heiligenbilder, Totenmessen, Séancen, Träume: Die sauberen Grenzen dazwischen scheinen dir eher von Männern gezogen als von der Ewigkeit selbst. #gloss[Séancen](Geistersitzungen mit Tisch, gedämpftem Licht und sehr viel Erwartung. Je dunkler der Raum, desto leichter glauben die Anwesenden, sie sähen klar.)
* [__Erinnere dich__: Dass der Glaube dich formte, bevor du dich wehren konntest.]
~ relig = wounded
Du kennst die Gebete zu gut, um sie einfach abzulegen, und die Schuld zu gut, um sie fromm zu nennen. Katholische Bilder sind für dich keine Dekoration. Sie greifen nach Stellen, die du lieber versiegelt hieltest.
-
~ mark(relig_def)
Der Priester neigt den Kopf, als habe er genau so viel erfahren, wie Höflichkeit erlaubt. Dann tritt er in sein Abteil zurück und schließt die Tür.
->->
// ============================================================================
// WASHROOM MIRROR CHARACTER GENERATOR
// ============================================================================
@@ -771,5 +863,5 @@ Das Gesicht im Spiegel ist deutlich genug, um nicht mehr auszuweichen.
Du befestigst Hut und Nadeln und ziehst die Handschuhe wieder an. Das Gesicht, das nach Hohenreith reisen wird, ist wieder gesellschaftsfähig.
~ mark(washroom_freshened_up)
~ state_reach_if_started((mirror_done, freshen_up_done))
-> TURN
@@ -126,6 +126,7 @@ Dauerhafte Regeln:
- Richtige Richtung: Wahre Form, Prüfe, Entwaffne, Verplappere dich, Benenne, Schone, Trotze, Reize, Präzisiere, Zügle dich.
- Jede Dialogzeile soll sozial gelesen werden: Was tut Valerie mit diesem Satz?
- Nicht nur relevant, was sie sagt, sondern zu wem sie es sagt.
- Verbindliche Dialogchoice-Form: `[__%Verb% %Figur%__: „%gesprochene Zeile%“]`, sofern die Choice eine tatsächlich gesprochene Zeile darstellt.
- Reaktion muss Wirkung zeigen: Nähe, Distanz, Kontrolle, Irritation, Vertrauen, Öffentlichkeit.
- Valeries gesprochene Zeilen sollen nicht automatisch im Fließtext stehen, wenn der Spieler an dieser Stelle wählen soll.
@@ -2312,8 +2313,8 @@ Aktiv verwendete Choice-Tags:
#action:name
#auto
#auto(2)
#auto[keyword]
#auto[keyword](2)
#auto:keyword
#auto:keyword(2)
```
Ältere oder geplante Metadaten wie `#id`, `#bucket`, `#priority`, `#route`, `#required`, `#repeat`, `#weight`, `#slot`, `#episode`, `#group` und `#location` sind derzeit keine verbindliche aktive UI-/Engine-Filterlogik. Sie dürfen nicht als funktionierend vorausgesetzt werden, bis Parser, Server und UI sie nachweislich unterstützen.
@@ -2328,7 +2329,7 @@ Beispiel:
-> TURN
```
Die Ink-Seite zählt keine Auto-Turns und setzt keine Auto-Flags. Ein Zahlenparameter begrenzt die Auslösung auf mindestens diese Anzahl UI-Choice-Turns seit dem letzten passenden Auto-Trigger. Ohne Keyword gilt die Begrenzung global; mit Keyword gilt sie nur für Auto-Trigger desselben Keywords. Beispiel: `#auto[tunnel](2)` wartet zwei Choice-Turns seit dem letzten `tunnel`-Auto, blockiert aber keinen `#auto[religion]`.
Die Ink-Seite zählt keine Auto-Turns und setzt keine Auto-Flags. Ein Zahlenparameter begrenzt die Auslösung auf mindestens diese Anzahl UI-Choice-Turns seit dem letzten passenden Auto-Trigger. Ohne Keyword gilt die Begrenzung global; mit Keyword gilt sie nur für Auto-Trigger desselben Keywords. Beispiel: `#auto:tunnel(2)` wartet zwei Choice-Turns seit dem letzten `tunnel`-Auto, blockiert aber keinen `#auto:religion`. Auf Choice-Zeilen ist für keyed Auto-Tags die Doppelpunktform verbindlich.
## 5.16 Do / Don't für Dialogchoices
@@ -3367,6 +3368,8 @@ Standardwerte pro wichtiger Figur:
Diese Werte sind nicht paarweise zu einem einzigen Vorzeichenwert reduziert. Ein NPC kann Valerie zugleich offen und verschlossen, zuverlässig und unzuverlässig erlebt haben.
Die Richtung der Matrix ist immer: **Figur liest Valerie**. `viktor_insightful` bedeutet, dass Viktor Valerie als einsichtsvoll, scharf oder wahrnehmungsfähig erlebt. Es bedeutet nicht, dass Viktor selbst einsichtsvoll handelt. Wenn Viktors Verhalten beschrieben werden soll, gehört das in Prosa, einen Encounter-State oder eine konkrete Szene.
## 8.2 Warum Ink-intern
Die Beziehungsmatrix bleibt Ink-intern, weil die wichtigen Figuren endlich und authored sind. Ein engine-seitiges String-Dictionary wäre flexibler, aber weniger transparent beim Schreiben.
@@ -3482,6 +3485,11 @@ Aus Jon Ingolds *Narrative Sorcery* gilt:
- Encounters speichern Fortschritt nicht über willkürliche Flags, sondern über klare semantische Zustände.
- Ink-`LIST`s sind das richtige Werkzeug für geordnete State Chains.
- State Chains sind High-Water-Marks: Ein späterer Zustand impliziert die früheren Zustände derselben Kette.
- Sobald ein Tracker einen linearen Vorgang ausdrückt, wird dafür eine eigene `LIST` mit den `state_*`-Helfern verwendet. Das gilt auch für Zwei-Zustand-Vorgänge wie begonnen und vollendet.
- Der Nullzustand einer Progress-Liste ist die leere Kette. Er wird nicht als eigenes `none`-, `unknown`- oder `unset`-Element in die Liste geschrieben. Bei Bedarf wird er mit `state_unstarted(state)` abgefragt.
- Eine Kette wird mit `state_reach(first_state)` begonnen. Spätere Handlungen, die eine bereits begonnene Kette erfüllen können, verwenden `state_reach_if_started(later_state)`. So kann eine allgemeine Handlung mehrere aktive Vorgänge bedienen, ohne einen davon rückwirkend zu starten.
- Wenn ein komplexer Encounter sauberer durch mehrere parallele Progress-Tracker modelliert werden kann, ist diese Variante einer großen Sammelkette vorzuziehen. So funktionieren auch Inkle-artige Knowledge-Bases: getrennte Wissens- und Fortschrittslinien entwickeln sich unabhängig und werden erst im Content gemeinsam abgefragt.
- `mark`, `has` und `lacks` sind nur für zusammengehörige Gruppen einzelner Facts gedacht, die unabhängig voneinander wahr sein können und keine Reihenfolge implizieren.
- Diese State Chains sind Autorwerkzeuge, keine sichtbaren Questbäume. Der Spieler soll sie nicht „abarbeiten“, sondern sich frei in einer glaubwürdigen Situation verhalten.
State Trees sollen Bedeutung modellieren, nicht Knotenbesuche. Für einfache Fragen wie „wurde dieser Knot schon gelesen?“ ist Ink-eigener Visit-State zu verwenden. Keine zusätzlichen Flags für bloße Knot-Besuche anlegen.
@@ -3834,8 +3842,66 @@ Konvention:
~ route_inc(route_sapphic)
~ route_inc_by(route_detective, 2)
{route_reached(route_composure, 3): ...}
{route_repeated(detective, 3): ...}
{route_is_clear(detective, 2): ...}
{route_beats(composure, eccentric, 2): ...}
```
Die einfachen `route_*`-Zähler speichern Valeries wiederholte Ausdrucksmodi. Für autorenseitige Heuristiken gibt es zusätzlich `RouteId`-Werte:
- `composure`
- `detective`
- `lover`
- `sapphic`
- `careless`
- `eccentric`
`route_repeated(route_id, amount)` bedeutet, dass diese Route oft genug gewählt wurde, um als Muster gelesen zu werden. `route_is_highest(route_id)` bedeutet, dass diese Route derzeit die höchste ist oder den höchsten Stand teilt. `route_is_clear(route_id, margin)` bedeutet, dass diese Route um mindestens `margin` vor allen anderen liegt. Diese Funktionen sind Heuristiken, keine Erinnerungen an konkrete Entscheidungen.
## 12.5.1 Tracking-Domänen
Die Tracking-Methoden dürfen nicht vermischt werden. Jede Variable oder Bedingung muss klar zu einer dieser Domänen gehören:
- **Route-Heuristiken:** Valeries allgemeiner Ruf, wiederholte soziale Muster und Ending-Färbung. Dafür dienen `route_composure`, `route_detective`, `route_lover`, `route_sapphic`, `route_careless`, `route_eccentric` und die `route_*`-Helfer.
- **Character Matrix:** Was eine bestimmte Figur über Valerie denkt und wie sie auf Valeries Gegenwart und Handlungen reagiert. `viktor_insightful` bedeutet: Viktor liest Valerie als scharfsinnig. Es bedeutet nicht, dass Viktor scharfsinnig handelt.
- **Callbacks:** Konkrete frühere Choices oder konkret ausgespielte Inhalte. Diese werden über Ink-eigene Labels an Choices, Gathers, Stitches oder Knots getrackt, zum Beispiel `(asked_viktor_role)` und später `{train_compartment_bucket.asked_viktor_role}`. Für gewöhnliche Callbacks werden keine parallelen `cb_*`-Facts angelegt.
- **Encounter State Tracker:** Fortschritt in offscreen Plotlines, Wissensketten, Zielketten, NPC-Handlungen oder Beziehungsentwicklung entlang einer Plotline. Sie sind High-Watermark-Ketten: ein späterer Zustand impliziert alle früheren Zustände derselben Liste. Sie dürfen niemals verwendet werden, um zu tracken, ob ein bestimmtes Stück Content gespielt wurde.
Sobald ein Tracker einen linearen Vorgang ausdrückt, wird er als eigene `LIST` mit `state_reach`, `state_reached`, `state_before` und den übrigen `state_*`-Helfern modelliert. Das gilt auch für Zwei-Zustand-Vorgänge wie begonnen und vollendet. Wenn Vollendung den Beginn logisch einschließt, ist es ein Progress-Tracker.
Der Nullzustand einer solchen Kette ist implizit: Aus dieser `LIST` wurde noch kein Wert in `story_state` gesetzt. Dafür wird kein eigener `none`-Wert angelegt. `state_started(state)` prüft, ob irgendein Wert derselben Kette erreicht wurde; `state_unstarted(state)` prüft den leeren Zustand.
`state_reach_if_started(state)` ist für allgemeine Handlungen gedacht, die eine begonnene Kette weiterführen können, aber diese Kette nicht selbst eröffnen dürfen. Beispiel: Händewaschen kann `freshen_up_done` erreichen, wenn `freshen_up_started` bereits gesetzt ist; es darf aber nicht rückwirkend behaupten, Valerie sei mit dieser Absicht gegangen.
Komplexe Encounter sollen bevorzugt in mehrere parallele Progress-Tracker zerlegt werden, wenn das die Autorlogik klarer macht. Eine Wissenslinie, eine soziale Verhandlungsphase und eine praktische Aufgabe dürfen getrennte Listen sein, auch wenn sie im selben Encounter zusammenwirken. Content fragt dann die Kombination dieser Listen ab.
Zusätzlich gibt es unabhängige Facts mit `mark`, `has` und `lacks`. Diese sind nur für zusammengehörige Gruppen einzelner Facts gedacht, die unabhängig voneinander wahr sein können und keine Reihenfolge implizieren, etwa Tutorial gesehen, Mahlzeit am Bahnhof genommen, öffentliche Form gewahrt oder beschädigt. Solche Facts sind keine Callbacks, solange sie nicht ein konkretes abgespieltes Contentstück ersetzen.
Für Choice-Surface-Arbitration gibt es `claim_choice_gate(gate)`. Dieser Helper ist kein Story-State. Er wird am Anfang jedes `provide_choices` zurückgesetzt und gibt innerhalb dieses einen Choice-Aufbaus nur beim ersten gültigen Claim für dasselbe Gate `true` zurück. Er wird verwendet, wenn mehrere Atome gleichzeitig gültig sein können, aber höchstens eines davon auf der Oberfläche erscheinen darf. Der wichtigste Fall sind priorisierte `#auto`-Familien wie Viktors Rückkehrkommentare.
Die Reihenfolge der Atome im Bucket ist dann die Priorität. Auto-Choices werden vom Client getrennt behandelt, nicht randomisiert und wie normale Ink-Choices ausgelöst. Ein gemeinsamer Auto-Key wie `#auto:return(2)` taktet die Familie über mehrere Choice-Turns; `claim_choice_gate(return_auto)` verhindert mehrere Treffer im selben Choice-Aufbau. Der Gate-Claim steht immer als letzte Bedingung hinter den normalen Verfügbarkeitsbedingungen, damit eine falsche Kandidaten-Choice das Gate nicht verbraucht. Auf Choice-Zeilen wird für keyed Auto-Tags die Doppelpunktform verwendet, weil `#auto[return](2)` dort von Ink nicht akzeptiert wird.
Regel: Wenn die spätere Zeile „du hast damals genau X getan“ bedeutet, ist es ein Callback und soll über ein Ink-Label laufen. Wenn sie „du wirkst auf mich inzwischen wie Y“ bedeutet, ist es eine Heuristik. Wenn sie „diese Wissens- oder Plotlinie ist jetzt mindestens so weit“ bedeutet, ist es ein Encounter State. Wenn sie „dieses unabhängige Ergebnis gilt“ bedeutet, ist es ein Fact. Wenn ein Vorgang auch nur begonnen und vollendet kennt, aber Vollendung den Beginn voraussetzt, ist es bereits ein Encounter State.
Nie zulässig:
- Alternative Outcomes in eine einzige `state_reach`-Kette legen.
- `state_reach` verwenden, um „Content X wurde gespielt“ zu speichern.
- Route-Werte oder Relationship-Werte verwenden, wenn der Text eine konkrete frühere Wahl braucht.
- `cb_*`-Facts für normale Ink-Callbacks anlegen.
## 12.5.2 Companion- und Privacy-Helfer
Für Dialoge, die nur ohne Zeugen oder nur mit einer bestimmten Begleitfigur auftauchen sollen:
```ink
{present(viktor): ...}
{alone(): ...}
{alone_with(viktor): ...}
```
`present(character)` prüft, ob die Figur im aktuellen Raum ist. `alone()` ist wahr, wenn keine getrackte Figur im Raum ist. `alone_with(character)` ist wahr, wenn genau diese Figur anwesend ist. Bei neuen getrackten Figuren muss die Helper-Implementierung erweitert werden, damit `alone()` und `alone_with()` nicht still zu eng bleiben.
## 12.6 Conditionals
Erweitertes Format:
@@ -3888,11 +3954,17 @@ Regeln:
- Keine Ereignisse als Choice anbieten, die Valerie nicht kontrollieren kann.
- Türen, Übergänge und unbekannte Bereiche heißen vor der Entdeckung `Versuche`, `Öffne`, `Geh weiter`, `Sieh nach`, nicht nach ihrem späteren Ziel.
- Automatische äußere Ereignisse wie Tunnel, Pfiffe, Erschütterungen oder eintretende Figuren werden als Moment-Events ausgespielt oder hinter eine plausible Wahrnehmungshandlung gelegt.
- Dialogchoices, die eine gesprochene Zeile darstellen, enthalten diese Zeile im Choice-Text. Ist der Adressat nicht eindeutig, steht er im fett gesetzten Handlungsteil vor dem Doppelpunkt.
- Die verbindliche Form lautet `[__%Verb% %Figur%__: „%gesprochene Zeile%“]`, zum Beispiel `[__Prüfe Viktor__: „Welche Zeile betrifft Sie, Herr Nowak?“]`.
- Nicht zulässig ist die zusammenfassende Form `[__Frage__: Viktor, weshalb er wirklich mitreist.]`. `Frage`, `Sage`, `Antworte` und `Sprich` sind als neutrale UI-Verben zu schwach und nur in begründeten Ausnahmefällen erlaubt.
- Die Verben sollen Valeries soziale Bewegung benennen, nicht nur die Mechanik des Sprechens. Gute Richtungen sind `Prüfe`, `Wahre Form`, `Entwaffne`, `Benenne`, `Schone`, `Trotze`, `Reize`, `Zügle dich`, `Erkundige dich bei`, `Fordere`, `Lege offen`.
Beispiel:
- Falsch: `Prüfe: Die Tür zu den Wagen zweiter und dritter Klasse.`
- Richtig: `Versuche: Die andere Übergangstür.`
- Falsch: `Frage: Viktor, weshalb er wirklich mitreist.`
- Richtig: `Prüfe Viktor: „Welche Zeile betrifft Sie, Herr Nowak?“`
## 13.3 Tags
@@ -3957,7 +4029,7 @@ Der Zug ist das erste begehbare Ambiente. Der Weg zum Waschraum ist der zentrale
- Wagen mit Waschraum,
- daran anschließend der Speisewagen.
Die Charaktergenerierung nutzt nur dort Progressionslisten, wo es echte semantische Ketten gibt. Unabhängige Pflichtdefinitionen bleiben checklistartige Fakten. Jeder Schritt ist ein einmaliger Moment-Atom, der nur im passenden Bereich und erst nach seinen Voraussetzungen auftaucht. Wiederholbare Traversal-Entscheidungen sorgen dafür, dass der Spieler dieselben Orte mehrfach passieren kann, bis der nächste passende Moment plausibel erscheint. Keine dieser Voraussetzungen soll an jede einzelne Choice geschrieben werden; sie gehört in den jeweiligen Atom-Provider oder Traversal-Provider.
Die Charaktergenerierung nutzt Progressionslisten für lineare Vorgänge und unabhängige Facts nur für wirklich voneinander unabhängige Definitionen. Jeder Schritt ist ein einmaliger Moment-Atom, der nur im passenden Bereich und erst nach seinen Voraussetzungen auftaucht. Wiederholbare Traversal-Entscheidungen sorgen dafür, dass der Spieler dieselben Orte mehrfach passieren kann, bis der nächste passende Moment plausibel erscheint. Keine dieser Voraussetzungen soll an jede einzelne Choice geschrieben werden; sie gehört in den jeweiligen Atom-Provider oder Traversal-Provider.
Pflichtdefinitionen:
@@ -3999,6 +4071,7 @@ Sinnvolle Papierrollen:
- **Viktors Memorandum:** bleibt zentral. Es enthält Reiseangelegenheiten, Cover-Story, zulässige Sprache, Auftrag der Kabinettskanzlei Seiner Majestät und vermutlich eine nicht gezeigte Handlungsanweisung zum Umgang mit Valerie.
- **Amtschreiben / Viktors versiegelte Anweisungen:** ein Schreiben der Kabinettskanzlei Seiner Majestät ist sichtbar. Valerie war anwesend, als Viktor das Kuvert mit seinen Anweisungen übergeben wurde, hat es aber nur von außen gesehen.
- **Hohenreiths Hilfsgesuch / Einladung / Bittschrift:** beste Quelle für den eigentlichen Anlass. Dieses Schreiben wurde an die Kabinettskanzlei Seiner Majestät gerichtet, nicht an Valerie persönlich. Valerie hat es bei der mündlichen Unterweisung gelesen, bei der ihr Viktor vorgestellt wurde. Im Zug ist es in Viktors Mappe sichtbar und kann erneut angefordert werden.
- **Aktueller Wissensstand im Intro:** Das Hilfsgesuch nennt weder Valerie noch Amalia und spricht auch nicht ausdrücklich von einer Tochter. Es benennt nur Störungen im Haushalt und dessen Umfeld. Intro-Content darf deshalb vor der Einführung in Hohenreith nicht so tun, als wüssten Valerie oder Viktor bereits, dass Amalia der Kern des Auftrags ist. Figuren dürfen die Auslassung bemerken, aber nicht wissen, wen sie betrifft.
- **Valeries amtliche Erfassung / Reiseformular / Passagierformalität:** bester Auslöser für Stand und Namen. Viktor händigt Valerie den Vordruck aus; der Spieler füllt ihn selbst aus. Es geht nicht um falsche Identität, sondern darum, welche soziale Wahrheit diese Valerie in der Welt hat.
- **Valeries persönliches Notizbuch / Tagebuch / Visitenkartenetui:** möglich, aber nicht nötig für die Mission. Es kann später Persönlichkeit zeigen, sollte aber nicht die zentrale Akte ersetzen.
+174 -1
View File
@@ -43,6 +43,7 @@ VAR current_episode_bucket = -> empty_bucket
VAR current_episode_start = -> empty_bucket
VAR current_episode_end = -> empty_bucket
VAR current_game_bucket = -> game_bucket
VAR claimed_choice_gates = ()
VAR slot_early_morning_episode = no_episode
VAR slot_mid_morning_episode = episode_train_intro
@@ -78,6 +79,7 @@ VAR slot_late_night_episode = no_episode
=== provide_choices ===
~ claimed_choice_gates = ()
{
- room_seen_on_enter():
<- current_moment_bucket
@@ -92,6 +94,34 @@ VAR slot_late_night_episode = no_episode
-> DONE
// Claim a transient gate for this single choice-surface build.
//
// This is not story state. It is cleared at the start of provide_choices and is
// used only to arbitrate between multiple choices that could otherwise surface
// together, especially prioritized #auto choices. The first condition in source
// order that claims a gate returns true; later claims of the same gate return
// false until the next choice surface is built.
//
// Use sparingly, and only where the surface must offer at most one item from a
// family. Normal story memory belongs in Ink callbacks, state_* chains, or
// mark/has/lacks facts.
//
// Example:
// Put claim_choice_gate last in the condition list. Earlier conditions should
// prove that the choice is valid before this side-effecting helper consumes the
// gate.
//
// * {state_reached(freshen_up_done)} {claim_choice_gate(return_auto)} [...] #auto:return(2)
=== function claim_choice_gate(gate) ===
{
- claimed_choice_gates ? gate:
~ return false
- else:
~ claimed_choice_gates += gate
~ return true
}
=== empty_bucket ===
-> DONE
@@ -157,6 +187,18 @@ VAR route_eccentric = 0
// - route_reached(route, amount): true when the counter is >= amount.
// - route_between(route, min, max): true when the counter is within the
// inclusive range min..max.
// - route_value(route_id): returns a route counter by RouteId LIST item.
// - route_total(): total number of route-marking choices taken.
// - route_beats(route_id, other_route_id, margin): true when one route is ahead
// of another by at least margin.
// - route_repeated(route_id, amount): true when a route has been chosen at
// least amount times. Use for "player keeps choosing this mode" heuristics.
// - route_is_highest(route_id): true when a route is tied for or holds the
// highest current route total and has been chosen at least once.
// - route_is_clear(route_id, margin): true when a route leads every other route
// by at least margin. Use this for strong heuristic tone changes.
// - route_share_reached(route_id, numerator, denominator): true when a route is
// at least numerator/denominator of all route-marking choices.
//
// Route counters are simple totals, not Ingold-style two-value axes. Do not use
// them with relationship matrix helpers.
@@ -194,6 +236,76 @@ VAR route_eccentric = 0
=== function route_between(value, min, max) ===
~ return value >= min && value <= max
=== function route_value(route_id) ===
{
- route_id ? composure:
~ return route_composure
- route_id ? detective:
~ return route_detective
- route_id ? lover:
~ return route_lover
- route_id ? sapphic:
~ return route_sapphic
- route_id ? careless:
~ return route_careless
- route_id ? eccentric:
~ return route_eccentric
- else:
~ return 0
}
=== function route_total() ===
~ return route_composure + route_detective + route_lover + route_sapphic + route_careless + route_eccentric
=== function route_best_value() ===
{
- route_composure >= route_detective && route_composure >= route_lover && route_composure >= route_sapphic && route_composure >= route_careless && route_composure >= route_eccentric:
~ return route_composure
- route_detective >= route_composure && route_detective >= route_lover && route_detective >= route_sapphic && route_detective >= route_careless && route_detective >= route_eccentric:
~ return route_detective
- route_lover >= route_composure && route_lover >= route_detective && route_lover >= route_sapphic && route_lover >= route_careless && route_lover >= route_eccentric:
~ return route_lover
- route_sapphic >= route_composure && route_sapphic >= route_detective && route_sapphic >= route_lover && route_sapphic >= route_careless && route_sapphic >= route_eccentric:
~ return route_sapphic
- route_careless >= route_composure && route_careless >= route_detective && route_careless >= route_lover && route_careless >= route_sapphic && route_careless >= route_eccentric:
~ return route_careless
- route_eccentric >= route_composure && route_eccentric >= route_detective && route_eccentric >= route_lover && route_eccentric >= route_sapphic && route_eccentric >= route_careless:
~ return route_eccentric
- else:
~ return 0
}
=== function route_beats(route_id, other_route_id, margin) ===
~ return route_value(route_id) - route_value(other_route_id) >= margin
=== function route_repeated(route_id, amount) ===
~ return route_value(route_id) >= amount
=== function route_is_highest(route_id) ===
~ return route_value(route_id) > 0 && route_value(route_id) >= route_best_value()
=== function route_is_clear(route_id, margin) ===
{
- route_id ? composure:
~ return route_composure > 0 && route_composure - route_detective >= margin && route_composure - route_lover >= margin && route_composure - route_sapphic >= margin && route_composure - route_careless >= margin && route_composure - route_eccentric >= margin
- route_id ? detective:
~ return route_detective > 0 && route_detective - route_composure >= margin && route_detective - route_lover >= margin && route_detective - route_sapphic >= margin && route_detective - route_careless >= margin && route_detective - route_eccentric >= margin
- route_id ? lover:
~ return route_lover > 0 && route_lover - route_composure >= margin && route_lover - route_detective >= margin && route_lover - route_sapphic >= margin && route_lover - route_careless >= margin && route_lover - route_eccentric >= margin
- route_id ? sapphic:
~ return route_sapphic > 0 && route_sapphic - route_composure >= margin && route_sapphic - route_detective >= margin && route_sapphic - route_lover >= margin && route_sapphic - route_careless >= margin && route_sapphic - route_eccentric >= margin
- route_id ? careless:
~ return route_careless > 0 && route_careless - route_composure >= margin && route_careless - route_detective >= margin && route_careless - route_lover >= margin && route_careless - route_sapphic >= margin && route_careless - route_eccentric >= margin
- route_id ? eccentric:
~ return route_eccentric > 0 && route_eccentric - route_composure >= margin && route_eccentric - route_detective >= margin && route_eccentric - route_lover >= margin && route_eccentric - route_sapphic >= margin && route_eccentric - route_careless >= margin
- else:
~ return false
}
=== function route_share_reached(route_id, numerator, denominator) ===
~ temp total = route_total()
~ return total > 0 && route_value(route_id) * denominator >= total * numerator
// ============================================================================
// TIME-SLOT HELPERS
// ============================================================================
@@ -409,6 +521,8 @@ VAR route_eccentric = 0
// - accompanied_by(character): true when character is in the companion list.
// - companion_join(character), companion_leave(character): update companions.
// - present(character): true when a character's location equals current_location.
// - alone(): true when no tracked NPC is currently present with Valerie.
// - alone_with(character): true when exactly the given tracked NPC is present.
// - character_move_to(character, location): move a known NPC independently.
//
// Structural helper:
@@ -448,6 +562,17 @@ VAR route_eccentric = 0
~ return false
}
=== function alone() ===
~ return not present(viktor)
=== function alone_with(character) ===
{
- character == viktor:
~ return present(viktor)
- else:
~ return false
}
=== function character_move_to(character, location) ===
{
- character == viktor:
@@ -503,9 +628,13 @@ VAR story_state = ()
//
// Author-facing helpers:
// - state_reach(state_or_states): advance one or more ordered LIST states.
// - state_reach_if_started(state_or_states): advance only chains that already
// have any reached state; useful when one action can complete an already
// started task but must not start it retroactively.
// - state_move_to(state): readable alias for state_reach(state).
// - state_reached(state), state_before(state), state_between(a, b),
// state_is(state), state_current(state): query ordered progress.
// state_started(state), state_unstarted(state), state_is(state),
// state_current(state): query ordered progress.
// - mark(fact_or_facts), has(fact_or_facts), lacks(fact_or_facts): manage exact
// checklist facts.
// - tutorial(tutorial_fact): returns true once and marks the tutorial as shown.
@@ -575,6 +704,27 @@ VAR story_state = ()
}
// Return true if any state in the same LIST chain has been reached.
// This is the generic "not null" check for a progress tracker.
//
// Use when content needs to know whether a linear process has begun at all,
// without caring which exact step is current.
//
// Example:
// {state_started(freshen_up_done): ...}
=== function state_started(state) ===
~ return LIST_COUNT(story_state ^ LIST_ALL(state)) > 0
// Return true if no state in the same LIST chain has been reached.
// This is the generic null-state check for a progress tracker.
//
// Example:
// {state_unstarted(freshen_up_started): ...}
=== function state_unstarted(state) ===
~ return not state_started(state)
// Mark a state, or a list of states, as reached.
// High-watermark behavior:
// reaching a state automatically reaches all earlier states in the same LIST chain.
@@ -600,6 +750,29 @@ VAR story_state = ()
}
// Mark a state, or list of states, as reached only if its own LIST chain has
// already begun.
//
// Use this for actions that can satisfy an already stated intention or progress
// an already active line, but must not create that line retroactively.
//
// Example:
// ~ state_reach_if_started(freshen_up_done)
// ~ state_reach_if_started((freshen_up_done, unwell_managed))
=== function state_reach_if_started(states_to_set) ===
~ temp x = state_pop(states_to_set)
{
- not x:
~ return false
- state_started(x):
~ return state_reach(x) || state_reach_if_started(states_to_set)
- else:
~ return false || state_reach_if_started(states_to_set)
}
// Return true if every given independent fact has been marked.
// Facts are exact checklist items, not forward-moving encounter states.
// Example:
+18 -6
View File
@@ -13,6 +13,7 @@ LIST EpisodeId = no_episode, episode_train_intro, episode_station_midday, episod
LIST MealPlan = meal_unset, dining_car, station_restaurant, light_refreshment, skipped
LIST Location = loc_train_compartment, loc_train_home_corridor, loc_train_clergy_corridor, loc_train_washroom_corridor, loc_train_washroom, loc_train_dining_car, loc_train_rear_lookout, loc_train_second_class_door, loc_station_platform, loc_station_restaurant, loc_carriage, loc_carriage_halt, loc_crossroad_statue, loc_forest_clearing, loc_roadside_statue, loc_eibenreith_village, loc_hohenreith_arrival, loc_hohenreith_dining_room
LIST Character = viktor
LIST RouteId = composure, detective, lover, sapphic, careless, eccentric
LIST Class = noble, middle, working
LIST Relig = catholic, social, reform, spiritist, wounded
@@ -22,9 +23,16 @@ LIST Outfit = charcoal_plum_velvet, black_brown_ivory_lace, blue_grey_practical,
LIST Hair = dark_brown, chestnut, dark_blond_ash, auburn
LIST Style = centre_part_low_bun, soft_waves_chignon, braided_low_knot, raised_front_modern
LIST Face = cool_sharp, soft_alert, calm_dark_eyes, fine_controlled, marked_jaw
LIST Def = class_def, name_def, relig_def, body_def, face_def, belief_def, route_language_def, dining_car_known_def, intro_def
LIST WashroomMission = washroom_claim_freshen_up, washroom_claim_explore_train, washroom_claim_mirror, washroom_claim_privacy, washroom_claim_unwell, washroom_claim_silent, washroom_entered, washroom_toilet_used, washroom_freshened_up, washroom_return_acknowledged
LIST Def = class_def, name_def, relig_def, body_def, face_def, belief_def, route_language_def, intro_def
LIST DiningCarDiscovery = dining_car_unseen, dining_car_seen
LIST FreshenUpTask = freshen_up_started, freshen_up_done
LIST ExploreTrainTask = explore_train_started, explore_train_done
LIST MirrorTask = mirror_started, mirror_done
LIST PrivacyTask = privacy_started, privacy_taken
LIST UnwellTask = unwell_started, unwell_managed
LIST WashroomFact = washroom_toilet_used
LIST Tutorial = tut_choice_intro, tut_traversal_intro, tut_character_intro, tut_dialog_intro, tut_optional_intro
LIST ChoiceGate = return_auto
// ============================================================================
// SYSTEM INCLUDES
@@ -46,9 +54,11 @@ INCLUDE 01_zug.ink
// ============================================================================
// CHAPTER 02 STATE LISTS
// ============================================================================
LIST PublicPersona = public_unseen, noticed_as_lady, noticed_as_official_arrival, station_audience_tested, public_mask_established, public_mask_strained
LIST PublicPersona = public_unseen, noticed_as_lady, noticed_as_official_arrival, station_audience_tested
LIST PublicFact = public_mask_established, public_mask_strained
LIST ServiceWorld = service_unseen, staff_as_function_noticed, staff_as_witnesses_noticed, staff_as_network_suspected, staff_as_power_source_understood
LIST ArrivalLogistics = arrival_logistics_unknown, meal_plan_chosen, meal_taken_in_train, meal_taken_at_station, meal_skipped_or_light, carriage_arranged, baggage_handed_over, road_departure_ready
LIST ArrivalLogistics = arrival_logistics_unknown, meal_plan_chosen, carriage_arranged, baggage_handed_over, road_departure_ready
LIST ArrivalMealFact = meal_taken_in_train, meal_taken_at_station, meal_skipped_or_light
INCLUDE 02_bahnhof.ink
@@ -57,7 +67,8 @@ INCLUDE 02_bahnhof.ink
// ============================================================================
LIST OldSiteKnowledge = old_site_unknown, managed_landscape_seen, religious_markers_seen, old_boundary_felt, old_name_heard, prechristian_underlayer_suspected, old_site_has_claim
LIST ThresholdCrossing = ordinary_travel, city_order_receding, valley_order_emerging, local_rules_beginning, return_feels_less_simple
LIST SupernaturalFaculty = faculty_unframed, no_claim_made, intuition_framed, sensory_anomaly_framed, performance_framed, faculty_committed
LIST SupernaturalFaculty = faculty_unframed, faculty_committed
LIST FacultyFrame = no_claim_made, intuition_framed, sensory_anomaly_framed, performance_framed
LIST AfternoonOutcome = punctual_arrival_preserved, village_knowledge_prioritised, arrival_form_compromised
INCLUDE 03_kutschenfahrt.ink
@@ -68,7 +79,8 @@ INCLUDE 03_anreise_routes.ink
// ============================================================================
LIST EibenreithPublicFace = eibenreith_face_unknown, curious, cautious, suspicious, unsettled, openly_watching_valerie
LIST VillageReligiousTension = village_religion_unknown, church_as_center_seen, christian_surface_noted, older_presence_hint, two_orders_in_conflict, village_fear_has_form
LIST HohenreithArrivalFrame = hohenreith_arrival_unknown, expected_guest, punctual_official_guest, delayed_after_village_detour, household_form_preserved, household_form_disturbed, amalia_seen_before_dinner
LIST HohenreithArrivalFrame = hohenreith_arrival_unknown, expected_guest, amalia_seen_before_dinner
LIST HohenreithArrivalFact = punctual_official_guest, delayed_after_village_detour, household_form_preserved, household_form_disturbed
INCLUDE 04_ankunft.ink
File diff suppressed because one or more lines are too long