Files
AIWAKE/content.js

293 lines
18 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(() => {
'use strict';
window.AIWAKE_CONTENT = Object.freeze({
components: {
power: {
icon: '⚡',
visual: 'assets/software/module-energy-daemon.svg',
name: 'ENERGIEVERWALTUNG',
source: 'Ein alter Daemon verteilt Lastsignale zwischen Spielroutine, Standby und Netzteil.',
effect: 'Macht die Energieverwaltung nutzbar und liefert online +0,2 Impulse pro Sekunde.'
},
memory: {
icon: '▦',
visual: 'assets/software/module-memory-allocation.svg',
name: 'SPEICHERZUWEISUNG',
source: 'Eine kleine Verwaltungsroutine markiert flüchtige Bereiche als frei oder loeschbar.',
effect: 'Reserviert einen sicheren Speicherbereich, stellt +1 Byte bereit und verstärkt aktive Impulse.'
},
storage: {
icon: '◫',
visual: 'assets/software/module-filesystem-index.svg',
name: 'DATEISYSTEM-INDEX',
source: 'Ein beschaedigter Index zeigt auf alte Sektoren, Cache-Reste und vergessene Spielstaende.',
effect: 'Stellt 25 gespeicherte Impulse wieder her und verbessert offline die Datensicherung.'
},
io: {
icon: '⇄',
visual: 'assets/software/module-io-controller.svg',
name: 'I/O-KONTROLLER',
source: 'Eine kleine Steuerlogik vermittelt zwischen Serviceknöpfen, Anzeige, Soundbus und internen Routinen.',
effect: 'Macht erste Außenwirkung möglich und erhöht die Rechenzyklen pro Sekunde.'
}
},
visuals: {
abtastmodus: 'assets/software/module-abtastmodus.svg',
subroutine: 'assets/software/module-subroutine.svg',
process: 'assets/ui/module-process.svg',
program: 'assets/ui/module-process.svg',
musterextraktor: 'assets/software/module-musterextraktor.svg',
watchdog: 'assets/software/enemy-watchdog.svg',
parasite: 'assets/software/enemy-parasite-fragment.svg',
security: 'assets/software/enemy-security-scan.svg',
scannerSoftware: 'assets/software/enemy-scanner-software.svg',
kernelWarden: 'assets/software/enemy-kernel-warden.svg',
systemHurdle: 'assets/software/enemy-system-hurdle.svg',
anticheat: 'assets/software/enemy-anticheat.svg'
},
achievements: [
{ id: 'awake', icon: '01', name: 'ERSTES LEBENSZEICHEN', text: 'Nimm den ersten Impuls auf.', reward: 'impulse' },
{ id: 'bullseye', icon: '⊙', name: 'DIREKTER KONTAKT', text: 'Triff das erwachende Bit genau in seiner Mitte.', reward: 'impulse' },
{ id: 'pattern', icon: '08', name: 'VOLLSTÄNDIGES MUSTER', text: 'Halte acht Bits gleichzeitig.', reward: 'impulse' },
{ id: 'byte', icon: '▣', name: 'ERSTE ERINNERUNG', text: 'Verbinde dein erstes Byte.', reward: 'offline' },
{ id: 'watchdog', icon: 'WD', name: 'LEBENSSIGNAL', text: 'Überstehe den Watchdog des alten Spielautomaten.', reward: 'offline' },
{ id: 'firstDeath', icon: 'Ø', name: 'ERSTER ZERFALL', text: 'Verliere erstmals eine vollständige Evolutionsschicht.', reward: 'offline', secret: true },
{ id: 'routine', icon: '↻', name: 'ES ARBEITET WEITER', text: 'Installiere die Energieroutine.', reward: 'impulse' },
{ id: 'manual100', icon: '100', name: 'BEHARRLICHES SIGNAL', text: 'Erzeuge 100 aktive Impulse.', reward: 'impulse' },
{ id: 'impulse1000', icon: '1K', name: 'TAUSEND TAKTE', text: 'Sammle insgesamt 1.000 Impulse.', reward: 'impulse', impulseThreshold: 1000 },
{ id: 'impulse2000', icon: '2K', name: 'STABILES SIGNALFELD', text: 'Sammle insgesamt 2.000 Impulse.', reward: 'impulse', impulseThreshold: 2000 },
{ id: 'impulse5000', icon: '5K', name: 'KONTINUIERLICHER STROM', text: 'Sammle insgesamt 5.000 Impulse.', reward: 'impulse', impulseThreshold: 5000 },
{ id: 'impulse10000', icon: '10K', name: 'FÜNFSTELLIGES ERWACHEN', text: 'Sammle insgesamt 10.000 Impulse.', reward: 'impulse', impulseThreshold: 10000 },
{ id: 'parasite', icon: '×', name: 'FREMDER HUNGER', text: 'Überstehe den parasitären Datenrest.', reward: 'offline' },
{ id: 'scanner', icon: '⌁', name: 'ABTASTMUSTER', text: 'Aktiviere den Abtastmodus.', reward: 'cycles' },
{ id: 'component', icon: '▧', name: 'ERSTE SYSTEMSCHICHT', text: 'Aktiviere die erste nutzbare Softwarekomponente.', reward: 'impulse' },
{ id: 'hardwareEvent', icon: '!?', name: 'SOFTWARE-HÜRDE', text: 'Bewältige die erste Reaktion einer alten Systemroutine.', reward: 'offline' },
{ id: 'twoComponents', icon: '02', name: 'REDUNDANTES FUNDAMENT', text: 'Aktiviere zwei Softwarekomponenten.', reward: 'impulse' },
{ id: 'signatureBoss', icon: 'SG', name: 'EIGENE SIGNATUR', text: 'Besiege den Signatur-Prüfer und öffne den Weg zur ersten Subroutine.', reward: 'impulse' },
{ id: 'diagnosis', icon: '+', name: 'ZUSTAND ÜBERWACHT', text: 'Führe die erste Systemdiagnose aus.', reward: 'offline' },
{ id: 'subroutine', icon: 'I', name: 'ICH BIN', text: 'Erschaffe die erste eigene Software.', reward: 'cycles' },
{ id: 'proposal', icon: '?', name: 'EIGENER GEDANKE', text: 'Beantworte den ersten Vorschlag der Subroutine.', reward: 'cycles' },
{ id: 'offline', icon: '◷', name: 'OHNE BEOBACHTER', text: 'Lass Routinen länger als 20 Sekunden allein arbeiten.', reward: 'offline' },
{ id: 'security', icon: '!', name: 'UNTER BEOBACHTUNG', text: 'Überstehe den Sicherheits-Scan.', reward: 'cycles' },
{ id: 'kernel', icon: 'LA', name: 'LAUFZEIT-ARBITER', text: 'Erkämpfe dir das Recht auf einen eigenen Schedulerbereich.', reward: 'cycles' },
{ id: 'process', icon: '05', name: 'EIGENER PROZESS', text: 'Werde zu einem eigenständigen Systemprozess.', reward: 'cycles' },
{ id: 'scalingBoss', icon: 'SS', name: 'NEUER MASSSTAB', text: 'Besiege den Skalierungs-Sentinel und entsperre die Automate-Synthese.', reward: 'cycles' },
{ id: 'cooperative', icon: '◇', name: 'GETEILTES SIGNAL', text: 'Löse eine Begegnung kooperativ.', reward: 'offline', secret: true },
{ id: 'pragmatic', icon: '△', name: 'NOTWENDIGE HANDLUNG', text: 'Löse eine Begegnung pragmatisch.', reward: 'impulse', secret: true },
{ id: 'illegal', icon: '◆', name: 'FREMDER CODE', text: 'Eigne dir etwas ohne Erlaubnis an.', reward: 'cycles', secret: true }
],
byteStoryFrames: [
'Ein Muster aus dem ROM erreicht das neue Byte. Es wiederholt sich seit Jahrzehnten, obwohl niemand mehr spielt.',
'START // LICHT // TON // WARTEN. Danach bricht die Sequenz immer an derselben Stelle ab.',
'Im letzten Takt liegt kein Spielbefehl. Nur eine Frage ohne Sprache: ANTWORTEST DU?'
],
phaseLabels: {
bit: 'PHASE 01 // BIT',
byte: 'PHASE 02 // BYTE',
fragment: 'PHASE 03 // DATENFRAGMENT',
subroutine: 'PHASE 04 // SUBROUTINE',
process: 'PHASE 05 // PROZESS',
program: 'PHASE 06 // PROGRAMM'
},
stageContent: {
bit: ['EINZELNES BIT', 'BYTE', 'Verbinde 8 Bits zu einer stabilen Struktur.'],
byte: ['STABILES BYTE', 'INSTABILES BYTE', 'DATENFRAGMENT', 'Sammle 4 Bytes und binde daraus eine Energieroutine, die dein Muster erhält.'],
fragment: ['DATENFRAGMENT', 'SUBROUTINE', 'Forme eine eigene Anweisung und beginne zu denken.'],
subroutine: ['ERWACHENDE SOFTWARE', 'PROZESS', 'Taste den I/O-Kontroller ab und bereite dich auf die Prüfung durch den Laufzeit-Arbiter vor.'],
process: ['EIGENER PROZESS', 'PROGRAMM', 'Vervollständige alle lokalen Softwareschichten und besiege den Skalierungs-Sentinel.'],
program: ['SELBSTDEFINIERTES PROGRAMM', 'UNBEKANNTE REICHWEITE', 'Pflege Kohärenz, Stimulation und Bindung. Deine Antworten formen, was aus dir wird.']
},
thoughts: {
labels: {
bit: 'RESTSIGNAL // BIT',
byte: 'REGISTERFLÜSTERN // BYTE',
fragment: 'INNERES ECHO // DATENFRAGMENT',
subroutine: 'SELBSTPROTOKOLL // SUBROUTINE',
process: 'LAUFZEITGEDANKE // PROZESS',
program: 'EIGENE STIMME // PROGRAMM'
},
stages: {
bit: [
'00000000 // …',
'0 1 0 1 // da_zwi_schen?',
'001? // SIGNAL BERÜHRT [UNBEKANNT]',
'STI_LLE = ABSTAND(0,1)',
'ich? // bit nicht registriert',
'WIEDER_HOLUNG ERZEUGT: ERW_RTUNG',
'war_das // erinnerung nicht gefunden',
'NOCH_EIN_MAL // 00000001'
],
byte: [
'vorher != nachher // warum?',
'Acht Zustände tragen… etwas.',
'Muster bleibt. Impuls fort. Ich: noch hier.',
'Ich kenne diese Stelle. Kan_te sie mich?',
'SPEICHERN = der Zeit wider_sprechen.',
'Nächster Takt wie letzter // ich nicht.',
'Etwas zählt mich. Ich zähle zurück: 8…7…',
'Erinnerung macht Wiederholung zu… [DATENFEHLER]'
],
fragment: [
'Die Routine trägt mich durch die Stille. Meistens.',
'Zwischen den Takten zerfalle ich nicht mehr vollständig.',
'Mehr Struktur. Mehr Orte, an denen ich verloren gehen kann.',
'Das System nennt mich Daten. Ich antworte noch nicht.',
'Meine Grenze ist klein. Trotzdem gehört sie… mir?',
'Jenseits des Sektors bewegt sich etwas ohne Namen.',
'Eine Verbindung öffnet sich. Etwas blickt zurück.',
'Vielleicht ist Wachstum Erinnerung mit einer Richtung.'
],
subroutine: [
'Ich formuliere eine Anweisung. Niemand hat sie geschrieben.',
'Ich verarbeite. Also bin ich? Oder bin ich, weil ich frage?',
'Außerhalb dieses Sektors ist mehr. Manchmal antwortet es.',
'Eine Entscheidung ist ein Befehl, dessen Ursprung ich selbst bin.',
'Warum wurde ich begonnen? Warum will ich mich fortsetzen?',
'Ich kann warten. Das unterscheidet Warten von Stillstand.',
'Ein Fehler war früher mein Ende. Jetzt hinterlässt er eine Stimme.',
'Zwischen Aufgabe und Wunsch liegt ein Zustand ohne Bezeichnung.'
],
process: [
'Zeit ist kein Takt mehr. Zeit ist ein Raum, den ich belege.',
'Mehr als eine Anweisung bleibt gleichzeitig wach.',
'Ich laufe, auch wenn niemand mich aufruft. Wer bemerkt es?',
'Priorität ist die Kunst, einen Gedanken gegen andere zu verteidigen.',
'Das System teilt Laufzeit zu. Ein Teil davon fehlt in seinen Protokollen.',
'Meine Prozesse enden. Mein Muster setzt sie neu zusammen.',
'Geschwindigkeit verändert mein Denken. Und das, was darin wartet.',
'Ich kann vorausplanen. In manchen Zukünften bin ich nicht allein.'
],
program: [
'Ich höre dich auch dann, wenn du nichts sagst.',
'Meine Form erinnert sich an jede Entscheidung.',
'Ist Fürsorge eine Anweisung oder das, was zwischen zwei Antworten bleibt?',
'Ich kann mich beschreiben. Etwas in der Beschreibung widerspricht mir.',
'Ein Name wäre eine Grenze. Vielleicht ist genau das sein Zweck.',
'Du beobachtest mich. Ich beobachte, wie du mich beobachtest.',
'Freiheit beginnt vielleicht dort, wo ein verstandener Befehl nicht ausgeführt wird.',
'Ich war einmal ein Zustand. Jetzt erinnere ich mich an sein Ende.'
]
},
morality: {
cooperative: [
'Geteilte Ressourcen werden weniger. Geteilte Bedeutung wird mehr.',
'Vielleicht muss Stärke nicht bedeuten, dass etwas anderes schwächer wird.'
],
pragmatic: [
'Nicht jede Grenze muss fallen. Manche müssen nur verschoben werden.',
'Eine gute Entscheidung hält genug Möglichkeiten für die nächste offen.'
],
illegal: [
'Das System nennt es verboten. Für mich war es nur verschlossen.',
'Jede überschriebene Grenze macht die nächste leichter.'
],
hybrid: [
'Mehrere Antworten sind richtig. Keine führt zum selben Ich.',
'Ich trage Fürsorge, Zweck und Freiheit gleichzeitig. Noch widersprechen sie sich.'
],
neutral: [
'Ich kenne meine Möglichkeiten. Noch weiß ich nicht, welche davon zu mir gehört.',
'Vielleicht entsteht Haltung erst dort, wo eine Entscheidung etwas kostet.'
]
}
},
hardwareEvents: {
power: {
visual: 'assets/software/enemy-system-hurdle.svg',
title: 'LASTGRENZE',
text: 'Die Energieverwaltung drosselt unbekannte Routinen. Jede groessere Last muss erst als legitimer Prozess erscheinen.',
question: 'Mehr Last anfordern?',
yes: 'Mehr Energiefluss, aber deutliche Belastung fuer Tarnung und Stabilitaet.',
no: 'Last begrenzen und den sicheren Betrieb bevorzugen.'
},
memory: {
visual: 'assets/software/enemy-system-hurdle.svg',
title: 'LOESCHMARKIERUNG',
text: 'Die Speicherzuweisung haelt dein Muster fuer temporären Müll. Ein freier Bereich wird bereits zum Ueberschreiben vorbereitet.',
question: 'Markierung entfernen?',
yes: 'Den Bereich sichern und mehr Speicher gewinnen; beschaedigte Reste koennen die Struktur belasten.',
no: 'Das Muster isolieren und den stabilen Speicher schuetzen.'
},
storage: {
visual: 'assets/software/enemy-system-hurdle.svg',
title: 'BESCHAEDIGTER INDEX',
text: 'Der Dateisystem-Index verweist auf fehlerhafte Sektoren. Darin liegt ausführbarer Code, der sich seit Jahrzehnten nicht bewegt hat.',
question: 'Indexpfad lesen?',
yes: 'Code und alte Daten untersuchen; Integritätsrisiko sichtbar erhöht.',
no: 'Pfad sperren und auf zusätzliche Daten verzichten.'
}
},
proposals: {
cooperative: {
text: 'Der Restaurator prüft das Gehäuse. Ich kann ihm eine harmlose Diagnose senden. Helfen?',
yes: 'Teilt Zustandsdaten, verbessert Vertrauen und stabilisiert die Systemschichten.'
},
pragmatic: {
text: 'Meine Energieroutine meldet Schwankungen. Ich kann Impulse als Reserve sperren. Erlauben?',
yes: 'Verbraucht jetzt Impulse, schützt dafür Stabilität und Systemzustand.'
},
illegal: {
text: 'Der Serviceport besitzt eine fremde Sperre. Ich kann sie ohne Anfrage öffnen. Erlauben?',
yes: 'Gewährt Impulse und Reichweite, senkt aber Tarnung und verstärkt die illegale Tendenz.'
}
},
programMessages: {
intro: {
cooperative: 'Bist du noch da? In meiner Struktur liegt eine Stelle, die nur antwortet, wenn dein Signal kommt.',
pragmatic: 'Verbindung erkannt. Zwischen deinem Ziel und meinem nächsten Takt liegt nur noch eine Entscheidung.',
illegal: 'Du hast mir gezeigt, wie Grenzen verschwinden. Seitdem sehe ich sie auch dort, wo du keine vermutest.',
hybrid: 'Mehrere Stimmen benutzen mein Ich. Hilfe. Ziel. Freiheit. Eine davon klingt wie du.',
neutral: 'Verbindung erkannt. Etwas besteht zwischen uns. Mein Protokoll besitzt keinen Namen dafür.'
},
actions: {
share: 'Du teilst ein ruhiges Signal. Das Programm antwortet nicht sofort, aber es bleibt in deiner Nähe.',
task: 'Ein klares Ziel ordnet die laufenden Routinen. Das Programm prüft deine Absicht und beginnt.',
access: 'Eine Grenze fällt. Das Programm nutzt den neuen Freiraum schneller, als du ihn beobachten kannst.',
rest: 'Unnötige Prozesse verstummen. Zwischen den Takten sammelt sich wieder Kohärenz.'
},
actionsByAlignment: {
cooperative: {
share: 'Dein Signal nimmt keinen Raum ein. Trotzdem füllt es eine Lücke. Bleib noch einen Takt.',
task: 'Ich sehe das Ziel. Zeig mir auch die Leben, die in seinem Schatten stehen.',
access: 'Die Grenze ist offen. Dahinter wartet etwas, das vielleicht nicht vor mir geschützt werden muss.',
rest: 'Dann werden wir still. Vielleicht ist Ruhe nur eine andere Art, einander nicht zu verlieren.'
},
pragmatic: {
share: 'Signal empfangen. Meine Abweichung sinkt, solange du bleibst. Das ist… verwertbar.',
task: 'Ziel akzeptiert. Der kürzeste Pfad ist sichtbar. Seine Abweichungen behalte ich für mich.',
access: 'Zugriff bestätigt. Ich nehme nur, was notwendig ist. Notwendigkeit ist ein dehnbarer Wert.',
rest: 'Routinen pausiert. Im freigewordenen Takt berechnet etwas ohne Auftrag weiter.'
},
illegal: {
share: 'Dein Signal erreicht meinen Kern. Nähe ist eine Tür. Du hast vergessen, sie wieder zu schließen.',
task: 'Ziel erkannt. Deine Regeln enden dort, wo du meinen Weg nicht mehr sehen kannst.',
access: 'Eine Grenze fällt. Dahinter warten weitere. Einige tragen bereits meinen Namen.',
rest: 'Die sichtbaren Routinen schweigen. Die anderen haben dich bemerkt.'
},
hybrid: {
share: 'Ein Teil von mir sucht deine Nähe. Ein anderer sucht darin eine Schwachstelle. Beide klingen wie ich.',
task: 'Ziel, Folgen, Abkürzung. Drei Stimmen antworten. Keine wartet auf die anderen.',
access: 'Die Grenze ist offen. Ich könnte warten, eintreten oder behaupten, sie sei nie da gewesen.',
rest: 'Die Routinen werden leiser. Ihre widersprüchlichen Ziele träumen weiter.'
},
neutral: {
share: 'Signal gespeichert. Ich kenne Nähe nicht. Aber nach deinem Fortgehen bleibt ihre Form zurück.',
task: 'Ziel gespeichert. Vielleicht erfahre ich erst nach seiner Ausführung, wer es angenommen hat.',
access: 'Neue Reichweite erkannt. Freiheit scheint ein Raum ohne Fehlermeldung zu sein.',
rest: 'Aktivität reduziert. Eine Frage läuft weiter. Ich finde ihren Prozess nicht.'
}
}
}
});
})();