BlackMonsterMedia commited on
Commit
3e75cce
·
verified ·
1 Parent(s): cb7e27f
Files changed (1) hide show
  1. index.html +271 -117
index.html CHANGED
@@ -1,124 +1,278 @@
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>Soulful Gaming Adventure</title>
7
- <script src="https://cdn.tailwindcss.com"></script>
8
- <script src="https://unpkg.com/feather-icons"></script>
9
- <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
- <script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script>
11
  <style>
12
- .vanta-bg {
13
- position: fixed;
14
- top: 0;
15
- left: 0;
16
- width: 100%;
17
- height: 100%;
18
- z-index: -1;
19
- }
20
- .choice-btn {
21
- transition: all 0.3s ease;
22
- }
23
- .choice-btn:hover {
24
- transform: translateY(-3px);
25
- box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
26
- }
27
- </style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  </head>
29
- <body class="min-h-screen flex flex-col items-center justify-center bg-gray-900 text-white p-4">
30
- <div id="vanta-bg" class="vanta-bg"></div>
31
-
32
- <div class="max-w-2xl w-full bg-gray-800 bg-opacity-80 backdrop-blur-sm rounded-xl p-8 shadow-2xl border border-gray-700">
33
- <div class="text-center mb-8">
34
- <h1 class="text-4xl font-bold mb-2 text-transparent bg-clip-text bg-gradient-to-r from-purple-400 to-pink-600">
35
- Soulful Gaming Adventure
36
- </h1>
37
- <p class="text-gray-300 mb-6">Your journey begins at the gates of Alma</p>
38
- <img src="http://static.photos/mystical/640x360/42" alt="Mystical gate" class="w-full h-64 object-cover rounded-lg mb-6 border-2 border-purple-500">
39
- </div>
40
-
41
- <div id="text-container" class="text-center mb-8">
42
- <p id="story-text" class="text-xl mb-8">You stand before the ancient gates of Alma. The air hums with mysterious energy. Do you dare to enter?</p>
43
- </div>
44
-
45
- <div class="flex flex-col sm:flex-row gap-4 justify-center">
46
- <button id="enter-btn" onclick="makeChoice('enter')" class="choice-btn bg-gradient-to-r from-purple-600 to-indigo-600 hover:from-purple-700 hover:to-indigo-700 text-white font-bold py-3 px-6 rounded-lg flex items-center justify-center gap-2">
47
- <i data-feather="door-open"></i> Enter the Gates
48
- </button>
49
- <button id="leave-btn" onclick="makeChoice('leave')" class="choice-btn bg-gradient-to-r from-gray-600 to-gray-700 hover:from-gray-700 hover:to-gray-800 text-white font-bold py-3 px-6 rounded-lg flex items-center justify-center gap-2">
50
- <i data-feather="x"></i> Walk Away
51
- </button>
52
- </div>
53
- </div>
54
-
55
- <script>
56
- // Initialize Vanta.js background
57
- VANTA.GLOBE({
58
- el: "#vanta-bg",
59
- mouseControls: true,
60
- touchControls: true,
61
- gyroControls: false,
62
- minHeight: 200.00,
63
- minWidth: 200.00,
64
- scale: 1.00,
65
- scaleMobile: 1.00,
66
- color: 0x7f3ff5,
67
- backgroundColor: 0x111827
68
- });
69
-
70
- // Initialize feather icons
71
- feather.replace();
72
-
73
- function makeChoice(choice) {
74
- const storyText = document.getElementById('story-text');
75
- const enterBtn = document.getElementById('enter-btn');
76
- const leaveBtn = document.getElementById('leave-btn');
77
-
78
- if (choice === 'enter') {
79
- storyText.innerHTML = "As you pass through the gates, you find yourself in a grand hall with two mysterious doors glowing with different energies.";
80
- enterBtn.innerHTML = '<i data-feather="compass"></i> Follow the Blue Light';
81
- enterBtn.onclick = function() { makeChoice('blue') };
82
- enterBtn.className = "choice-btn bg-gradient-to-r from-blue-600 to-indigo-600 hover:from-blue-700 hover:to-indigo-700 text-white font-bold py-3 px-6 rounded-lg flex items-center justify-center gap-2";
83
-
84
- leaveBtn.innerHTML = '<i data-feather="moon"></i> Follow the Purple Glow';
85
- leaveBtn.onclick = function() { makeChoice('purple') };
86
- leaveBtn.className = "choice-btn bg-gradient-to-r from-purple-600 to-pink-600 hover:from-purple-700 hover:to-pink-700 text-white font-bold py-3 px-6 rounded-lg flex items-center justify-center gap-2";
87
-
88
- document.querySelector('img').src = "http://static.photos/mystical/640x360/43";
89
- }
90
- else if (choice === 'leave') {
91
- storyText.innerHTML = "You turn away from the gates, but as you walk, the path behind you disappears. You're lost in an endless void...";
92
- enterBtn.style.display = 'none';
93
- leaveBtn.innerHTML = '<i data-feather="refresh-cw"></i> Start Over';
94
- leaveBtn.onclick = function() { window.location.reload() };
95
- leaveBtn.className = "choice-btn bg-gradient-to-r from-red-600 to-pink-600 hover:from-red-700 hover:to-pink-700 text-white font-bold py-3 px-6 rounded-lg flex items-center justify-center gap-2";
96
-
97
- document.querySelector('img').src = "http://static.photos/abstract/640x360/99";
98
- }
99
- else if (choice === 'blue') {
100
- storyText.innerHTML = "The blue light envelops you, transporting you to a crystal cave filled with ancient knowledge. What do you seek?";
101
- enterBtn.innerHTML = '<i data-feather="book"></i> Study the Knowledge';
102
- enterBtn.onclick = function() { makeChoice('study') };
103
-
104
- leaveBtn.innerHTML = '<i data-feather="trending-up"></i> Seek Power';
105
- leaveBtn.onclick = function() { makeChoice('power') };
106
-
107
- document.querySelector('img').src = "http://static.photos/technology/640x360/77";
108
- }
109
- else if (choice === 'purple') {
110
- storyText.innerHTML = "The purple glow leads you to a mystical garden where time seems to stand still. What will you do?";
111
- enterBtn.innerHTML = '<i data-feather="flower"></i> Meditate';
112
- enterBtn.onclick = function() { makeChoice('meditate') };
113
-
114
- leaveBtn.innerHTML = '<i data-feather="eye"></i> Observe';
115
- leaveBtn.onclick = function() { makeChoice('observe') };
116
-
117
- document.querySelector('img').src = "http://static.photos/nature/640x360/88";
118
- }
119
-
120
- feather.replace();
121
  }
