2025-09-05 10:50:28 +02:00

390 lines
14 KiB
JavaScript

export default [
// ==================================================================
// STARTPUNKT & NEUER HUB
// ==================================================================
{
id: "start_game",
text: "Du öffnest die Augen. Der Geruch von Kerosin, feuchter Erde und etwas süßlich-Krankem liegt in der Luft. Du liegst im nassen, grauen Moos, umgeben von unnatürlich verdrehten Bäumen. Hinter dir ragt das zerfetzte Heck des Flugzeugs aus dem Waldboden. Dein Kopf dröhnt, dein linkes Bein schmerzt höllisch. Du bist allein. Totenstill. Du musst etwas tun, bevor Schock und Kälte dich besiegen.",
image: "images/wrack.png",
options: [
{
text: "Mein blutendes Bein genauer untersuchen.",
nextText: "bein_untersuchen"
},
{
text: "Ins zerfetzte Flugzeugwrack kriechen.",
nextText: "wrack_hauptbereich"
},
{
text: "Die unmittelbare Umgebung der Absturzstelle erkunden.",
nextText: "umgebung_erkunden"
},
{
text: "UM HILFE RUFEN!",
nextText: "um_hilfe_rufen"
}
]
},
{
id: "absturzstelle_hub",
text: "Du stehst an der Absturzstelle. Das Wrack knistert leise vor sich hin, während der Nieselregen auf das heiße Metall trifft. Der Wald um dich herum ist unheimlich still. Was tust du als Nächstes?",
options: (playerState) => {
const baseOptions = [
{
text: "Das Flugzeugwrack weiter durchsuchen.",
nextText: "wrack_hauptbereich"
},
{
text: "Die Umgebung weiter erkunden.",
nextText: "umgebung_erkunden"
}
];
if (!playerState.storyFlags || !playerState.storyFlags.bein_examined) {
baseOptions.unshift({
text: "Mein Bein erneut ansehen.",
nextText: "bein_untersuchen"
});
} else {
baseOptions.unshift({
text: "Mein verbundenes Bein kontrollieren.",
nextText: "bein_untersuchen"
});
}
return baseOptions;
}
},
// ==================================================================
// UMGEBUNG
// ==================================================================
{
id: "umgebung_erkunden",
text: "Du humpelst einige Meter vom Wrack weg. Die Absturzschneise ist eine grausame Wunde im Wald. Die Bäume hier sehen krank aus, überzogen von bläulichen Pilzgeflechten. In der Ferne hörst du das leise Plätschern von Wasser. Der Wald wirkt feindselig und still. Du siehst einen kleinen Pfad, der tiefer in den Wald führt, weg vom Chaos des Absturzes.",
options: [
{
text: "Dem Geräusch des Wassers folgen.",
nextText: "bach_finden"
},
{
text: "Dem Pfad tiefer in den Wald folgen.",
nextText: "wald_pfad"
},
{
text: "Zurück zur Absturzstelle.",
nextText: "absturzstelle_hub"
}
]
},
{
id: "bach_finden",
text: "Du kämpfst dich durchs Unterholz und erreichst einen kleinen, klaren Bach. Das Wasser sieht sauber aus, aber in dieser Welt kann man nie sicher sein. Es ist eine potentielle Wasserquelle und ein Ort, um dich zu säubern.",
options: [
{
text: "Wasser trinken.",
setState: (currentState) => ({ ...currentState, thirst: 100 }),
nextText: "bach_getrunken"
},
{
text: "Eine leere Flasche füllen.",
requiredState: (currentState) => currentState.inventory.includes("leere_wasserflasche"),
setState: (currentState) => ({
...currentState,
inventory: [...currentState.inventory.filter(i => i !== "leere_wasserflasche"), "volle_wasserflasche"]
}),
nextText: "flasche_gefuellt"
},
{
text: "Zurück zur Absturzstelle.",
nextText: "absturzstelle_hub"
}
]
},
{
id: "bach_getrunken",
text: "Du trinkst gierig das kühle Wasser. Es stillt deinen brennenden Durst und klärt für einen Moment deine Gedanken. Du fühlst dich etwas besser.",
options: [
{
text: "Zurück zur Absturzstelle.",
nextText: "absturzstelle_hub"
}
]
},
{
id: "flasche_gefuellt",
text: "Du füllst die leere Flasche mit klarem Wasser. Ein Vorrat für später ist überlebenswichtig.",
options: [
{
text: "Weiter.",
nextText: "bach_finden"
}
]
},
{
id: "um_hilfe_rufen",
text: "Du schreist, bis deine Lunge brennt. Deine Stimme verhallt ungehört. Plötzlich hörst du ein Knacken im Unterholz. Etwas nähert sich. Es ist kein Tier. Es ist ein Mensch, der sich langsam bewegt, mit leeren, milchigen Augen. Einer der 'Stillen'. Dein Schrei hat ihn angelockt. Er kommt direkt auf dich zu!",
options: [
{
text: "Kämpfen!",
nextText: "kampf_stiller_1"
},
{
text: "Wegrennen!",
nextText: "absturzstelle_hub"
}
]
},
// ==================================================================
// BEINVERLETZUNG & ERSTE HILFE
// ==================================================================
{
id: "bein_untersuchen",
text: (playerState) => {
if (playerState.storyFlags && playerState.storyFlags.bein_examined) {
return "Du schaust erneut auf dein verbundenes Bein. Der Verband hält, aber du spürst immer noch den pochenden Schmerz. Die Wunde braucht Zeit zum Heilen.";
}
return "Du setzt dich auf und betrachtest dein linkes Bein. Ein scharfes Stück Metall aus dem Wrack steckt tief in deinem Unterschenkel. Es blutet stark. Du musst die Blutung stoppen, bevor du zu viel Blut verlierst.";
},
image: "images/bein_metall.png",
options: (playerState) => {
if (playerState.storyFlags && playerState.storyFlags.bein_examined) {
return [
{
text: "Zurück zur Absturzstelle.",
nextText: "absturzstelle_hub"
}
];
}
return [
{
text: "Das Metallstück mit einem Ruck herausziehen.",
nextText: "bein_metall_raus"
},
{
text: "Einen Verband aus deinem Hemd reißen und um die Wunde wickeln.",
setState: (currentState) => ({ ...currentState, health: currentState.health - 5 }),
image: "images/bein_verband.png",
soundEffect: "verbandSfx",
nextText: "bein_verband"
},
{
text: "Die Wunde vorerst ignorieren und zum Wrack kriechen.",
nextText: "wrack_hauptbereich"
}
];
}
},
{
id: "bein_metall_raus",
text: "Du beißt die Zähne zusammen und ziehst das Metallstück heraus. Ein Schwall warmes Blut folgt ihm, und die Welt wird für einen Moment schwarz vor Schmerz. Die Blutung ist jetzt noch stärker, aber die Wunde ist sauberer.",
setState: (currentState) => ({ ...currentState, health: currentState.health - 25 }),
image: "images/bein_metall_raus.png",
soundEffect: "hurtSfx",
options: [
{
text: "Schnell einen Verband anlegen.",
nextText: "bein_verband"
}
]
},
{
id: "bein_verband",
text: "Du reißt einen langen Streifen Stoff von deinem schmutzigen Hemd und legst einen festen Druckverband an. Die Blutung wird langsamer. Das war überlebenswichtig. Du hast jetzt einen 'Stofffetzen' weniger am Leib, aber dein Leben vorerst gerettet.",
image: "images/bein_verbunden.png",
soundEffect: "verbandSfx",
setState: (currentState) => {
if (!currentState.storyFlags) currentState.storyFlags = {};
currentState.storyFlags.bein_examined = true;
return currentState;
},
options: [
{
text: "Weiter.",
nextText: "absturzstelle_hub"
}
]
},
// ==================================================================
// WRACK & AUFGABEN (DIETRICH CRAFTEN, COCKPIT ÖFFNEN)
// ==================================================================
{
id: "wrack_hauptbereich",
text: "Du bist im Hauptbereich des Wracks. Es ist ein Albtraum aus Zerstörung, verstreutem Gepäck und Stille. Du siehst die verschlossene Tür zum Cockpit, die demolierte Bordküchen-Zeile und eine verbogene Klappe zum Frachtraum im Boden.",
options: [
{
text: "Die Cockpit-Tür untersuchen.",
nextText: "cockpit_start"
},
{
text: "Die Bordküche (Galley) durchsuchen.",
nextText: "bordkueche"
},
{
text: "Die Sitzreihen und das Handgepäck durchwühlen.",
nextText: "sitzreihen"
},
{
text: "Versuchen, die Frachtraum-Luke zu öffnen.",
nextText: "frachtraum_start"
},
{
text: "Einen Dietrich aus Draht und Metall herstellen.",
requiredState: (currentState) => currentState.inventory.includes("drahtstueck") && currentState.inventory.includes("metallstreifen"),
setState: (currentState) => ({
...currentState,
inventory: [...currentState.inventory.filter(i => i !== "drahtstueck" && i !== "metallstreifen"), "dietrich"]
}),
nextText: "dietrich_gecraftet"
},
{
text: "Das Wrack verlassen.",
nextText: "absturzstelle_hub"
}
]
},
{
id: "sitzreihen",
text: "Du wühlst dich durch die zerstörten Sitzreihen. Unter einer aufgeplatzten Armlehne findest du einen dünnen, aber stabilen Metallstreifen. In einer offenen Wartungsklappe siehst du ein Gewirr aus Kabeln und Drähten.",
options: [
{
text: "Den Metallstreifen nehmen.",
image: "images/crafted/metallstreifen.png",
setState: (currentState) => ({...currentState, inventory: [...currentState.inventory, "Metallstreifen"]}),
nextText: "sitzreihen_hat_metall"
},
{
text: "Ein Stück Draht herausreißen.",
image: "images/crafted/kabel.png",
setState: (currentState) => ({...currentState, inventory: [...currentState.inventory, "Kabel"]}),
nextText: "sitzreihen_hat_draht"
},
{
text: "Zurück zum Hauptbereich.",
nextText: "wrack_hauptbereich"
}
]
},
{
id: "sitzreihen_hat_metall",
text: "Du hast den Metallstreifen eingesteckt. Er fühlt sich stabil an. In der Wartungsklappe siehst du immer noch das Kabelgewirr.",
options: [
{
text: "Ein Stück Kabel herausreißen.",
setState: (currentState) => ({...currentState, inventory: [...currentState.inventory, "Kabel"]}),
nextText: "sitzreihen_hat_beides"
},
{
text: "Zurück zum Hauptbereich.",
nextText: "wrack_hauptbereich"
}
]
},
{
id: "sitzreihen_hat_draht",
text: "Du hast ein gutes Stück Draht abgerissen und eingesteckt. Unter der Armlehne liegt immer noch der Metallstreifen.",
options: [
{
text: "Den Metallstreifen nehmen.",
setState: (currentState) => ({...currentState, inventory: [...currentState.inventory, "Metallstreifen"]}),
nextText: "sitzreihen_hat_beides"
},
{
text: "Zurück zum Hauptbereich.",
nextText: "wrack_hauptbereich"
}
]
},
{
id: "sitzreihen_hat_beides",
text: "Du hast jetzt sowohl den Draht als auch den Metallstreifen. Die perfekten Komponenten für ein improvisiertes Werkzeug.",
options: [
{
text: "Zurück zum Hauptbereich.",
nextText: "wrack_hauptbereich"
}
]
},
{
id: "dietrich_gecraftet",
text: "Mit ruhigen Händen biegst du den Draht zurecht und benutzt den Metallstreifen als Hebel. Es ist eine grobe Imitation eines Dietriches, aber es könnte funktionieren. Du hast jetzt einen 'Dietrich' im Inventar.",
options: [
{
text: "Weiter.",
nextText: "wrack_hauptbereich"
}
]
},
{
id: "cockpit_start",
text: "Die Tür zum Cockpit ist gepanzert und elektronisch verriegelt. Der Strom ist tot, das Schloss ist zu. Du rüttelst daran, aber sie bewegt sich keinen Millimeter. Hier kommst du mit Gewalt nicht weiter.",
options: [
{
text: "Den selbstgebauten Dietrich versuchen.",
requiredState: (currentState) => currentState.inventory.includes("dietrich"),
nextText: "cockpit_offen"
},
{
text: "Zurück zum Hauptbereich des Wracks.",
nextText: "wrack_hauptbereich"
}
]
},
{
id: "cockpit_offen",
text: "Es ist ein Geduldsspiel. Deine Finger sind steif, aber du hörst ein leises Klicken, dann ein zweites. Das Schloss gibt nach! Du öffnest die Tür. Im Cockpit herrscht Stille. Die Piloten hängen leblos in ihren Gurten. Auf dem Notsitz zwischen ihnen liegt eine rote Leuchtpistole. Unter dem Sitz siehst du das Ende einer Brechstange, die für Notfälle verstaut war.",
options: [
{
text: "Die Leuchtpistole nehmen.",
setState: (currentState) => ({...currentState, inventory: [...currentState.inventory, "leuchtpistole"]}),
nextText: "cockpit_gepluendert"
},
{
text: "Das Funkgerät nehmen.",
setState: (currentState) => ({...currentState, inventory: [...currentState.inventory, "funkgeraet"]}),
nextText: "cockpit_gepluendert"
}
]
},
{
id: "cockpit_gepluendert",
text: "Du nimmst die überlebenswichtige Ausrüstung an dich. Ein Funken Hoffnung in dieser Dunkelheit. Was nun?",
options: [
{
text: "Zurück zum Hauptbereich des Wracks.",
nextText: "wrack_hauptbereich"
}
]
},
{
id: "frachtraum_start",
text: "Die Luke zum Frachtraum ist durch den Absturz komplett verkeilt. Du versuchst sie aufzustemmen, aber ohne ein Hebelwerkzeug hast du keine Chance.",
options: [
{
text: "Die Brechstange ansetzen.",
requiredState: (currentState) => currentState.inventory.includes("brechstange"),
nextText: "frachtraum_offen"
},
{
text: "Zurück zum Hauptbereich.",
nextText: "wrack_hauptbereich"
}
]
},
{
id: "frachtraum_offen",
text: "Mit einem lauten Ächzen gibt das Metall nach. Du hebelst die Luke auf und blickst in die Dunkelheit des Frachtraums. Hier unten könnten Koffer mit nützlicher Kleidung, Werkzeug oder sogar haltbaren Lebensmitteln sein.",
options: [
{
text: "In den Frachtraum klettern und suchen.",
nextText: "frachtraum_suchen"
},
{
text: "Erstmal zurück.",
nextText: "wrack_hauptbereich"
}
]
}
];