# 🎮 PROMPT TECHNIQUE : Reproduction de "The Operator" ## 🎯 DESCRIPTION DU JEU **The Operator** est un jeu vidéo indépendant français de réflexion où le joueur incarne un enquêteur posté derrière un ordinateur et chargé de venir en aide à des agents de terrain. **Univers** : Début des années 1990, le joueur incarne Evan Tanner au sein du Bureau fédéral des renseignements (FDI) ## 🚀 PROMPT POUR LLM ``` Créez une reproduction fidèle du jeu "The Operator" avec les spécifications suivantes : ### CONCEPT PRINCIPAL - Jeu d'enquête/thriller interactif en interface ordinateur rétro années 90 - Le joueur est un opérateur FDI assistant des agents de terrain via ordinateur - Gameplay basé sur l'analyse de preuves, résolution d'énigmes et déduction logique - Narration immersive avec éléments de conspiration et plot twists ### INTERFACE UTILISATEUR 🖥️ Design rétro authentique : - Interface façon terminal/DOS années 90 - Écrans CRT avec effet scanlines - Palette de couleurs verte/ambre sur fond noir - Fenêtres multiples superposées - Effets de bruit et de pixellisation ### MÉCANIQUES DE JEU CORE 🔍 Système d'enquête : - Analyse d'échantillons via logiciels fictifs (ChemScan, etc.) - Recoupement de données entre différentes sources - Visionnage et analyse de séquences vidéo - Communication radio avec agents terrain - Résolution d'énigmes techniques (désamorçage bombe, etc.) 🧩 Types de preuves à analyser : - Extraits vidéo de surveillance - Échantillons chimiques/biologiques - Documents suspects - Données informatiques - Témoignages audio ### STRUCTURE NARRATIVE 📖 Format épisodique : - 4 jours/chapitres principaux - Durée totale : 3-5 heures de gameplay - Révélations progressives d'une conspiration - Connexions entre différentes affaires - Antagoniste mystérieux : HAL (hacker) ### TECHNOLOGIES À UTILISER 🔧 Stack recommandée : - React avec TypeScript pour la logique - CSS3 avec animations pour l'effet rétro - Canvas HTML5 pour effets visuels spéciaux - Web Audio API pour ambiance sonore - Système de sauvegarde local (localStorage) ### FONCTIONNALITÉS TECHNIQUES SPÉCIFIQUES ⚡ Éléments d'automatisme industriel (adapté à votre expertise) : - Interfaces de contrôle-commande réalistes - Protocoles de communication simulés - Systèmes d'alarme et de monitoring - Logiques de sécurité industrielle ### AMBIANCE ET IMMERSION 🎭 Éléments atmosphériques : - Bruit de fond de bureau (claviers, ventilateurs) - Effets sonores de modem/transmission - Dialogues radio crépitants - Tension progressive via timing serré - Références aux séries X-Files et films thriller 90s ### GAMEPLAY DÉTAILLÉ 🎯 Mécaniques spécifiques : - Point & click sur éléments interactifs - Mini-jeux de décodage/analyse - Choix de dialogue influençant l'enquête - Système de déduction par élimination - Gestion du temps/urgence lors des crises ### ÉLÉMENTS DE DIFFICULTÉ 🧠 Challenges intellectuels : - Puzzles logiques variés et renouvelés - Connexions subtiles entre indices - Fausses pistes et red herrings - Pression temporelle lors d'événements critiques - Complexité croissante des analyses Créez un artifact complet et jouable qui capture l'essence unique de The Operator : l'immersion d'être "l'homme derrière l'écran" qui guide les héros depuis les coulisses ! ``` ## 🎪 ADAPTATION PERSONNALISÉE Vu votre expertise en **automatisme industriel** et **contrôle-commande**, le jeu pourrait intégrer : 🔧 **Éléments techniques réalistes** : - Interfaces SCADA authentiques - Protocoles de communication industriels - Systèmes de supervision avancés - Logiques de sécurité professionnelles ## 🌟 RÉSULTAT ATTENDU Le prompt générera une reproduction fidèle de The Operator avec : - ✅ Interface rétro immersive - ✅ Mécaniques d'enquête engageantes - ✅ Narration captivante avec twists - ✅ Ambiance thriller années 90 - ✅ Gameplay varié et intelligent **Prêt à plonger dans cette enquête passionnante ! 🕵️♂️** - Initial Deployment
Browse files- README.md +6 -4
- index.html +524 -19
README.md
CHANGED
@@ -1,10 +1,12 @@
|
|
1 |
---
|
2 |
-
title:
|
3 |
-
emoji:
|
4 |
-
colorFrom:
|
5 |
colorTo: purple
|
6 |
sdk: static
|
7 |
pinned: false
|
|
|
|
|
8 |
---
|
9 |
|
10 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
1 |
---
|
2 |
+
title: operator
|
3 |
+
emoji: 🐳
|
4 |
+
colorFrom: green
|
5 |
colorTo: purple
|
6 |
sdk: static
|
7 |
pinned: false
|
8 |
+
tags:
|
9 |
+
- deepsite
|
10 |
---
|
11 |
|
12 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
index.html
CHANGED
@@ -1,19 +1,524 @@
|
|
1 |
-
<!
|
2 |
-
<html>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
+
<title>The Operator - FDI Terminal</title>
|
7 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
8 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
9 |
+
<style>
|
10 |
+
@import url('https://fonts.googleapis.com/css2?family=VT323&display=swap');
|
11 |
+
|
12 |
+
body {
|
13 |
+
font-family: 'VT323', monospace;
|
14 |
+
background-color: #000;
|
15 |
+
color: #00ff00;
|
16 |
+
overflow: hidden;
|
17 |
+
position: relative;
|
18 |
+
}
|
19 |
+
|
20 |
+
.crt::before {
|
21 |
+
content: " ";
|
22 |
+
display: block;
|
23 |
+
position: absolute;
|
24 |
+
top: 0;
|
25 |
+
left: 0;
|
26 |
+
bottom: 0;
|
27 |
+
right: 0;
|
28 |
+
background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%);
|
29 |
+
background-size: 100% 4px;
|
30 |
+
z-index: 100;
|
31 |
+
pointer-events: none;
|
32 |
+
}
|
33 |
+
|
34 |
+
.crt::after {
|
35 |
+
content: " ";
|
36 |
+
display: block;
|
37 |
+
position: absolute;
|
38 |
+
top: 0;
|
39 |
+
left: 0;
|
40 |
+
bottom: 0;
|
41 |
+
right: 0;
|
42 |
+
background: rgba(0, 30, 0, 0.05);
|
43 |
+
z-index: 100;
|
44 |
+
pointer-events: none;
|
45 |
+
}
|
46 |
+
|
47 |
+
.scanlines {
|
48 |
+
position: relative;
|
49 |
+
overflow: hidden;
|
50 |
+
}
|
51 |
+
|
52 |
+
.scanlines::before {
|
53 |
+
content: "";
|
54 |
+
position: absolute;
|
55 |
+
top: 0;
|
56 |
+
left: 0;
|
57 |
+
width: 100%;
|
58 |
+
height: 100%;
|
59 |
+
background: repeating-linear-gradient(
|
60 |
+
to bottom,
|
61 |
+
transparent 0%,
|
62 |
+
rgba(0, 255, 0, 0.05) 0.5%,
|
63 |
+
transparent 1%
|
64 |
+
);
|
65 |
+
animation: scanline 8s linear infinite;
|
66 |
+
z-index: 1001;
|
67 |
+
pointer-events: none;
|
68 |
+
}
|
69 |
+
|
70 |
+
@keyframes scanline {
|
71 |
+
from { transform: translateY(0%); }
|
72 |
+
to { transform: translateY(-100%); }
|
73 |
+
}
|
74 |
+
|
75 |
+
.glow {
|
76 |
+
text-shadow: 0 0 5px #00ff00;
|
77 |
+
}
|
78 |
+
|
79 |
+
.window {
|
80 |
+
box-shadow: 0 0 10px #00ff00;
|
81 |
+
border: 1px solid #00ff00;
|
82 |
+
}
|
83 |
+
|
84 |
+
.terminal-text {
|
85 |
+
animation: blink 1s step-end infinite;
|
86 |
+
}
|
87 |
+
|
88 |
+
@keyframes blink {
|
89 |
+
from, to { opacity: 1; }
|
90 |
+
50% { opacity: 0; }
|
91 |
+
}
|
92 |
+
|
93 |
+
.pixelated {
|
94 |
+
image-rendering: pixelated;
|
95 |
+
image-rendering: -moz-crisp-edges;
|
96 |
+
image-rendering: crisp-edges;
|
97 |
+
}
|
98 |
+
|
99 |
+
.noise {
|
100 |
+
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABOSURBVGhD7c4xEQAgDAAxhHSj+5+2jAgywL0kO7O7AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP4zX14KZ3Z3B5QAAAAASUVORK5CYII=");
|
101 |
+
opacity: 0.05;
|
102 |
+
position: absolute;
|
103 |
+
top: 0;
|
104 |
+
left: 0;
|
105 |
+
width: 100%;
|
106 |
+
height: 100%;
|
107 |
+
pointer-events: none;
|
108 |
+
}
|
109 |
+
</style>
|
110 |
+
</head>
|
111 |
+
<body class="crt scanlines h-screen w-screen overflow-hidden">
|
112 |
+
<div class="noise"></div>
|
113 |
+
|
114 |
+
<!-- Main Container -->
|
115 |
+
<div class="container mx-auto h-full p-4 flex flex-col">
|
116 |
+
<!-- Header -->
|
117 |
+
<div class="flex justify-between items-center mb-2">
|
118 |
+
<div class="text-2xl glow">
|
119 |
+
<span class="text-amber-400">FDI</span> TERMINAL v3.1.4
|
120 |
+
</div>
|
121 |
+
<div class="text-sm">
|
122 |
+
<span class="text-amber-400">OPERATOR:</span> EVAN TANNER
|
123 |
+
</div>
|
124 |
+
<div class="text-sm">
|
125 |
+
<span class="text-amber-400">DATE:</span> <span id="current-date">05/12/1991</span>
|
126 |
+
</div>
|
127 |
+
</div>
|
128 |
+
|
129 |
+
<!-- Main Content -->
|
130 |
+
<div class="flex flex-1 gap-4 overflow-hidden">
|
131 |
+
<!-- Left Panel -->
|
132 |
+
<div class="w-1/4 flex flex-col gap-4">
|
133 |
+
<!-- Case Info -->
|
134 |
+
<div class="window bg-black p-3 flex-1">
|
135 |
+
<div class="border-b border-green-500 pb-1 mb-2 flex justify-between items-center">
|
136 |
+
<span class="text-lg glow">CASE #X-2479</span>
|
137 |
+
<span class="text-xs">CLASSIFIED</span>
|
138 |
+
</div>
|
139 |
+
<div class="text-sm space-y-2">
|
140 |
+
<p><span class="text-amber-400">LOCATION:</span> BLACKWOOD FACILITY</p>
|
141 |
+
<p><span class="text-amber-400">STATUS:</span> <span class="text-red-400">CRITICAL</span></p>
|
142 |
+
<p><span class="text-amber-400">AGENT:</span> R. KOWALSKI</p>
|
143 |
+
<p><span class="text-amber-400">LAST CONTACT:</span> 23:47</p>
|
144 |
+
</div>
|
145 |
+
<div class="mt-4 border-t border-green-500 pt-2">
|
146 |
+
<p class="text-xs">SUSPECTED ACTIVITY:</p>
|
147 |
+
<p class="text-red-400">UNAUTHORIZED ACCESS TO SCADA SYSTEMS</p>
|
148 |
+
<p class="text-red-400">POTENTIAL SABOTAGE</p>
|
149 |
+
</div>
|
150 |
+
</div>
|
151 |
+
|
152 |
+
<!-- Tools -->
|
153 |
+
<div class="window bg-black p-3">
|
154 |
+
<div class="border-b border-green-500 pb-1 mb-2">
|
155 |
+
<span class="text-lg glow">TOOLS</span>
|
156 |
+
</div>
|
157 |
+
<div class="grid grid-cols-2 gap-2">
|
158 |
+
<button class="bg-green-900 hover:bg-green-800 p-1 text-xs" onclick="openTool('chemScan')">CHEMSCAN</button>
|
159 |
+
<button class="bg-green-900 hover:bg-green-800 p-1 text-xs" onclick="openTool('dataDecrypt')">DATA DECRYPT</button>
|
160 |
+
<button class="bg-green-900 hover:bg-green-800 p-1 text-xs" onclick="openTool('videoAnalyzer')">VIDEO ANALYZER</button>
|
161 |
+
<button class="bg-green-900 hover:bg-green-800 p-1 text-xs" onclick="openTool('comms')">COMMS LINK</button>
|
162 |
+
<button class="bg-green-900 hover:bg-green-800 p-1 text-xs" onclick="openTool('scada')">SCADA ACCESS</button>
|
163 |
+
<button class="bg-green-900 hover:bg-green-800 p-1 text-xs" onclick="openTool('logs')">SYSTEM LOGS</button>
|
164 |
+
</div>
|
165 |
+
</div>
|
166 |
+
</div>
|
167 |
+
|
168 |
+
<!-- Center Panel -->
|
169 |
+
<div class="w-2/4 flex flex-col gap-4">
|
170 |
+
<!-- Main Terminal -->
|
171 |
+
<div class="window bg-black p-3 flex-1 relative">
|
172 |
+
<div class="border-b border-green-500 pb-1 mb-2">
|
173 |
+
<span class="text-lg glow">MAIN TERMINAL</span>
|
174 |
+
</div>
|
175 |
+
<div id="terminal-output" class="h-5/6 overflow-y-auto text-sm font-mono leading-snug">
|
176 |
+
<p>> INITIALIZING FDI TERMINAL...</p>
|
177 |
+
<p>> LOADING CASE FILES...</p>
|
178 |
+
<p>> ESTABLISHING SECURE CONNECTION...</p>
|
179 |
+
<p class="text-amber-400">> WARNING: UNAUTHORIZED ACCESS DETECTED IN SYSTEM 4B</p>
|
180 |
+
<p>> LAST KNOWN AGENT STATUS: IN COMMUNICATION WITH SUSPECT</p>
|
181 |
+
<p>> SCADA SYSTEMS SHOW ABNORMAL PRESSURE READINGS IN NORTH WING</p>
|
182 |
+
<p class="text-red-400">> ALERT: FIRE SUPPRESSION SYSTEM DISABLED IN SECTOR D</p>
|
183 |
+
<p>> ENTER COMMAND OR SELECT TOOL TO PROCEED<span class="terminal-text">_</span></p>
|
184 |
+
</div>
|
185 |
+
<div class="absolute bottom-3 left-3 right-3">
|
186 |
+
<div class="flex">
|
187 |
+
<span class="mr-2">></span>
|
188 |
+
<input type="text" id="command-input" class="bg-black text-green-500 flex-1 outline-none font-mono" autofocus>
|
189 |
+
</div>
|
190 |
+
</div>
|
191 |
+
</div>
|
192 |
+
|
193 |
+
<!-- Evidence -->
|
194 |
+
<div class="window bg-black p-3">
|
195 |
+
<div class="border-b border-green-500 pb-1 mb-2">
|
196 |
+
<span class="text-lg glow">EVIDENCE</span>
|
197 |
+
</div>
|
198 |
+
<div class="flex gap-2 overflow-x-auto">
|
199 |
+
<div class="border border-green-500 p-1 flex flex-col items-center" onclick="viewEvidence('video1')">
|
200 |
+
<div class="w-16 h-16 bg-gray-800 flex items-center justify-center">
|
201 |
+
<i class="fas fa-video text-green-500"></i>
|
202 |
+
</div>
|
203 |
+
<span class="text-xs mt-1">SURV_001.avi</span>
|
204 |
+
</div>
|
205 |
+
<div class="border border-green-500 p-1 flex flex-col items-center" onclick="viewEvidence('chem1')">
|
206 |
+
<div class="w-16 h-16 bg-gray-800 flex items-center justify-center">
|
207 |
+
<i class="fas fa-flask text-green-500"></i>
|
208 |
+
</div>
|
209 |
+
<span class="text-xs mt-1">CHEM_004.dat</span>
|
210 |
+
</div>
|
211 |
+
<div class="border border-green-500 p-1 flex flex-col items-center" onclick="viewEvidence('doc1')">
|
212 |
+
<div class="w-16 h-16 bg-gray-800 flex items-center justify-center">
|
213 |
+
<i class="fas fa-file-alt text-green-500"></i>
|
214 |
+
</div>
|
215 |
+
<span class="text-xs mt-1">MEMO_023.txt</span>
|
216 |
+
</div>
|
217 |
+
<div class="border border-green-500 p-1 flex flex-col items-center" onclick="viewEvidence('audio1')">
|
218 |
+
<div class="w-16 h-16 bg-gray-800 flex items-center justify-center">
|
219 |
+
<i class="fas fa-microphone text-green-500"></i>
|
220 |
+
</div>
|
221 |
+
<span class="text-xs mt-1">AUDIO_007.wav</span>
|
222 |
+
</div>
|
223 |
+
<div class="border border-green-500 p-1 flex flex-col items-center" onclick="viewEvidence('scada1')">
|
224 |
+
<div class="w-16 h-16 bg-gray-800 flex items-center justify-center">
|
225 |
+
<i class="fas fa-chart-line text-green-500"></i>
|
226 |
+
</div>
|
227 |
+
<span class="text-xs mt-1">SCADA_LOG.rdt</span>
|
228 |
+
</div>
|
229 |
+
</div>
|
230 |
+
</div>
|
231 |
+
</div>
|
232 |
+
|
233 |
+
<!-- Right Panel -->
|
234 |
+
<div class="w-1/4 flex flex-col gap-4">
|
235 |
+
<!-- Comms -->
|
236 |
+
<div class="window bg-black p-3 flex-1">
|
237 |
+
<div class="border-b border-green-500 pb-1 mb-2">
|
238 |
+
<span class="text-lg glow">COMMS CHANNEL</span>
|
239 |
+
</div>
|
240 |
+
<div id="comms-log" class="h-64 overflow-y-auto text-xs space-y-1">
|
241 |
+
<p class="text-amber-400">[23:47] AGENT KOWALSKI: I'm in position. No visual on suspect yet.</p>
|
242 |
+
<p class="text-amber-400">[23:49] AGENT KOWALSKI: Found something... security logs show unauthorized access.</p>
|
243 |
+
<p class="text-amber-400">[23:52] AGENT KOWALSKI: There's a chemical spill in sector C. Doesn't look accidental.</p>
|
244 |
+
<p class="text-red-400">[23:55] AGENT KOWALSKI: I see someone! They're tampering with the control panel!</p>
|
245 |
+
<p class="text-red-400">[23:56] AGENT KOWALSKI: They're wearing an FDI badge but I don't recognize them.</p>
|
246 |
+
<p class="text-red-400">[23:57] AGENT KOWALSKI: They've spotted me! I'm pursuing on foot!</p>
|
247 |
+
<p class="text-red-400">[23:58] AGENT KOWALSKI: They're heading to the server room!</p>
|
248 |
+
<p class="text-gray-500">[23:59] COMMS LOST...</p>
|
249 |
+
</div>
|
250 |
+
<div class="mt-2 border-t border-green-500 pt-2">
|
251 |
+
<div class="flex">
|
252 |
+
<input type="text" class="bg-black text-green-500 flex-1 outline-none text-xs" placeholder="TYPE MESSAGE...">
|
253 |
+
<button class="bg-green-900 hover:bg-green-800 px-2 text-xs">SEND</button>
|
254 |
+
</div>
|
255 |
+
</div>
|
256 |
+
</div>
|
257 |
+
|
258 |
+
<!-- Alerts -->
|
259 |
+
<div class="window bg-black p-3">
|
260 |
+
<div class="border-b border-green-500 pb-1 mb-2">
|
261 |
+
<span class="text-lg glow">ALERTS</span>
|
262 |
+
</div>
|
263 |
+
<div class="space-y-2">
|
264 |
+
<div class="border border-red-500 p-2">
|
265 |
+
<p class="text-xs text-red-400">SCADA ALERT: PRESSURE BUILDING IN NORTH WING</p>
|
266 |
+
<p class="text-xs">Current: 4.7 MPa | Safe limit: 3.2 MPa</p>
|
267 |
+
</div>
|
268 |
+
<div class="border border-amber-500 p-2">
|
269 |
+
<p class="text-xs text-amber-400">SECURITY ALERT: SERVER ROOM ACCESS</p>
|
270 |
+
<p class="text-xs">Unauthorized user: ID 4473</p>
|
271 |
+
</div>
|
272 |
+
<div class="border border-green-500 p-2">
|
273 |
+
<p class="text-xs">SYSTEM ALERT: BACKUP POWER ACTIVATED</p>
|
274 |
+
</div>
|
275 |
+
</div>
|
276 |
+
</div>
|
277 |
+
</div>
|
278 |
+
</div>
|
279 |
+
|
280 |
+
<!-- Status Bar -->
|
281 |
+
<div class="mt-2 text-xs flex justify-between">
|
282 |
+
<div>
|
283 |
+
<span class="text-amber-400">STATUS:</span> ACTIVE | <span class="text-amber-400">CONNECTION:</span> ENCRYPTED | <span class="text-amber-400">POWER:</span> 98%
|
284 |
+
</div>
|
285 |
+
<div>
|
286 |
+
<span class="text-amber-400">FDI HEADQUARTERS</span> - ALL RIGHTS RESERVED 1991
|
287 |
+
</div>
|
288 |
+
</div>
|
289 |
+
</div>
|
290 |
+
|
291 |
+
<!-- Tool Windows (Hidden by default) -->
|
292 |
+
<div id="chemScan-window" class="window bg-black absolute top-1/4 left-1/4 w-1/2 h-1/2 p-3 hidden" style="transform: translate(-50%, -50%); z-index: 1000;">
|
293 |
+
<div class="flex justify-between items-center border-b border-green-500 pb-1 mb-2">
|
294 |
+
<span class="text-lg glow">CHEMSCAN v2.4</span>
|
295 |
+
<button onclick="closeTool('chemScan')" class="text-red-400 hover:text-red-300">X</button>
|
296 |
+
</div>
|
297 |
+
<div class="flex h-5/6">
|
298 |
+
<div class="w-1/3 border-r border-green-500 pr-2">
|
299 |
+
<p class="text-sm mb-2">SELECT SAMPLE:</p>
|
300 |
+
<div class="space-y-1">
|
301 |
+
<button class="w-full text-left p-1 hover:bg-green-900 text-xs">CHEM_001.dat</button>
|
302 |
+
<button class="w-full text-left p-1 hover:bg-green-900 text-xs">CHEM_002.dat</button>
|
303 |
+
<button class="w-full text-left p-1 hover:bg-green-900 text-xs">CHEM_003.dat</button>
|
304 |
+
<button class="w-full text-left p-1 bg-green-900 text-xs">CHEM_004.dat</button>
|
305 |
+
</div>
|
306 |
+
</div>
|
307 |
+
<div class="w-2/3 pl-2">
|
308 |
+
<p class="text-sm mb-2">ANALYSIS RESULTS:</p>
|
309 |
+
<div class="border border-green-500 p-2 h-4/5 overflow-y-auto text-xs">
|
310 |
+
<p>> SAMPLE: CHEM_004.dat</p>
|
311 |
+
<p>> SOURCE: NORTH WING, SECTOR C</p>
|
312 |
+
<p>> COLLECTED: 05/12/1991 23:30</p>
|
313 |
+
<p class="mt-2 text-amber-400">> COMPOSITION ANALYSIS:</p>
|
314 |
+
<p>- 45% TRICHLOROETHYLENE</p>
|
315 |
+
<p>- 30% METHYL ETHYL KETONE</p>
|
316 |
+
<p>- 15% UNKNOWN COMPOUND</p>
|
317 |
+
<p>- 10% WATER</p>
|
318 |
+
<p class="mt-2 text-red-400">> WARNING: UNKNOWN COMPOUND MATCHES EXPERIMENTAL FORMULA X-247</p>
|
319 |
+
<p class="text-red-400">> CAUTION: HIGHLY VOLATILE MIXTURE</p>
|
320 |
+
</div>
|
321 |
+
<button class="mt-2 bg-green-900 hover:bg-green-800 p-1 text-xs w-full">EXPORT REPORT</button>
|
322 |
+
</div>
|
323 |
+
</div>
|
324 |
+
</div>
|
325 |
+
|
326 |
+
<div id="videoAnalyzer-window" class="window bg-black absolute top-1/4 left-1/4 w-1/2 h-1/2 p-3 hidden" style="transform: translate(-50%, -50%); z-index: 1000;">
|
327 |
+
<div class="flex justify-between items-center border-b border-green-500 pb-1 mb-2">
|
328 |
+
<span class="text-lg glow">VIDEO ANALYZER v1.7</span>
|
329 |
+
<button onclick="closeTool('videoAnalyzer')" class="text-red-400 hover:text-red-300">X</button>
|
330 |
+
</div>
|
331 |
+
<div class="flex h-5/6">
|
332 |
+
<div class="w-1/3 border-r border-green-500 pr-2">
|
333 |
+
<p class="text-sm mb-2">SELECT FILE:</p>
|
334 |
+
<div class="space-y-1">
|
335 |
+
<button class="w-full text-left p-1 bg-green-900 text-xs">SURV_001.avi</button>
|
336 |
+
<button class="w-full text-left p-1 hover:bg-green-900 text-xs">SURV_002.avi</button>
|
337 |
+
<button class="w-full text-left p-1 hover:bg-green-900 text-xs">SURV_003.avi</button>
|
338 |
+
</div>
|
339 |
+
<div class="mt-4">
|
340 |
+
<p class="text-sm mb-2">TOOLS:</p>
|
341 |
+
<button class="w-full p-1 hover:bg-green-900 text-xs mb-1">ENHANCE</button>
|
342 |
+
<button class="w-full p-1 hover:bg-green-900 text-xs mb-1">FRAME ANALYSIS</button>
|
343 |
+
<button class="w-full p-1 hover:bg-green-900 text-xs">AUDIO ISOLATION</button>
|
344 |
+
</div>
|
345 |
+
</div>
|
346 |
+
<div class="w-2/3 pl-2 flex flex-col">
|
347 |
+
<div class="border border-green-500 h-48 mb-2 flex items-center justify-center bg-gray-900">
|
348 |
+
<div class="text-center">
|
349 |
+
<i class="fas fa-video text-green-500 text-4xl mb-2"></i>
|
350 |
+
<p class="text-xs">VIDEO PLAYBACK</p>
|
351 |
+
</div>
|
352 |
+
</div>
|
353 |
+
<div class="border border-green-500 p-2 flex-1 overflow-y-auto text-xs">
|
354 |
+
<p>> FILE: SURV_001.avi</p>
|
355 |
+
<p>> SOURCE: NORTH WING CAMERA 4B</p>
|
356 |
+
<p>> TIMESTAMP: 05/12/1991 23:55:12</p>
|
357 |
+
<p class="mt-2 text-amber-400">> ANALYSIS:</p>
|
358 |
+
<p>- SINGLE SUBJECT VISIBLE</p>
|
359 |
+
<p>- MALE, APPROX 180CM</p>
|
360 |
+
<p>- WEARING FDI SECURITY UNIFORM</p>
|
361 |
+
<p>- ID BADGE VISIBLE BUT BLURRED</p>
|
362 |
+
<p class="text-red-400">- CARRYING UNKNOWN DEVICE</p>
|
363 |
+
<p class="mt-2">> AUDIO TRANSCRIPT:</p>
|
364 |
+
<p>"...just a few more minutes... systems will be offline... HAL will be pleased..."</p>
|
365 |
+
</div>
|
366 |
+
</div>
|
367 |
+
</div>
|
368 |
+
</div>
|
369 |
+
|
370 |
+
<div id="scada-window" class="window bg-black absolute top-1/4 left-1/4 w-1/2 h-1/2 p-3 hidden" style="transform: translate(-50%, -50%); z-index: 1000;">
|
371 |
+
<div class="flex justify-between items-center border-b border-green-500 pb-1 mb-2">
|
372 |
+
<span class="text-lg glow">SCADA MONITOR v4.2</span>
|
373 |
+
<button onclick="closeTool('scada')" class="text-red-400 hover:text-red-300">X</button>
|
374 |
+
</div>
|
375 |
+
<div class="flex h-5/6">
|
376 |
+
<div class="w-1/3 border-r border-green-500 pr-2">
|
377 |
+
<p class="text-sm mb-2">SYSTEMS:</p>
|
378 |
+
<div class="space-y-1">
|
379 |
+
<button class="w-full text-left p-1 hover:bg-green-900 text-xs">POWER DISTRIBUTION</button>
|
380 |
+
<button class="w-full text-left p-1 hover:bg-green-900 text-xs">HVAC</button>
|
381 |
+
<button class="w-full text-left p-1 bg-green-900 text-xs">PRESSURE SYSTEMS</button>
|
382 |
+
<button class="w-full text-left p-1 hover:bg-green-900 text-xs">FIRE SUPPRESSION</button>
|
383 |
+
<button class="w-full text-left p-1 hover:bg-green-900 text-xs">SECURITY</button>
|
384 |
+
</div>
|
385 |
+
</div>
|
386 |
+
<div class="w-2/3 pl-2">
|
387 |
+
<p class="text-sm mb-2">PRESSURE SYSTEMS STATUS:</p>
|
388 |
+
<div class="border border-green-500 p-2 h-4/5 overflow-y-auto text-xs">
|
389 |
+
<div class="mb-4">
|
390 |
+
<p class="text-amber-400">NORTH WING:</p>
|
391 |
+
<div class="w-full bg-gray-800 h-4 mt-1">
|
392 |
+
<div class="bg-red-500 h-full" style="width: 90%;"></div>
|
393 |
+
</div>
|
394 |
+
<p>4.7 MPa / 3.2 MPa MAX</p>
|
395 |
+
<p class="text-red-400">CRITICAL OVERPRESSURE</p>
|
396 |
+
</div>
|
397 |
+
<div class="mb-4">
|
398 |
+
<p class="text-amber-400">SOUTH WING:</p>
|
399 |
+
<div class="w-full bg-gray-800 h-4 mt-1">
|
400 |
+
<div class="bg-green-500 h-full" style="width: 45%;"></div>
|
401 |
+
</div>
|
402 |
+
<p>2.1 MPa / 3.2 MPa MAX</p>
|
403 |
+
<p>NORMAL</p>
|
404 |
+
</div>
|
405 |
+
<div class="mb-4">
|
406 |
+
<p class="text-amber-400">EAST WING:</p>
|
407 |
+
<div class="w-full bg-gray-800 h-4 mt-1">
|
408 |
+
<div class="bg-amber-500 h-full" style="width: 70%;"></div>
|
409 |
+
</div>
|
410 |
+
<p>3.0 MPa / 3.2 MPa MAX</p>
|
411 |
+
<p class="text-amber-400">ELEVATED</p>
|
412 |
+
</div>
|
413 |
+
<div>
|
414 |
+
<p class="text-amber-400">WEST WING:</p>
|
415 |
+
<div class="w-full bg-gray-800 h-4 mt-1">
|
416 |
+
<div class="bg-green-500 h-full" style="width: 30%;"></div>
|
417 |
+
</div>
|
418 |
+
<p>1.4 MPa / 3.2 MPa MAX</p>
|
419 |
+
<p>NORMAL</p>
|
420 |
+
</div>
|
421 |
+
</div>
|
422 |
+
<button class="mt-2 bg-green-900 hover:bg-green-800 p-1 text-xs w-full">OVERRIDE CONTROL</button>
|
423 |
+
</div>
|
424 |
+
</div>
|
425 |
+
</div>
|
426 |
+
|
427 |
+
<script>
|
428 |
+
// Simulate terminal typing
|
429 |
+
function typeWriter(element, text, speed) {
|
430 |
+
let i = 0;
|
431 |
+
element.innerHTML = '';
|
432 |
+
function typing() {
|
433 |
+
if (i < text.length) {
|
434 |
+
element.innerHTML += text.charAt(i);
|
435 |
+
i++;
|
436 |
+
setTimeout(typing, speed);
|
437 |
+
}
|
438 |
+
}
|
439 |
+
typing();
|
440 |
+
}
|
441 |
+
|
442 |
+
// Handle command input
|
443 |
+
document.getElementById('command-input').addEventListener('keypress', function(e) {
|
444 |
+
if (e.key === 'Enter') {
|
445 |
+
const command = this.value;
|
446 |
+
this.value = '';
|
447 |
+
|
448 |
+
const output = document.getElementById('terminal-output');
|
449 |
+
output.innerHTML += `<p>> ${command}</p>`;
|
450 |
+
|
451 |
+
// Process command
|
452 |
+
if (command.toLowerCase() === 'help') {
|
453 |
+
output.innerHTML += `<p>AVAILABLE COMMANDS: HELP, CHEMSCAN, VIDEO, SCADA, COMMS, LOGS, CLEAR</p>`;
|
454 |
+
} else if (command.toLowerCase() === 'clear') {
|
455 |
+
output.innerHTML = '';
|
456 |
+
} else if (command.toLowerCase() === 'chemscan') {
|
457 |
+
openTool('chemScan');
|
458 |
+
} else if (command.toLowerCase() === 'video') {
|
459 |
+
openTool('videoAnalyzer');
|
460 |
+
} else if (command.toLowerCase() === 'scada') {
|
461 |
+
openTool('scada');
|
462 |
+
} else {
|
463 |
+
output.innerHTML += `<p>COMMAND NOT RECOGNIZED. TYPE HELP FOR AVAILABLE COMMANDS.</p>`;
|
464 |
+
}
|
465 |
+
|
466 |
+
output.innerHTML += `<p>> ENTER COMMAND OR SELECT TOOL TO PROCEED<span class="terminal-text">_</span></p>`;
|
467 |
+
output.scrollTop = output.scrollHeight;
|
468 |
+
}
|
469 |
+
});
|
470 |
+
|
471 |
+
// Tool functions
|
472 |
+
function openTool(tool) {
|
473 |
+
document.getElementById(`${tool}-window`).classList.remove('hidden');
|
474 |
+
}
|
475 |
+
|
476 |
+
function closeTool(tool) {
|
477 |
+
document.getElementById(`${tool}-window`).classList.add('hidden');
|
478 |
+
}
|
479 |
+
|
480 |
+
// Evidence viewer
|
481 |
+
function viewEvidence(type) {
|
482 |
+
const output = document.getElementById('terminal-output');
|
483 |
+
|
484 |
+
if (type === 'video1') {
|
485 |
+
output.innerHTML += `<p>> OPENING SURVEILLANCE FOOTAGE: SURV_001.avi</p>`;
|
486 |
+
output.innerHTML += `<p>> TIMESTAMP: 23:55:12 | LOCATION: NORTH WING 4B</p>`;
|
487 |
+
output.innerHTML += `<p>> SUBJECT VISIBLE: MALE, 180CM, FDI UNIFORM</p>`;
|
488 |
+
output.innerHTML += `<p class="text-red-400">> WARNING: UNAUTHORIZED ACCESS DETECTED</p>`;
|
489 |
+
} else if (type === 'chem1') {
|
490 |
+
output.innerHTML += `<p>> ANALYZING CHEMICAL SAMPLE: CHEM_004.dat</p>`;
|
491 |
+
output.innerHTML += `<p>> COMPOSITION: TRICHLOROETHYLENE (45%), MEK (30%), UNKNOWN (15%), WATER (10%)</p>`;
|
492 |
+
output.innerHTML += `<p class="text-red-400">> WARNING: UNKNOWN COMPOUND MATCHES EXPERIMENTAL FORMULA X-247</p>`;
|
493 |
+
} else if (type === 'doc1') {
|
494 |
+
output.innerHTML += `<p>> VIEWING DOCUMENT: MEMO_023.txt</p>`;
|
495 |
+
output.innerHTML += `<p>> SUBJECT: SECURITY OVERRIDE PROCEDURES</p>`;
|
496 |
+
output.innerHTML += `<p>> NOTE: "HAL HAS ACCESS TO ALL SYSTEMS. DO NOT QUESTION."</p>`;
|
497 |
+
}
|
498 |
+
|
499 |
+
output.innerHTML += `<p>> ENTER COMMAND OR SELECT TOOL TO PROCEED<span class="terminal-text">_</span></p>`;
|
500 |
+
output.scrollTop = output.scrollHeight;
|
501 |
+
}
|
502 |
+
|
503 |
+
// Simulate real-time updates
|
504 |
+
setInterval(() => {
|
505 |
+
const commsLog = document.getElementById('comms-log');
|
506 |
+
const now = new Date();
|
507 |
+
const timeStr = `[${now.getHours().toString().padStart(2, '0')}:${now.getMinutes().toString().padStart(2, '0')}]`;
|
508 |
+
|
509 |
+
// Random chance to add a new comms message
|
510 |
+
if (Math.random() > 0.9) {
|
511 |
+
const messages = [
|
512 |
+
`${timeStr} SYSTEM ALERT: PRESSURE IN NORTH WING INCREASING`,
|
513 |
+
`${timeStr} WARNING: TEMPERATURE SPIKE IN SERVER ROOM`,
|
514 |
+
`${timeStr} SECURITY ALERT: MOTION DETECTED IN SECTOR D`,
|
515 |
+
`${timeStr} AGENT KOWALSKI: *STATIC* ...need backup... *STATIC*`
|
516 |
+
];
|
517 |
+
|
518 |
+
commsLog.innerHTML += `<p class="text-red-400">${messages[Math.floor(Math.random() * messages.length)]}</p>`;
|
519 |
+
commsLog.scrollTop = commsLog.scrollHeight;
|
520 |
+
}
|
521 |
+
}, 10000);
|
522 |
+
</script>
|
523 |
+
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=MGros/operator" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
|
524 |
+
</html>
|