-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconstants.ts
More file actions
1300 lines (1289 loc) · 43.3 KB
/
Copy pathconstants.ts
File metadata and controls
1300 lines (1289 loc) · 43.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
import {
SystemType,
EventDefinition,
GameScenario,
CrewMember,
ShopItem,
MissionDefinition,
TutorialStep,
PermanentUpgrade
} from './types';
// Game Configuration
export const GAME_DURATION = 120; // seconds
export const INITIAL_STATS = {
publicInterest: 50,
clientSatisfaction: 50,
stress: 0,
budget: 5000,
timeRemaining: GAME_DURATION
};
export const WIN_CONDITIONS = {
publicInterest: 60,
clientSatisfaction: 60,
stressLimit: 80,
minBudget: 0
};
export const EVENT_FREQUENCY_BASE = 15000; // ms
// Client Messages
export const CLIENT_MESSAGES = {
HAPPY: [
'¡El show está increíble!',
'El público está encantado',
'Todo está perfecto, sigue así',
'Excelente trabajo técnico'
],
ANGRY: [
'¿Qué está pasando?',
'El público se está aburriendo',
'Necesito que esto mejore YA',
'Esto no es lo que esperaba'
],
PANIC: [
'¡ESTO ES UN DESASTRE!',
'¡ARREGLALO AHORA!',
'¡EL SHOW SE ESTÁ YENDO A PEDAZOS!',
'¡NO PUEDO CREER ESTO!'
],
NEUTRAL: [
'Todo parece estar bien',
'Mantén el ritmo',
'Sigue monitoreando',
'Estamos en el camino correcto'
]
};
// Shop Items
export const SHOP_ITEMS: ShopItem[] = [
{
id: 'stabilizer',
name: 'Estabilizador de Fader',
description: 'Reduce la deriva de los faders en 20%',
cost: 1500,
icon: 'Zap',
effect: 'STABILITY',
value: 20
},
{
id: 'auto_repair',
name: 'Auto-Reparación Lenta',
description: 'Regenera 1% de salud cada 5 segundos',
cost: 2000,
icon: 'Shield',
effect: 'AUTO_HEAL',
value: 1
},
{
id: 'stress_resist',
name: 'Resistencia al Estrés',
description: 'Reduce el aumento de estrés en 15%',
cost: 1800,
icon: 'Coffee',
effect: 'STRESS_RESIST',
value: 15
},
{
id: 'budget_boost',
name: 'Bono de Presupuesto',
description: 'Añade $500 al presupuesto inicial',
cost: 0,
icon: 'Plug',
effect: 'BUDGET_MULTIPLIER',
value: 500
}
];
// Crew Members
export const CREW_MEMBERS: CrewMember[] = [
{
id: 'VETERAN',
name: 'Carlos "El Veterano"',
role: 'Técnico Principal',
description: 'Experiencia: 20 años. Reduce deriva de faders en 15%',
bonus: 'LESS_DRIFT',
avatarColor: 'bg-blue-500'
},
{
id: 'BUDGET',
name: 'María "La Económica"',
role: 'Gerente de Presupuesto',
description: 'Negociación: +$2500 al presupuesto inicial',
bonus: 'MORE_BUDGET',
avatarColor: 'bg-green-500'
},
{
id: 'AUTO',
name: 'Roberto "El Mecánico"',
role: 'Especialista en Reparaciones',
description: 'Auto-reparación: +0.5% salud cada 5s',
bonus: 'AUTO_REPAIR_SLOW',
avatarColor: 'bg-purple-500'
},
{
id: 'CALM',
name: 'Ana "La Zen"',
role: 'Coordinadora de Estrés',
description: 'Calma: El estrés sube 20% más lento',
bonus: 'SLOW_STRESS',
avatarColor: 'bg-pink-500'
}
];
// Scenarios
export const SCENARIOS: GameScenario[] = [
{
id: 'TUTORIAL',
title: 'Tutorial',
description: 'Aprende los conceptos básicos',
difficulty: 'TUTORIAL',
contextPrompt: 'Tutorial scenario for learning the game',
initialBudget: 10000,
isTutorial: true
},
{
id: 'NORMAL',
title: 'Show Corporativo',
description: 'Un evento corporativo estándar',
difficulty: 'NORMAL',
contextPrompt: 'Corporate event with standard requirements',
initialBudget: 5000
},
{
id: 'ROCKSTAR',
title: 'Banda Diva',
description: 'Una banda exigente con caprichos',
difficulty: 'HARD',
contextPrompt: 'Rockstar band with high demands and diva behavior',
initialBudget: 6000
},
{
id: 'FESTIVAL',
title: 'Festival al Aire Libre',
description: 'Evento masivo con múltiples desafíos',
difficulty: 'HARD',
contextPrompt: 'Outdoor festival with weather and technical challenges',
initialBudget: 7000
},
{
id: 'EXTREME',
title: 'Show Extremo',
description: 'El desafío definitivo',
difficulty: 'EXTREME',
contextPrompt: 'Extreme challenge with maximum difficulty',
initialBudget: 4000,
unlockRequirements: {
minHardScenarios: 2
}
},
{
id: 'ARENA',
title: 'Tour de Arena',
description: 'Producción en venue grande con cambios rápidos de cue',
difficulty: 'HARD',
contextPrompt: 'Arena concert with complex transitions and aggressive pacing',
initialBudget: 6500,
unlockRequirements: {
minCompletedScenarios: 4,
minReputation: 30
}
},
{
id: 'WORLD_TOUR',
title: 'World Tour Live',
description: 'Evento internacional en vivo con máxima exigencia técnica',
difficulty: 'EXTREME',
contextPrompt: 'Global live broadcast tour with high pressure production constraints',
initialBudget: 4800,
unlockRequirements: {
minCompletedScenarios: 5,
minHardScenarios: 2,
minReputation: 70
}
},
{
id: 'BLACKOUT_PROTOCOL',
title: 'Blackout Protocol',
description: 'Modo supervivencia de producción con fallas encadenadas',
difficulty: 'EXTREME',
contextPrompt: 'Cascading technical failures under severe budget and stress conditions',
initialBudget: 3600,
unlockRequirements: {
minCompletedScenarios: 6,
minHardScenarios: 3,
minReputation: 120,
requiredScenarioIds: ['WORLD_TOUR']
}
}
];
// Tutorial Steps
export const TUTORIAL_STEPS: TutorialStep[] = [
{
id: 1,
title: 'Bienvenido a Event Chaos',
text: 'Gestiona los sistemas técnicos de un show en vivo. Usa los faders para controlar SOUND, LIGHTS, VIDEO y STAGE.',
highlight: 'faders'
},
{
id: 2,
title: 'Zona Segura',
text: 'Mantén los faders entre 40% y 60% para máxima estabilidad. Fuera de esta zona, los sistemas pueden fallar.',
highlight: 'safe-zone'
},
{
id: 3,
title: 'Eventos',
text: 'Cuando aparezcan eventos, resuélvelos rápidamente eligiendo la opción correcta. Algunos requieren minijuegos.',
highlight: 'events'
},
{
id: 4,
title: 'Estadísticas',
text: 'Monitorea Public Interest, Client Satisfaction y Stress. Si alguna cae demasiado, pierdes.',
highlight: 'stats'
},
{
id: 5,
title: '¡Comienza!',
text: 'Mantén todo funcionando durante 2 minutos. ¡Buena suerte!',
highlight: 'start'
}
];
// Client Missions
export const CLIENT_MISSIONS: MissionDefinition[] = [
{
id: 'high_energy',
title: '¡Máxima Energía!',
description: 'Mantén SOUND y LIGHTS altos por 15 segundos',
criteria: [
{ systemId: SystemType.SOUND, min: 60 },
{ systemId: SystemType.LIGHTS, min: 60 }
],
holdDuration: 15,
timeout: 45,
rewardCash: 500
},
{
id: 'low_stress',
title: 'Ambiente Relajado',
description: 'Mantén todos los sistemas entre 30-50% por 20 segundos',
criteria: [
{ systemId: SystemType.SOUND, min: 30, max: 50 },
{ systemId: SystemType.LIGHTS, min: 30, max: 50 },
{ systemId: SystemType.VIDEO, min: 30, max: 50 },
{ systemId: SystemType.STAGE, min: 30, max: 50 }
],
holdDuration: 20,
timeout: 60,
rewardCash: 800
},
{
id: 'balanced_mix',
title: 'Mezcla de Precisión',
description: 'Mantén SOUND, VIDEO y STAGE en zona segura (45-55%) por 12 segundos',
criteria: [
{ systemId: SystemType.SOUND, min: 45, max: 55 },
{ systemId: SystemType.VIDEO, min: 45, max: 55 },
{ systemId: SystemType.STAGE, min: 45, max: 55 }
],
holdDuration: 12,
timeout: 40,
rewardCash: 650
},
{
id: 'visual_impact',
title: 'Impacto Visual',
description: 'Sostén LIGHTS y VIDEO arriba de 70% durante 10 segundos',
criteria: [
{ systemId: SystemType.LIGHTS, min: 70 },
{ systemId: SystemType.VIDEO, min: 70 }
],
holdDuration: 10,
timeout: 35,
rewardCash: 700
},
{
id: 'stage_security',
title: 'Escenario Seguro',
description: 'Mantén STAGE entre 35-50% y SOUND entre 40-55% por 18 segundos',
criteria: [
{ systemId: SystemType.STAGE, min: 35, max: 50 },
{ systemId: SystemType.SOUND, min: 40, max: 55 }
],
holdDuration: 18,
timeout: 55,
rewardCash: 900
},
{
id: 'full_throttle',
title: 'Modo Festival',
description: 'Lleva SOUND, LIGHTS y STAGE por encima de 75% por 8 segundos',
criteria: [
{ systemId: SystemType.SOUND, min: 75 },
{ systemId: SystemType.LIGHTS, min: 75 },
{ systemId: SystemType.STAGE, min: 75 }
],
holdDuration: 8,
timeout: 30,
rewardCash: 1000
},
{
id: 'cooldown_window',
title: 'Ventana de Calma',
description: 'Baja todos los sistemas entre 25-40% durante 14 segundos',
criteria: [
{ systemId: SystemType.SOUND, min: 25, max: 40 },
{ systemId: SystemType.LIGHTS, min: 25, max: 40 },
{ systemId: SystemType.VIDEO, min: 25, max: 40 },
{ systemId: SystemType.STAGE, min: 25, max: 40 }
],
holdDuration: 14,
timeout: 45,
rewardCash: 750
},
{
id: 'arena_transition',
title: 'Transición de Arena',
description: 'Sincroniza SOUND, LIGHTS y VIDEO en rango alto de precisión',
criteria: [
{ systemId: SystemType.SOUND, min: 58, max: 72 },
{ systemId: SystemType.LIGHTS, min: 62, max: 78 },
{ systemId: SystemType.VIDEO, min: 55, max: 70 }
],
holdDuration: 11,
timeout: 36,
rewardCash: 950,
allowedScenarios: ['ARENA', 'WORLD_TOUR', 'BLACKOUT_PROTOCOL']
},
{
id: 'pyro_guard',
title: 'Guardia de Pyro',
description: 'Mantén STAGE estable con LIGHTS altas sin perder control',
criteria: [
{ systemId: SystemType.STAGE, min: 42, max: 55 },
{ systemId: SystemType.LIGHTS, min: 68 }
],
holdDuration: 12,
timeout: 40,
rewardCash: 1100,
allowedScenarios: ['ARENA', 'WORLD_TOUR']
},
{
id: 'broadcast_lock',
title: 'Bloque de Broadcast',
description: 'Alinea SOUND y VIDEO en ventana de transmisión internacional',
criteria: [
{ systemId: SystemType.SOUND, min: 48, max: 58 },
{ systemId: SystemType.VIDEO, min: 52, max: 62 }
],
holdDuration: 14,
timeout: 42,
rewardCash: 1250,
allowedScenarios: ['WORLD_TOUR', 'BLACKOUT_PROTOCOL']
},
{
id: 'blackout_containment',
title: 'Contención de Blackout',
description: 'Mantén todos los sistemas en zona segura durante crisis encadenada',
criteria: [
{ systemId: SystemType.SOUND, min: 45, max: 60 },
{ systemId: SystemType.LIGHTS, min: 45, max: 60 },
{ systemId: SystemType.VIDEO, min: 45, max: 60 },
{ systemId: SystemType.STAGE, min: 45, max: 60 }
],
holdDuration: 16,
timeout: 38,
rewardCash: 1450,
allowedScenarios: ['BLACKOUT_PROTOCOL']
},
{
id: 'precision_drop',
title: 'Drop de Precisión',
description: 'Mantén SOUND y LIGHTS en ventana estrecha durante la caída musical',
criteria: [
{ systemId: SystemType.SOUND, min: 48, max: 56 },
{ systemId: SystemType.LIGHTS, min: 44, max: 52 }
],
holdDuration: 10,
timeout: 34,
rewardCash: 680,
allowedScenarios: ['NORMAL', 'ROCKSTAR']
},
{
id: 'arena_split_cue',
title: 'Split Cue de Arena',
description: 'Sincroniza audio/video y conserva estabilidad de escenario en transición de acto',
criteria: [
{ systemId: SystemType.SOUND, min: 62, max: 76 },
{ systemId: SystemType.VIDEO, min: 58, max: 72 },
{ systemId: SystemType.STAGE, min: 40, max: 55 }
],
holdDuration: 12,
timeout: 37,
rewardCash: 1180,
allowedScenarios: ['ARENA', 'WORLD_TOUR']
},
{
id: 'tour_broadcast_sync',
title: 'Sync de Broadcast Global',
description: 'Alinea SOUND, LIGHTS y VIDEO para ventana de transmisión internacional',
criteria: [
{ systemId: SystemType.SOUND, min: 50, max: 60 },
{ systemId: SystemType.LIGHTS, min: 55, max: 68 },
{ systemId: SystemType.VIDEO, min: 54, max: 66 }
],
holdDuration: 15,
timeout: 44,
rewardCash: 1350,
allowedScenarios: ['WORLD_TOUR']
},
{
id: 'blackout_triage',
title: 'Triage de Blackout',
description: 'Sostén sistemas críticos en zona media mientras se estabiliza la red',
criteria: [
{ systemId: SystemType.SOUND, min: 46, max: 60 },
{ systemId: SystemType.LIGHTS, min: 46, max: 60 },
{ systemId: SystemType.VIDEO, min: 46, max: 60 },
{ systemId: SystemType.STAGE, min: 40, max: 55 }
],
holdDuration: 18,
timeout: 41,
rewardCash: 1600,
allowedScenarios: ['BLACKOUT_PROTOCOL', 'EXTREME']
}
];
// System Events distribuidos por sistemas y escenarios
export const SYSTEM_EVENTS: Record<SystemType, EventDefinition[]> = {
[SystemType.SOUND]: [
// Eventos básicos de SOUND (todos los escenarios)
{
title: 'Feedback',
description: 'Hay un feedback agudo en el sistema de sonido',
options: [
{ label: 'Bajar el volumen', isCorrect: true, stressImpact: -5 },
{ label: 'Ignorar', isCorrect: false, stressImpact: 15 },
{ label: 'Subir más el volumen', isCorrect: false, stressImpact: 25 }
],
priority: 7,
canEscalate: true,
escalationEvent: 'Ruido de Masa (Hum)',
escalationTime: 25,
relatedTo: ['Luces de Colores Desincronizadas', 'Sincronización Perdida']
},
{
title: 'Ruido de Masa (Hum)',
description: 'Hay un zumbido constante en el sistema',
options: [
{ label: 'Verificar conexiones a tierra', isCorrect: true, stressImpact: -5, cost: 200 },
{ label: 'Aumentar el volumen para taparlo', isCorrect: false, stressImpact: 20 },
{
label: 'Desconectar y reconectar',
isCorrect: false,
stressImpact: 10,
requiresMinigame: 'CABLES'
}
],
priority: 6,
canEscalate: true,
escalationEvent: 'Caída de Sistema Completo',
escalationTime: 30,
relatedTo: ['DMX Desconectado', 'Sincronización Perdida']
},
{
title: 'Cable Cortado',
description: 'Un cable importante se ha cortado',
options: [
{
label: 'Reparar cable (minijuego)',
isCorrect: true,
stressImpact: -10,
requiresMinigame: 'CABLES'
},
{ label: 'Usar cable de respaldo', isCorrect: true, stressImpact: -5, cost: 300 },
{ label: 'Continuar sin ese canal', isCorrect: false, stressImpact: 15 }
],
priority: 8,
canEscalate: true,
escalationEvent: 'Caída de Sistema Completo',
escalationTime: 35
},
{
title: 'Caída de Sistema Completo',
description: 'El sistema de sonido ha fallado completamente',
options: [
{ label: 'Reiniciar sistema completo', isCorrect: true, stressImpact: -15, cost: 500 },
{ label: 'Usar sistema de respaldo', isCorrect: true, stressImpact: -10, cost: 800 },
{ label: 'Continuar sin sonido', isCorrect: false, stressImpact: 40 }
],
priority: 10,
relatedTo: ['Corte de Energía en Luces', 'Fallo Total de Video', 'Corte de Energía Total']
},
{
title: 'Micrófono Sin Sonido',
description: 'El micrófono principal no está captando audio',
options: [
{ label: 'Verificar batería del micrófono', isCorrect: true, stressImpact: -5, cost: 50 },
{ label: 'Cambiar a micrófono de respaldo', isCorrect: true, stressImpact: -3, cost: 100 },
{ label: 'Aumentar ganancia', isCorrect: false, stressImpact: 10 }
],
priority: 6,
allowedScenarios: ['NORMAL', 'ROCKSTAR', 'FESTIVAL']
},
{
title: 'Amplificador Sobrecalentado',
description: 'El amplificador está alcanzando temperaturas peligrosas',
options: [
{ label: 'Reducir volumen y ventilar', isCorrect: true, stressImpact: -8 },
{ label: 'Usar amplificador de respaldo', isCorrect: true, stressImpact: -5, cost: 400 },
{ label: 'Continuar al máximo', isCorrect: false, stressImpact: 25 }
],
priority: 8,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL', 'EXTREME']
},
{
title: 'Interferencia de Radio',
description: 'Hay interferencia de radio frecuencia en el sistema',
options: [
{
label: 'Ajustar frecuencias (minijuego)',
isCorrect: true,
stressImpact: -10,
requiresMinigame: 'FREQUENCY'
},
{ label: 'Usar filtros de RF', isCorrect: true, stressImpact: -5, cost: 250 },
{ label: 'Ignorar', isCorrect: false, stressImpact: 12 }
],
priority: 5,
allowedScenarios: ['FESTIVAL', 'EXTREME']
},
{
title: 'Monitor de Escenario Fallido',
description: 'Los monitores de escenario no funcionan',
options: [
{ label: 'Reparar monitores', isCorrect: true, stressImpact: -5, cost: 200 },
{
label: 'Usar sistema de monitores alternativo',
isCorrect: true,
stressImpact: -3,
cost: 150
},
{ label: 'Continuar sin monitores', isCorrect: false, stressImpact: 15 }
],
priority: 4,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL']
},
{
title: 'Eco en el Sistema',
description: 'Hay un eco molesto en las voces',
options: [
{ label: 'Ajustar delay y reverb', isCorrect: true, stressImpact: -5 },
{ label: 'Reducir ganancia de retorno', isCorrect: true, stressImpact: -3 },
{ label: 'Ignorar', isCorrect: false, stressImpact: 10 }
],
priority: 4,
allowedScenarios: ['NORMAL', 'ROCKSTAR']
},
{
title: 'Distorsión en Línea Principal',
description: 'La señal principal está distorsionada',
options: [
{ label: 'Verificar niveles de entrada', isCorrect: true, stressImpact: -8 },
{ label: 'Usar línea de respaldo', isCorrect: true, stressImpact: -5, cost: 300 },
{ label: 'Aumentar headroom', isCorrect: false, stressImpact: 15 }
],
priority: 7,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL', 'EXTREME']
},
{
title: 'Batería de Inalámbrico Agotada',
description: 'El micrófono inalámbrico se quedó sin batería',
options: [
{ label: 'Cambiar batería', isCorrect: true, stressImpact: -3, cost: 20 },
{ label: 'Usar micrófono con cable', isCorrect: true, stressImpact: -5, cost: 50 },
{ label: 'Continuar sin ese micrófono', isCorrect: false, stressImpact: 12 }
],
priority: 3,
allowedScenarios: ['NORMAL', 'ROCKSTAR']
},
{
title: 'Problema con Subwoofers',
description: 'Los subwoofers no están funcionando correctamente',
options: [
{
label: 'Verificar conexiones de subwoofers',
isCorrect: true,
stressImpact: -5,
cost: 100
},
{ label: 'Ajustar crossover', isCorrect: true, stressImpact: -3 },
{ label: 'Continuar sin graves', isCorrect: false, stressImpact: 15 }
],
priority: 5,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL']
},
{
title: 'Matriz de Delay Corrupta',
description: 'La matriz digital de delay perdió su ruteo principal',
options: [
{ label: 'Restaurar snapshot de audio', isCorrect: true, stressImpact: -8, cost: 250 },
{ label: 'Rerutear manualmente canales críticos', isCorrect: true, stressImpact: -5 },
{ label: 'Bypass completo de la matriz', isCorrect: false, stressImpact: 18 }
],
priority: 8,
allowedScenarios: ['ARENA', 'WORLD_TOUR', 'BLACKOUT_PROTOCOL']
},
{
title: 'Retorno IEM Fuera de Fase',
description: 'Los in-ear monitors del artista principal están fuera de fase',
options: [
{ label: 'Corregir polaridad y fase', isCorrect: true, stressImpact: -6 },
{ label: 'Cambiar a mezcla alternativa', isCorrect: true, stressImpact: -4, cost: 180 },
{ label: 'Mantener retorno actual', isCorrect: false, stressImpact: 14 }
],
priority: 6,
allowedScenarios: ['WORLD_TOUR', 'BLACKOUT_PROTOCOL']
}
],
[SystemType.LIGHTS]: [
// Eventos básicos de LIGHTS
{
title: 'Foco Quemado',
description: 'Uno de los focos principales se ha quemado',
options: [
{ label: 'Reemplazar foco', isCorrect: true, stressImpact: -5, cost: 150 },
{ label: 'Usar focos de respaldo', isCorrect: true, stressImpact: -3, cost: 100 },
{ label: 'Continuar con menos luz', isCorrect: false, stressImpact: 10 }
],
priority: 5
},
{
title: 'Sobrecarga de Circuito',
description: 'El circuito de luces está sobrecargado',
options: [
{ label: 'Redistribuir carga', isCorrect: true, stressImpact: -8, cost: 200 },
{ label: 'Bajar intensidad de luces', isCorrect: true, stressImpact: -5 },
{ label: 'Ignorar', isCorrect: false, stressImpact: 20 }
],
priority: 7,
canEscalate: true,
escalationEvent: 'Corte de Energía en Luces',
escalationTime: 30,
relatedTo: ['Problema de Energía', 'Procesador de Video Saturado']
},
{
title: 'Corte de Energía en Luces',
description: 'Todo el sistema de luces se ha apagado',
options: [
{ label: 'Reiniciar dimmer rack', isCorrect: true, stressImpact: -10, cost: 300 },
{ label: 'Usar sistema de emergencia', isCorrect: true, stressImpact: -8, cost: 500 },
{ label: 'Continuar a oscuras', isCorrect: false, stressImpact: 35 }
],
priority: 9,
relatedTo: ['Caída de Sistema Completo', 'Fallo Total de Video', 'Corte de Energía Total']
},
{
title: 'DMX Desconectado',
description: 'La señal DMX se ha perdido',
options: [
{
label: 'Reconectar cable DMX',
isCorrect: true,
stressImpact: -5,
requiresMinigame: 'CABLES'
},
{ label: 'Usar backup DMX', isCorrect: true, stressImpact: -3, cost: 150 },
{ label: 'Continuar sin control', isCorrect: false, stressImpact: 15 }
],
priority: 6,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL', 'EXTREME']
},
{
title: 'Movimiento de Luces Bloqueado',
description: 'Las luces móviles no responden',
options: [
{ label: 'Reiniciar movimientos', isCorrect: true, stressImpact: -5 },
{ label: 'Usar modo manual', isCorrect: true, stressImpact: -3 },
{ label: 'Continuar estático', isCorrect: false, stressImpact: 10 }
],
priority: 4,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL']
},
{
title: 'Efecto Estroboscópico Roto',
description: 'El estroboscopio no funciona correctamente',
options: [
{ label: 'Reparar estroboscopio', isCorrect: true, stressImpact: -3, cost: 100 },
{ label: 'Usar efecto alternativo', isCorrect: true, stressImpact: -2 },
{ label: 'Continuar sin efecto', isCorrect: false, stressImpact: 8 }
],
priority: 3,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL']
},
{
title: 'Luces de Colores Desincronizadas',
description: 'Los colores no coinciden con la programación',
options: [
{ label: 'Recalibrar colores', isCorrect: true, stressImpact: -5 },
{ label: 'Usar preset de respaldo', isCorrect: true, stressImpact: -3 },
{ label: 'Continuar desincronizado', isCorrect: false, stressImpact: 12 }
],
priority: 4,
allowedScenarios: ['NORMAL', 'ROCKSTAR']
},
{
title: 'Sobrecarga Térmica en LED',
description: 'Las luces LED están sobrecalentándose',
options: [
{ label: 'Reducir intensidad y ventilar', isCorrect: true, stressImpact: -8 },
{ label: 'Activar modo de seguridad', isCorrect: true, stressImpact: -5 },
{ label: 'Continuar al máximo', isCorrect: false, stressImpact: 20 }
],
priority: 7,
allowedScenarios: ['FESTIVAL', 'EXTREME']
},
{
title: 'Follow Spot Desalineado',
description: 'El follow spot no está apuntando correctamente',
options: [
{ label: 'Realinear follow spot', isCorrect: true, stressImpact: -3 },
{ label: 'Usar follow spot de respaldo', isCorrect: true, stressImpact: -2, cost: 80 },
{ label: 'Continuar desalineado', isCorrect: false, stressImpact: 10 }
],
priority: 3,
allowedScenarios: ['NORMAL', 'ROCKSTAR']
},
{
title: 'Consola de Luces Congelada',
description: 'La consola de control no responde',
options: [
{ label: 'Reiniciar consola', isCorrect: true, stressImpact: -8, cost: 200 },
{ label: 'Usar consola de respaldo', isCorrect: true, stressImpact: -5, cost: 300 },
{ label: 'Continuar sin control', isCorrect: false, stressImpact: 20 }
],
priority: 8,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL', 'EXTREME']
},
{
title: 'Cable de Alimentación Suelto',
description: 'Un cable de alimentación se ha desconectado',
options: [
{
label: 'Reconectar cable',
isCorrect: true,
stressImpact: -5,
requiresMinigame: 'CABLES'
},
{ label: 'Usar fuente alternativa', isCorrect: true, stressImpact: -3, cost: 100 },
{ label: 'Continuar sin esa luz', isCorrect: false, stressImpact: 12 }
],
priority: 5,
allowedScenarios: ['FESTIVAL', 'EXTREME']
},
{
title: 'Efecto de Neblina No Funciona',
description: 'La máquina de neblina no está produciendo efecto',
options: [
{ label: 'Verificar fluido y limpiar', isCorrect: true, stressImpact: -3, cost: 50 },
{ label: 'Usar máquina de respaldo', isCorrect: true, stressImpact: -2, cost: 80 },
{ label: 'Continuar sin neblina', isCorrect: false, stressImpact: 8 }
],
priority: 2,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL']
},
{
title: 'Timecode de Luces Desfasado',
description: 'La secuencia de luces perdió sincronía con el show',
options: [
{ label: 'Reenganchar reloj maestro', isCorrect: true, stressImpact: -8 },
{ label: 'Pasar a operación manual', isCorrect: true, stressImpact: -5, cost: 220 },
{ label: 'Dejar correr desfasado', isCorrect: false, stressImpact: 20 }
],
priority: 8,
allowedScenarios: ['ARENA', 'WORLD_TOUR']
},
{
title: 'Colisión de Universos DMX',
description: 'Dos universos DMX están enviando datos conflictivos',
options: [
{ label: 'Segmentar red DMX', isCorrect: true, stressImpact: -10, cost: 260 },
{ label: 'Activar nodo de respaldo', isCorrect: true, stressImpact: -6, cost: 180 },
{ label: 'Ignorar conflicto', isCorrect: false, stressImpact: 24 }
],
priority: 9,
allowedScenarios: ['WORLD_TOUR', 'BLACKOUT_PROTOCOL']
}
],
[SystemType.VIDEO]: [
// Eventos básicos de VIDEO
{
title: 'Pantalla Congelada',
description: 'La pantalla principal se ha congelado',
options: [
{ label: 'Reiniciar proyector', isCorrect: true, stressImpact: -8, cost: 100 },
{ label: 'Cambiar a fuente de respaldo', isCorrect: true, stressImpact: -5, cost: 150 },
{ label: 'Continuar sin video', isCorrect: false, stressImpact: 15 }
],
priority: 6,
canEscalate: true,
escalationEvent: 'Fallo Total de Video',
escalationTime: 30,
relatedTo: ['Timecode de Luces Desfasado', 'Fallo en Sistema de Comunicación']
},
{
title: 'Fallo Total de Video',
description: 'Todo el sistema de video ha fallado',
options: [
{ label: 'Reiniciar todo el sistema', isCorrect: true, stressImpact: -12, cost: 400 },
{
label: 'Usar sistema de respaldo completo',
isCorrect: true,
stressImpact: -10,
cost: 600
},
{ label: 'Continuar sin video', isCorrect: false, stressImpact: 30 }
],
priority: 9,
relatedTo: [
'Caída de Sistema Completo',
'Corte de Energía en Luces',
'Corte de Energía Total'
]
},
{
title: 'Resolución Incorrecta',
description: 'La resolución del video no coincide',
options: [
{
label: 'Ajustar resolución (minijuego)',
isCorrect: true,
stressImpact: -10,
requiresMinigame: 'FREQUENCY'
},
{ label: 'Usar fuente alternativa', isCorrect: true, stressImpact: -5, cost: 200 },
{ label: 'Ignorar', isCorrect: false, stressImpact: 12 }
],
priority: 5
},
{
title: 'Proyector Sobrecalentado',
description: 'El proyector está alcanzando temperaturas peligrosas',
options: [
{ label: 'Reducir brillo y ventilar', isCorrect: true, stressImpact: -8 },
{ label: 'Usar proyector de respaldo', isCorrect: true, stressImpact: -5, cost: 500 },
{ label: 'Continuar al máximo', isCorrect: false, stressImpact: 20 }
],
priority: 7,
allowedScenarios: ['FESTIVAL', 'EXTREME']
},
{
title: 'Señal de Video Perdida',
description: 'La señal de entrada se ha perdido',
options: [
{
label: 'Verificar conexiones',
isCorrect: true,
stressImpact: -5,
requiresMinigame: 'CABLES'
},
{ label: 'Usar fuente de respaldo', isCorrect: true, stressImpact: -3, cost: 150 },
{ label: 'Continuar sin señal', isCorrect: false, stressImpact: 15 }
],
priority: 6,
allowedScenarios: ['NORMAL', 'ROCKSTAR', 'FESTIVAL']
},
{
title: 'Pixelación en Pantalla',
description: 'La imagen está pixelada y con artefactos',
options: [
{ label: 'Verificar calidad de señal', isCorrect: true, stressImpact: -5 },
{
label: 'Cambiar a conexión de mayor calidad',
isCorrect: true,
stressImpact: -3,
cost: 200
},
{ label: 'Continuar pixelado', isCorrect: false, stressImpact: 10 }
],
priority: 4,
allowedScenarios: ['NORMAL', 'ROCKSTAR']
},
{
title: 'Lámpara de Proyector Quemada',
description: 'La lámpara del proyector se ha quemado',
options: [
{ label: 'Reemplazar lámpara', isCorrect: true, stressImpact: -8, cost: 800 },
{ label: 'Usar proyector de respaldo', isCorrect: true, stressImpact: -5, cost: 500 },
{ label: 'Continuar sin proyector', isCorrect: false, stressImpact: 25 }
],
priority: 8,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL', 'EXTREME']
},
{
title: 'Sincronización Perdida',
description: 'Las pantallas no están sincronizadas',
options: [
{ label: 'Resincronizar señales', isCorrect: true, stressImpact: -5 },
{ label: 'Usar genlock', isCorrect: true, stressImpact: -3, cost: 150 },
{ label: 'Continuar desincronizado', isCorrect: false, stressImpact: 12 }
],
priority: 5,
allowedScenarios: ['FESTIVAL', 'EXTREME']
},
{
title: 'Cable HDMI Roto',
description: 'El cable HDMI principal está dañado',
options: [
{
label: 'Reparar cable (minijuego)',
isCorrect: true,
stressImpact: -5,
requiresMinigame: 'CABLES'
},
{ label: 'Usar cable de respaldo', isCorrect: true, stressImpact: -3, cost: 100 },
{ label: 'Continuar sin esa fuente', isCorrect: false, stressImpact: 12 }
],
priority: 4,
allowedScenarios: ['NORMAL', 'ROCKSTAR']
},
{
title: 'Procesador de Video Saturado',
description: 'El procesador está al límite de capacidad',
options: [
{ label: 'Reducir complejidad de efectos', isCorrect: true, stressImpact: -8 },
{ label: 'Usar procesador adicional', isCorrect: true, stressImpact: -5, cost: 400 },
{ label: 'Continuar saturado', isCorrect: false, stressImpact: 18 }
],
priority: 7,
allowedScenarios: ['ROCKSTAR', 'FESTIVAL', 'EXTREME']
},
{
title: 'Pantalla LED con Píxeles Muertos',
description: 'Hay píxeles muertos en la pantalla LED',
options: [
{ label: 'Reparar módulo LED', isCorrect: true, stressImpact: -5, cost: 300 },
{ label: 'Usar pantalla de respaldo', isCorrect: true, stressImpact: -3, cost: 500 },
{ label: 'Continuar con píxeles muertos', isCorrect: false, stressImpact: 10 }
],
priority: 4,
allowedScenarios: ['FESTIVAL', 'EXTREME']
},
{
title: 'Fuente de Video Incorrecta',
description: 'Se está mostrando la fuente de video incorrecta',
options: [
{ label: 'Cambiar a fuente correcta', isCorrect: true, stressImpact: -3 },
{ label: 'Verificar switcher', isCorrect: true, stressImpact: -5 },
{ label: 'Continuar con fuente incorrecta', isCorrect: false, stressImpact: 15 }
],
priority: 5,
allowedScenarios: ['NORMAL', 'ROCKSTAR']
},
{
title: 'Encoder de Streaming Inestable',
description: 'El encoder principal está perdiendo frames en la transmisión',
options: [
{ label: 'Reducir bitrate y estabilizar', isCorrect: true, stressImpact: -8 },
{ label: 'Migrar al encoder backup', isCorrect: true, stressImpact: -5, cost: 300 },
{ label: 'Mantener encoder actual', isCorrect: false, stressImpact: 22 }
],
priority: 8,
allowedScenarios: ['WORLD_TOUR', 'BLACKOUT_PROTOCOL']
},
{
title: 'Switcher de Respaldo Bloqueado',
description: 'El switcher secundario no acepta cambios de escena',