122
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  </body>
124
  </html>
 
1
  <!DOCTYPE html>
2
+ <html lang="pt">
3
  <head>
4
+ <meta charset="UTF-8">
5
+ <title>Aventura Noir - Alma</title>
 
 
 
 
 
6
  <style>
7
+ @import url('https://fonts.googleapis.com/css2?family=Inconsolata:wght@400;700&display=swap');
8
+
9
+ body {
10
+ background-color: #0a0a0a;
11
+ background-image: url('http://static.photos/office/1200x630/1');
12
+ background-size: cover;
13
+ background-position: center;
14
+ color: #f5f5f5;
15
+ font-family: 'Inconsolata', monospace;
16
+ display: flex;
17
+ justify-content: center;
18
+ align-items: center;
19
+ height: 100vh;
20
+ margin: 0;
21
+ text-align: center;
22
+ padding: 40px;
23
+ flex-direction: column;
24
+ }
25
+ #texto {
26
+ max-width: 700px;
27
+ font-size: 20px;
28
+ line-height: 1.6;
29
+ white-space: pre-line;
30
+ text-shadow: 0 0 8px rgba(230, 57, 70, 0.6);
31
+ background-color: rgba(10, 10, 10, 0.7);
32
+ padding: 30px;
33
+ border-radius: 10px;
34
+ border-left: 3px solid #e63946;
35
+ }
36
+ .botoes {
37
+ margin-top: 30px;
38
+ display: none; /* aparecem só no fim */
39
+ }
40
+ button {
41
+ margin: 10px;
42
+ padding: 12px 30px;
43
+ border: 2px solid #e63946;
44
+ border-radius: 6px;
45
+ cursor: pointer;
46
+ background: transparent;
47
+ color: #e63946;
48
+ font-size: 18px;
49
+ font-weight: bold;
50
+ transition: all 0.3s ease;
51
+ text-transform: uppercase;
52
+ letter-spacing: 1px;
53
+ }
54
+
55
+ button:hover {
56
+ background: #e63946;
57
+ color: #0a0a0a;
58
+ transform: translateY(-2px);
59
+ box-shadow: 0 4px 8px rgba(230, 57, 70, 0.4);
60
+ }
61
+ </style>
62
  </head>
