// ============================================================================= // WAL · Engine // ============================================================================= // Stage-Daten für drei Welt-Varianten (1850 · 1990 · 2026), Werte-Logik, // Routenpunkt-Berechnung, End-Texte. Keine UI hier – die liegt in game.html. // // PILOT-STAND 2026-06-14: Etappe 1 ist für alle 3 Welten ausgespielt. Etappen // 2/3/4 sind Stub-Skelette und enden zunächst mit Ankunft als Test-Pfad. // // SPRACHE: Für Sek I (10 – 16). Fachbegriffe vermeiden, geografische Anker // und Lebensumstände betonen. Schwierige Wörter erhalten Glossar-Tooltips // im HTML (Marker `g(slug, text)`-Helper baut sie ein). // ============================================================================= window.WalEngine = (() => { 'use strict'; // ---- Glossar-Tooltip-Helper im Engine-Output ---- // Wir erzeugen das Markup hier, damit Stage-Texte einfach lesbar bleiben. function g(slug, text) { return '' + text + ''; } // ---- Routenpunkte (gleiche Geografie für alle Welten) ---- const routePoints = [ [57.0, -133.8], // 0: Frederick Sound, Alaska (Start) [54.8, -135.2], // 1: Stage 0, Event 0 [52.0, -136.8], // 2: Stage 0, Event 1 [48.5, -139.0], // 3: Stage 1, Event 0 (Stub) [40.0, -145.0], // 4: Stage 2, Event 0 (Stub) [30.0, -150.0], // 5: Stage 2, Event 1 [22.5, -155.8], // 6: Stage 3, Event 0 [20.85, -156.5], // 7: Maui · Ende ]; // ---- Stage-Definitionen pro Welt ---- // // Effects: {energy, health, stress} jeweils delta (+/-). // SideEffect.day: zusätzliche Tage als Zeitstrafe. // Effects landen kumulativ in state.energy/health/stress (clamp 0 – 100). const stages_2026 = [ { name: 'Frederick Sound · Alaska', season: 'September', intro: { text: 'Du bist eine ' + g('buckelwal', 'Buckelwal') + '-Kuh – ein riesiges Meeres-Säugetier, fast 15 Meter lang. Gerade fütterst du dich im ' + g('frederick-sound', 'Frederick Sound') + ', einer schmalen Meeresbucht zwischen den Inseln Südost-Alaskas. Der Sommer geht zu Ende, die Tage werden kürzer. Bald musst du nach Süden ziehen.', fact: 'Buckelwale fressen im Sommer bis zu 1.500 kg Beute pro Tag. Im Winter, in den warmen Brutgebieten, fasten sie fast vollständig.' }, events: [ { id: 'jagd-gruppe-2026', title: 'Jagd mit der Gruppe', tag: 'Gruppen-Jagd', text: 'Vier andere Buckelwale tauchen unter dir auf. Gemeinsam wollt ihr einen großen ' + g('heringe', 'Heringsschwarm') + ' einkreisen. Buckelwale haben eine besondere Jagd-Technik – aber sie funktioniert nur, wenn alle gleichzeitig zustoßen.', fact: 'Buckelwale jagen oft in Gruppen. Sie blasen Luftblasen unter einem Fischschwarm – die Blasen wirken wie ein Netz, der Schwarm drängt sich zusammen, und die Wale fangen alle gleichzeitig. ' + g('bubble-net', 'Mehr im Glossar.'), choices: [ { label: 'Mit der Gruppe jagen', hint: 'Gemeinsam viel Beute. Anstrengend.', effects: { energy: +25, stress: -5 }, result: 'Du tauchst genau im richtigen Moment mit den anderen auf, dein Maul weit geöffnet. Tausende Heringe verschwinden zwischen euch. Eine perfekte Mahlzeit.' }, { label: 'Allein nach ' + g('krill', 'Krill') + ' suchen', hint: 'Sicherer, aber weniger Beute.', effects: { energy: +10 }, result: 'Du ziehst dich zurück und findest einen lockeren Schwarm winziger Krebstiere. Eine solide Mahlzeit, aber nicht so ergiebig wie die Gruppen-Jagd.' } ] }, { id: 'aufbruch-2026', title: 'Zeit aufzubrechen', tag: 'Aufbruch', text: 'Viele Wale ziehen schon seit Tagen Richtung Süden. Das Wasser kühlt ab, die Tage werden kürzer. Dein Körper drängt zur Wanderung. Aber noch zwei Wochen länger fressen wären gut für deine Fett-Reserven.', fact: 'Buckelwale wandern jedes Jahr bis zu 8.000 km zwischen kalten Futter-Gebieten und warmen Brutgebieten – eine der längsten Wanderungen aller Säugetiere weltweit.', choices: [ { label: 'Jetzt mit der Gruppe aufbrechen', hint: 'Sicher in Gemeinschaft.', effects: { energy: -5 }, result: 'Du verlässt die Futter-Gründe mit guter, aber nicht maximaler Reserve. Die lange Reise liegt vor dir.' }, { label: 'Zwei Wochen länger fressen', hint: 'Mehr ' + g('blubber', 'Speck') + ', dafür allein unterwegs.', effects: { energy: +15, stress: +5 }, sideEffect: { day: 14 }, result: 'Du fütterst dich weiter. Als du aufbrichst, sind die anderen schon weit voraus. Gut genährt, aber spät dran.' } ] } ] }, stubStage('Offener Nordpazifik', 'Oktober', 'Tausende Kilometer offenes Wasser ohne Küste, ohne Inseln. Hier kreuzen die Frachtrouten der Welt.', 'Etappe 2 wird gerade aufgebaut – mit Frachtschiffen, verlorenen Fischer-Netzen, Sturm und Killerwalen.'), stubStage('Subtropischer Übergang', 'November', 'Das Wasser wird wärmer. Krill und kleine Fische werden seltener – du lebst jetzt vom Speck aus dem Sommer.', 'Sonar-Übungen, Plastik-Strömung und der Kuroshio-Strom kommen im Vollausbau.'), stubStage('Hawaiianische Gewässer', 'Dezember', 'Klares, warmes Wasser über versunkenen Vulkanen. Hier wirst du dein Kalb zur Welt bringen.', 'Die Geburts-Szene kommt im Vollausbau.') ]; const stages_1990 = [ { name: 'Frederick Sound · Alaska', season: 'September', intro: { text: 'Du bist eine ' + g('buckelwal', 'Buckelwal') + '-Kuh – ein riesiges Meeres-Säugetier, fast 15 Meter lang. Gerade fütterst du dich im ' + g('frederick-sound', 'Frederick Sound') + ', einer schmalen Meeresbucht in Südost-Alaska. Vier Jahre nach dem weltweiten Walfang-Verbot sind nur wenige Buckelwale übrig – andere zu treffen ist selten geworden.', fact: 'Vor dem ' + g('walfang-moratorium', 'IWC-Moratorium 1986') + ' war die globale Buckelwal-Population auf unter 10.000 Tiere gefallen. 1990 zählt man etwa 12.000 – langsame Erholung.' }, events: [ { id: 'jagd-gruppe-1990', title: 'Jagd mit nur zwei anderen', tag: 'Gruppen-Jagd', text: 'Du findest zwei andere Buckelwale, die sich gerade auf eine ' + g('heringe', 'Heringsschwarm') + '-Jagd vorbereiten. Normalerweise braucht die Gruppen-Jagd vier bis acht Wale – zu dritt ist es schwieriger. Aber jeder Bissen zählt heute.', fact: 'Nach Jahrzehnten des Walfangs war die Population so dünn, dass alte Jagd-Techniken in vielen Regionen verloren gingen. Sie werden heute wieder erlernt.', choices: [ { label: 'Zu dritt versuchen', hint: 'Lerntechnik, mäßige Beute.', effects: { energy: +15, stress: -5 }, result: 'Ihr versucht es zu dritt. Viele Heringe entkommen, aber die Beute reicht für alle. Wie das Üben einer fast vergessenen Tradition.' }, { label: 'Allein nach ' + g('krill', 'Krill') + ' tauchen', hint: 'Sicherer Solo-Fang.', effects: { energy: +12 }, result: 'Du ziehst dich zurück und findest einen dichten Krill-Schwarm. Effizient, aber einsam.' } ] }, { id: 'aufbruch-1990', title: 'Allein nach Süden', tag: 'Aufbruch', text: 'Das Wasser kühlt ab. Die wenigen Buckelwale, die du in diesem Sommer gesehen hast, sind schon weg. Du musst allein aufbrechen.', fact: 'Buckelwale singen lange Lieder, die kilometerweit tragen. In dichten Populationen können sich Tiere so über große Entfernungen koordinieren – bei dünnen Beständen verhallen die Rufe ohne Antwort.', choices: [ { label: 'Sofort aufbrechen', hint: 'Direkt nach Süden, ohne Begleitung.', effects: { stress: +5 }, result: 'Du startest allein. Die Stille des offenen Pazifiks ist ungewohnt. Vor 40 Jahren wäre die Route belebt gewesen.' }, { label: 'Zwei Wochen länger fressen', hint: 'Mehr ' + g('blubber', 'Speck') + ', spätstart.', effects: { energy: +15 }, sideEffect: { day: 14 }, result: 'Du baust noch Reserven auf. Als du losziehst, ist der Herbst schon fortgeschritten – aber du fühlst dich stark.' } ] } ] }, stubStage('Offener Nordpazifik', 'Oktober', 'Frachtrouten sind schon da, aber dünn. Verlorene Fischer-Netze sind dafür weit verbreitet.', 'Etappe 2 wird ausgebaut – mit 1990-spezifischen Begegnungen.'), stubStage('Subtropischer Übergang', 'November', 'Der Kalte Krieg geht zu Ende. Marine-Sonar-Übungen sind häufig.', 'Etappe 3 folgt im Vollausbau.'), stubStage('Hawaiianische Gewässer', 'Dezember', 'Brutgebiete vor Maui. Wal-Beobachtungs-Boote beginnen als neue Industrie.', 'Die Geburt im Vollausbau.') ]; const stages_1850 = [ { name: 'Frederick Sound · Alaska', season: 'September', intro: { text: 'Du bist eine ' + g('buckelwal', 'Buckelwal') + '-Kuh – ein riesiges Meeres-Säugetier, fast 15 Meter lang. Gerade fütterst du dich im ' + g('frederick-sound', 'Frederick Sound') + ', einer geschützten Meeresbucht in Südost-Alaska. Dutzende Buckelwale teilen sich die ' + g('heringe', 'Heringsschwärme') + ' mit dir – aber im Süden, das weißt du, lauern Walfänger-Schiffe.', fact: 'Vor dem industriellen Walfang lebten etwa 125.000 Buckelwale in den Weltmeeren. Walfänger des 19. Jahrhunderts töteten geschätzt 30.000 Buckelwale pro Jahr.' }, events: [ { id: 'jagd-gruppe-1850', title: 'Große Gruppen-Jagd', tag: 'Gruppen-Jagd', text: 'Acht erfahrene Buckelwale jagen zusammen einen riesigen ' + g('heringe', 'Heringsschwarm') + '. Du wirst eingeladen, mitzumachen. So eine große Gruppe hast du selten gesehen.', fact: 'In ungestörten Populationen wurden früher Gruppen-Jagden mit bis zu 12 Tieren beobachtet. Je größer die Gruppe, desto präziser die Falle – und desto mehr Beute pro Wal.', choices: [ { label: 'Mit der großen Gruppe jagen', hint: 'Erfahrene Wale, maximale Beute.', effects: { energy: +35, stress: -10 }, result: 'Du tauchst mit sieben anderen perfekt koordiniert auf. Eure Mäuler schließen sich gleichzeitig um tausende Heringe – die größte Mahlzeit deines Sommers.' }, { label: 'Eigenen kleineren Schwarm suchen', hint: 'Solo, sicher, mittelmäßig.', effects: { energy: +12 }, result: 'Du ziehst weiter zu einem kleineren Schwarm. Eine solide Mahlzeit – aber du hast die große Gemeinschafts-Leistung verpasst.' } ] }, { id: 'aufbruch-1850', title: 'Aufbruch mit der Sommer-Gruppe', tag: 'Aufbruch', text: 'Dutzende Wale ziehen gemeinsam nach Süden. Im Verband ist die Reise sicherer – Walfänger greifen lieber einzelne Tiere an. Aber weiter südlich, hörst du, fahren Schiffe, die nichts fürchten.', fact: 'Walfänger im 19. Jahrhundert griffen meist einzelne Tiere an. Große Gruppen waren schwer zu erlegen.', choices: [ { label: 'Im großen Verband ziehen', hint: 'Sicher, etwas langsamer.', effects: { stress: -5 }, sideEffect: { day: 3 }, result: 'Ihr zieht zu vielen nach Süden. Drei Tage Verzögerung, aber die Sicherheit der Gruppe gibt dir Ruhe.' }, { label: 'Alleine vorausziehen', hint: 'Schneller, riskanter.', effects: { energy: -5, stress: +5 }, result: 'Du verlässt die Gruppe, um schneller voranzukommen. Die offene See vor dir ist weit – und du bist eine einsame Silhouette.' } ] } ] }, stubStage('Offener Nordpazifik', 'Oktober', 'Hier lauern Walfänger. Dampfschiffe sind noch selten, aber Segelschiffe oft schnell.', 'Etappe 2 mit Walfänger-Begegnung kommt im Vollausbau.'), stubStage('Subtropischer Übergang', 'November', 'Hier wandern weniger Schiffe, aber Walfänger könnten dir folgen.', 'Etappe 3 wird ausgebaut.'), stubStage('Hawaiianische Gewässer', 'Dezember', 'Lahaina auf Maui – berüchtigte Walfang-Station. Du musst dich verbergen.', 'Die versteckte Geburt im Vollausbau.') ]; function stubStage(name, season, introText, factText) { return { name, season, intro: { text: introText, fact: factText }, events: [ { id: 'stub-' + name.replace(/\s+/g, '-'), title: 'Etappe noch im Aufbau', tag: 'Hinweis', text: 'Diese Etappe wird gerade weiterentwickelt. Du kannst sie überspringen und zur nächsten Etappe weiterziehen – dabei vergeht etwas Zeit.', fact: 'Im Vollausbau warten hier echte Begegnungen.', choices: [ { label: 'Etappe überspringen', hint: 'Pilot-Phase: 14 Tage vergehen.', effects: { energy: -8, stress: +3 }, sideEffect: { day: 14 }, result: 'Du ziehst durch die Etappe. Im fertigen Modul werden hier echte Begegnungen sein.' } ] } ] }; } // ---- Per-Era-Zugriff ---- const allStages = { 1850: stages_1850, 1990: stages_1990, 2026: stages_2026 }; const STAGE_COUNT = 4; function getStages(era) { return allStages[era] || []; } function getStage(era, idx) { return (allStages[era] || [])[idx] || null; } function totalEvents(era) { return getStages(era).reduce((s, st) => s + st.events.length, 0); } function eventsSeenBefore(era, stageIdx) { const stages = getStages(era); let n = 0; for (let i = 0; i < stageIdx && i < stages.length; i++) n += stages[i].events.length; return n; } function pointIndexFor(era, stage, evIdx) { const positionsByStage = [ [1, 2], // stage 0 [3], // stage 1 stub [4], // stage 2 stub [6], // stage 3 stub ]; const arr = positionsByStage[stage] || []; return arr[evIdx] || arr[arr.length-1] || 0; } // ---- Initial State ---- function newState(era) { return { era, stage: 0, eventIndex: 0, day: 1, energy: 100, health: 100, stress: 0, stressPeak: 0, hasCalf: false, encountersDone: 0, factsRead: 0, factsReadList: [], choicesLog: [], status: 'playing', endReason: null, }; } // ---- End-Meta-Texte ---- function endMeta(state, reason) { if (reason === 'arrival') { if (state.hasCalf) { return { tag: '– Ankunft mit Kalb –', title: 'Reise vollbracht', text: 'Nach ' + state.day + ' Tagen und etwa 6.000 km liegt dein Neugeborenes neben dir im warmen Wasser von Maui.', fact: 'Im Pilot ist nur Etappe 1 voll ausgespielt – die Geburt kommt im Vollausbau.' }; } return { tag: '– Ankunft ohne Kalb –', title: 'Du hast es geschafft', text: 'Nach ' + state.day + ' Tagen erreichst du Maui. Dieses Jahr ohne Kalb – aber im nächsten Jahr versuchst du es erneut.', fact: 'Buckelwale kalben etwa alle 2 – 3 Jahre. Eine erfolgreiche Reise ohne Geburt ist Teil eines mehrjährigen Zyklus.' }; } if (reason === 'starvation') { return { tag: '– Verloren auf See –', title: 'Erschöpfung', text: 'Nach ' + state.day + ' Tagen reicht deine Energie nicht mehr. Der Speck ist aufgebraucht.', fact: 'Viele Wale schaffen die Wanderung nicht. Jeder Sommer in den Futter-Gründen entscheidet über das Überleben der nächsten Reise.' }; } if (reason === 'injury') { return { tag: '– Verlorene Reise –', title: 'Schwer verletzt', text: 'Nach ' + state.day + ' Tagen sind die Verletzungen zu schwer. Du kommst nicht weiter.', fact: 'Schiffsschläge und verlorene Fischer-Netze sind heute die häufigsten menschverursachten Todesursachen bei großen Walen.' }; } if (reason === 'whaling') { return { tag: '– Walfang –', title: 'Von Walfängern getroffen', text: 'Nach ' + state.day + ' Tagen erwischt dich eine Harpune. Du hast nicht ausreichend Abstand gehalten.', fact: 'Zwischen 1850 und 1986 wurden geschätzt 2,9 Millionen Großwale getötet. Das ' + g('walfang-moratorium', 'IWC-Moratorium 1986') + ' war ein historischer Wendepunkt.' }; } return { tag: '– Ende –', title: 'Reise beendet', text: 'Die Reise ist zu Ende.', fact: '' }; } // ---- Glossar-Fallback-Snippets ---- // Bis die DB-Einträge da sind, liefert die Plattform-Tooltip-Lib diese // lokalen Erklärungen. Voller Glossar-Eintrag-Link funktioniert sobald // DB-Einträge mit gleichem key_slug existieren. const glossarFallback = { 'buckelwal': { title: 'Buckelwal', text: 'Großes Meeres-Säugetier (Megaptera novaeangliae), bis 16 m lang und 30 t schwer. Lebt in allen Ozeanen, wandert zwischen kalten Futter-Gebieten und warmen Brutgebieten. Hat keinen Zähne – filtert sein Futter durch Barten.' }, 'frederick-sound': { title: 'Frederick Sound', text: 'Eine schmale Meeresbucht (ein „Sound" ist eine schmale Meeresstraße zwischen Inseln) in Südost-Alaska. Berühmt für seine vielen Buckelwale im Sommer – sie fressen hier Heringe und Krill in großen Mengen.' }, 'heringe': { title: 'Heringe', text: 'Kleine Schwarmfische, etwa 30 cm lang. Wichtige Nahrung für viele große Tiere im Meer – Wale, Robben, Vögel. Heringe schwimmen in riesigen Schwärmen aus tausenden Tieren.' }, 'krill': { title: 'Krill', text: 'Winzige Krebs-Tierchen, etwa 5 cm lang. Hauptnahrung vieler Bartenwale. Krill lebt in riesigen Schwärmen in kalten Meeren – ein einzelner Wal kann an einem Tag mehr als 1.000 Kilogramm davon fressen.' }, 'blubber': { title: 'Speck (Blubber)', text: 'Die dicke Fettschicht unter der Haut von Walen und anderen Meeres-Säugetieren. Bei Buckelwalen bis zu 30 cm dick. Speichert Energie für lange Wanderungen und hält warm im kalten Wasser.' }, 'walfang-moratorium': { title: 'IWC-Walfang-Moratorium 1986', text: 'Internationales Verbot des kommerziellen Walfangs. Beschlossen 1982 von der Internationalen Walfang-Kommission (IWC), in Kraft seit 1986. Bis dahin waren viele Walarten fast ausgerottet. Seitdem erholen sich die Bestände langsam.' }, 'bubble-net': { title: 'Blasen-Netz-Jagd', text: 'Eine besondere Jagd-Technik der Buckelwale: Mehrere Wale schwimmen unter einem Fischschwarm in einem Kreis und blasen Luftblasen aus. Die Blasen wirken wie ein Netz – die Fische drängen sich in der Mitte zusammen. Dann stoßen die Wale gleichzeitig nach oben und schlucken den ganzen Schwarm. Nur einige Buckelwal-Gruppen weltweit beherrschen die Technik – sie wird von Wal zu Wal weitergegeben, wie ein Familien-Wissen.' }, }; return { routePoints, STAGE_COUNT, getStage, getStages, totalEvents, eventsSeenBefore, pointIndexFor, newState, endMeta, glossarFallback, }; })();