Phoenixoni commited on
Commit
c298b43
·
verified ·
1 Parent(s): 703208d

Add 2 files

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +638 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Breaking Bad
3
- emoji: 🏃
4
- colorFrom: indigo
5
- colorTo: gray
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: breaking-bad
3
+ emoji: 🐳
4
+ colorFrom: gray
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,638 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ru">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Breaking Bad Quest</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=Roboto+Condensed:wght@400;700&display=swap');
11
+
12
+ body {
13
+ font-family: 'Roboto Condensed', sans-serif;
14
+ background-color: #111;
15
+ color: #fff;
16
+ background-image: url('https://images.unsplash.com/photo-1588072432836-e10032774350?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1472&q=80');
17
+ background-size: cover;
18
+ background-position: center;
19
+ background-attachment: fixed;
20
+ }
21
+
22
+ .scene {
23
+ background-color: rgba(0, 0, 0, 0.85);
24
+ border-left: 4px solid #f7931a;
25
+ }
26
+
27
+ .btn-primary {
28
+ background-color: #f7931a;
29
+ transition: all 0.3s;
30
+ }
31
+
32
+ .btn-primary:hover {
33
+ background-color: #d97e0d;
34
+ transform: translateY(-2px);
35
+ }
36
+
37
+ .character-img {
38
+ filter: drop-shadow(0 0 10px rgba(247, 147, 26, 0.5));
39
+ transition: all 0.3s;
40
+ }
41
+
42
+ .character-img:hover {
43
+ filter: drop-shadow(0 0 15px rgba(247, 147, 26, 0.8));
44
+ transform: scale(1.05);
45
+ }
46
+
47
+ .inventory-item {
48
+ transition: all 0.3s;
49
+ }
50
+
51
+ .inventory-item:hover {
52
+ transform: scale(1.1);
53
+ }
54
+
55
+ @keyframes pulse {
56
+ 0% { opacity: 0.6; }
57
+ 50% { opacity: 1; }
58
+ 100% { opacity: 0.6; }
59
+ }
60
+
61
+ .pulse {
62
+ animation: pulse 2s infinite;
63
+ }
64
+
65
+ .typewriter {
66
+ overflow: hidden;
67
+ border-right: .15em solid #f7931a;
68
+ white-space: nowrap;
69
+ letter-spacing: .15em;
70
+ animation:
71
+ typing 3.5s steps(40, end),
72
+ blink-caret .75s step-end infinite;
73
+ }
74
+
75
+ @keyframes typing {
76
+ from { width: 0 }
77
+ to { width: 100% }
78
+ }
79
+
80
+ @keyframes blink-caret {
81
+ from, to { border-color: transparent }
82
+ 50% { border-color: #f7931a; }
83
+ }
84
+ </style>
85
+ </head>
86
+ <body class="min-h-screen">
87
+ <div class="container mx-auto px-4 py-8 max-w-4xl">
88
+ <!-- Header -->
89
+ <header class="flex justify-between items-center mb-8 border-b border-orange-500 pb-4">
90
+ <div class="flex items-center">
91
+ <i class="fas fa-flask text-orange-500 text-3xl mr-3"></i>
92
+ <h1 class="text-3xl font-bold text-orange-500">BREAKING BAD QUEST</h1>
93
+ </div>
94
+ <div class="flex items-center space-x-4">
95
+ <div class="bg-gray-800 px-3 py-1 rounded-full">
96
+ <span class="text-orange-400 font-bold" id="health">100</span>
97
+ <i class="fas fa-heart text-red-500 ml-1"></i>
98
+ </div>
99
+ <div class="bg-gray-800 px-3 py-1 rounded-full">
100
+ <span class="text-blue-400 font-bold" id="money">$0</span>
101
+ <i class="fas fa-dollar-sign text-green-500 ml-1"></i>
102
+ </div>
103
+ </div>
104
+ </header>
105
+
106
+ <!-- Main Game Area -->
107
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
108
+ <!-- Scene Description -->
109
+ <div class="lg:col-span-2 scene rounded-lg p-6 shadow-lg">
110
+ <div id="scene-description" class="mb-6">
111
+ <h2 class="text-2xl font-bold text-orange-500 mb-4 typewriter">Добро пожаловать в Альбукерке</h2>
112
+ <p class="text-gray-300 mb-4">Вы - Уолтер Уайт, 50-летний школьный учитель химии, которому только что поставили диагноз: неоперабельный рак легких. Срок жизни - около двух лет. У вас есть беременная жена и сын-инвалид. Денег на лечение и обе��печение семьи после вашей смерти нет.</p>
113
+ <p class="text-gray-300 mb-4">Во время поездки с DEA на облаве нарколаборатории вы встречаете своего бывшего ученика Джесси Пинкмана, сбегающего с места преступления. Это наводит вас на мысль...</p>
114
+ <p class="text-orange-400 font-bold text-lg">Что вы решаете делать?</p>
115
+ </div>
116
+
117
+ <!-- Choices -->
118
+ <div id="choices" class="space-y-3">
119
+ <button class="btn-primary w-full py-3 px-4 rounded-lg font-bold text-white text-left" onclick="makeChoice(1)">
120
+ <i class="fas fa-mortar-pestle mr-2"></i> Использовать знания химии для приготовления метамфетамина
121
+ </button>
122
+ <button class="btn-primary w-full py-3 px-4 rounded-lg font-bold text-white text-left" onclick="makeChoice(2)">
123
+ <i class="fas fa-hand-holding-medical mr-2"></i> Попытаться найти легальные способы заработать на лечение
124
+ </button>
125
+ <button class="btn-primary w-full py-3 px-4 rounded-lg font-bold text-white text-left" onclick="makeChoice(3)">
126
+ <i class="fas fa-user-secret mr-2"></i> Шантажировать бывшего партнера по бизнесу Гретхен и Эллиота
127
+ </button>
128
+ </div>
129
+
130
+ <!-- Inventory -->
131
+ <div id="inventory" class="mt-8 hidden">
132
+ <h3 class="text-xl font-bold text-orange-500 mb-3 border-b border-gray-700 pb-2">
133
+ <i class="fas fa-backpack mr-2"></i> Инвентарь
134
+ </h3>
135
+ <div class="grid grid-cols-4 gap-3" id="inventory-items">
136
+ <!-- Items will be added here dynamically -->
137
+ </div>
138
+ </div>
139
+ </div>
140
+
141
+ <!-- Character and Stats -->
142
+ <div class="space-y-6">
143
+ <!-- Character Image -->
144
+ <div class="bg-gray-900 rounded-lg p-4 shadow-lg">
145
+ <img id="character-img" src="https://upload.wikimedia.org/wikipedia/en/0/03/Walter_White_S5B.png" alt="Walter White" class="w-full h-auto rounded-lg character-img">
146
+ <div class="mt-3 text-center">
147
+ <h3 class="text-xl font-bold text-orange-500" id="character-name">Уолтер Уайт</h3>
148
+ <p class="text-gray-400" id="character-alias">АКА Гейзенберг</p>
149
+ </div>
150
+ </div>
151
+
152
+ <!-- Stats -->
153
+ <div class="bg-gray-900 rounded-lg p-4 shadow-lg">
154
+ <h3 class="text-xl font-bold text-orange-500 mb-3 border-b border-gray-700 pb-2">
155
+ <i class="fas fa-chart-line mr-2"></i> Характеристики
156
+ </h3>
157
+ <div class="space-y-2">
158
+ <div>
159
+ <div class="flex justify-between mb-1">
160
+ <span class="text-gray-300">Химия</span>
161
+ <span class="text-orange-500 font-bold" id="chem-skill">95%</span>
162
+ </div>
163
+ <div class="w-full bg-gray-700 rounded-full h-2.5">
164
+ <div class="bg-orange-500 h-2.5 rounded-full" style="width: 95%"></div>
165
+ </div>
166
+ </div>
167
+ <div>
168
+ <div class="flex justify-between mb-1">
169
+ <span class="text-gray-300">Криминал</span>
170
+ <span class="text-orange-500 font-bold" id="crime-skill">15%</span>
171
+ </div>
172
+ <div class="w-full bg-gray-700 rounded-full h-2.5">
173
+ <div class="bg-orange-500 h-2.5 rounded-full" style="width: 15%"></div>
174
+ </div>
175
+ </div>
176
+ <div>
177
+ <div class="flex justify-between mb-1">
178
+ <span class="text-gray-300">Репутация</span>
179
+ <span class="text-orange-500 font-bold" id="rep-skill">30%</span>
180
+ </div>
181
+ <div class="w-full bg-gray-700 rounded-full h-2.5">
182
+ <div class="bg-orange-500 h-2.5 rounded-full" style="width: 30%"></div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+ </div>
187
+
188
+ <!-- Partners -->
189
+ <div class="bg-gray-900 rounded-lg p-4 shadow-lg hidden" id="partners-section">
190
+ <h3 class="text-xl font-bold text-orange-500 mb-3 border-b border-gray-700 pb-2">
191
+ <i class="fas fa-users mr-2"></i> Партнеры
192
+ </h3>
193
+ <div class="grid grid-cols-2 gap-3" id="partners-list">
194
+ <!-- Partners will be added here dynamically -->
195
+ </div>
196
+ </div>
197
+ </div>
198
+ </div>
199
+
200
+ <!-- Modal for special events -->
201
+ <div id="modal" class="fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center hidden z-50">
202
+ <div class="bg-gray-900 rounded-lg p-6 max-w-md w-full mx-4 border-2 border-orange-500 relative">
203
+ <button onclick="closeModal()" class="absolute top-3 right-3 text-gray-400 hover:text-white">
204
+ <i class="fas fa-times"></i>
205
+ </button>
206
+ <h2 id="modal-title" class="text-2xl font-bold text-orange-500 mb-4"></h2>
207
+ <p id="modal-text" class="text-gray-300 mb-6"></p>
208
+ <div id="modal-choices" class="space-y-2"></div>
209
+ </div>
210
+ </div>
211
+ </div>
212
+
213
+ <script>
214
+ // Game state
215
+ const gameState = {
216
+ health: 100,
217
+ money: 0,
218
+ chemSkill: 95,
219
+ crimeSkill: 15,
220
+ repSkill: 30,
221
+ currentScene: 0,
222
+ inventory: [],
223
+ partners: [],
224
+ isHeisenberg: false,
225
+ hasLab: false,
226
+ hasCar: false,
227
+ hasGun: false,
228
+ jesseRelationship: 0,
229
+ skylerRelationship: 50,
230
+ hankRelationship: 70
231
+ };
232
+
233
+ // Scenes data
234
+ const scenes = [
235
+ {
236
+ id: 0,
237
+ title: "Добро пожаловать в Альбукерке",
238
+ description: `<p class="text-gray-300 mb-4">Вы - Уолтер Уайт, 50-летний школьный учитель химии, которому только что поставили диагноз: неоперабельный рак легких. Срок жизни - около двух лет. У вас есть беременная жена и сын-инвалид. Денег на лечение и обеспечение семьи после вашей смерти нет.</p>
239
+ <p class="text-gray-300 mb-4">Во время поездки с DEA на облаве нарколаборатории вы встречаете своего бывшего ученика Джесси Пинкмана, сбегающего с места преступления. Это наводит вас на мысль...</p>
240
+ <p class="text-orange-400 font-bold text-lg">Что вы решаете делать?</p>`,
241
+ choices: [
242
+ {
243
+ text: "Использовать знания химии для приготовления метамфетамина",
244
+ nextScene: 1,
245
+ action: function() {
246
+ gameState.crimeSkill += 10;
247
+ updateStats();
248
+ }
249
+ },
250
+ {
251
+ text: "Попытаться найти легальные способы заработать на лечение",
252
+ nextScene: 2,
253
+ action: function() {
254
+ gameState.repSkill += 5;
255
+ updateStats();
256
+ }
257
+ },
258
+ {
259
+ text: "Шантажировать бывшего партнера по бизнесу Гретхен и Эллиота",
260
+ nextScene: 3,
261
+ action: function() {
262
+ gameState.repSkill -= 5;
263
+ updateStats();
264
+ }
265
+ }
266
+ ]
267
+ },
268
+ {
269
+ id: 1,
270
+ title: "Первая варка",
271
+ description: `<p class="text-gray-300 mb-4">Вы находите Джесси и предлагаете партнерство. Вместе вы ремонтируете старый фургон и отправляетесь в пустыню для первой варки.</p>
272
+ <p class="text-gray-300 mb-4">Ваши знания химии позволяют создать продукт чистотой 99.1% - это невероятно! Но во время варки появляются два наркоторговца, Краус и Эмилио.</p>
273
+ <p class="text-orange-400 font-bold text-lg">Как вы поступите?</p>`,
274
+ choices: [
275
+ {
276
+ text: "Использовать красный фосфор, чтобы отравить наркоторговцев",
277
+ nextScene: 4,
278
+ action: function() {
279
+ gameState.crimeSkill += 15;
280
+ gameState.inventory.push({name: "Репутация", icon: "fa-skull", description: "Вы совершили первое убийство"});
281
+ updateInventory();
282
+ updateStats();
283
+ }
284
+ },
285
+ {
286
+ text: "Попытаться договориться и предложить сотрудничество",
287
+ nextScene: 5,
288
+ action: function() {
289
+ gameState.money += 5000;
290
+ updateStats();
291
+ }
292
+ },
293
+ {
294
+ text: "Сбежать, бросив Джесси",
295
+ nextScene: 6,
296
+ action: function() {
297
+ gameState.jesseRelationship -= 20;
298
+ updateStats();
299
+ }
300
+ }
301
+ ]
302
+ },
303
+ {
304
+ id: 2,
305
+ title: "Легальные заработки",
306
+ description: `<p class="text-gray-300 mb-4">Вы устраиваетесь на вторую работу мойщиком машин. Деньги мизерные, но честные. Ваше здоровье ухудшается, лечение дорожает.</p>
307
+ <p class="text-gray-300 mb-4">На школьной парковке вы снова сталкиваетесь с Джесси, который предлагает "быстрый заработок".</p>
308
+ <p class="text-orange-400 font-bold text-lg">Ваши действия?</p>`,
309
+ choices: [
310
+ {
311
+ text: "Согласиться на предложение Джесси",
312
+ nextScene: 1,
313
+ action: function() {
314
+ gameState.crimeSkill += 5;
315
+ updateStats();
316
+ }
317
+ },
318
+ {
319
+ text: "Отказаться и продолжать честную работу",
320
+ nextScene: 7,
321
+ action: function() {
322
+ gameState.health -= 10;
323
+ gameState.repSkill += 5;
324
+ updateStats();
325
+ }
326
+ },
327
+ {
328
+ text: "Доложить о Джесси в полицию",
329
+ nextScene: 8,
330
+ action: function() {
331
+ gameState.repSkill += 10;
332
+ gameState.jesseRelationship = -50;
333
+ updateStats();
334
+ }
335
+ }
336
+ ]
337
+ },
338
+ {
339
+ id: 3,
340
+ title: "Шантаж",
341
+ description: `<p class="text-gray-300 mb-4">Вы приходите на вечеринку к Гретхен и Эллиоту и наедине угрожаете раскрыть их "грязные секреты", если они не оплатят ваше лечение.</p>
342
+ <p class="text-gray-300 mb-4">Эллиот предлагает вам работу в его компании с хорошей страховкой, но это унизительно.</p>
343
+ <p class="text-orange-400 font-bold text-lg">Что вы выберете?</p>`,
344
+ choices: [
345
+ {
346
+ text: "Принять предложение работы",
347
+ nextScene: 9,
348
+ action: function() {
349
+ gameState.money += 20000;
350
+ gameState.repSkill += 10;
351
+ updateStats();
352
+ }
353
+ },
354
+ {
355
+ text: "Отказаться и уйти, хлопнув дверью",
356
+ nextScene: 1,
357
+ action: function() {
358
+ gameState.repSkill -= 10;
359
+ updateStats();
360
+ }
361
+ },
362
+ {
363
+ text: "Угрожать физической расправой",
364
+ nextScene: 10,
365
+ action: function() {
366
+ gameState.crimeSkill += 10;
367
+ gameState.repSkill -= 15;
368
+ updateStats();
369
+ }
370
+ }
371
+ ]
372
+ },
373
+ // More scenes would be added here...
374
+ {
375
+ id: 99,
376
+ title: "Конец игры",
377
+ description: `<p class="text-gray-300 mb-4">Ваше путешествие в мире криминала подошло к концу.</p>
378
+ <p class="text-orange-400 font-bold text-lg">${getEndingText()}</p>`,
379
+ choices: [
380
+ {
381
+ text: "Начать заново",
382
+ nextScene: 0,
383
+ action: function() {
384
+ resetGame();
385
+ }
386
+ }
387
+ ]
388
+ }
389
+ ];
390
+
391
+ // Initialize the game
392
+ function initGame() {
393
+ updateScene(0);
394
+ updateStats();
395
+ }
396
+
397
+ // Update the current scene
398
+ function updateScene(sceneId) {
399
+ gameState.currentScene = sceneId;
400
+ const scene = scenes.find(s => s.id === sceneId);
401
+
402
+ document.getElementById('scene-description').innerHTML = `
403
+ <h2 class="text-2xl font-bold text-orange-500 mb-4">${scene.title}</h2>
404
+ ${scene.description}
405
+ `;
406
+
407
+ const choicesContainer = document.getElementById('choices');
408
+ choicesContainer.innerHTML = '';
409
+
410
+ scene.choices.forEach((choice, index) => {
411
+ const button = document.createElement('button');
412
+ button.className = 'btn-primary w-full py-3 px-4 rounded-lg font-bold text-white text-left';
413
+ button.innerHTML = `<i class="fas ${getChoiceIcon(index)} mr-2"></i> ${choice.text}`;
414
+ button.onclick = function() {
415
+ if (choice.action) choice.action();
416
+ updateScene(choice.nextScene);
417
+
418
+ // Special events
419
+ if (choice.nextScene === 1 && !gameState.partners.some(p => p.name === "Джесси Пинкман")) {
420
+ gameState.partners.push({
421
+ name: "Джесси Пинкман",
422
+ icon: "fa-user",
423
+ relationship: 50
424
+ });
425
+ updatePartners();
426
+ }
427
+
428
+ if (sceneId === 1 && choice.nextScene === 4) {
429
+ showModal(
430
+ "Первое убийство",
431
+ "Вы использовали свои знания химии, чтобы убить Крауса и Эмилио. Тела растворяются в плавиковой кислоте, но фургон приходится сжечь.",
432
+ [
433
+ {
434
+ text: "Продолжить",
435
+ action: function() {
436
+ gameState.hasCar = false;
437
+ closeModal();
438
+ }
439
+ }
440
+ ]
441
+ );
442
+ }
443
+
444
+ // Check for game over conditions
445
+ if (gameState.health <= 0) {
446
+ gameState.health = 0;
447
+ updateScene(99);
448
+ }
449
+ };
450
+ choicesContainer.appendChild(button);
451
+ });
452
+
453
+ // Show inventory if not empty
454
+ if (gameState.inventory.length > 0) {
455
+ document.getElementById('inventory').classList.remove('hidden');
456
+ } else {
457
+ document.getElementById('inventory').classList.add('hidden');
458
+ }
459
+
460
+ // Update character image based on state
461
+ updateCharacterImage();
462
+ }
463
+
464
+ // Update character image based on game state
465
+ function updateCharacterImage() {
466
+ const characterImg = document.getElementById('character-img');
467
+ const characterName = document.getElementById('character-name');
468
+ const characterAlias = document.getElementById('character-alias');
469
+
470
+ if (gameState.isHeisenberg) {
471
+ characterImg.src = 'https://upload.wikimedia.org/wikipedia/en/c/c6/Heisenberg5.jpg';
472
+ characterName.textContent = 'Гейзенберг';
473
+ characterAlias.textContent = 'АКА Уолтер Уайт';
474
+ } else {
475
+ characterImg.src = 'https://upload.wikimedia.org/wikipedia/en/0/03/Walter_White_S5B.png';
476
+ characterName.textContent = 'Уолтер Уайт';
477
+ characterAlias.textContent = 'АКА Гейзенберг';
478
+ }
479
+ }
480
+
481
+ // Update stats display
482
+ function updateStats() {
483
+ document.getElementById('health').textContent = gameState.health;
484
+ document.getElementById('money').textContent = `$${gameState.money}`;
485
+ document.getElementById('chem-skill').textContent = `${gameState.chemSkill}%`;
486
+ document.getElementById('crime-skill').textContent = `${gameState.crimeSkill}%`;
487
+ document.getElementById('rep-skill').textContent = `${gameState.repSkill}%`;
488
+
489
+ // Update skill bars
490
+ document.querySelector('#chem-skill').parentNode.nextElementSibling.firstElementChild.style.width = `${gameState.chemSkill}%`;
491
+ document.querySelector('#crime-skill').parentNode.nextElementSibling.firstElementChild.style.width = `${gameState.crimeSkill}%`;
492
+ document.querySelector('#rep-skill').parentNode.nextElementSibling.firstElementChild.style.width = `${gameState.repSkill}%`;
493
+
494
+ // Check for Heisenberg transformation
495
+ if (gameState.crimeSkill >= 50 && !gameState.isHeisenberg) {
496
+ gameState.isHeisenberg = true;
497
+ showModal(
498
+ "Рождение Гейзенберга",
499
+ "Ваши криминальные навыки достигли нового уровня. Теперь вы - Гейзенберг, опасный наркобарон Альбукерке.",
500
+ [
501
+ {
502
+ text: "Я тот, кто стучит!",
503
+ action: function() {
504
+ closeModal();
505
+ updateCharacterImage();
506
+ }
507
+ }
508
+ ]
509
+ );
510
+ }
511
+ }
512
+
513
+ // Update inventory display
514
+ function updateInventory() {
515
+ const inventoryContainer = document.getElementById('inventory-items');
516
+ inventoryContainer.innerHTML = '';
517
+
518
+ gameState.inventory.forEach(item => {
519
+ const itemElement = document.createElement('div');
520
+ itemElement.className = 'inventory-item bg-gray-800 p-2 rounded-lg text-center cursor-pointer';
521
+ itemElement.innerHTML = `
522
+ <i class="fas ${item.icon} text-orange-500 text-2xl mb-1"></i>
523
+ <div class="text-xs text-gray-300">${item.name}</div>
524
+ `;
525
+ itemElement.title = item.description;
526
+ inventoryContainer.appendChild(itemElement);
527
+ });
528
+
529
+ if (gameState.inventory.length > 0) {
530
+ document.getElementById('inventory').classList.remove('hidden');
531
+ }
532
+ }
533
+
534
+ // Update partners display
535
+ function updatePartners() {
536
+ if (gameState.partners.length > 0) {
537
+ document.getElementById('partners-section').classList.remove('hidden');
538
+ const partnersContainer = document.getElementById('partners-list');
539
+ partnersContainer.innerHTML = '';
540
+
541
+ gameState.partners.forEach(partner => {
542
+ const partnerElement = document.createElement('div');
543
+ partnerElement.className = 'bg-gray-800 p-2 rounded-lg text-center';
544
+ partnerElement.innerHTML = `
545
+ <i class="fas ${partner.icon} text-orange-500 text-xl mb-1"></i>
546
+ <div class="text-sm font-bold">${partner.name}</div>
547
+ <div class="text-xs text-gray-400">Отношения: ${partner.relationship > 0 ? '❤️' : '💔'} ${Math.abs(partner.relationship)}%</div>
548
+ `;
549
+ partnersContainer.appendChild(partnerElement);
550
+ });
551
+ }
552
+ }
553
+
554
+ // Show modal dialog
555
+ function showModal(title, text, choices) {
556
+ document.getElementById('modal-title').textContent = title;
557
+ document.getElementById('modal-text').innerHTML = text;
558
+
559
+ const choicesContainer = document.getElementById('modal-choices');
560
+ choicesContainer.innerHTML = '';
561
+
562
+ choices.forEach(choice => {
563
+ const button = document.createElement('button');
564
+ button.className = 'btn-primary w-full py-2 px-4 rounded-lg font-bold text-white';
565
+ button.textContent = choice.text;
566
+ button.onclick = function() {
567
+ if (choice.action) choice.action();
568
+ closeModal();
569
+ };
570
+ choicesContainer.appendChild(button);
571
+ });
572
+
573
+ document.getElementById('modal').classList.remove('hidden');
574
+ }
575
+
576
+ // Close modal dialog
577
+ function closeModal() {
578
+ document.getElementById('modal').classList.add('hidden');
579
+ }
580
+
581
+ // Get icon for choice based on index
582
+ function getChoiceIcon(index) {
583
+ const icons = ['fa-mortar-pestle', 'fa-hand-holding-medical', 'fa-user-secret', 'fa-running', 'fa-handshake'];
584
+ return icons[index % icons.length];
585
+ }
586
+
587
+ // Get ending text based on game state
588
+ function getEndingText() {
589
+ if (gameState.health <= 0) {
590
+ return "Вы проиграли. Рак победил, а ваша семья осталась без средств к существованию.";
591
+ } else if (gameState.crimeSkill >= 80) {
592
+ return "Вы стали самым опасным наркобароном Альбукерке, но потеряли семью и друзей. Цена успеха оказалась слишком высокой.";
593
+ } else if (gameState.repSkill >= 70) {
594
+ return "Вы выбрали честный путь и сохранили свою репутацию, но лечение оказалось слишком дорогим.";
595
+ } else {
596
+ return "Ваша история закончилась неожиданно. Никто не знает, что случилось с Уолтером Уайтом.";
597
+ }
598
+ }
599
+
600
+ // Reset the game
601
+ function resetGame() {
602
+ gameState.health = 100;
603
+ gameState.money = 0;
604
+ gameState.chemSkill = 95;
605
+ gameState.crimeSkill = 15;
606
+ gameState.repSkill = 30;
607
+ gameState.currentScene = 0;
608
+ gameState.inventory = [];
609
+ gameState.partners = [];
610
+ gameState.isHeisenberg = false;
611
+ gameState.hasLab = false;
612
+ gameState.hasCar = false;
613
+ gameState.hasGun = false;
614
+ gameState.jesseRelationship = 0;
615
+ gameState.skylerRelationship = 50;
616
+ gameState.hankRelationship = 70;
617
+
618
+ updateScene(0);
619
+ updateStats();
620
+ updateInventory();
621
+ updatePartners();
622
+ }
623
+
624
+ // Shortcut for making choices
625
+ function makeChoice(index) {
626
+ const scene = scenes.find(s => s.id === gameState.currentScene);
627
+ if (scene && scene.choices[index - 1]) {
628
+ const choice = scene.choices[index - 1];
629
+ if (choice.action) choice.action();
630
+ updateScene(choice.nextScene);
631
+ }
632
+ }
633
+
634
+ // Start the game when page loads
635
+ window.onload = initGame;
636
+ </script>
637
+ <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=Phoenixoni/breaking-bad" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
638
+ </html>