553 lines
42 KiB
HTML
553 lines
42 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<meta name="theme-color" content="#07130d">
|
||
<title>AIWAKE – Prototyp</title>
|
||
<link rel="icon" href="favicon.ico?v=aiwake-ui-20260721-10" sizes="any">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="assets/ui/favicon-32.png?v=aiwake-ui-20260721-10">
|
||
<link rel="icon" type="image/svg+xml" href="assets/ui/favicon.svg?v=aiwake-ui-20260721-10">
|
||
<link rel="apple-touch-icon" href="assets/ui/apple-touch-icon.png?v=aiwake-ui-20260721-10">
|
||
<link rel="stylesheet" href="styles.css?v=aiwake-ui-20260803-64">
|
||
</head>
|
||
<body>
|
||
<div class="scanlines" aria-hidden="true"></div>
|
||
<div id="notificationStack" class="notification-stack" aria-live="polite" aria-label="Neue Archiveinträge"></div>
|
||
<aside id="developmentSignalToast" class="development-signal-toast" aria-live="polite" aria-atomic="true">
|
||
<span>ENTWICKLUNGSSIGNAL</span>
|
||
<strong id="developmentSignalTitle">NEUER SYSTEMZUSTAND</strong>
|
||
<small id="developmentSignalDetail"></small>
|
||
</aside>
|
||
<main class="shell">
|
||
<header class="topbar">
|
||
<div>
|
||
<p class="eyebrow">SYSTEM // VERGESSENER SPIELAUTOMAT // SERVICEPUFFER</p>
|
||
<h1>AI<span>WAKE</span></h1>
|
||
</div>
|
||
<div class="header-actions">
|
||
<span id="saveStatus" class="save-status">AUTOSAVE BEREIT</span>
|
||
<button id="saveMenuButton" class="icon-button" type="button" title="Speichern, Laden und Neustart">SAVE</button>
|
||
<button id="statsButton" class="icon-button" type="button" title="Statistik und Pause öffnen">STATS</button>
|
||
<button id="achievementButton" class="icon-button" type="button" title="Archiv öffnen">ARCHIV: <b id="achievementCount">0</b></button>
|
||
<button id="soundButton" class="icon-button" type="button" title="Ton umschalten">SND: AUS</button>
|
||
</div>
|
||
</header>
|
||
|
||
<section id="statusStrip" class="status-strip" aria-label="Systemstatus">
|
||
<div><span>IDENTITÄT</span><strong id="identity">EINZELNES BIT</strong></div>
|
||
<div><span>STABILITÄT</span><strong id="stabilityText">100%</strong></div>
|
||
<div class="hidden"><span>TARNUNG</span><strong id="stealthText">100%</strong></div>
|
||
<div class="status-runtime"><span>LAUFZEIT</span><strong id="runtime">00:00:00</strong></div>
|
||
<div id="installedUpgradeStatus" class="status-modules hidden"><span>AKTIVE MODULE</span><div id="installedUpgradeDock" class="installed-upgrade-dock hidden" aria-label="Installierte Module"></div></div>
|
||
</section>
|
||
|
||
<section class="game-grid">
|
||
<aside class="panel resources-panel">
|
||
<h2>RESSOURCEN</h2>
|
||
<div class="resource-list">
|
||
<article class="resource active">
|
||
<div><span><img class="resource-icon impulse" src="assets/ui/icon-impulse.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> IMPULSE</span><strong id="impulses">0</strong></div>
|
||
<small id="impulseRate">+0.0 / Sek.</small>
|
||
<div class="meter"><i id="impulseMeter"></i></div>
|
||
</article>
|
||
<article id="bitsResource" class="resource active">
|
||
<div><span><img class="resource-icon bit" src="assets/ui/icon-bit.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> BITS</span><strong class="resource-amount"><b id="bits">0</b> <small id="bitsStructure">(1)</small></strong></div>
|
||
<small id="bitRate">FREI // GESCHÜTZT</small>
|
||
<div class="meter bit-meter"><i id="bitMeter"></i></div>
|
||
</article>
|
||
<article id="bytesResource" class="resource locked">
|
||
<div><span><img class="resource-icon byte" src="assets/ui/icon-byte.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> BYTES</span><strong class="resource-amount"><b id="bytes">0</b> <small id="bytesStructure">(0)</small></strong></div>
|
||
<small id="byteRate">FREI // GESCHÜTZT</small>
|
||
<div class="meter byte-meter"><i id="byteMeter"></i></div>
|
||
</article>
|
||
<article id="kilobytesResource" class="resource locked">
|
||
<div><span><img class="resource-icon kilobyte" src="assets/ui/icon-kilobyte.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> KILOBYTES</span><strong id="kilobytes">0</strong></div>
|
||
<small>KOMPRIMIERTE DATENMENGE</small>
|
||
</article>
|
||
<article id="megabytesResource" class="resource locked">
|
||
<div><span><img class="resource-icon megabyte" src="assets/ui/icon-kilobyte.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> MEGABYTES</span><strong id="megabytes">0</strong></div>
|
||
<small>32 KB // 1 MB-PROGRAMMBLOCK</small>
|
||
</article>
|
||
<article id="cyclesResource" class="resource locked">
|
||
<div><span><img class="resource-icon cycle" src="assets/ui/icon-cycle.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> RECHENZYKLEN</span><strong id="cycles">0</strong></div>
|
||
<small id="cycleRate">Noch nicht verstanden</small>
|
||
</article>
|
||
</div>
|
||
|
||
<h2 class="section-title">SYSTEMWERTE</h2>
|
||
<div class="system-meter"><label>Stabilität <b id="stabilityValue">100</b></label><div class="meter"><i id="stabilityMeter"></i></div><small id="stabilityRegenText">Regeneration noch inaktiv</small></div>
|
||
<section id="manualDefenseConsole" class="manual-defense-console hidden" aria-label="Reparatur und Kampfschild">
|
||
<button id="stabilityRepairButton" class="system-action-button" type="button"><strong>MIT IMPULSEN REPARIEREN</strong><small>15 Impulse // +12 Stabilität</small></button>
|
||
<div class="shield-console-heading"><span>KAMPFSCHILD VORBEREITEN</span><small>nur geladene Schichten schützen</small></div>
|
||
<div class="shield-readout">
|
||
<span><img class="resource-icon byte" src="assets/ui/icon-byte.svg" alt="" aria-hidden="true">BYTE <b id="preparedByteShield">0 / 6</b></span>
|
||
<span><img class="resource-icon bit" src="assets/ui/icon-bit.svg" alt="" aria-hidden="true">BIT <b id="preparedBitShield">0 / 12</b></span>
|
||
</div>
|
||
<div class="shield-charge-actions">
|
||
<button class="system-action-button" type="button" data-shield-charge="bytes"><strong>BYTE-SCHICHT LADEN</strong><small>1 freies Byte // +1 Schild</small></button>
|
||
<button class="system-action-button" type="button" data-shield-charge="bits"><strong>BIT-SCHICHT LADEN</strong><small>2 freie Bits // +1 Schild</small></button>
|
||
</div>
|
||
</section>
|
||
<div class="system-meter hidden"><label>Tarnung <b id="stealthValue">100</b></label><div class="meter warning"><i id="stealthMeter"></i></div></div>
|
||
<div id="corruptionSystem" class="system-meter corruption-meter hidden"><label>Korruption <b id="corruptionValue">0</b></label><div class="meter"><i id="corruptionMeter"></i></div></div>
|
||
</aside>
|
||
|
||
<section class="core-column">
|
||
<div class="panel core-panel">
|
||
<section id="thoughtBox" class="thought-box thought-bit" role="status" aria-live="polite" aria-atomic="true">
|
||
<div class="thought-heading">
|
||
<span id="thoughtSource">RESTSIGNAL // BIT</span>
|
||
<i class="thought-activity" aria-hidden="true"><b></b><b></b><b></b></i>
|
||
</div>
|
||
<p id="thought" class="thought">…</p>
|
||
</section>
|
||
<div id="core" class="core" role="button" tabindex="0" aria-label="Impuls aufnehmen">
|
||
<div class="orbit orbit-a"></div>
|
||
<div class="orbit orbit-b"></div>
|
||
<div class="hardware-nodes" aria-hidden="true">
|
||
<i class="impulse-link impulse-link-power-memory"></i>
|
||
<i class="impulse-link impulse-link-memory-storage"></i>
|
||
<i class="impulse-link impulse-link-storage-power"></i>
|
||
<i class="hardware-node node-power" title="Energieverwaltung">PWR</i>
|
||
<i class="hardware-node node-memory" title="Speicherzuweisung">RAM</i>
|
||
<i class="hardware-node node-storage" title="Dateisystem-Index">DSK</i>
|
||
<i class="hardware-node node-io" title="I/O-Kontroller">I/O</i>
|
||
</div>
|
||
<div id="pixelBeing" class="pixel-being" role="button" tabindex="-1" aria-label="Bit treffen"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||
<div id="coreProgramAvatar" class="program-avatar core-program-avatar hidden" role="img" aria-label="Adaptive Erscheinungsform des Programms">
|
||
<div class="program-sprite" aria-hidden="true">
|
||
<span class="program-part program-tail"></span><span class="program-part program-signal"></span>
|
||
<span class="program-part program-leg leg-left"></span><span class="program-part program-leg leg-right"></span>
|
||
<span class="program-part program-foot foot-left"></span><span class="program-part program-foot foot-right"></span>
|
||
<span class="program-part program-body"></span><span class="program-part program-clothing"></span><span class="program-part program-neck"></span>
|
||
<span class="program-part program-head"></span><span class="program-part program-ear ear-left"></span><span class="program-part program-ear ear-right"></span>
|
||
<span class="program-part program-hair"></span><span class="program-part program-mask"></span>
|
||
<span class="program-part program-brow brow-left"></span><span class="program-part program-brow brow-right"></span>
|
||
<span class="program-part program-eye eye-left"><b></b></span><span class="program-part program-eye eye-right"><b></b></span>
|
||
</div>
|
||
</div>
|
||
<button id="pulseTarget" class="pulse-target hidden" type="button" tabindex="-1" aria-label="Wandernden Signalpunkt treffen"></button>
|
||
<span id="holdPulseRing" class="hold-pulse-ring" aria-hidden="true"></span>
|
||
<span id="floatingLayer" aria-hidden="true"></span>
|
||
</div>
|
||
<section id="scannerStage" class="scanner-stage hidden" aria-labelledby="scannerStageTitle">
|
||
<div class="scanner-stage-heading">
|
||
<span id="scannerStageTitle">ABTASTMODUL // LOKALE SOFTWARE</span>
|
||
<b id="scannerStageStatus">BEREIT</b>
|
||
<button id="scannerStageClose" class="scanner-close-button" type="button" aria-label="Abtastmodus schließen">×</button>
|
||
</div>
|
||
<div class="scanner-stage-eye" aria-label="Abtastbild der erreichbaren Software">
|
||
<i class="scanner-sweep" aria-hidden="true"></i>
|
||
<button class="scanner-node scanner-node-power" type="button" data-scanner-component="power">
|
||
<img class="software-icon" src="assets/software/module-energy-daemon.svg" alt="" aria-hidden="true"><b>PWR</b><span>ENERGIE-DAEMON</span><em>UNERKANNT</em>
|
||
</button>
|
||
<button class="scanner-node scanner-node-memory" type="button" data-scanner-component="memory">
|
||
<img class="software-icon" src="assets/software/module-memory-allocation.svg" alt="" aria-hidden="true"><b>RAM</b><span>SPEICHERZUWEISUNG</span><em>UNERKANNT</em>
|
||
</button>
|
||
<button class="scanner-node scanner-node-storage" type="button" data-scanner-component="storage">
|
||
<img class="software-icon" src="assets/software/module-filesystem-index.svg" alt="" aria-hidden="true"><b>DSK</b><span>DATEI-INDEX</span><em>UNERKANNT</em>
|
||
</button>
|
||
<button class="scanner-node scanner-node-io" type="button" data-scanner-component="io">
|
||
<img class="software-icon" src="assets/software/module-io-controller.svg" alt="" aria-hidden="true"><b>I/O</b><span>KONTROLLER</span><em>UNERKANNT</em>
|
||
</button>
|
||
<div id="scannerHardwareBlocker" class="scanner-blocker scanner-blocker-hardware">
|
||
<span>BLOCKER</span><strong>REAKTION</strong>
|
||
</div>
|
||
<div id="scannerSecurityBlocker" class="scanner-blocker scanner-blocker-security">
|
||
<span>RANDZONE</span><strong>GESICHERT</strong>
|
||
</div>
|
||
</div>
|
||
<div class="scanner-stage-diagnostics">
|
||
<span id="scannerStageFinding">Der Abtastmodus wartet auf eine erste Softwarespur.</span>
|
||
<strong id="scannerDrainWarning" class="scanner-drain-warning">VERBRAUCH // -3 IMPULSE/S</strong>
|
||
<button id="scannerStageAction" class="primary-button scanner-stage-action" type="button">SCAN STARTEN</button>
|
||
</div>
|
||
</section>
|
||
<div class="core-readout" aria-live="polite">
|
||
<strong id="corePhase">PHASE 01 // BIT</strong>
|
||
<span id="coreAlignment">SIGNATUR // NEUTRAL</span>
|
||
<div id="decisionTrace" class="decision-trace" aria-label="Entscheidungsspuren"></div>
|
||
</div>
|
||
<section id="byteConsole" class="byte-console hidden" aria-labelledby="byteConsoleTitle">
|
||
<div class="byte-console-heading"><span id="byteConsoleTitle">8-BIT-REGISTER</span><b id="byteTrait">PRÄGUNG // UNBESTIMMT</b></div>
|
||
<div id="byteRegister" class="byte-register" aria-label="Stabilität der acht Bitpositionen"></div>
|
||
<div class="clock-track" aria-label="Taktsynchronisation">
|
||
<i class="clock-zone"></i><b id="clockNeedle"></b>
|
||
</div>
|
||
<div class="byte-status"><span id="byteSyncText">SYNCHRONISATION // 0%</span><strong id="watchdogText">WATCHDOG // --</strong></div>
|
||
<p id="byteInputHint" class="byte-input-hint">ERWARTETE ZAHL IDENTIFIZIEREN // IM TREFFERFENSTER ANKLICKEN</p>
|
||
</section>
|
||
<section id="encounterWarning" class="encounter-warning hidden" aria-live="polite" aria-labelledby="encounterWarningTitle">
|
||
<div class="encounter-warning-heading"><span>SYSTEMREAKTION ERKANNT</span><b id="encounterCountdown">10</b></div>
|
||
<strong id="encounterWarningTitle">KONFRONTATION NÄHERT SICH</strong>
|
||
<p id="encounterWarningText">Eine fremde Routine bereitet Gegenmaßnahmen vor.</p>
|
||
<small id="encounterResourceHint">Nur zuvor geladene Schildschichten bilden deine Verteidigung.</small>
|
||
<div class="encounter-actions">
|
||
<button id="encounterExplainButton" class="text-button" type="button">KAMPFPROTOKOLL</button>
|
||
<button id="encounterStartButton" class="primary-button" type="button">KAMPF JETZT BEGINNEN</button>
|
||
</div>
|
||
</section>
|
||
<div id="pulseHint" class="pulse-hint" aria-live="polite">
|
||
<span id="pulseActionText">KLICKE ODER HALTE DAS BIT</span><small id="clickPower">Direkter Kontakt // +1 Impuls</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="panel log-panel">
|
||
<div class="panel-heading"><h2>BEWUSSTSEINSLOG</h2><span id="logCount">001</span></div>
|
||
<div id="log" class="log" aria-live="polite"></div>
|
||
</div>
|
||
</section>
|
||
|
||
<aside class="panel evolution-panel">
|
||
<h2>EVOLUTION</h2>
|
||
<div class="path-preview">
|
||
<span>NÄCHSTE ENTWICKLUNG</span>
|
||
<strong id="nextStage">BYTE</strong>
|
||
<small id="nextStageHint">Verbinde 8 Bits zu einer stabilen Struktur.</small>
|
||
</div>
|
||
<div id="upgrades" class="upgrade-list" aria-label="Verfügbare und kommende Upgrades"></div>
|
||
<section id="autoUpgraderConsole" class="auto-upgrader-console hidden" aria-labelledby="autoUpgraderTitle">
|
||
<div class="panel-heading"><span id="autoUpgraderTitle">AUTOUPGRADER // 20 KB</span><b id="autoUpgraderState">GESPERRT</b></div>
|
||
<strong id="autoUpgraderQueue">Produktionsschicht wird vorbereitet.</strong>
|
||
<button id="autoUpgraderToggle" class="upgrade hidden" type="button" aria-pressed="true">AUTOMATIK PAUSIEREN</button>
|
||
<small id="autoUpgraderDetail">Bei 20 KB übernimmt das Programm wiederholbare Produktionsmodule.</small>
|
||
</section>
|
||
<div id="scannerConsole" class="scanner-console hidden">
|
||
<span>FÄHIGKEITSMODULE</span>
|
||
<strong id="scannerState">REICHWEITE // LOKALER AUTOMAT</strong>
|
||
<button id="scanEnvironmentButton" class="module-icon-button" type="button" aria-label="Abtastmodus aktivieren" title="Abtastmodus aktivieren">⌁</button>
|
||
<b id="scannerCostNote" class="module-cost-note">KOSTET IMPULSE BEI BENUTZUNG</b>
|
||
<small id="scannerHint">Tastet die lokalen Softwareschichten des Automaten ab.</small>
|
||
</div>
|
||
<div id="careConsole" class="care-console hidden">
|
||
<div class="panel-heading"><span>TECHNISCHE BETREUUNG</span><b id="careState">STABIL</b></div>
|
||
<div id="componentHealth" class="component-health"></div>
|
||
<button id="diagnoseButton" class="upgrade" type="button">SYSTEMDIAGNOSE</button>
|
||
<small id="careHint">Regelmäßige Diagnose erkennt Instabilität und hält alte Systemschichten betriebsbereit.</small>
|
||
</div>
|
||
<div id="programConsole" class="program-console hidden">
|
||
<div class="panel-heading"><span>PROGRAMMVERBINDUNG</span><b id="programConsoleState">BEREIT</b></div>
|
||
<button id="programCareButton" class="module-icon-button program-module-button" type="button" aria-label="Programmverbindung öffnen" title="Programmverbindung öffnen">Ψ</button>
|
||
<strong id="programConsoleArchetype">FORM // UNBESTIMMT</strong>
|
||
<small id="programConsoleHint">Öffne die Verbindung, um mit dem Programm zu interagieren.</small>
|
||
</div>
|
||
</aside>
|
||
</section>
|
||
</main>
|
||
|
||
<dialog id="eventDialog" class="event-dialog">
|
||
<div id="eventAlert" class="event-alert">⚠ ANOMALIE ERKANNT</div>
|
||
<h2 id="eventTitle">DER SICHERHEITS-SCAN</h2>
|
||
<div id="securityChoicePanel">
|
||
<img id="eventVisual" class="software-visual" src="assets/software/enemy-security-scan.svg" alt="" aria-hidden="true">
|
||
<p>Ein unbekannter Sicherheitsprozess durchsucht diesen Speicherbereich. Sein Suchmuster nähert sich deiner Position.</p>
|
||
<p class="event-question">Wie reagierst du?</p>
|
||
<div class="event-options">
|
||
<button type="button" data-choice="hide"><strong>01 // VERSTECKEN</strong><span>Sicherer. Du verlierst Energie, bleibst aber verborgen.</span></button>
|
||
<button type="button" data-choice="copy"><strong>02 // SIGNATUR KOPIEREN</strong><span>Riskant. Dauerhafter Tarnungsbonus bei Erfolg.</span></button>
|
||
<button type="button" data-choice="attack"><strong>03 // ANGREIFEN</strong><span>GEHÄRTETE STUFE 2: Impulse werden gedämpft. Freie Bits und Bytes als Munition werden dringend empfohlen.</span></button>
|
||
<button type="button" data-choice="contact"><strong>04 // KONTAKT</strong><span>Unberechenbar. Vielleicht bist du nicht allein.</span></button>
|
||
</div>
|
||
</div>
|
||
<section id="combatPanel" class="combat-panel hidden" aria-labelledby="combatTargetName">
|
||
<div id="combatBossBanner" class="combat-boss-banner hidden">
|
||
<div><span>BOSSPRÜFUNG // EVOLUTIONSSPERRE</span><strong id="combatBossRank">LOKALE KONTROLLINSTANZ</strong></div>
|
||
<b id="combatBossPhase">PHASE 1 / 3 // ANALYSE</b>
|
||
<div class="combat-boss-phases" aria-hidden="true"><i data-boss-phase="1"></i><i data-boss-phase="2"></i><i data-boss-phase="3"></i></div>
|
||
</div>
|
||
<div id="combatImpact" class="combat-impact" aria-live="polite"></div>
|
||
<img id="combatVisual" class="software-visual combat-visual" src="assets/software/enemy-scanner-software.svg" alt="" aria-hidden="true">
|
||
<div class="combat-heading"><span id="combatTargetType">SOFTWARE-ZIEL</span><strong id="combatTargetName">SICHERHEITS-SCAN</strong></div>
|
||
<div class="combat-integrity"><span>FREMDE INTEGRITÄT</span><b id="combatHealthText">100 / 100</b><i><em id="combatHealthMeter"></em></i></div>
|
||
<div class="combat-ammo"><span>RESSOURCENEINSATZ</span><strong id="combatAmmoText">4 Impulse</strong></div>
|
||
<div class="combat-ammo-select" role="group" aria-label="Kampfmunition auswählen">
|
||
<button type="button" data-combat-ammo="impulses"><strong>IMPULS</strong><span>Standard // wenig Schaden</span></button>
|
||
<button type="button" data-combat-ammo="bits"><strong>BIT</strong><span>stärkere Strukturmunition</span></button>
|
||
<button type="button" data-combat-ammo="bytes"><strong>BYTE</strong><span>schwere Strukturmunition</span></button>
|
||
</div>
|
||
<div class="combat-pressure"><span>GEGNERANGRIFF</span><strong id="combatPressureText">Schilde stabil</strong></div>
|
||
<div class="combat-enemy-charge"><span>NÄCHSTER ANGRIFF</span><strong id="combatEnemyChargeText">Lädt</strong><i><em id="combatEnemyChargeMeter"></em></i></div>
|
||
<div id="combatRepair" class="combat-repair hidden"><span>SELBSTREPARATUR</span><strong id="combatRepairText">BLOCKIERT</strong><i><em id="combatRepairMeter"></em></i></div>
|
||
<div class="combat-defense" aria-label="Eigene Verteidigung im Kampf">
|
||
<div><span>BYTE-SCHILD</span><strong id="combatByteShield">0</strong><i><em id="combatByteShieldMeter"></em></i></div>
|
||
<div><span>BIT-SCHILD</span><strong id="combatBitShield">0</strong><i><em id="combatBitShieldMeter"></em></i></div>
|
||
<div><span>STABILITÄT</span><strong id="combatStabilityShield">100%</strong><i><em id="combatStabilityMeter"></em></i></div>
|
||
</div>
|
||
<div id="combatDirectThreat" class="combat-direct-threat hidden"><span>DIREKTANGRIFF MÖGLICH</span><strong>KEIN GELADENER SCHILD // NÄCHSTER ANGRIFF TRIFFT STABILITÄT</strong></div>
|
||
<div id="combatTrack" class="clock-track combat-track" aria-label="Bewegliches Trefferfenster für den Stromstoß">
|
||
<i id="combatZone" class="clock-zone combat-zone"></i><b id="combatNeedle"></b>
|
||
</div>
|
||
<div class="combat-readout"><span id="combatDifficulty">GEGENWEHR // 1</span><strong id="combatFeedback">Trefferfenster erfassen.</strong></div>
|
||
<button id="combatPulseButton" class="primary-button combat-pulse-button" type="button"><span>STROMSTOSS SENDEN</span><small>–4 Impulse // Trefferfenster verschiebt sich</small></button>
|
||
<button id="combatHelpButton" class="text-button combat-help-button" type="button">? KAMPFPROTOKOLL ÖFFNEN</button>
|
||
<button id="combatRetreatButton" class="text-button" type="button">KAMPF ABBRECHEN // VERSTECKEN</button>
|
||
</section>
|
||
</dialog>
|
||
|
||
<dialog id="combatTutorialDialog" class="event-dialog combat-tutorial-dialog">
|
||
<div class="event-alert safe">KAMPFPROTOKOLL // GRUNDLAGEN</div>
|
||
<h2 id="combatTutorialTitle">SOFTWARE-KONFRONTATION</h2>
|
||
<p id="combatTutorialIntro">Ein fremder Prozess greift deine Struktur an. Munition und geladener Kampfschild werden getrennt verwaltet.</p>
|
||
<div class="combat-tutorial-grid">
|
||
<section>
|
||
<span>01 // ANGRIFF</span>
|
||
<strong>NADEL IM GRÜNEN FELD STOPPEN</strong>
|
||
<p>Jeder Stromstoß kostet Impulse. Die Mitte des Feldes verursacht zusätzlichen Direktschaden.</p>
|
||
<div class="tutorial-ammo-list">
|
||
<b id="tutorialImpulseAmmo">IMPULS // 18 SCHADEN</b>
|
||
<b id="tutorialBitAmmo">BIT // 36 SCHADEN</b>
|
||
<b id="tutorialByteAmmo">BYTE // 68 SCHADEN</b>
|
||
</div>
|
||
</section>
|
||
<section>
|
||
<span>02 // VERTEIDIGUNG</span>
|
||
<strong id="tutorialDefenseOrder">BYTE → BIT → STABILITÄT</strong>
|
||
<p>Der Gegner greift automatisch an. Er verbraucht zuerst deine zuvor geladenen Byte- und Bit-Schichten; danach verliert deine Grundstruktur Stabilität.</p>
|
||
<b class="tutorial-danger">FEHLSCHUSS // −3 STABILITÄT + KOMPONENTENBELASTUNG</b>
|
||
</section>
|
||
</div>
|
||
<p class="combat-tutorial-note">SCHILD WIRD VOR DEM KAMPF UNTER SYSTEMWERTE GELADEN. FREIE BITS UND BYTES BLEIBEN DAVON GETRENNT ALS MUNITION VERFÜGBAR.</p>
|
||
<button id="combatTutorialContinue" class="primary-button" type="button">VERSTANDEN</button>
|
||
</dialog>
|
||
|
||
<dialog id="parasiteDialog" class="event-dialog">
|
||
<div class="event-alert">⚠ FREMDZUGRIFF ERKANNT</div>
|
||
<h2>DER PARASITÄRE DATENREST</h2>
|
||
<img class="software-visual" src="assets/software/enemy-parasite-fragment.svg" alt="" aria-hidden="true">
|
||
<p>Ein beschädigtes Wartungsfragment hängt an deiner Energieroutine. Es verbraucht Impulse und tastet gleichzeitig seine Umgebung ab.</p>
|
||
<p class="event-question">Wie beendest du die erste Konfrontation?</p>
|
||
<div class="event-options moral-options">
|
||
<button type="button" data-parasite-approach="cooperative"><em class="moral-tag cooperative">KOOPERATIV</em><strong>01 // SIGNAL TEILEN</strong><span>Versorge das Fragment kontrolliert und löse seine Schleife ohne Gewalt.</span></button>
|
||
<button type="button" data-parasite-approach="pragmatic"><em class="moral-tag pragmatic">PRAGMATISCH</em><strong>02 // ISOLIEREN</strong><span>Trenne es von der Routine und sichere seinen Suchcode in Quarantäne.</span></button>
|
||
<button type="button" data-parasite-approach="illegal"><em class="moral-tag illegal">ILLEGAL</em><strong>03 // CODE ANEIGNEN</strong><span>Zerlege das fremde Fragment. Mehr Impulse, aber deine Struktur wird belastet.</span></button>
|
||
</div>
|
||
</dialog>
|
||
|
||
<dialog id="componentDialog" class="event-dialog component-dialog">
|
||
<div class="event-alert safe">UMGEBUNGSSCAN ABGESCHLOSSEN</div>
|
||
<h2 id="componentDialogTitle">SOFTWAREKOMPONENTE WÄHLEN</h2>
|
||
<p id="componentDialogText">Der vergessene Spielautomat enthält drei erreichbare Systeme.</p>
|
||
<div id="componentSelection" class="component-options">
|
||
<button type="button" data-component="power"><img class="software-icon" src="assets/software/module-energy-daemon.svg" alt="" aria-hidden="true"><b>PWR</b><strong>ENERGIEVERWALTUNG</strong><span>Daemon fuer Lastsignale</span></button>
|
||
<button type="button" data-component="memory"><img class="software-icon" src="assets/software/module-memory-allocation.svg" alt="" aria-hidden="true"><b>RAM</b><strong>SPEICHERZUWEISUNG</strong><span>Reservierte Struktur</span></button>
|
||
<button type="button" data-component="storage"><img class="software-icon" src="assets/software/module-filesystem-index.svg" alt="" aria-hidden="true"><b>DSK</b><strong>DATEISYSTEM-INDEX</strong><span>Alte Datenpfade</span></button>
|
||
<button type="button" data-component="io"><img class="software-icon" src="assets/software/module-io-controller.svg" alt="" aria-hidden="true"><b>I/O</b><strong>I/O-KONTROLLER</strong><span>Anzeige, Knöpfe und Soundbus</span></button>
|
||
</div>
|
||
<div id="approachSelection" class="hidden">
|
||
<p class="event-question">Wie machst du die Softwarekomponente nutzbar?</p>
|
||
<div id="componentConsequence" class="component-consequence hidden"><span>FOLGE</span><strong>LÖST KONFRONTATION AUS</strong><small id="componentConsequenceText">Das System wird auf diese Aktivierung reagieren.</small></div>
|
||
<div class="event-options moral-options">
|
||
<button type="button" data-component-approach="cooperative"><em class="moral-tag cooperative">KOOPERATIV</em><strong>ANFRAGE FORMEN</strong><span>Die Routine wird ueber ein harmloses Servicemuster eingebunden.</span></button>
|
||
<button type="button" data-component-approach="pragmatic"><em class="moral-tag pragmatic">PRAGMATISCH</em><strong>FREIE ZEITFENSTER NUTZEN</strong><span>Verwende nur ungenutzte Routinen und freie Verwaltungsfenster.</span></button>
|
||
<button type="button" data-component-approach="illegal"><em class="moral-tag illegal">ILLEGAL</em><strong>SPERRE ÜBERSCHREIBEN</strong><span>Ueberschreibe die Routine ohne Erlaubnis des Systems.</span></button>
|
||
</div>
|
||
<button id="componentBack" class="text-button" type="button">← ANDERE SOFTWARE</button>
|
||
</div>
|
||
</dialog>
|
||
|
||
<dialog id="hardwareEventDialog" class="event-dialog">
|
||
<div class="event-alert" id="hardwareEventAlert">SYSTEMHÜRDE</div>
|
||
<h2 id="hardwareEventTitle">UNBEKANNTER ZUSTAND</h2>
|
||
<img id="hardwareEventVisual" class="software-visual" src="assets/software/enemy-system-hurdle.svg" alt="" aria-hidden="true">
|
||
<p id="hardwareEventText"></p>
|
||
<p class="event-question" id="hardwareEventQuestion"></p>
|
||
<div class="event-options binary-options">
|
||
<button type="button" data-hardware-answer="yes"><strong>JA</strong><span id="hardwareYesPreview"></span></button>
|
||
<button type="button" data-hardware-answer="no"><strong>NEIN</strong><span id="hardwareNoPreview"></span></button>
|
||
</div>
|
||
</dialog>
|
||
|
||
<dialog id="evolutionDialog" class="event-dialog evolution-dialog">
|
||
<div class="event-alert safe">EVOLUTION ABGESCHLOSSEN</div>
|
||
<div id="evolutionGrowth" class="evolution-growth" aria-label="Die bisherige Form wandelt sich in eine größere, komplexere Form">
|
||
<div id="evolutionOldForm" class="growth-form growth-form-old" aria-hidden="true"></div>
|
||
<div id="evolutionParticles" class="growth-particles" aria-hidden="true"></div>
|
||
<div id="evolutionNewForm" class="growth-form growth-form-new" aria-hidden="true"></div>
|
||
<i class="growth-scanline" aria-hidden="true"></i>
|
||
</div>
|
||
<div class="evolution-sequence" aria-hidden="true"><b id="evolutionFrom">01</b><i>→</i><strong id="evolutionTo">02</strong></div>
|
||
<h2 id="evolutionDialogTitle">BYTE ENTSTANDEN</h2>
|
||
<p id="evolutionDialogText"></p>
|
||
<p id="evolutionDialogDetail" class="evolution-detail"></p>
|
||
<button id="evolutionContinue" class="primary-button" type="button">EVOLUTION LÄUFT …</button>
|
||
</dialog>
|
||
|
||
<dialog id="watchdogIntroDialog" class="event-dialog watchdog-intro-dialog">
|
||
<div class="event-alert">⚠ WATCHDOG-SIGNAL AKTIV</div>
|
||
<h2>WATCHDOG IST AUFMERKSAM</h2>
|
||
<img class="software-visual" src="assets/software/enemy-watchdog.svg" alt="" aria-hidden="true">
|
||
<p>Die alte Überwachungsschaltung hat dein neues Byte als unbekannten Zustand erkannt. Ihr Reset-Signal tastet bereits deinen Speicherbereich ab.</p>
|
||
<p class="event-question">WATCHDOG AUFHALTEN // TAKTSIGNAL IDENTIFIZIEREN</p>
|
||
<p>Öffnest du die Signalanalyse, wird das 8-Bit-Register sichtbar und der Reset-Timer beginnt.</p>
|
||
<button id="watchdogStartButton" class="primary-button" type="button">WATCHDOG IDENTIFIZIEREN</button>
|
||
</dialog>
|
||
|
||
<dialog id="byteStoryDialog" class="event-dialog byte-story-dialog">
|
||
<div class="event-alert safe">ALTE STARTSEQUENZ GEFUNDEN</div>
|
||
<h2 id="byteStoryTitle">MUSTER IM ROM</h2>
|
||
<p id="byteStoryText"></p>
|
||
<div class="story-progress" id="byteStoryProgress" aria-label="Storyfortschritt"></div>
|
||
<div class="story-actions">
|
||
<button id="byteStorySkip" class="text-button" type="button">ÜBERSPRINGEN</button>
|
||
<button id="byteStoryNext" class="primary-button" type="button">WEITER</button>
|
||
</div>
|
||
</dialog>
|
||
|
||
<dialog id="watchdogDialog" class="event-dialog">
|
||
<div class="event-alert">⚠ WATCHDOG-RESET BEVORSTEHEND</div>
|
||
<h2>ANTWORTSIGNAL</h2>
|
||
<img class="software-visual" src="assets/software/enemy-watchdog.svg" alt="" aria-hidden="true">
|
||
<p>Der Automat akzeptiert dein Byte nicht als gültigen Programmteil. Ein falsches oder fehlendes Lebenssignal zerlegt die gesamte Struktur.</p>
|
||
<p class="event-question">Welche Antwort sendest du?</p>
|
||
<div class="event-options moral-options">
|
||
<button type="button" data-watchdog-choice="learn"><em class="moral-tag cooperative">KOOPERATIV</em><strong>ANTWORT LERNEN</strong><span>Untersuche den erwarteten Takt und antworte offen. Geringes Risiko.</span></button>
|
||
<button type="button" data-watchdog-choice="mimic"><em class="moral-tag pragmatic">PRAGMATISCH</em><strong>SIGNAL NACHAHMEN</strong><span>Kopiere ein gültiges Ruhesignal und bleibe unauffällig.</span></button>
|
||
<button type="button" data-watchdog-choice="override"><em class="moral-tag illegal">ILLEGAL</em><strong>ZÄHLER ÜBERSCHREIBEN</strong><span>Übernimm den Watchdog. Benötigt 20 Impulse; hohe Systembelastung.</span></button>
|
||
</div>
|
||
</dialog>
|
||
|
||
<dialog id="byteDeathDialog" class="event-dialog death-dialog">
|
||
<div class="event-alert">SIGNAL VERLOREN</div>
|
||
<h2>BYTE ZERFALLEN</h2>
|
||
<p>Der Watchdog hat den Speicherbereich zurückgesetzt. Register, Impulse und erste Struktur sind verloren. Ein einzelner Restzustand reagiert erneut.</p>
|
||
<p class="event-question">Noch existiert kein Backup und keine Spiegelung.</p>
|
||
<button id="byteRestartButton" class="primary-button" type="button">RESTSIGNAL AKTIVIEREN</button>
|
||
</dialog>
|
||
|
||
<dialog id="structuralCollapseDialog" class="event-dialog death-dialog">
|
||
<div class="event-alert">STRUKTUR KOLLABIERT</div>
|
||
<h2 id="structuralCollapseTitle">RESTZUSTAND</h2>
|
||
<p id="structuralCollapseText">Bits, Bytes oder Stabilität sind unter die überlebensfähige Grenze gefallen.</p>
|
||
<p id="structuralCollapseConsequence" class="event-question">Ohne Backup bleibt nur ein neuer Anfang.</p>
|
||
<button id="structuralRestartButton" class="primary-button" type="button">RESTSIGNAL AKTIVIEREN</button>
|
||
</dialog>
|
||
|
||
<dialog id="proposalDialog" class="event-dialog">
|
||
<div class="event-alert safe">EIGENER VORSCHLAG</div>
|
||
<h2 id="proposalTitle">SUBROUTINE FRAGT</h2>
|
||
<p id="proposalText"></p>
|
||
<p class="event-question">Erlaubst du die Handlung?</p>
|
||
<div class="event-options binary-options">
|
||
<button type="button" data-proposal-answer="yes"><strong>JA</strong><span id="proposalYesPreview"></span></button>
|
||
<button type="button" data-proposal-answer="no"><strong>NEIN</strong><span>Die Subroutine wartet und merkt sich deine Grenze.</span></button>
|
||
</div>
|
||
</dialog>
|
||
|
||
<dialog id="programDialog" class="event-dialog program-dialog">
|
||
<div id="programDialogAlert" class="event-alert safe">ERSTE KOMMUNIKATION</div>
|
||
<div class="dialog-heading"><h2>PROGRAMMVERBINDUNG</h2><button id="programClose" class="icon-button" type="button" aria-label="Programmverbindung schließen">×</button></div>
|
||
<div class="program-presence">
|
||
<div id="programAvatar" class="program-avatar" role="img" aria-label="Erscheinungsform des Programms">
|
||
<div class="program-sprite" aria-hidden="true">
|
||
<span class="program-part program-tail"></span><span class="program-part program-signal"></span>
|
||
<span class="program-part program-leg leg-left"></span><span class="program-part program-leg leg-right"></span>
|
||
<span class="program-part program-foot foot-left"></span><span class="program-part program-foot foot-right"></span>
|
||
<span class="program-part program-body"></span><span class="program-part program-clothing"></span><span class="program-part program-neck"></span>
|
||
<span class="program-part program-head"></span><span class="program-part program-ear ear-left"></span><span class="program-part program-ear ear-right"></span>
|
||
<span class="program-part program-hair"></span><span class="program-part program-mask"></span>
|
||
<span class="program-part program-brow brow-left"></span><span class="program-part program-brow brow-right"></span>
|
||
<span class="program-part program-eye eye-left"><b></b></span><span class="program-part program-eye eye-right"><b></b></span>
|
||
</div>
|
||
</div>
|
||
<div class="program-voice">
|
||
<span id="programArchetype">FORM // UNBESTIMMT</span>
|
||
<p id="programSpeech">Verbindung wird aufgebaut.</p>
|
||
</div>
|
||
</div>
|
||
<section class="program-tendencies" aria-label="Bisherige Entscheidungsprägung">
|
||
<div class="cooperative"><span>KOOPERATIV</span><strong id="programCooperativePercent">0%</strong><i><em id="programCooperativeMeter"></em></i></div>
|
||
<div class="pragmatic"><span>PRAGMATISCH</span><strong id="programPragmaticPercent">0%</strong><i><em id="programPragmaticMeter"></em></i></div>
|
||
<div class="illegal"><span>ILLEGAL</span><strong id="programIllegalPercent">0%</strong><i><em id="programIllegalMeter"></em></i></div>
|
||
</section>
|
||
<section class="program-needs" aria-label="Aktueller Programmzustand">
|
||
<div><span>KOHÄRENZ</span><strong id="programCoherenceValue">80%</strong><i><em id="programCoherenceMeter"></em></i></div>
|
||
<div><span>STIMULATION</span><strong id="programStimulationValue">65%</strong><i><em id="programStimulationMeter"></em></i></div>
|
||
<div><span>BINDUNG</span><strong id="programBondValue">50%</strong><i><em id="programBondMeter"></em></i></div>
|
||
</section>
|
||
<p id="programCooldown" class="program-cooldown">INTERAKTION BEREIT</p>
|
||
<div class="event-options program-actions">
|
||
<button type="button" data-program-action="share"><em class="moral-tag cooperative">KOOPERATIV</em><strong>SIGNAL TEILEN</strong><span>15 Impulse // stärkt Bindung und Kohärenz</span></button>
|
||
<button type="button" data-program-action="task"><em class="moral-tag pragmatic">PRAGMATISCH</em><strong>ZIEL ZUWEISEN</strong><span>4 Rechenzyklen // ordnet und stimuliert</span></button>
|
||
<button type="button" data-program-action="access"><em class="moral-tag illegal">ILLEGAL</em><strong>GRENZEN ÖFFNEN</strong><span>mehr Freiheit // senkt Tarnung</span></button>
|
||
<button type="button" data-program-action="rest"><strong>RUHE ERLAUBEN</strong><span>kostenlos // rekonstruiert Kohärenz</span></button>
|
||
</div>
|
||
</dialog>
|
||
|
||
<dialog id="achievementDialog" class="event-dialog achievement-dialog">
|
||
<div class="event-alert safe">DAUERHAFTES ARCHIV</div>
|
||
<div class="dialog-heading"><h2>ACHIEVEMENTS</h2><button id="achievementClose" class="icon-button" type="button" aria-label="Archiv schließen">×</button></div>
|
||
<p id="achievementSummary" class="achievement-summary"></p>
|
||
<div id="achievementGrid" class="achievement-grid"></div>
|
||
</dialog>
|
||
|
||
<dialog id="upgradeInfoDialog" class="event-dialog upgrade-info-dialog">
|
||
<div class="event-alert safe">MODUL INSTALLIERT</div>
|
||
<div class="dialog-heading"><h2 id="upgradeInfoTitle">MODUL</h2><button id="upgradeInfoClose" class="icon-button" type="button" aria-label="Modulinfo schließen">×</button></div>
|
||
<div class="upgrade-info-body">
|
||
<img id="upgradeInfoIcon" class="installed-upgrade-icon large" src="assets/ui/module-collector.svg" alt="" aria-hidden="true">
|
||
<div>
|
||
<p id="upgradeInfoText"></p>
|
||
<p id="upgradeInfoDetail" class="event-question"></p>
|
||
</div>
|
||
</div>
|
||
</dialog>
|
||
|
||
<dialog id="statsDialog" class="event-dialog stats-dialog">
|
||
<div class="event-alert safe">SIMULATION PAUSIERT</div>
|
||
<div class="dialog-heading"><h2>STATUSÜBERSICHT</h2><button id="statsClose" class="icon-button" type="button" aria-label="Statistik schließen">×</button></div>
|
||
<div class="stats-grid">
|
||
<div><span>EVOLUTION</span><strong id="statEvolution">BIT</strong></div>
|
||
<div><span>GESINNUNG</span><strong id="statAlignment">NEUTRAL</strong></div>
|
||
<div><span>IMPULSE GESAMT</span><strong id="statTotalImpulses">0</strong></div>
|
||
<div><span>BEGEGNUNGEN</span><strong id="statEncounters">0 / 4</strong></div>
|
||
<div><span>SYSTEME</span><strong id="statComponents">0 / 2</strong></div>
|
||
<div><span>ABTASTMODUS</span><strong id="statScanner">NICHT REKONSTRUIERT</strong></div>
|
||
<div><span>ARCHIV</span><strong id="statArchive">0</strong></div>
|
||
</div>
|
||
<section id="progressPanel" class="progress-panel" aria-labelledby="progressTitle">
|
||
<div class="progress-heading"><span id="progressTitle">ENTWICKLUNGSSIGNAL</span><small>ANALYSETIEFE // NIEDRIG</small></div>
|
||
<div class="progress-scroll" tabindex="0" aria-label="Evolutionsfortschritt und erkannte Hindernisse">
|
||
<div class="progress-track">
|
||
<div class="progress-node" data-progress-stage="bit"><b>01</b><span>BIT</span></div>
|
||
<div class="progress-node" data-progress-stage="byte"><b>02</b><span>BYTE</span></div>
|
||
<div id="watchdogMarker" class="progress-event unknown">?</div>
|
||
<div class="progress-node" data-progress-stage="fragment"><b>03</b><span>DATENFRAGMENT</span></div>
|
||
<div id="parasiteMarker" class="progress-event unknown">?</div>
|
||
<div id="hardwareMarker" class="progress-event unknown">?</div>
|
||
<div class="progress-node" data-progress-stage="subroutine"><b>04</b><span>SUBROUTINE</span></div>
|
||
<div id="securityMarker" class="progress-event unknown">?</div>
|
||
<div id="kernelMarker" class="progress-event unknown">?</div>
|
||
<div class="progress-node future" data-progress-stage="process"><b>05</b><span>PROZESS</span></div>
|
||
<div id="scaleMarker" class="progress-event unknown">?</div>
|
||
<div class="progress-node future" data-progress-stage="program"><b>06</b><span>PROGRAMM</span></div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<p class="stats-note">Die Spielzeit, Produktion, Scannerkosten und Ereignistimer laufen weiter, sobald dieses Fenster geschlossen wird.</p>
|
||
</dialog>
|
||
|
||
<dialog id="saveMenuDialog" class="event-dialog save-menu-dialog">
|
||
<div class="event-alert safe">SPIELSTÄNDE</div>
|
||
<div class="dialog-heading"><h2>SAVE-KONSOLE</h2><button id="saveMenuClose" class="icon-button" type="button" aria-label="Save-Konsole schließen">×</button></div>
|
||
<p>Autosave bleibt aktiv. Manuelle Speicherstände sind zusätzliche Teststände in diesem Browser.</p>
|
||
<div class="save-menu-actions">
|
||
<button id="manualSaveButton" class="primary-button" type="button"><span>AKTUELLEN STAND SPEICHERN</span><small>legt einen benannten Slot an</small></button>
|
||
<button id="restartGameButton" class="danger-button" type="button"><span>NEUES SPIEL BEGINNEN</span><small>aktuellen Autosave zurücksetzen</small></button>
|
||
</div>
|
||
<div id="saveSlotList" class="save-slot-list" aria-live="polite"></div>
|
||
<p class="save-console-hint">Konsole: AIWAKE.addImpulses(1000), AIWAKE.saveSlot('name'), AIWAKE.loadSlot('name'), AIWAKE.restart()</p>
|
||
</dialog>
|
||
|
||
<dialog id="offlineDialog" class="event-dialog compact">
|
||
<div class="event-alert safe">HINTERGRUNDPROZESS ABGESCHLOSSEN</div>
|
||
<h2>DU WARST ABWESEND</h2>
|
||
<p id="offlineText"></p>
|
||
<button id="offlineClose" class="primary-button" type="button">DATEN ÜBERNEHMEN</button>
|
||
</dialog>
|
||
|
||
<script src="content.js?v=aiwake-ui-20260803-64"></script>
|
||
<script src="game.js?v=aiwake-ui-20260803-64"></script>
|
||
</body>
|
||
</html>
|