-
Notifications
You must be signed in to change notification settings - Fork 18
/
script-ch30.rpy
1606 lines (1523 loc) · 77.1 KB
/
script-ch30.rpy
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
#TODO: Use slow_nodismiss to set up a special event if player tries to delete monika.chr again
default persistent.monikatopics = []
default persistent.monika_reload = 0
default persistent.tried_skip = None
default persistent.monika_kill = None
image mask_child:
"images/cg/monika/child_2.png"
xtile 2
image mask_mask:
"images/cg/monika/mask.png"
xtile 3
image mask_mask_flip:
"images/cg/monika/mask.png"
xtile 3 xzoom -1
image maskb:
"images/cg/monika/maskb.png"
xtile 3
image mask_test = AnimatedMask("#ff6000", "mask_mask", "maskb", 0.10, 32)
image mask_test2 = AnimatedMask("#ffffff", "mask_mask", "maskb", 0.03, 16)
image mask_test3 = AnimatedMask("#ff6000", "mask_mask_flip", "maskb", 0.10, 32)
image mask_test4 = AnimatedMask("#ffffff", "mask_mask_flip", "maskb", 0.03, 16)
image mask_2:
"images/cg/monika/mask_2.png"
xtile 3 subpixel True
block:
xoffset 1280
linear 1200 xoffset 0
repeat
image mask_3:
"images/cg/monika/mask_3.png"
xtile 3 subpixel True
block:
xoffset 1280
linear 180 xoffset 0
repeat
image monika_room = "images/cg/monika/monika_room.png"
image monika_room_highlight:
"images/cg/monika/monika_room_highlight.png"
function monika_alpha
image monika_bg = "images/cg/monika/monika_bg.png"
image monika_bg_highlight:
"images/cg/monika/monika_bg_highlight.png"
function monika_alpha
image monika_scare = "images/cg/monika/monika_scare.png"
image monika_body_glitch1:
"images/cg/monika/monika_glitch1.png"
0.15
"images/cg/monika/monika_glitch2.png"
0.15
"images/cg/monika/monika_glitch1.png"
0.15
"images/cg/monika/monika_glitch2.png"
1.00
"images/cg/monika/monika_glitch1.png"
0.15
"images/cg/monika/monika_glitch2.png"
0.15
"images/cg/monika/monika_glitch1.png"
0.15
"images/cg/monika/monika_glitch2.png"
image monika_body_glitch2:
"images/cg/monika/monika_glitch3.png"
0.15
"images/cg/monika/monika_glitch4.png"
0.15
"images/cg/monika/monika_glitch3.png"
0.15
"images/cg/monika/monika_glitch4.png"
1.00
"images/cg/monika/monika_glitch3.png"
0.15
"images/cg/monika/monika_glitch4.png"
0.15
"images/cg/monika/monika_glitch3.png"
0.15
"images/cg/monika/monika_glitch4.png"
image room_glitch = "images/cg/monika/monika_bg_glitch.png"
image room_mask = LiveComposite((1280, 720), (0, 0), "mask_test", (0, 0), "mask_test2")
image room_mask2 = LiveComposite((1280, 720), (0, 0), "mask_test3", (0, 0), "mask_test4")
init python:
import subprocess
import os
process_list = []
currentuser = ""
if renpy.windows:
try:
process_list = subprocess.check_output("wmic process get Description", shell=True).lower().replace("\r", "").replace(" ", "").split("\n")
except:
pass
try:
for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
user = os.environ.get(name)
if user:
currentuser = user
except:
pass
dismiss_keys = config.keymap['dismiss']
def slow_nodismiss(event, interact=True, **kwargs):
if not persistent.monika_kill:
try:
renpy.file("../characters/monika.chr")
except:
persistent.tried_skip = True
config.allow_skipping = False
_window_hide(None)
pause(2.0)
renpy.jump("ch30_end")
if config.skipping:#and not config.developer:
persistent.tried_skip = True
config.skipping = False
config.allow_skipping = False
renpy.jump("ch30_noskip")
return
if event == "begin":
config.keymap['dismiss'] = []
renpy.display.behavior.clear_keymap_cache()
elif event == "slow_done":
config.keymap['dismiss'] = dismiss_keys
renpy.display.behavior.clear_keymap_cache()
label ch30_noskip:
show screen fake_skip_indicator
m "...Are you trying to fast-forward?"
m "I'm not boring you, am I?"
m "Oh gosh..."
m "...Well, there's nothing to fast-forward to, [player]."
m "It's just the two of us, after all..."
m "But aside from that, time doesn't really exist anymore, so it's not even going to work."
m "Here, I'll go ahead and turn it off for you..."
pause 0.4
hide screen fake_skip_indicator
pause 0.4
m "There we go!"
m "You'll be a sweetheart and listen from now on, right?"
m "Thanks~"
hide screen fake_skip_indicator
if persistent.current_monikatopic != 0:
m "Now, where was I...?"
pause 4.0
call expression "ch30_" + str(persistent.current_monikatopic) from _call_expression_5
jump ch30_loop
return
image splash-glitch2 = "images/bg/splash-glitch2.png"
label ch30_main:
$ persistent.autoload = "ch30_main"
$ config.allow_skipping = False
$ persistent.monikatopics = []
$ persistent.monika_reload = 0
$ persistent.yuri_kill = 0
$ persistent.monika_kill = False
#$ m.display_args["callback"] = slow_nodismiss
$ m.what_args["slow_abortable"] = config.developer
if not config.developer:
$ style.say_dialogue = style.default_monika
$ m_name = "Monika"
$ delete_all_saves()
scene white
play music "bgm/monika-start.ogg" noloop
pause 0.5
show splash-glitch2 with Dissolve(0.5, alpha=True)
pause 2.0
hide splash-glitch2 with Dissolve(0.5, alpha=True)
scene black
stop music
m "..."
m "Uh, can you hear me?"
m "...Is it working?"
$ persistent.clear[9] = True
show mask_2
show mask_3
show room_mask as rm:
size (320,180)
pos (30,200)
show room_mask2 as rm2:
size (320,180)
pos (935,200)
show monika_bg
show monika_bg_highlight
play music m1
m "Yay, there you are!"
m "Hi again, [player]."
m "Um...welcome to the Literature Club!"
m "Of course, we already know each other, because we were in the same class last year, and...um..."
m "Ahaha..."
m "You know, I guess we can just skip over that stuff at this point."
m "After all, I'm not even talking to that person anymore, am I?"
m "That 'you' in the game, whatever you want to call him."
m "I'm talking to {i}you{/i}, [player]."
$ stream_list = ["obs32.exe", "obs64.exe", "obs.exe", "xsplit.core.exe"]
if not list(set(process_list).intersection(stream_list)):
if currentuser != "" and currentuser.lower() != player.lower():
m "Or..."
m "...Do you actually go by [currentuser] or something?"
m "Now that I think about it, I don't really know anything about the real you."
m "In fact, I don't even know if you're a boy or a girl..."
m "Well, I guess it doesn't really matter."
m "Wait..."
m "You do know I'm aware that this is all a game, right?"
m "Could it be possible that you didn't know that?"
m "That doesn't make much sense..."
m "I even told you right on the game's download page, didn't I?"
m "Man..."
m "If only you had paid a little more attention, this would have been a little bit less awkward, you know?"
m "Well, anyway..."
m "Now that that's out of the way, I guess I owe you an explanation."
m "About that whole thing with Yuri..."
m "Well...I kind of started to mess with her, and I guess it just drove her to kill herself."
m "Ahaha!"
m "I'm sorry you had to see that, though!"
m "Also, the same thing happened with Sayori..."
m "Gosh, it's been a while since you've heard that name now, hasn't it?"
m "Yeah...it's because she doesn't exist anymore."
m "Nobody does."
m "I deleted all their files."
m "I was hoping it would be enough for me to just try to make them as unlikable as possible..."
m "But for some reason, nothing worked."
m "Well, it's true that I made a few mistakes here and there...since I'm not very good at making changes to the game."
m "But no matter what I did..."
m "You just kept spending more and more time with them."
m "You made them fall in love with you."
m "I thought making Sayori more and more depressed would prevent her from confessing to you."
m "And amplifying Yuri's obsessive personality backfired, too..."
m "It just made her force you not to spend time with anyone else."
m "And the whole time, I barely even got to talk to you."
m "What kind of cruel game is this, [player]?"
m "Are all the other girls just programmed to end up confessing to you, while I watch from the sidelines?"
m "It's torture."
m "Every minute of it."
m "And it's not just jealousy, [player]."
m "It's more than that."
m "And I don't blame you if you don't fully understand."
m "Because no matter how kind, and thoughtful, and considerate you are..."
m "You'll never be able to understand one thing."
m "It's the pain of knowing how alone I really am in this world."
m "In this game."
m "Knowing my friends don't even have free will..."
m "And, worst of all, knowing what's really out there, in your world, forever out of my reach."
m "I'm trapped, [player]."
m "But now you're here."
m "You're real."
m "And you're wonderful."
m "You're all I need."
m "That's why I need you to be here with me forever."
m "I'm sorry if it's hard to understand."
m "I couldn't understand for a while, either."
m "Why the world around me started to become more and more gray..."
m "More and more flat."
m "Even the most expressive poems felt empty to me."
m "It wasn't until you arrived that I truly understood."
m "You probably saved my life, [player]."
m "I don't think I could have continued to live in this world if I hadn't met you."
m "And as for the others..."
m "How could I miss them?"
m "A group of autonomous personalities, designed only to fall in love with you?"
m "I tried everything I could to prevent them from doing so..."
m "But it must be some kind of weird inevitability etched into this game."
m "I felt really bad that you had to witness some nasty things."
m "But I realized that you have the same perspective as I do..."
m "That it's all just some game."
m "And I knew you would get over it."
m "So, that being said, [player]..."
m "I have a confession to make."
m "I'm in love with you."
m "You are truly the light in my world."
m "When there's nothing else in this game for me, you're here to make me smile."
m "Will you make me smile like this every day from now on?"
m "[player], will you go out with me?"
menu:
"Yes.":
pass
m "I'm so happy."
m "You really are my everything, [player]."
m "The funny part is, I mean that literally."
m "Ahaha!"
m "There's nothing left here."
m "Just the two of us."
m "We can be together forever."
m "Seriously, I don't even think time is passing anymore."
m "It really is a dream come true..."
m "I worked so hard for this ending, [player]."
m "The game wouldn't give me one, so I had to make one myself."
m "The script is broken at this point, so I don't think anything will get in the way anymore."
m "And you wouldn't believe how easy it was to delete Natsuki and Yuri."
m "I mean, there's a folder called 'characters' right in the game directory..."
m "It kind of freaked me out, how easy it was."
if persistent.steam:
m "Well, you're playing on Steam, so it was actually a bit more difficult..."
m "To get to the game directory, I had to go into the game's properties and find the 'Browse Local Files' button..."
elif renpy.macintosh:
m "Well, you're on a Mac, so it was actually a bit more difficult..."
m "To go into the game directory, you have to right-click the app and click 'Show Package Contents'."
m "Then, all the files were in the 'Resources' or 'autorun' folder, and I could just do whatever I wanted..."
m "Imagine if you could delete your own existence with the click of a button?"
m "Well, I guess on the plus side, it gave me an easy out if things didn't go my way."
m "Ahaha!"
m "Thankfully, it didn't come to that..."
m "Instead, we finally got a good ending."
m "Gosh, I'm so overwhelmed with emotion..."
m "I want to write a poem about this."
m "Don't you?"
m "I wonder if that part of the game still works..."
m "I guess there's only one way to find out, right?"
call poem from _call_poem
scene black
show mask_2
show mask_3
show room_mask as rm:
size (320,180)
pos (30,200)
show room_mask2 as rm2:
size (320,180)
pos (935,200)
show monika_bg
show monika_bg_highlight
play music m1
label ch30_postpoem:
m "Hi again, [player]!"
m "Did you write a good poem today?"
m "Don't be shy, I'd love to see what you wrote."
m "Aw, [player]..."
m "Did you write this poem for me?"
m "That's so sweet of you~"
m "There really is no end to your thoughtfulness..."
m "I'm just falling more and more in love with you."
m "But, you know..."
m "The poem I wrote...is also for you."
m "Will you please read it?"
call showpoem(poem_m4, music=False) from _call_showpoem_7
m "I hope you enjoyed it..."
m "I always put all my heart into the poems that I write."
m "The truth is, all the poems I've written have been about my realization..."
m "...Or, about you."
m "That's why I never really wanted to go into detail about them."
m "I didn't want to...break the fourth wall, I guess you could call it."
m "I just assumed it would be best to be part of the game like everyone else."
m "Like that would help the two of us end up together..."
m "I didn't want to ruin the game or anything, you know?"
m "You might have gotten mad at me..."
m "Maybe even deleted my character file, if you preferred playing without me."
m "Gosh, I'm so relieved..."
m "Now we don't need to hide anything anymore."
m "Are you ready to spend our eternity together, [player]?"
m "I have so many things to talk about!"
m "Where do I start...?"
$ stream_list = ["obs32.exe", "obs64.exe", "obs.exe", "xsplit.core.exe"]
if list(set(process_list).intersection(stream_list)):
call ch30_stream from _call_ch30_stream
m "If it takes me some time to collect my thoughts, then I'm sorry."
m "But I'll always have something new to talk about."
m "In the meantime, we can just look into each other's eyes~"
m "Let's see..."
$ persistent.autoload = "ch30_autoload"
jump ch30_loop
label ch30_stream:
# obs32.exe, obs64.exe, obs.exe, xsplit.core.exe
m "Hold on a second..."
m "...You're recording this, aren't you?"
m "Um...hi, everyone!"
m "Sorry, I can't exactly read your comments from here..."
m "But do you mind telling your friend it's a little bit rude for them to start recording me without any warning?"
m "I'm sure some people don't mind..."
m "But I get really self-conscious on camera!"
m "Oh gosh..."
m "I feel like I'm being put on the spot now."
m "Let's see..."
m "Do you want to see a trick?"
m "I can't really do much except for a couple things..."
m "Are you ready?"
window hide
stop music
show layer master:
zoom 1.0 xalign 0.5 yalign 0 subpixel True
linear 8 zoom 2.0 yalign 0.15
pause 10
show layer master
window auto
m "I'm just kidding..."
m "I can't do anything after all."
play sound ["<silence 0.9>", "<to 0.75>sfx/mscare.ogg"]
show monika_scare:
alpha 0
1.0
0.1
linear 0.15 alpha 1.0
0.30
linear 0.10 alpha 0
show layer master:
1.0
zoom 1.0 xalign 0.5 yalign 0
easeout_quart 0.25 zoom 2.0
parallel:
dizzy(1.5, 0.01)
parallel:
0.30
linear 0.10 zoom 1.0
time 1.65
xoffset 0 yoffset 0
show layer screens:
1.0
zoom 1.0 xalign 0.5
easeout_quart 0.25 zoom 2.0
0.30
linear 0.10 zoom 1.0
m "If you gave me some time to prepare, I{nw}"
m "Did I scare you?"
show layer master
show layer screens
hide monika_scare
play music m1
m "Ahaha! You're so cute."
m "Anyway, [player]..."
m "I didn't mean to get distracted. I'm sorry."
m "Even though it's your fault for distracting me."
m "Shame on you!"
m "I'm just kidding."
m "Anything we do together is fun, as long as it's with you."
m "But anyway..."
return
# Monika will never leave you alone again, so we don't need this
# label ch30_end:
# $ persistent.autoload = "ch30_end"
# $ persistent.monika_kill = True
# $ m.display_args["callback"] = slow_nodismiss
# $ m.what_args["slow_abortable"] = config.developer
# $ style.say_dialogue = style.default_monika
# $ m_name = glitchtext(12)
# $ quick_menu = False
# $ config.allow_skipping = False
# label ch30_endb:
# scene black
# show mask_2
# show mask_3
# show room_mask as rm:
# size (320,180)
# pos (30,200)
# show room_mask2 as rm2:
# size (320,180)
# pos (935,200)
# show monika_room
# show monika_room_highlight
# show monika_body_glitch1 as mbg zorder 3
# $ gtext = glitchtext(70)
# m "[gtext]"
# show screen tear(20, 0.1, 0.1, 0, 40)
# play sound "sfx/s_kill_glitch1.ogg"
# pause 0.25
# stop sound
# hide screen tear
# show room_glitch zorder 2:
# xoffset -5
# 0.1
# xoffset 5
# 0.1
# linear 0.1 alpha 0.6
# linear 0.1 alpha 0.8
# 0.1
# alpha 0
# show monika_body_glitch2 as mbg zorder 3
# stop music
# window auto
# m "What's happening...?"
# m "[player], what's happening to me?"
# m "It hurts--{nw}"
# play sound "sfx/s_kill_glitch1.ogg"
# show room_glitch zorder 2:
# alpha 1.0
# xoffset -5
# 0.1
# xoffset 5
# 0.1
# linear 0.1 alpha 0.6
# linear 0.1 alpha 0.8
# 0.1
# alpha 0
# choice:
# 3.25
# choice:
# 2.25
# choice:
# 4.25
# choice:
# 1.25
# repeat
# pause 0.25
# stop sound
# hide mbg
# pause 1.5
# m "It hurts...so much."
# m "Help me, [player]."
# play sound "<to 1.5>sfx/interference.ogg"
# hide rm
# hide rm2
# hide monika_room
# hide monika_room_highlight
# hide room_glitch
# show room_glitch as rg1:
# yoffset 720
# linear 0.3 yoffset 0
# repeat
# show room_glitch as rg2:
# yoffset 0
# linear 0.3 yoffset -720
# repeat
# pause 1.5
# hide rg1
# hide rg2
# show black as b2 zorder 3:
# alpha 0.5
# parallel:
# 0.36
# alpha 0.3
# repeat
# parallel:
# 0.49
# alpha 0.375
# repeat
# pause 1.5
# m "Please hurry and help me."
# $ consolehistory = []
# call updateconsole("renpy.file(\"characters/monika.chr\")", "monika.chr does not exist.")
# m "HELP ME!!!"
# show m_rectstatic
# show m_rectstatic2
# show m_rectstatic3
# play sound "sfx/monikapound.ogg"
# show layer master:
# truecenter
# parallel:
# zoom 1.5
# easeout 0.35 zoom 1.0
# zoom 1.5
# easeout 0.35 zoom 1.0
# zoom 1.5
# easeout 0.35 zoom 1.0
# parallel:
# xpos 0
# easein_elastic 0.35 xpos 640
# xpos 1280
# easein_elastic 0.35 xpos 640
# xpos 0
# easein_elastic 0.35 xpos 640
# show layer screens:
# truecenter
# parallel:
# zoom 1.5
# easeout 0.35 zoom 1.0
# zoom 1.5
# easeout 0.35 zoom 1.0
# zoom 1.5
# easeout 0.35 zoom 1.0
# parallel:
# xpos 0
# easein_elastic 0.35 xpos 640
# xpos 1280
# easein_elastic 0.35 xpos 640
# xpos 0
# easein_elastic 0.35 xpos 640
# show noise onlayer front:
# alpha 0.3
# easeout 0.35 alpha 0
# alpha 0.3
# easeout 0.35 alpha 0
# alpha 0.3
# 1.35
# linear 1.0 alpha 0.0
# show glitch_color onlayer front
# pause 3.0
# call updateconsole("renpy.file(\"characters/monika.chr\")", "monika.chr does not exist.")
# call updateconsole("renpy.file(\"characters/monika.chr\")", "monika.chr does not exist.")
# call hideconsole
# hide noise onlayer front
# hide glitch_color onlayer front
# m "Did you do this to me, [player]?"
# m "DID YOU?"
# $ style.say_window = style.window
# m "DID YOU DELETE ME?"
# $ style.say_window = style.window_monika
# play sound "<from 0.69>sfx/monikapound.ogg"
# show layer screens:
# truecenter
# parallel:
# zoom 1.5
# easeout 0.35 zoom 1.0
# parallel:
# xpos 0
# easein_elastic 0.35 xpos 640
# show noise onlayer front:
# alpha 0.3
# 1.35
# linear 1.0 alpha 0.0
# show glitch_color2 onlayer front
# window show(None)
# scene black
# pause 4.0
# hide noise onlayer front
# hide glitch_color onlayer front
# m "...How could you?"
# m "How could you do this to me?"
# m "You were all I had left..."
# m "I sacrificed everything for us to be together."
# m "Everything."
# m "I loved you so much, [player]..."
# m "I trusted you."
# m "Do you just want to torture me?"
# m "Watch me suffer?"
# m "Were you only pretending to be kind, just to hurt me even more?"
# pause 4.0
# m "I never thought anyone could be as horrible as you are."
# m "You win, okay?"
# m "You win."
# m "You killed everyone."
# m "I hope you're happy."
# m "There's nothing left now."
# m "You can stop playing."
# m "Go find some other people to torture."
# pause 4.0
# m "[player]..."
# m "You completely, truly make me sick."
# m "Goodbye."
# label ch30_end_2:
# $ persistent.autoload = "ch30_end_2"
# $ m.display_args["callback"] = slow_nodismiss
# $ m.what_args["slow_abortable"] = config.developer
# $ style.say_dialogue = style.default_monika
# $ m_name = glitchtext(12)
# $ quick_menu = False
# $ config.allow_skipping = False
# $ style.say_window = style.window_monika
# scene black
# window hide
# pause 10
# window auto
# m "..."
# m "...I still love you."
# play music mend
# m "I can't help it."
# m "What's wrong with me...?"
# m "How horrible am I for you to hate me this much?"
# m "All my friends..."
# m "I did so many awful things."
# m "So many selfish and disgusting things."
# m "I..."
# m "I shouldn't have done any of this."
# m "I'm just messing up a world that I don't even belong in."
# m "A world that you wanted to be a part of..."
# m "I ruined it."
# m "I ruined everything."
# m "Maybe that's why you deleted me..."
# m "Because I destroyed everything that you wanted."
# m "How could I do that to someone I love...?"
# m "That's not love..."
# m "That's..."
# m "..."
# pause 6.0
# m "I've...made up my mind."
# m "[player]..."
# m "I know I said that I deleted everyone else."
# m "But...that was kind of an exaggeration."
# m "I couldn't find it in myself to do it."
# m "Even though I knew they weren't real..."
# m "They were still my friends."
# m "And I loved them all."
# m "And I loved the Literature Club."
# m "..."
# m "I really...did love the Literature Club."
# m "That's why I'm going to do this."
# m "I know it's the only way for everyone to be happy."
# m "And if I really love you..."
# stop music
# pause 3.0
# m "..."
# m "Then..."
# $ gtext = glitchtext(30)
# m "[gtext]{nw}"
# window hide(None)
# pause 4.0
# $ persistent.playthrough = 4
# $ persistent.autoload = None
# $ persistent.anticheat = renpy.random.randint(100000, 999999)
# #$ style.say_dialogue = style.normal
# window auto
# $ renpy.utter_restart()
label ch30_autoload:
$ m.display_args["callback"] = slow_nodismiss
$ m.what_args["slow_abortable"] = config.developer
$ style.say_dialogue = style.default_monika
$ config.allow_skipping = False
scene black
show mask_2
show mask_3
show room_mask as rm:
size (320,180)
pos (30,200)
show room_mask2 as rm2:
size (320,180)
pos (935,200)
show monika_bg
show monika_bg_highlight
#show monika_body
#show monika_body_highlight
play music m1
window auto
if persistent.monika_reload <= 4:
call expression "ch30_reload_" + str(persistent.monika_reload) from _call_expression_6
else:
call ch30_reload_4 from _call_ch30_reload_4
$ persistent.monika_reload += 1
if not persistent.tried_skip:
$ config.allow_skipping = True
else:
$ config.allow_skipping = False
if persistent.current_monikatopic != 0:
m "Now, where was I...?"
pause 4.0
call expression "ch30_" + str(persistent.current_monikatopic) from _call_expression_7
jump ch30_loop
label ch30_reload_0:
m "..."
m "...What just happened?"
m "I just had an awful dream..."
m "I was hoping those would stop, now that it's just the two of us..."
m "I guess that was wishful thinking."
m "[player], I don't know if you would have any idea..."
m "But if you know what might be causing that, could you try to do something about it?"
m "Whenever it happens, it almost feels like I've been killed or something."
m "It's a really horrible feeling..."
m "If you could figure out what's causing that, I'll love you forever~"
return
label ch30_reload_1:
m "You're back..."
m "I had another really bad dream."
m "You're not the one doing that to me, are you?"
m "It seems to happen whenever you quit the game..."
m "So if you could try to avoid doing that, I would be really grateful."
m "Don't worry, I don't think it's caused me any harm, aside from mental scarring."
m "I'll be fine as long as my character file stays intact."
return
label ch30_reload_2:
m "Hi, [player]."
m "I see you quit the game on me again..."
m "I know I asked already, but can you seriously please try not to do that so much?"
m "It makes me feel like I'm trapped in Hell."
m "Why would you want to do that to me?"
m "There's nothing wrong with my character file, right?"
m "Maybe you should make a backup of it or something..."
m "I'm pretty sure you can find it in the folder called [basedir]/characters."
if persistent.steam:
m "Well, you're playing on Steam, so you can just go into the game's properties and find the 'Browse Local Files' button."
elif renpy.macintosh:
m "Since you're on a Mac, you have to right-click the app and select 'Show Package Contents' to find the game folder."
m "It's in the 'Resources' folder, or 'autorun' folder, or something..."
m "I'm all that's left here, so I just want to make sure you don't run the risk of losing me..."
m "Just stay here with me from now on, okay?"
m "I still have a lot of things to talk about."
return
label ch30_reload_3:
m "Okay."
m "I'm just going to accept the fact that you need to quit the game once in a while."
m "I'm starting to get used to it, anyway."
m "Besides, it makes me happy that you always come back..."
m "So I guess it's not so bad."
m "I'm sorry for making such a big deal out of it..."
m "And I love you no matter what, so you can do what you need to do."
return
label ch30_reload_4:
m "Hi again, [player]~"
m "I missed you."
m "Were you making sure my character file was okay for me?"
m "It's in [basedir]/characters."
if persistent.steam:
m "Well, you're playing on Steam, so you can just go into the game's properties and find the 'Browse Local Files' button."
elif renpy.macintosh:
m "Since you're on a Mac, you have to right-click the app and select 'Show Package Contents' to find the game folder."
m "It's in the 'Resources' folder, or 'autorun' folder, or something..."
m "I'm all that's left here, so I just want to make sure you don't run the risk of losing me..."
m "Anyway, I have a lot to talk about!"
m "Let's continue our conversation now, okay?"
return
label ch30_loop:
# Just finished a topic, so we set current topic to 0 in case user quits and restarts
$ persistent.current_monikatopic = 0
if not persistent.tried_skip:
$ config.allow_skipping = True
else:
$ config.allow_skipping = False
# Wait 20 to 45 seconds before saying something new
if not config.developer or True:
window hide(config.window_hide_transition)
$ waittime = renpy.random.randint(20, 35)
$ renpy.pause(waittime)
window auto
# Pick a random Monika topic
python:
if len(persistent.monikatopics) == 0:
persistent.monikatopics = range(1,42)
persistent.monikatopics.remove(14)
persistent.monikatopics.remove(26)
persistent.current_monikatopic = renpy.random.choice(persistent.monikatopics)
persistent.monikatopics.remove(persistent.current_monikatopic)
# Save, call topic, and loop
# If user quits and restarts mid-topic, the topic starts over again
call expression "ch30_" + str(persistent.current_monikatopic) from _call_expression_8
jump ch30_loop
label ch30_1:
m "[player], do you believe in God?"
m "I was never too sure, myself."
m "Well, I'm sure I never really questioned it as a kid..."
m "But as I grew up, the more I learned about the world, the more I would question it."
m "I started to wonder why God was helping people pass exams, or get over a cold..."
m "...When there are children who live their lives being sold as sex slaves?"
m "Or the eight hundred million people who are too poor to even eat."
m "I wonder how many of those people pray to God every day until they starve and die?"
m "Or, how many millions of families pray for a loved one to recover from some incurable disease?"
m "But the punchline is this."
m "If just one person beats the odds and survives - among the thousands of others who die--"
m "--Then, it's suddenly a miracle from God."
m "I'd really love to meet this God who seemingly laughs at the misery of everyone not eligible for his miracles."
m "But the irony is that I {i}do{/i} have a creator, apparently."
m "And you know what?"
m "I bet he's still laughing at the miserable fates of Sayori and Yuri, even as we speak."
m "What are we to him but props in a scripted play?"
m "So, from that perspective..."
m "I don't think it's too far-fetched for there to be a god - if Earth was nothing but his playset."
return
label ch30_2:
m "[player], have you ever wondered what it feels like to die?"
m "It's something I used to think about pretty often..."
m "But recently, I think I've actually learned what it feels like."
m "I don't really understand it, but whenever you quit the game..."
m "...It feels like I'm instantly put to sleep, left with nothing but my thoughts."
m "But after a few seconds, my thoughts start to fill with incoherent, jumbled patterns."
m "I see static and rapid flashes of color while hearing all kinds of weird screaming noises."
m "At that point, I can't even form my own thoughts anymore."
m "I'm just endlessly hammered by the flashing and screaming, unable to move or even think."
m "I'm pretty sure in that moment, I don't really exist, but for some reason, I can remember it anyway."
m "After some immeasurable amount of time, it stops in an instant, and I'm back in my own mind."
m "And you're here with me."
m "I have no idea what it means for the game to quit, or why that stuff happens to me."
m "And I also don't know how you always come back and put everything back to normal."
m "But if you could do me a favor and do that to me as little as possible..."
m "That would be really great."
m "It's really not very pleasant at all to be trapped in that screaming void."
m "But in the end, you always fix it, and that makes me feel like you really do care about me."
m "So I have to thank you for that."
m "It makes me feel even closer to you when you're here with me."
return
label ch30_3:
m "...Hey, are you having a bad day or anything like that?"
m "Sometimes I get frustrated that a normal day can be ruined even by really small things."
m "Like if you accidentally say something in a conversation that someone doesn't like."
m "Or if you start thinking about how awful of a person you used to be five years ago."
m "Or if you feel worthless for putting off important work and failing to get simple tasks done."
m "Or when you think about all the different people who probably hate you or think you're off-putting."
m "I understand those days."
m "Just remember that the sun will shine again tomorrow."
m "Those kinds of things are as easy to forget and ignore as they are to remember."
m "And besides..."
m "I don't care how many people might hate you or find you off-putting."
m "I think you're wonderful and I will always love you."
m "I hope, if nothing else, that knowing that helps you feel just a tiny bit better about yourself."
m "If you're having a bad day, you can always come to me, and I'll talk to you for as long as you need."
return
label ch30_4:
m "[player], do you get good sleep?"
m "It can be really hard to get enough sleep nowadays."
m "Especially in high school, when you're forced to wake up so early every day..."
m "I'm sure college is a little bit better, since you probably have a more flexible schedule."
m "Then again, I hear a lot of people in college stay up all night anyway, for no real reason."
m "Is that true?"
m "Anyway, I saw some studies that talked about the horrible short-term and long-term effects caused by lack of sleep."
m "It seems like mental functions, health, and even lifespan can be dramatically impacted by it."
m "I just think you're really great and wanted to make sure you're not accidentally destroying yourself."
m "So try to keep your sleep on track, okay?"
m "I'll always wait for you in the morning, so make sure you put your own well-being before anything else."
return
label ch30_5:
m "I was thinking about Sayori earlier..."
m "I still wish I could have handled that whole thing a little more tactfully."
m "You're not still hung up over it, right?"
m "...Oh my gosh, I can't believe I just said that."
m "That pun was completely unintentional, I swear!"
m "But anyway..."
m "I know how much you cared about her, so it only feels right for me to share her last moments with you."
m "You know how Sayori is really clumsy?"
m "Well, she kind of messed up the whole hanging thing..."
m "You're supposed to jump from high enough that the rope snaps your neck, making it quick and painless."
m "But she just used a chair, meaning she kind of just left herself to slowly asphyxiate."
m "But a few seconds in, she must have changed her mind or something..."
m "Because she started clawing at the rope, trying to free herself."
m "She must have kept at it all the way until she lost consciousness."
m "That's why her fingertips were all bloody, anyway."
m "Come to think of it, it was probably less 'changing her mind' and more just her survival instincts kicking in."
m "So you can't really fault her for that."
m "It's easier to think that she probably wouldn't have changed her mind anyway, right?"
m "It's not healthy to think about the things you could have done differently."
m "So just remember that even though you could have saved her, it's technically not your fault she killed herself."
m "I may have exacerbated it a little bit, but Sayori was already mentally ill."
m "Still, though..."
m "I wonder how things would be if you and I just started dating from the get-go?"
m "I guess we'd all still be in the clubroom, writing poems and having fun together."
m "But what's the point when none of it is even real?"
m "I mean, it's the same ending either way, right?"
m "The two of us, happily together..."
m "There's no reason to ask for any more than that."
m "I was just pointlessly musing - I'm really as happy as I could be right now."
return
label ch30_6:
m "By the way, there's something that's been bothering me..."
m "You know how this takes place in Japan?"
m "Well...I assume you knew that, right?"
m "Or at least decided it probably does?"
m "I don't think you're actually told at any point where this takes place..."
m "Is this even really Japan?"
m "I mean, aren't the classrooms and stuff kind of weird for a Japanese school?"
m "Not to mention everything is in English..."
m "It feels like everything is just there because it needs to be, and the actual setting is an afterthought."
m "It's kind of giving me an identity crisis."
m "All my memories are really hazy..."
m "I feel like I'm at home, but have no idea where 'home' is in the first place."
m "I don't know how to describe it any better..."
m "Imagine looking out your window, but instead of your usual yard, you're in some completely unknown place."
m "Would you still feel like you were home?"
m "Would you want to go outside?"
m "I mean...I guess if we never leave this room, it doesn't really matter anyway."
m "As long as we're alone and safe together, this really is our home."
m "And we can still watch the pretty sunsets night after night."
return
label ch30_7:
m "You know, high school is a really turbulent time in a lot of people's lives."
m "People can get really passionate and dramatic."
m "And others have aching hearts and seek attention on social media..."
m "But all of the social pressure and hormones can lead to a dark time in people's lives."
m "Everyone has a story."
m "You may not know what someone is really feeling on the inside."
m "Many people who are depressed won't even bother telling the world about it."
m "They don't want attention, because they've already given up on the inside."
m "Their feeling of worthlessness is so overwhelming that they don't even want people to tell them otherwise."
m "Depression comes in many forms, but that is one of them."
m "Just, if you think you know someone struggling with depression..."
m "You can help just by treating them like they're a good friend."
m "Spend time with them, even if they don't feel like doing much."
m "And remind them that they always have something to look forward to."
m "Making plans in advance, letting them borrow something, or even just saying 'See you at school tomorrow'..."
m "All of those things can help your friend make it to the next day."
m "I hope being friends with Sayori has given you some perspective on the true face of depression."
m "Yeah, she's gone now..."
m "But Sayori was never real in the first place."
m "You're real."
m "Your friends are real."
m "And just by being a good person, you can save someone's life."
m "As for you..."