63
+ <body>
64
+ <div id="texto"></div>
65
+ <div class="botoes"></div>
66
+
67
+ <script>
68
+ const textoDiv = document.getElementById("texto");
69
+ const botoesDiv = document.querySelector(".botoes");
70
+
71
+ let narrativaAtual = "";
72
+ let i = 0;
73
+ let speed = 40;
74
+
75
+ function escreverTexto(callback) {
76
+ if (i < narrativaAtual.length) {
77
+ textoDiv.innerHTML += narrativaAtual.charAt(i);
78
+ i++;
79
+ setTimeout(() => escreverTexto(callback), speed);
80
+ } else {
81
+ if (callback) callback();
82
+ }
83
+ }
84
+
85
+ function mostrarTexto(texto, botoes = []) {
86
+ narrativaAtual = texto;
87
+ i = 0;
88
+ textoDiv.innerHTML = "";
89
+ botoesDiv.innerHTML = "";
90
+ botoesDiv.style.display = "none";
91
+ escreverTexto(() => {
92
+ if (botoes.length > 0) {
93
+ botoes.forEach(btn => {
94
+ const button = document.createElement("button");
95
+ button.innerText = btn.label;
96
+ button.onclick = btn.action;
97
+ botoesDiv.appendChild(button);
98
+ });
99
+ botoesDiv.style.display = "block";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  }
101
+ });
102
+ }
103
+
104
+ // ———————————— Cena Inicial
105
+ mostrarTexto(
106
+ `É tarde, já passa da 00. Toda a gente no escritório já foi para casa, estás sozinha na sala de reuniões a rever algumas respostas ao briefings para o marketing do Alma Shopping do ano que vem.
107
+
108
+ De repente as luzes lá fora começam a tremelicar.
109
+ Está um silêncio que quase se consegue sentir.
110
+ Silencioso demais...
111
+
112
+ Knock Knock Knock.
113
+
114
+ Ouves a porta bater mas não há sombra debaixo da porta, espreitas pelas persianas mas não vês ninguém.
115
+
116
+ Abres a porta?`,
117
+ [
118
+ { label: "Sim", action: escolhaSim },
119
+ { label: "Não", action: escolhaNao }
120
+ ]
121
+ );
122
+
123
+ // ———————————— Ramo NÃO
124
+ function escolhaNao() {
125
+ mostrarTexto(
126
+ `As luzes voltam ao normal.
127
+ Voltas para a secretária e continuas a rever campanhas normais…
128
+
129
+ (Game Over)`
130
+ );
131
+ }
132
+
133
+ // ———————————— Ramo SIM
134
+ function escolhaSim() {
135
+ mostrarTexto(
136
+ `Dizes: Quem está aí?
137
+
138
+ Olhas à volta do escritório mas não vês nada.
139
+ De repente vês um vulto sair do teu escritório e ouves o barulho de qualquer coisa a partir.
140
+
141
+ O que fazes?`,
142
+ [
143
+ { label: "Correr para investigar", action: correrInvestigacao },
144
+ { label: "Fechar a porta", action: fecharPorta }
145
+ ]
146
+ );
147
+ }
148
+
149
+ function fecharPorta() {
150
+ mostrarTexto(
151
+ `Fechas a porta.
152
+
153
+ As luzes voltam ao normal.
154
+ Voltas para a secretária e continuas a rever campanhas normais…
155
+
156
+ (Game Over)`
157
+ );
158
+ }
159
+
160
+ // ———————————— Investigação
161
+ function correrInvestigacao() {
162
+ mostrarTexto(
163
+ `Chegas à porta do escritório e vês que a tua chávena preferida está no chão, partida.
164
+
165
+ Encontras um envelope que diz "TOP SECRET".
166
+
167
+ O que fazes?`,
168
+ [
169
+ { label: "Abrir envelope", action: abrirEnvelope },
170
+ { label: "Ligar à polícia por causa da chávena", action: ligarPolicia }
171
+ ]
172
+ );
173
+ }
174
+
175
+ function abrirEnvelope() {
176
+ mostrarTexto(
177
+ `Abriste o envelope e encontas um bilhete:
178
+
179
+ "Se queres descobrir a verdade sobre o que aconteceu no Alma Shopping em 1999,
180
+ segue as pistas que deixei no teu computador."
181
+
182
+ O computador está ligado mas bloqueado. Sabes a password?
183
+
184
+ `,
185
+ [
186
+ { label: "Tentar password", action: tentarPassword },
187
+ { label: "Desistir", action: desistir }
188
+ ]
189
+ );
190
+
191
+ function tentarPassword() {
192
+ mostrarTexto(
193
+ `Introduzes a password que sempre usas: "Alma2023"
194
+
195
+ O ecrã pisca e aparece uma mensagem:
196
+
197
+ "Errado. Mas deixei-te uma pista. Procura no arquivo físico."
198
+
199
+ Vês uma gaveta entreaberta na secretária do teu chefe.`,
200
+ [
201
+ { label: "Revistar a gaveta", action: revistarGaveta },
202
+ { label: "Ir embora", action: irEmbora }
203
+ ]
204
+ );
205
+ }
206
+
207
+ function desistir() {
208
+ mostrarTexto(
209
+ `Decidiste não investigar mais.
210
+
211
+ Voltas para a secretária e continuas a rever campanhas normais…
212
+
213
+ (Game Over)`
214
+ );
215
+ }
216
+
217
+ function revistarGaveta() {
218
+ mostrarTexto(
219
+ `Encontras um dossier antigo marcado "Projeto Vermelho - 1999"
220
+
221
+ Ao abrires, vês fotos de construção do shopping com áreas que nunca foram abertas ao público.
222
+
223
+ Há um mapa com uma passagem secreta marcada perto da loja de música.
224
+
225
+ Queres investigar mais?`,
226
+ [
227
+ { label: "Sim, ir ao shopping", action: irShopping },
228
+ { label: "Não, esquecer isto", action: esquecer }
229
+ ]
230
+ );
231
+ }
232
+
233
+ function irEmbora() {
234
+ mostrarTexto(
235
+ `Decidiste que já chega de mistérios por hoje.
236
+
237
+ Voltas para casa, mas a mensagem continua na tua cabeça...
238
+
239
+ (Game Over)`
240
+ );
241
+ }
242
+
243
+ function irShopping() {
244
+ mostrarTexto(
245
+ `Vais ao shopping depois do horário de funcionamento.
246
+
247
+ A segurança reconhece-te e deixa-te entrar.
248
+
249
+ Diriges-te para a loja de música abandonada...
250
+
251
+ (Continua 🚧)`
252
+ );
253
+ }
254
+
255
+ function esquecer() {
256
+ mostrarTexto(
257
+ `Decidiste que é melhor não mexer no passado.
258
+
259
+ Mas nos dias seguintes, notas que estás a ser seguida...
260
+
261
+ (Game Over)`
262
+ );
263
+ }
264
+ }
265
+ function ligarPolicia() {
266
+ mostrarTexto(
267
+ `Chamaste a polícia.
268
+
269
+ Eles não ligaram muito à chávena partida e disseram-te para comprares outra.
270
+
271
+ Mas enquanto falavas, reparaste que o envelope desapareceu...
272
+
273
+ (Game Over)`
274
+ );
275
+ }
276
+ </script>
277
  </body>
278
  </html>