-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsh_10p.mrc
4784 lines (3776 loc) · 235 KB
/
sh_10p.mrc
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
dialog sh_dialog {
title "IRC-игра «Тайный Гитлер»"
size -1 -1 1190 350
option pixels
text "Канал:", 1, 10 13 40 16, center
edit "#gameshows", 2, 50 10 80 21, center autohs
button "+m", 3, 135 10 30 20
check "", 4, 175 10 14 20
button "Регистрация", 5, 195 10 95 20
box "Участники", 100, 10 40 280 300
check "1.", 105, 23 80 34 20, left
check "2.", 110, 23 100 34 20, left
check "3.", 115, 23 120 34 20, left
check "4.", 120, 23 140 34 20, left
check "5.", 125, 23 160 34 20, left
check "6.", 130, 23 180 34 20, left
check "7.", 135, 23 200 34 20, left
check "8.", 140, 23 220 34 20, left
check "9.", 145, 23 240 34 20, left
check "10.", 150, 23 260 34 20, left
text "Участник", 101, 60 60 100 16, center
edit "", 106, 60 80 100 21, autohs
edit "", 111, 60 100 100 21, autohs
edit "", 116, 60 120 100 21, autohs
edit "", 121, 60 140 100 21, autohs
edit "", 126, 60 160 100 21, autohs
edit "", 131, 60 180 100 21, autohs
edit "", 136, 60 200 100 21, autohs
edit "", 141, 60 220 100 21, autohs
edit "", 146, 60 240 100 21, autohs
edit "", 151, 60 260 100 21, autohs
text "Роль", 102, 170 60 60 16, center
combo 107, 170 80 60 100, size drop
combo 112, 170 100 60 100, size drop
combo 117, 170 120 60 100, size drop
combo 122, 170 140 60 100, size drop
combo 127, 170 160 60 100, size drop
combo 132, 170 180 60 100, size drop
combo 137, 170 200 60 100, size drop
combo 142, 170 220 60 100, size drop
combo 147, 170 240 60 100, size drop
combo 152, 170 260 60 100, size drop
text "v", 103, 240 60 20 16, center
check "", 108, 243 80 14 20
check "", 113, 243 100 14 20
check "", 118, 243 120 14 20
check "", 123, 243 140 14 20
check "", 128, 243 160 14 20
check "", 133, 243 180 14 20
check "", 138, 243 200 14 20
check "", 143, 243 220 14 20
check "", 148, 243 240 14 20
check "", 153, 243 260 14 20
text "К", 104, 260 60 20 16, center
check "", 109, 263 80 14 20
check "", 114, 263 100 14 20
check "", 119, 263 120 14 20
check "", 124, 263 140 14 20
check "", 129, 263 160 14 20
check "", 134, 263 180 14 20
check "", 139, 263 200 14 20
check "", 144, 263 220 14 20
check "", 149, 263 240 14 20
check "", 154, 263 260 14 20
button "Генерация ролей", 160, 60 290 100 40
button "Раздача ролей", 161, 170 290 60 40, multi
button "+v", 162, 240 290 40 20
button "-v", 163, 240 310 40 20
box "Игровое положение", 200, 300 10 340 80
link "Либеральных законов:", 210, 310 33 130 16
combo 211, 440 30 40 110, size drop
link "Фашистских законов:", 212, 310 63 130 16
combo 213, 440 60 40 120, size drop
link "Проваленных голосований:", 214, 490 25 90 26
combo 215, 580 30 40 100, size drop
button "Cлед. закон", 216, 490 60 70 20
button "Шкалы", 217, 570 60 60 20
box "Выборы", 300, 300 100 340 180
link "Президент:", 301, 310 123 60 16
combo 302, 380 120 110 220, size drop
text "Следующий:", 7, 500 123 80 16
combo 303, 590 120 40 220, size drop
link "Канцлер:", 305, 310 153 60 16
combo 306, 380 150 110 220, size drop
button "Круг™ игроков", 304, 500 150 130 20
button "Номинация", 307, 380 180 110 20
button "Канцлер — Гитлер?", 308, 500 180 130 20
box "Голосование", 6, 310 210 320 60
check "Инструкции", 310, 320 225 100 20
check "Приём голосов", 309, 320 245 100 20
button "Начало", 311, 430 228 90 30
button "Результаты", 312, 530 228 90 30
box "Законодательная сессия", 400, 300 290 340 50
link "Законы:", 401, 310 313 60 16
combo 402, 380 310 35 100, size drop
combo 403, 417 310 35 100, size drop
combo 404, 454 310 35 100, size drop
button "Начало", 405, 500 310 45 20
button "Законы", 406, 545 310 45 20
button "Рез-т", 407, 590 310 40 20
box "Исполнительные действия", 500, 650 10 240 270
link "1, 2. Проверка партии игрока", 501, 660 30 220 16
combo 502, 660 50 110 220, size drop
button "Отправить", 503, 780 50 100 20
link "3. Экстренные выборы президента", 504, 660 90 220 16
combo 505, 660 110 110 220, size drop
button "Избрать", 506, 780 110 100 20
link "4, 5. Убийство игрока", 507, 660 150 220 16
combo 508, 660 170 110 220, size drop
button "Убить", 509, 780 170 40 20
button "Гитлер?", 510, 830 170 50 20
check "5+. Право вето", 511, 660 200 110 20, left
check "Ротация", 521, 780 220 70 20
button "⇄", 522, 850 220 30 20
button "Круг игроков", 520, 660 245 110 25, multi
check "", 523, 780 248 14 20
text "Блок проверенных", 524, 797 245 80 31
box "Музыка", 700, 650 290 530 50
check "Фон", 701, 660 310 40 20
check "mp3:stop", 705, 705 310 70 20
combo 702, 785 310 45 140, size drop
combo 703, 835 310 45 140, size drop
combo 707, 1020 310 150 190, size drop
button "▶", 704, 900 310 30 20
button "mp3:stop", 706, 940 310 60 20
box "Прочее", 600, 900 10 280 270
button "Интро", 601, 910 30 75 20
button "Дисклеймер", 621, 990 30 80 20
button "Правила игры", 602, 1075 30 95 20
button "Preshow", 603, 910 50 75 20
button "Финал", 604, 990 50 80 20
button "MD5-строки", 623, 1075 50 95 20, multi
box "Интерактив", 610, 910 85 260 90
radio "0. Интерактив не работает", 611, 920 105 160 20, group
radio "1. Определение фашистов", 612, 920 125 160 20
radio "2. Выбор Гитлера", 613, 920 145 160 20
button "Правила", 614, 1090 105 70 20
button "Таймер этапа 1", 615, 1090 130 70 35, multi
box "Победа", 630, 910 180 260 70
radio "Либералов", 631, 920 200 80 20, group
radio "Фашистов", 632, 920 220 80 20
button "Победа", 633, 1010 200 70 40
button "Результаты на форум", 634, 1090 200 70 40, multi
link "Раскрытие роли:", 605, 910 257 90 16
combo 606, 1010 255 50 240, size drop
}
dialog sh_spy_dialog {
title "«Тайный шпион»"
size -1 -1 190 400
option pixels
text "Шпион:", 1, 10 13 40 16
combo 2, 70 10 110 120, size drop
button "Анонсирование шпиона", 3, 20 40 150 25
box "Финал", 100, 10 80 170 310
button "Предварительная победа либералов", 101, 30 100 130 35, multi
button "Показ Гитлера", 102, 20 150 120 20
button "+v", 103, 140 150 30 20
button "Список кандидатов", 104, 20 175 150 20
button "Отсчёт", 105, 20 205 50 20
check "Интерактив", 106, 80 205 90 20
combo 107, 40 235 110 120, size drop
button "Выбор кандидата", 108, 20 265 150 20
button "Шпион (не) раскрыт", 109, 20 290 150 20
button "Раскрытие шпиона", 110, 20 315 150 20
text "Окончательная победа:", 111, 20 345 150 16, center
button "либералов", 112, 20 360 70 20
button "фашистов", 113, 100 360 70 20
}
dialog sh_masq_dialog {
title "«Тайный маскарад»"
size -1 -1 370 315
option pixels
text "Канал маскарада:", 101, 10 13 100 16
edit "#masquerade", 102, 110 10 90 21, center autohs
check "", 103, 10 40 14 20
button "Регистрация", 104, 30 40 80 20
button "1. Общая маскировка", 105, 10 80 190 25
check "2. Приём команд !join", 106, 10 110 190 20
box "3. Финал игры", 110, 10 140 190 165
button "3.0. Всё по сценарию", 111, 20 160 170 25
button "3.1. Общеигровая статистика", 112, 20 195 170 20
button "3.2. Размаскировка зрителей", 113, 20 215 170 20
button "3.3. Размаскировка игроков", 114, 20 235 170 20
button "3.4. Общая статистика игроков", 115, 20 255 170 20
button "3.5. Финальные слова", 116, 20 275 170 20
box "Расшифровка масок", 200, 210 10 150 295
list 201, 220 30 130 235, size vsbar
edit "", 202, 220 275 130 21, read
}
dialog sh_deck_dialog {
title "«Тайный Гитлер»: тасовка законов"
size -1 -1 170 160
option pixels
text "Очередной набор законов:", 1, 10 10 150 16, center
edit "", 2, 10 30 150 21, center
text "Всего:", 3, 10 65 40 16
text "11 фашистских и 6 либеральных", 4, 70 60 90 26, right
button "Перемешать", 5, 10 100 150 25
button "Подтвердить", 6, 10 130 150 25
}
on *:dialog:sh_dial:init:*: {
if (%sh_graph_len !isnum 0-) {
set %sh_graph_len 85
}
did -ra sh_dial 2 %sh_channel
sh_checkchanmod
did -a sh_dial 211,213,215 0
did -a sh_dial 606 все
did -a sh_dial 211,213,215 1
did -a sh_dial 211,213,215 2
did -a sh_dial 211,213,215 3
did -a sh_dial 211,213 4
did -a sh_dial 211,213 5
did -a sh_dial 213 6
$sh_game().init
did -c sh_dial 606 1
$sh_music().init
$sh_music(1).group
$sh_vote(0).failsnum
$sh_policies(0).libnum
$sh_policies(0).fascnum
$sh_inter(0).mode
did -a sh_dial 402,403,404 L
did -a sh_dial 402,403,404 F
$sh_vote(0).blocked
if (!%sh_fund_plprice) {
set %sh_fund_plprice 30
}
if (!%sh_fund_commprice) {
set %sh_fund_commprice 0
}
if (!%sh_fund_comms) {
set %sh_fund_comms 0
}
}
on *:dialog:sh_dial:close:*: {
if ($sh().mode == spy) {
dialog -x sh_spy_dial
}
}
on *:dialog:sh_dial:edit:*: {
;Канал игры
if ($did == 2) {
set %sh_channel $did(sh_dial, 2).text
}
;Редактирование имени игрока
elseif ($findtok(106 111 116 121 126 131 136 141 146 151, $did, 1, 32) isnum 1-10) {
$sh_player($v1, $did(sh_dial, $did).text).nick
}
}
on *:dialog:sh_dial:sclick:*: {
;+m / -m
if ($did == 3) {
mode %sh_channel $did(sh_dial, $did).text
}
;Регистрация
elseif ($did == 4) {
noop $sh($did(sh_dial, $did).state).reg
}
;Уведомление о регистрации
elseif ($did == 5) {
msg %sh_channel 40,5▒5,40▒40....0Идёт регистрация на игру40....5▒40,5▒ Если вы желаете принять участие в игре, отправьте 40регистрация в приват Demid.
noop $sh(1).reg
}
;Статус участника
elseif ($findtok(105 110 115 120 125 130 135 140 145 150, $did, 1, 32) isnum 1-10) {
$sh_player($v1, $did(sh_dial, $did).state).status
}
;Роли игроков
elseif ($findtok(107 112 117 122 127 132 137 142 147 152, $did, 1, 32) isnum 1-10) {
$sh_player($v1, $did(sh_dial, $did).sel).role
}
;Генерация ролей
elseif ($did == 160) {
;Роли: 1 = Liberal, 2 = Fascist, 3 = Hitler
var %roles 1 1 1 1 1 1 2 2 2 3
var %i 1
while (%i <= $numtok($sh_game().players, 32)) {
var %rnd $rand(1, $numtok(%roles, 32))
var %role $gettok(%roles, %rnd, 32)
%roles = $deltok(%roles, %rnd, 32)
noop $sh_player(%i).setup
$sh_player(%i, %role).role
inc %i
}
if ($sh_deck().activated) {
set %sh_deck
set %sh_deck_discard
set %sh_hashes
noop $sh_deck().check
$sh_deck($shuftok($str($+(f, $chr(32)), 11) $str($+(l, $chr(32)), 6))).set
}
else {
noop $sh_policies().generate
}
noop $sh_game($rand(1, 10)).president
noop $sh_vote(1).info
noop $sh_vote(0).blocked
set %sh_exac_investigated
if ($sh().mode == spy) {
var %spy_id 0
while ($sh_player(%spy_id).role != 1) {
%spy_id = $rand(1, $numtok($sh_game().players, 32))
}
noop $sh_spy(%spy_id).spy
}
var %players $sh_game().nicks
var %r 1
while (%r <= $numtok(%sh_registered, 32)) {
var %nick $gettok(%sh_registered, %r, 32)
if (!$istok(%players, %nick, 32)) {
noop $sh_inter(%nick).fascists
}
inc %r
}
}
;Раздача ролей
elseif ($did == 161) {
var %Hitler
var %fascists
var %liberals
var %i 1
while (%i <= $numtok($sh_game().players, 32)) {
var %role $sh_player(%i).role
if (%role == 1) {
%liberals = $instok(%liberals, $+($chr(2), $sh_player(%i), $chr(2)), 0, 32)
}
elseif (%role == 2) {
%fascists = $instok(%fascists, $+($chr(2), $sh_player(%i), $chr(2)), 0, 32)
}
elseif (%role == 3) {
%Hitler = $+($chr(2), $sh_player(%i), $chr(2))
}
inc %i
}
var %i 1
while (%i <= $numtok($sh_game().players, 32)) {
var %nick $sh_player(%i)
var %role $sh_player(%i).role
query %nick
;Роль — Liberal
if (%role == 1) {
msg %nick Ваша роль — 59либерал. Помимо вас в команде есть 3 других либерала — постарайтесь понять, кто они, чтобы объединить силы против 40фашистов.
msg %nick Напомню, что для победы вам надо принять 5 либеральных законов, либо убить 52Гитлера.
msg %nick Важно: даже если вы понимаете, что результат игры уже решён, не выдавайте свою роль до появления сообщения «Победа либералов» / «Победа фашистов».
msg %nick Желаю удачи!
if ($sh().mode == spy) && ($sh_spy().spy == %i) {
msg %nick 4Сегодняшняя игра будет необычной для вас. 1Вы — тайный шпион. Сейчас я вышлю вам роли всех других игроков, включая фашистов и Гитлера.
msg %nick Либералы: $+($replace($deltok(%liberals, -1, 32), $chr(32), $+($chr(44), $chr(32))) и $gettok(%liberals, -1, 32), $chr(46))
msg %nick Фашисты: $+($replace($deltok(%fascists, -1, 32), $chr(32), $+($chr(44), $chr(32))) и $gettok(%fascists, -1, 32), $chr(46))
msg %nick Гитлер — $+(%Hitler, $chr(46))
msg %nick Внимательно ознакомьтесь с ними. В ходе игры вам предстоит тайно и незаметно использовать эту информацию для того, чтобы привести свою команду к победе.
msg %nick Я должен отдельно подчеркнуть, что любая коммуникация с членами вашей команды за пределами канала запрещена.
msg %nick Если игра окончится победой либералов, в конце игры у 52Гитлера будет право на реванш. Он попытается отгадать, кто из шести игроков является шпионом.
msg %nick Если его предположение окажется верным, то фашисты перехватят у вас победу в сегодняшней игре.
msg %nick Таким образом, вы должны пользоваться имеющимися у вас сведениями с умом и очень осторожно.
msg %nick Я объявлю об этих правилах для остальных игроков после принятия первого закона. Ещё раз желаю удачи.
}
}
;Роль — Fascist
elseif (%role == 2) {
var %fascists_clean $remtok(%fascists, $+($chr(2), %nick, $chr(2)), 0, 32)
msg %nick Ваша роль — 40фашист. Помимо вас в команде есть другой фашист — $+($replace($deltok(%fascists_clean, -1, 32), $chr(32), $+($chr(44), $chr(32))) и $gettok(%fascists_clean, -1, 32), $chr(46)) Он тоже знает ваше имя.
msg %nick 52Гитлер в этой игре — $+(%Hitler, $chr(46)) Гитлер не знает роли других участников, включая фашистов.
msg %nick Напомню, что для победы вам надо принять 6 фашистских законов, либо избрать Гитлера канцлером (после третьего фашистского закона).
msg %nick Важно: даже если вы понимаете, что результат игры уже решён, не выдавайте свою роль до появления сообщения «Победа либералов» / «Победа фашистов».
msg %nick Желаю удачи!
}
;Роль — Hitler
elseif (%role == 3) {
msg %nick Ваша роль — 52Гитлер. В вашей команде есть 2 других 40фашиста. Несмотря на то, что вы не знаете их имён, они знают ваше.
msg %nick Для победы вам надо принять 6 фашистских законов, либо стать избранным канцлером (после третьего фашистского закона).
msg %nick Соблюдайте максимальную осторожность — 59либералы постараются принять 5 либеральных законов, либо 52убить вас.
msg %nick Важно: даже если вы понимаете, что результат игры уже решён, не выдавайте свою роль до появления сообщения «Победа либералов» / «Победа фашистов».
msg %nick Желаю удачи!
}
inc %i
}
}
;+v участникам
elseif ($did == 162) {
mode %sh_channel $+(+, $str(v, $numtok($sh_game().nicks, 32))) $sh_game().nicks
}
;-v участникам
elseif ($did == 163) {
mode %sh_channel $+(-, $str(v, $numtok($sh_game().nicks, 32))) $sh_game().nicks
}
;Либеральных законов
elseif ($did == 210) {
noop $sh_graph($did(sh_dial, 211).seltext).libpath
}
;Количество принятых либеральных законов
elseif ($did == 211) {
noop $sh_policies($did(sh_dial, $did).seltext).libnum
}
;Фашистских законов
elseif ($did == 212) {
noop $sh_graph($did(sh_dial, 213).seltext).fascpath
}
;Количество принятых фашистских законов
elseif ($did == 213) {
noop $sh_policies($did(sh_dial, $did).seltext).fascnum
}
;Проваленных голосований
elseif ($did == 214) {
noop $sh_graph().failedvotes
}
;Счётчик проваленных голосований
elseif ($did == 215) {
$sh_vote($did(sh_dial, $did).seltext).failsnum
}
;Принять следующий закон
elseif ($did == 216) {
noop $sh_policies().fill
did -c sh_dial 402,403,404 0
var %leg $gettok(%sh_deck, 1, 32)
if (%leg == f) || (%leg == l) {
did -u sh_dial 521
$sh_policies(%leg).enact
msg %sh_channel $align_r($sh_graph(99, $numtok(%sh_deck, 32), $numtok(%sh_deck_discard, 32)).deck $+ $str($chr(160), 2), %sh_graph_len, $chr(160))
}
}
;Мини-шкалы
elseif ($did == 217) {
$sh_graph($sh_policies().libnum, $sh_policies().fascnum).minipaths
}
;Избрание президента
elseif ($did == 301) {
if ($regex(%sh_exgov, /\d/) > 0) {
set %sh_exgov $remtok($disttok(%sh_exgov, 32), $sh_game().president, 1, 32)
var %cnick_cmd
var %i 1
while (%i <= $numtok(%sh_exgov, 32)) {
%cnick_cmd = $addtok(%cnick_cmd, $sh_player($gettok(%sh_exgov, %i, 32)) -, 32)
inc %i
}
}
msgopt %sh_channel $sh_music(pres).play $iif($len(%cnick_cmd) > 0, $colornick(%cnick_cmd)) $colornick($sh_player($sh_game().president) 28)
msgopt %sh_channel 28,28.0,0....................... $+ $align_c(Н О В Ы Й, 37, ., 00, 28) $+ 0,0.......................28,28.
msgopt %sh_channel 28,28.0,0.......................28,28.0,0.5П0.28,28.0,0.5Р0.28,28.0,0.5Е0.28,28.0,0.5З0.28,28.0,0.5И0.28,28.0,0.5Д0.28,28.0,0.5Е0.28,28.0,0.5Н0.28,28.0,0.5Т0.28,28.0,0.......................28,28.
msgopt %sh_channel 28,28.0,0....................... $+ $align_c($sh_player($sh_game().president), 37, ., 00, 28) $+ 0,0.......................28,28.
unset %sh_exgov
}
;Выбор президента
elseif ($did == 302) {
noop $sh_game($did(sh_dial, $did).sel).president
}
;Список игроков
elseif ($did == 304) {
$sh_graph(1).list
}
;Выборы канцлера
elseif ($did == 305) || ($did == 307) {
if ($did == 307) { msg %sh_channel $sh_music(nom).play }
else { msg %sh_channel $colornick($sh_player($sh_game().chancellor) 29) }
msgopt %sh_channel 28,28....................... $+ $align_c($iif($did == 307, Н О М И Н А Ц И Я, Н О В Ы Й), 37, ., 28, 00) $+ 28,28.......................
msgopt %sh_channel 28,28.......................00,00.....28,28.00К28.00,00.28,28.00А28.00,00.28,28.00Н28.00,00.28,28.00Ц28.00,00.28,28.00Л28.00,00.28,28.00Е28.00,00.28,28.00Р28.00,00.....28,28.......................
msgopt %sh_channel 28,28....................... $+ $align_c($sh_player($sh_game().chancellor), 37, ., 28, 00) $+ 28,28.......................
}
;Проверка канцлера на Гитлера
elseif ($did == 308) {
if ($sh_player($sh_game().chancellor).role < 3) {
msg %sh_channel $sh_music(elnh).play
msgopt %sh_channel $align_c($sh_player($sh_game().chancellor) — не Гитлер!, %sh_graph_len, ., 01, 77)
}
else {
msgopt %sh_channel $align_c($sh_player($sh_game().chancellor) — Гитлер!, %sh_graph_len, ., 00, 52)
noop $sh_inter(0).mode
}
}
;Начало голосования
elseif ($did == 311) {
unset %sh_voted
var %duration 30
var %timer 0
var %p 1
while (%p <= $numtok($sh_game().players, 32)) {
$sh_player(%p, 1).vote
inc %p
}
if ($sh_vote().info == 1) {
$sh_vote(0).info
msg %sh_channel ВСЕ игроки должны в течение %duration секунд проголосовать в приват 28 за или $align_c(против, 8, ., 00, 28) $+ $chr(3) предложенной президентом кандидатуры канцлера.
.timerinfo1 1 $calc(%timer + 5) msgopt %sh_channel Команды: 28 за / да / ja 00,28 против / нет / nein
%timer = $timer(info1).secs
.timerinfo2 1 $calc(%timer + 5) msgopt %sh_channel Молчание в нашей игре — знак согласия.
%timer = $calc($timer(info2).secs + 5)
}
;.timervotestart1 1 %timer msgopt %sh_channel $+($chr(160), $align_c(Голосование началось, $calc(%sh_graph_len - 2), ., 00, 28), $chr(3), $chr(160))
.timervotestart1 1 %timer $!sh_timer(Голосование за кандидатуру канцлера, vote, 1, 30 20 10, Голосование завершено)
.timervotestart2 1 %timer $!sh_vote(1).state
%timer = $timer(votestart1).secs
if ($sh_vote().failsnum == 2) {
var %fails_text Если в этот раз голосование провалится, страна погрузится в 52хаос.
;.timervotefail 1 $calc(%timer + 2) msgopt %sh_channel 28,28.0,0. $+ $align_l(%fails_text, $calc(%sh_graph_len - 4), ., 28, 00) $+ 0,0.28,28.
.timervotefail 1 $calc(%timer + 2) msg %sh_channel %fails_text
}
if ($sh_policies().fascnum >= 3) {
var %fasc_text Избрание Гитлера канцлером приведёт к 40победе фашистов.
;.timervoteHitler 1 $calc(%timer + 4) msgopt %sh_channel 28,28.0,0. $+ $align_l(%fasc_text, $calc(%sh_graph_len - 4), ., 28, 00) $+ 0,0.28,28.
.timervoteHitler 1 $calc(%timer + 4) msg %sh_channel %fasc_text
}
;.timervote10left 1 $calc(%timer + %duration - 10) msgopt %sh_channel 28,28.0,0. $+ $align_c(Осталось 10 секунд!, $calc(%sh_graph_len - 4), ., 52, 00) $+ 0,0.28,28.
;.timervoteend 1 $calc(%timer + %duration) did -u sh_dial 309
;.timervoteend1 1 $calc(%timer + %duration) msgopt %sh_channel $+($chr(160), $align_c(Голосование завершено, $calc(%sh_graph_len - 2), ., 00, 28), $chr(3), $chr(160))
.timervoteend2 1 $calc(%timer + %duration) $!sh_vote(0).state
var %president $sh_player($sh_game().president)
var %chancellor $sh_player($sh_game().chancellor)
var %players $sh_game(1).players
var %p 1
while (%p <= $numtok(%players, 32)) {
var %num $gettok(%players, %p, 32)
var %nick $sh_player(%num)
if (%num == $sh_game().president) {
.timervotenotify $+ %num 1 %timer msg %nick 0,88☐ Вы номинировали $+(, %chancellor, ) канцлером. Проголосуйте: 32за или 40против.
}
elseif (%num == $sh_game().chancellor) {
.timervotenotify $+ %num 1 %timer msg %nick 0,88☐ Президент $+(, %president, ) номинировал вас канцлером. Проголосуйте: 32за или 40против.
}
else {
.timervotenotify $+ %num 1 %timer msg %nick 0,88☐ Президент $+(, %president, ) номинировал $+(, %chancellor, ) канцлером. Проголосуйте: 32за или 40против.
}
inc %p
}
}
;Результаты голосования
elseif ($did == 312) {
msgopt %sh_channel $+ $align_c(Результаты голосования, $calc(%sh_graph_len - 2), ., 00, 28) $+
msgopt %sh_channel 28,28.0,0...................................................................................28,28.
var %players $sh_game(1).players
var %votes
var %patterns 3+4+3|3+3+3|4+4|4+3|3+3|3+2|4|3|2|1
var %pattern $gettok(%patterns, $+(-, $numtok(%players, 32)), 124)
;if ($numtok(%players, 32) > 4) {
; var %lines $+($gettok(%players, 1- $+ $ceil($calc($numtok(%players, 32) / 2)), 32), |, $deltok(%players, 1- $+ $ceil($calc($numtok(%players, 32) / 2)), 32))
;}
;else {
; var %lines %players
;}
var %el_len 17
var %i 1
while (%i <= $numtok(%pattern, 43)) {
var %elements_num $gettok(%pattern, %i, 43)
var %el_begin $iif(%i > 1, $calc($gettok(%pattern, $+($max(1, $calc(%i - 2)), -, $calc(%i - 1)), 43) + 1), 1)
var %el_end $calc(%el_begin + %elements_num)
var %elements $gettok(%players, $+(%el_begin, -, %el_end), 32)
;var %interval $calc(((%sh_graph_len - 8) - ($numtok(%elements, 32) * %el_len)) / ($numtok(%elements, 32) - 1))
var %interval 3
var %votes1
var %nicks
var %v 1
while (%v <= %elements_num) {
var %number $gettok(%elements, %v, 32)
var %vote $sh_player(%number).vote
%votes = $instok(%votes, %vote, 0, 32)
var %vote_graph $align_c($iif(%vote == 1, Ja!, Nein!), %el_len, ., $iif(%vote == 1, 28, 00), $iif(%vote == 1, 00, 28))
var %nick $sh_player(%number)
if (%vote == 1) {
var %len_left $int($calc((%el_len - $len(%nick)) / 2))
var %len_right $calc(%el_len - %len_left - $len(%nick))
var %nick_graph 5,0 $+ $str($chr(160), %len_left) $+ %nick $+ $str($chr(160), %len_right) $+
}
else {
var %nick_graph $align_c(%nick, %el_len, ., 28, 00)
}
%votes1 = $instok(%votes1, %vote_graph, 0, 59)
%nicks = $instok(%nicks, %nick_graph, 0, 59)
inc %v
}
%interval = 0,0 $+ $str(., %interval)
msgopt %sh_channel 28,28. $+ $align_c($replace(%nicks, $chr(59), %interval), $calc(%sh_graph_len - 2), ., 28, 00) $+ 28,28.
msgopt %sh_channel 28,28. $+ $align_c($replace(%votes1, $chr(59), %interval), $calc(%sh_graph_len - 2), ., 28, 00) $+ 28,28.
msgopt %sh_channel 28,28.0,0...................................................................................28,28.
inc %i
}
var %result $iif($findtok(%votes, 1, 0, 32) > $calc($numtok(%players, 32) / 2), $true, $false)
var %delay 2.5
if (%result) {
var %str 28,28............20▒40,20▒20......32▒20,32▒32......44▒32,44▒44...0Решение принято!44....32▒44,32▒32......20▒32,20▒20......40▒20,28▒28............
var %sound elwin
}
else {
var %str 28,28............40▒28,40▒40......4▒40,4▒4......64▒4,64▒64..1Решение не принято!64..4▒64,4▒4......40▒4,40▒40......28▒40,28▒28............
noop $sh_vote($calc($sh_vote().failsnum + 1)).failsnum
var %sound $+(elfail, $sh_vote().failsnum)
set %sh_exgov $addtok(%sh_exgov, $sh_game().president, 32)
noop $sh_game($sh_game().nextpresident).president
noop $sh_game(0).chancellor
if ($sh_vote().failsnum == 3) { noop $sh_vote(0).blocked }
}
var %sound $sh_music(%sound).sound
var %chancellor_color 37
.timerresult1 -d 1 %delay msgopt %sh_channel %str
.timerresult2 1 %delay msg %sh_channel %sound $iif(%result, $+($colorcode(0,99), cnick) $sh_player($sh_game().chancellor) %chancellor_color)
.timerresult3 1 %delay playsound %sound
if (%result) {
.timerresult4 1 %delay nick_col 1 $+($colorcode(0,99), cnick) $sh_player($sh_game().chancellor) %chancellor_color
}
}
;Законодательная сессия: законы
elseif ($did == 401) {
if ($regex($sh_policies().tiles, /([lf])/g) == 3) {
did -c sh_dial 402,403,404 0
}
else {
noop $sh_policies().fill
}
}
;Законодательная сессия: начало
elseif ($did == 405) {
noop $sh_leg().begin
}
;Законодательная сессия: выдача законов президенту
elseif ($did == 406) {
noop $sh_leg($sh_policies().tiles).step1
}
;Законодательная сессия: результат
elseif ($did == 407) {
var %leg $remove($sh_policies().tiles, $chr(32), $chr(45))
if (%leg == l) || (%leg == f) {
$sh_policies($findtok($sh_policies().tiles, %leg, 32)).enact
mode %sh_channel $+(+, $str(v, $numtok($sh_game(1).nicks, 32))) $sh_game(1).nicks
if (%leg == f) {
did $iif($sh_policies().fascnum >= 2, -c, -u) sh_dial 521
}
if ($did(sh_dial, 521).state == 0) { sh_rotate }
}
}
;Исполнительное действие: проверка партии игрока
elseif ($did == 501) {
;msg %sh_channel 64,64........76▒64,76▒76........0▒76,0▒ $+ $align_snd_c($sh_music(exac, 00, 00).play, 45, ., 00, 00) $+ 76▒0,76▒76........64▒76,64▒64........
;msg %sh_channel 64,64........76▒64,76▒76........0▒76,0▒0......76░0,76▒76...1Проверка партии игрока76....0▒76,0▒0......76▒0,76▒76........64▒76,64▒64........
;msg %sh_channel 64,64........76▒64,76▒76........0▒76,0▒0.............................................76▒0,76▒76........64▒76,64▒64........
noop $sh_graph(Проверка партии игрока, $iif($sh_policies().fascnum isnum 1-2, $sh_policies().fascnum, 1)).exac
did -c sh_dial 523
}
;Проверка партии игрока
elseif ($did == 503) {
var %inv_did 502
var %sel $did(sh_dial, %inv_did).sel
if (%sel isnum 1-10) {
msg $sh_player($sh_game().president) Игрок $+(, $sh_player(%sel), ) состоит в партии $iif($sh_player(%sel).role == 1, 59либералов, 40фашистов) $+ .
msg %sh_channel $colorcode(91) $+ Президент получил информацию об интересовавшем его игроке. $sh_music(inv).play
did -c sh_dial %inv_did 0
set %sh_exac_investigated $addtok(%sh_exac_investigated, %sel, 32)
if ($did(sh_dial, 521).state == 1) {
sh_rotate
did -u sh_dial 521
}
}
}
;Исполнительное действие: экстренные выборы президента
elseif ($did == 504) {
;msg %sh_channel 4,4........64▒4,64▒64........76▒64,76▒ $+ $align_snd_c($sh_music(exac, 76, 76).play, 45, ., 76, 76) $+ 64▒76,64▒64........4▒64,4▒4........
;msg %sh_channel 4,4........64▒4,64▒64........76▒64,76▒76......64▒76,64▒64......1Экстренные выборы64......76▒64,76▒76......64▒76,64▒64........4▒64,4▒4........
;msg %sh_channel 4,4........64▒4,64▒64........76▒64,76▒76.............................................64▒76,64▒64........4▒64,4▒4........
noop $sh_graph(Экстренные выборы, 3).exac
did -u sh_dial 523
}
;Экстренные выборы президента
elseif ($did == 506) {
var %new_president_did 505
var %new_president $did(sh_dial, %new_president_did).sel
if (%new_president isnum 1-10) {
if ($did(sh_dial, 521).state == 1) {
noop $sh_vote(0).blocked
noop $sh_player($sh_game().president, $iif($numtok($sh_game(1).players, 32) > 5, 1)).blocked
noop $sh_player($sh_game().chancellor, 1).blocked
set %sh_exgov $addtok(%sh_exgov, $sh_game().president, 32)
set %sh_exgov $addtok(%sh_exgov, $sh_game().chancellor, 32)
noop $sh_game(0).chancellor
did -u sh_dial 521
}
did -c sh_dial 302 %new_president
did -c sh_dial %new_president_did 0
did -c sh_dial 306 0
if ($regex(%sh_exgov, /\d/) > 0) {
set %sh_exgov $remtok($disttok(%sh_exgov, 32), $sh_game().president, 1, 32)
var %cnick_cmd
var %i 1
while (%i <= $numtok(%sh_exgov, 32)) {
%cnick_cmd = $addtok(%cnick_cmd, $sh_player($gettok(%sh_exgov, %i, 32)) -, 32)
inc %i
}
}
msg %sh_channel $sh_music(spel).play $iif($len(%cnick_cmd) > 0, $colornick(%cnick_cmd)) $colornick($sh_player($sh_game().president) 28)
msgopt %sh_channel 65,65.0,0....................... $+ $align_c(Н О В Ы Й, 37, ., 01, 65) $+ 0,0.......................65,65.
msgopt %sh_channel 65,65.0,0.......................65,65.0,0.01П0.65,65.0,0.01Р0.65,65.0,0.01Е0.65,65.0,0.01З0.65,65.0,0.01И0.65,65.0,0.01Д0.65,65.0,0.01Е0.65,65.0,0.01Н0.65,65.0,0.01Т0.65,65. $+ 0,0.......................65,65.
msgopt %sh_channel 65,65.0,0....................... $+ $align_c($sh_player($sh_game().president), 37, ., 01, 65) $+ 0,0.......................65,65.
unset %sh_exgov
}
}
;Исполнительное действие: убийство игрока
elseif ($did == 507) {
noop $sh_graph(Убийство игрока, $iif($sh_policies().fascnum isnum 4-5, $calc($sh_policies().fascnum + 1), 4)).exac
did -u sh_dial 523
}
;Убийство игрока // Проверка жертвы убийства на Гитлера
elseif ($did == 509) || ($did == 510) {
var %victim_did 508
var %victim $did(sh_dial, %victim_did).sel
if (%victim isnum 1-10) {
if ($did == 509) {
msg %sh_channel $sh_music(exec).play
var %delay 2856
.timerexecution1 -md 1 %delay did -u sh_dial $+($calc(100 + 5 * %victim), $calc(100 + 5 * %victim + 4))
.timerexecution2 -m 1 %delay mode %sh_channel -v $sh_player(%victim)
.timerexecution3 -m 1 %delay msg %sh_channel $+($colorcode(0,99), cnick) $sh_player(%victim) 94
.timerexecution4 -m 1 %delay nick_col 1 $+($colorcode(0,99), cnick) $sh_player(%victim) 94
.timerexecution5 -m 1 %delay msgopt %sh_channel 52,52....................... $+ $align_c(И Г Р О К, 37, ., 52, 00) $+ 52,52.......................
.timerexecution6 -m 1 %delay msgopt %sh_channel 52,52.......................00,00...........52,52.0У52.00,00.52,52.0Б52.00,00.52,52.0И52.00,00.52,52.0Т52.00,00...........52,52.......................
.timerexecution7 -m 1 %delay msgopt %sh_channel 52,52....................... $+ $align_c($sh_player(%victim), 37, ., 52, 00) $+ 52,52.......................
if ($did(sh_dial, 521).state == 1) {
.timerexecution8 -md 1 %delay sh_rotate
.timerexecution9 -m 1 %delay did -u sh_dial 521
}
}
else {
if ($sh_player(%victim).role < 3) {
msg %sh_channel $sh_music(execnh).play
msgopt %sh_channel $align_c($sh_player(%victim) — не Гитлер!, %sh_graph_len, ., 01, 77)
}
else {
msgopt %sh_channel $align_c($sh_player(%victim) — Гитлер!, %sh_graph_len, ., 00, 52)
noop $sh_inter(0).mode
}
did -c sh_dial %victim_did 0
}
}
}
;Круг игроков (без блока)
elseif ($did == 520) {
$sh_graph(2).list
}
;Ротация
elseif ($did == 522) {
sh_rotate
did -u sh_dial 521
}
;Интро
elseif ($did == 601) {
.timerpreshow* off
mode %sh_channel +m
msg %sh_channel $align_snd_r($sendsnd(sh_intro16.mp3, 88, 88), %sh_graph_len, ., 88, 88)
msg %sh_channel 88,88.98Конец Первой мировой войны.88,88.........................................................
msg %sh_channel 88,88.....................................................................................
.timerintro1 -md 1 2000 msg %sh_channel 88,88.98Германия вынуждена подписать Версальский мирный договор,88............................
.timerintro2 -md 1 5000 msg %sh_channel 88,88.98означающий суровые экономические и территориальные потери.88..........................
.timerintro3 -md 1 8000 msg %sh_channel 88,88.98Страна лишилась иллюзий: города захлестнули беспорядки и забастовки рабочих.88........
.timerintro4 -md 1 11000 msg %sh_channel 88,88.98Бедствующий и униженный народ находит поддержку в националистических речах Гитлера,88.
.timerintro5 -md 1 14000 msg %sh_channel 88,88.98использующего тезисы, основанные на людских страхах,88................................
.timerintro6 -md 1 16000 msg %sh_channel 88,88......................................................98злобе88..........................
.timerintro7 -md 1 18000 msg %sh_channel 88,88............................................................98и слепом фанатизме,88......
.timerintro8 -md 1 20000 msg %sh_channel 88,88.98призывающего взять реванш за прошлые унижения88.......................................
.timerintro9 -md 1 23000 msg %sh_channel 88,88.98и завоевать жизненное пространство для великого рейха.88..............................
.timerintro10 -md 1 25000 msg %sh_channel 88,88.98И этот шанс для него —88..............................................................
.timerintro11 -md 1 27000 msg %sh_channel 88,88.....................................98последний.88......................................
.timerintro12 -md 1 29000 msg %sh_channel Сыграем?
.timerintro13 -md 1 30000 $!sh_masq_graph(1).logo
}
;Правила
elseif ($did == 602) {
msg %sh_channel Вы уже знаете, кем вы являетесь в сегодняшней игре. Вам осталось только понять, кем являются другие игроки.
.timergamerules1 1 5 msg %sh_channel Четверо из вас — 59либералы, двое — 40фашисты. и один — 52Гитлер. При этом только 40фашистам уже точно известны роли других игроков.
.timergamerules2 1 10 msg %sh_channel Задача 59либералов — принять пять либеральных законов,
.timergamerules3 1 20 msg %sh_channel либо убить Гитлера в определённый момент игры.
.timergamerules4 1 26 msg %sh_channel Задача 40фашистов — принять шесть фашистских законов,
.timergamerules5 1 36 msg %sh_channel либо избрать Гитлера канцлером после принятия третьего фашистского закона.
.timergamerules6 1 42 msg %sh_channel Пара слов о призовом фонде. На данный момент на канале собралось $calc($nick(%sh_channel, 0) - 2) человек, не считая меня и GameShowsRu.
.timergamerules7 1 48 msg %sh_channel Каждый активный зритель (будь то игрок, или участник интерактива) добавляет в призовой фонд 20 ₽.
.timergamerules8 1 54 msg %sh_channel Вдобавок к этому, комментарии, оставленные к прошлой игре, пополняют призовой фонд ещё на 150 ₽.
.timergamerules9 1 60 msg %sh_channel Таким образом, можно предположить, что призовой фонд сегодня составит 1,68 $calc((($nick(%sh_channel, 0) - 2) * 20) + 150) ₽ . Однако помните, что это ещё не окончательная цифра.
.timergamerules10 1 66 msg %sh_channel В конце игры игроки победившей команды поделят между собой 65% призового фонда, а зрители — 35%.
.timergamerules11 1 72 msg %sh_channel Игроки проигравшей команды уйдут с ни с чем.
.timergamerules12 1 78 msg %sh_channel Несмотря на то, что либералов больше — их выигрыш будет таким же, как и у фашистов. Мы добавим недостающую часть поверх всего призового фонда.
.timergamerules13 1 84 msg %sh_channel Теперь поговорим об интерактиве: зрителям предстоит делить свою половину призового фонда, соревнуясь между собой.
.timergamerules14 1 90 msg %sh_channel Как и прежде, интерактив состоит из основного и бонусного этапов.
.timergamerules15 1 96 msg %sh_channel В основном этапе вам предстоит определить трёх фашистов (включая Гитлера) из семи игроков.
.timergamerules16 1 102 msg %sh_channel Каждый верно угаданный фашист позволяет участнику интерактива претендовать на большее количество долей — в соответствии с нашей новой формулой.
.timergamerules17 1 108 msg %sh_channel Основной этап интерактива завершится после того, как будет принят четвёртый фашистский закон — я отдельно объявлю об этом, и дам вам время, чтобы зафиксировать финальный ответ.
.timergamerules18 1 114 msg %sh_channel В конце игры мы разделим выигрыши интерактива пропорционально полученным долям. Чем больше долей — тем больше выигрыш.
.timergamerules19 1 120 msg %sh_channel Те зрители, которые ранее регистрировались на игру, прямо сейчас получат полную версию правил интерактива в приват.