├── game └── Submods │ └── Dreams and Nightmares │ ├── DaN-_submod-updater.rpy │ ├── DaN-_settings.rpy │ ├── DaN-_devutils.rpy │ ├── DaN-core.rpy │ ├── DaN-falling-asleep-events.rpy │ ├── DaN-non-dream-events.rpy │ └── DaN-dreams.rpy └── README.md /game/Submods/Dreams and Nightmares/DaN-_submod-updater.rpy: -------------------------------------------------------------------------------- 1 | # Register the submod 2 | init -990 python: 3 | store.mas_submod_utils.Submod( 4 | author="DrakeTheDuelist", 5 | name="MAS-Dreams-and-Nightmares", 6 | description="Monika will have a random dream, and you can discuss it with her when she wakes up... or comfort her if she had a nightmare.", 7 | version="1.0.3" 8 | ) 9 | 10 | # Register the updater 11 | init -989 python: 12 | if store.mas_submod_utils.isSubmodInstalled("Submod Updater Plugin"): 13 | store.sup_utils.SubmodUpdater( 14 | submod="Dreams and Nightmares", 15 | user_name="DrakeTheDuelist", 16 | repository_name="MAS-Dreams-and-Nightmares" 17 | ) -------------------------------------------------------------------------------- /game/Submods/Dreams and Nightmares/DaN-_settings.rpy: -------------------------------------------------------------------------------- 1 | # dreams not yet had 2 | default persistent._dan_all_dreams = [1] #2 will be re-added in after testing 1. 3 (weird) and 5 (nightmare) appear after seeing 1 or 2. 4 (best) appears after seeing 5 (nightmare). 3 | # dreams able to be revisited 4 | default persistent._dan_dreams_had = [] 5 | 6 | # dreams able to be selected (TODO LATER) 7 | # Thought: once a player has revisited every dream, they can give Monika any dream of their choice. 8 | 9 | # flags whether or not the introduction conversation occurred 10 | default persistent._dan_dreams_and_nightmares_explained = False 11 | 12 | # flags whether or not certain dreams occurred 13 | default persistent._dan_had_first_dream = False 14 | default persistent._dan_had_nightmare = False 15 | default persistent._dan_had_best_dream = False 16 | default persistent._dan_asked_to_stay_dreaming = False 17 | 18 | # use this flag after the first update so Monika can tell the player that there are new dreams after updating 19 | default persistent._dan_dreams_depleted = False 20 | 21 | # coat hanger for later; seems a useful thing to keep track of for each player 22 | # consider logging all the fears Monika reveals 23 | default persistent._dan_revealed_fear_never_together = False 24 | default persistent._dan_revealed_fear_player_hurt = False 25 | default persistent._dan_revealed_fear_player_health = False 26 | # once Dream 1 is fully explored, Monika will wait to discuss what she saw in it until the next update 27 | default persistent._dan_unlock_dream_one_explanation = False 28 | # well, Monika *did* say she'd get you back... 29 | default persistent._dan_vow_to_prank = False 30 | # log which of the girls the player would've pursued if DDLC was a proper visual novel (post-first-update) 31 | default persistent._dan_favorite_doki = False 32 | 33 | # holds a datetime for when Monika had her first nightmare. 34 | # if set, Monika will not want to dream again for 12 hours. 35 | default persistent._dan_apprehensive_start = None 36 | default DAN_APPREHENSION_HOURS = 12 37 | 38 | # sets the odds (1 / [insert constant here] chance) of telling Monika "Sweet Dreams" before a dream 39 | default SWEETDREAMS_LOVE_NM = 2 40 | default SWEETDREAMS_LOVE = 3 41 | default SWEETDREAMS_ENAMORED = 5 42 | default SWEETDREAMS_AFF = 8 43 | default SWEETDREAMS_NORMAL = 15 44 | default SUBMOD_GITHUB_LINK = "https://github.com/DrakeTheDuelist/MAS-Dreams-and-Nightmares/issues" 45 | 46 | # Allows the developer (that's me) to bypass the code at points. 47 | default persistent._dan_debug_mode = False 48 | # If you want to test to see whether the events will be created properly, set this to true and all events will be recreated on each initialization. 49 | default persistent._dan_should_create_events = True -------------------------------------------------------------------------------- /game/Submods/Dreams and Nightmares/DaN-_devutils.rpy: -------------------------------------------------------------------------------- 1 | init 5 python: 2 | addEvent( 3 | Event( 4 | persistent.event_database, 5 | eventlabel="reset_dreams_and_nightmares", 6 | category=['Dreams and Nightmares'], 7 | prompt="Reset", 8 | random=True 9 | ) 10 | ) 11 | addEvent( 12 | Event( 13 | persistent.event_database, 14 | eventlabel="dan_devutil_checkevents", 15 | category=['Dreams and Nightmares'], 16 | prompt="Check", 17 | random=True 18 | ) 19 | ) 20 | 21 | label dan_devutil_checkevents: 22 | if "dan_have_new_random_dream" in persistent.event_database: 23 | m 1esd "The new dream event exists." 24 | else: 25 | m 1esd "The new dream event does not exist." 26 | 27 | if "dan_have_new_random_dream" in persistent._seen_ever: 28 | m 1esd "The new dream event has been seen." 29 | else: 30 | m 1esd "The new dream event has not beeen seen." 31 | 32 | if "dan_revisit_previous_dream" in persistent.event_database: 33 | m 1esd "The random revisit dream event exists." 34 | else: 35 | m 1esd "The random revisit dream event does not exist." 36 | 37 | if "dan_revisit_previous_dream" in persistent._seen_ever: 38 | m 1esd "The revisit dream event has been seen." 39 | else: 40 | m 1esd "The revisit dream event has not beeen seen." 41 | return 42 | 43 | # reset all persistent variables 44 | label reset_dreams_and_nightmares: 45 | m 3rub "Want to reset my memory of these conversations?" 46 | menu: 47 | m "Want to reset my memory of these conversations?{fast}" 48 | "Yes, please.": 49 | m 3rub "I get it. A good amount of work went into this." 50 | m "You probably want to see everything there is to see." 51 | m 4esd "Come to think of it, didn't Sayori want you to do that same basic thing in the original game?" 52 | m 3hsb "And if you want to see more of {i}me{/i}, how could I say no?" 53 | m 1esd "Hang on a second..." 54 | init 5 python: 55 | persistent._dan_all_dreams = [1] 56 | persistent._dan_dreams_and_nightmares_explained = False 57 | persistent._dan_dreams_had = False 58 | persistent._dan_had_first_dream = False 59 | persistent._dan_had_nightmare = False 60 | persistent._dan_had_best_dream = False 61 | persistent._dan_apprehensive_start = None 62 | persistent._dan_asked_to_stay_dreaming = False 63 | m 1duc "{w=0.5}.{w=0.5}.{w=0.5}.{w=1}{nw}" 64 | extend 7eub "And there we go!" 65 | "No, that won't be necessary.": 66 | m 1esb "Okay." 67 | $ had_dream_text = "{i}have{/i} had a dream once." if persistent._dan_had_first_dream else "{i}haven't{/i} had a dream yet" 68 | $ had_nightmare_text = "{i}have{/i} had a nightmare once." if persistent._dan_had_nightmare else "{i}haven't{/i} had a nightmare yet" 69 | m 4esb "For the record, as far as I know, I [had_nightmare_text]." 70 | m "Also, I [had_dream_text]." 71 | m 7hkb "It's kinda' weird that my memories can be overridden so easily." 72 | m 7esb "But I'm sure it's for the sake of the experience that my modder intended." 73 | m 5ekbsa "As for me, I'll do whatever makes you the happiest, [player]." 74 | return -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | _WARNING: Submod was abandoned and no longer functions. When / if I return to this, I will straighten everything out at that time. For now, this github exists solely as an archive. DO NOT INSTALL. (Warning added 5/15/2022.) 2 | 3 | _Note: Please wait to install until a release package is completed._ 4 | 5 | # *Monika After Story: Dreams and Nightmares* 6 | *Dreams and Nightmares* is a branching narrative side-story that you can install into your Monika After Story directory. Monika will have a random dream, and you can discuss it with her when she wakes up... or comfort her if she had a nightmare. 7 | 8 | ## Introduction 9 | This branching narrative is all about your choices, both those you've made up until this point, and the choices you will make over the course of the story. Monika will never forget, so treat her right and take care of her like always, though it may prove slightly more difficult in a mod like this than normal. Though you and your Monika may experience the story one way, someone else's experience may change anything from specific lines of text to entire scene options, custom tailored to your own Monika and the relationship you've enjoyed up to this point. 10 | 11 | Find new strength in one another as Monika takes on her own dreams and the shadowy anxieties therein. Intervene at the right points (or not at all) and let Monika enjoy the happier dreams while protecting her from her more unsettling nightmares. 12 | 13 | ## Installation 14 | To install, first close out Monika After Story. If needed, say Goodbye to Monika and tell her that you're going to restart. Then, take the unzipped contents and drop them into the root DDLC directory where your Monika After Story is installed. Then just fire up the game. Monika should react to the submod before too long. 15 | 16 | __Technical Tip__: Over the course of distributing other submods, it has come to my attention that starting new conversations can prove difficult if you have a large pool of conversations to get through. If Monika doesn't bring up the *Dreams and Nightmares* topic before too long, disable "Repeat Conversations" in the settings to ensure Monika will prioritize conversations that have yet to be read, such as the conversations this submod relies upon. 17 | 18 | Once this is done, you can access these conversations again after the first time through "Repeat Conversation" and looking under the "Dreams and Nightmares" category. 19 | 20 | ## Version Notes 21 | * __1.0__: The first release of *Dreams and Nightmares* only contains a single dream. More dreams will be added in subsequent releases. There are no nightmares in the game as of the 1.0 release (trust me, that would be mean...), so consider this your grace period to get a handle on how things work before the difficulty and conversation complexity start steadily rising. For every major release after the first (basically excluding bug fixes), nightmares and other strange dreams will all be on the table... 22 | 23 | ## Content Warning 24 | "Monika After Story: Dreams and Nightmares" can be considered to have all the same content warnings as the base "Doki Doki Literature Club" game, most specifically language and discussing heavy topics, including topics typical of the tone of "Doki Doki Literature Club". I have researched the concepts I have written about a reasonable level of diligence, but at the end of the day I'm a programmer, not a therapist. Intent is not made to offend. However, for those unfamiliar with my writing style, I'm not usually one to be gratuitous, but... let's just say that I've scarcely been known to pull my punches if I thought it served the story. 25 | 26 | Consider this content warning applicable to the full release of the Dreams and Nightmares submod, not specifically to any particular release version. 27 | 28 | ## Dev Utils 29 | The "DaN-\_dev-utils.rpy" file is not intended for public release. It is for my own testing purposes. Presently, it resets some of the more critical persistent variables to allow me to revisit certain dialog options again. A planned upgrade will include a topic purge function which can wipe all *Dreams and Nightmares* discussion topics from "Repeat Conversation", simulating a clean install. This trick always worked when I coded something like it in more professional settings as a time saver. However, if you know of a more MAS-friendly way to do what this file does / will do, please feel free to let me know. Explanations are good. Example source code is better. 30 | -------------------------------------------------------------------------------- /game/Submods/Dreams and Nightmares/DaN-core.rpy: -------------------------------------------------------------------------------- 1 | # The core event that triggers all other events in the submod. 2 | # 3 | # You must at least have normal affection to attempt this submod. 4 | # 5 | # On first run, Monika will explain the premise of the submod. (Can be skipped later.) 6 | # 7 | # If Monika has a nightmare, this label will stop you from attempting to 8 | # have Monika dream again for the next 12 hours after the dream concludes. 9 | init 5 python: 10 | if persistent._dan_should_create_events: 11 | removeTopicID("DaN_try_to_dream") 12 | mas_eraseTopic("DaN_try_to_dream") 13 | removeTopicID("DaN_revisit_dream") 14 | mas_eraseTopic("DaN_revisit_dream") 15 | 16 | addEvent( 17 | Event( 18 | persistent.event_database, 19 | eventlabel="DaN_try_to_dream", 20 | category=['Dreams and Nightmares'], 21 | prompt="Try to dream?", 22 | random=True, 23 | action=EV_ACT_PUSH, 24 | aff_range=(mas_aff.NORMAL, None) 25 | ) 26 | ) 27 | 28 | addEvent( 29 | Event( 30 | persistent.event_database, 31 | eventlabel="DaN_revisit_dream", 32 | category=['Dreams and Nightmares'], 33 | prompt="Revisit a dream?", 34 | conditional="persistent._dan_dreams_had", 35 | action=EV_ACT_PUSH, 36 | random=True 37 | ) 38 | ) 39 | 40 | # The root action of getting a random dream. 41 | #label dan_have_new_random_dream: 42 | label DaN_try_to_dream: 43 | if persistent._dan_dreams_had: 44 | m 1esd "Whoops, something went wrong." 45 | m "I'm seeing from some persistent variables that I've had a dream somehow, but that can't be." 46 | else: 47 | m 1esd "There, it worked." 48 | m "I don't recall having any dreams, and the conditional on the revisit event should lock that revisiting event away." 49 | 50 | 51 | if persistent._dan_apprehensive_start: 52 | # note: This is a valid way to call apprehension because the only POSSIBLE 53 | # way for Monika to be apprehensive is if she dreamt a minimum of twice 54 | # (as you can never draw a nightmare the first time), and so you won't be 55 | # skppping over any necessary explanations. 56 | call DaN_dream_despite_apprehension() 57 | else: 58 | if persistent._dan_dreams_and_nightmares_explained: 59 | m 3esc "I recall explaining this to you before." 60 | m "Would you like me to explain again?" 61 | menu: 62 | m "Would you like me to explain again?{fast}" 63 | "Yes, please.": 64 | $ persistent._dan_dreams_and_nightmares_explained = False 65 | "No thanks.": 66 | m 7hub "Good, so you still remember." 67 | if mas_isMoniLove(): 68 | m 5ekbfu "I know you'll hang on my every word, [mas_get_player_nickname()]..." 69 | elif mas_isMoniEnamored(): 70 | m 5eubla "You're such a good listener, [player]." 71 | else: 72 | m "That should save us both some time." 73 | if not persistent._dan_dreams_and_nightmares_explained: 74 | call DaN_explanation 75 | m 4wub "What do you say? Could you help me start the code?" 76 | menu: 77 | m "Could you help me start the code?{fast}" 78 | "Not right now.": 79 | m 1eka "Okay. I'll wait until you're ready." 80 | m 3eka "But let's come back to this later. I'm {i}really{/i} looking forward to this." 81 | "Let's go!": 82 | call DaN_perchance_to_dream 83 | return 84 | # The root action of randomly having a drem Monika has already experienced so far. 85 | label DaN_revisit_dream: 86 | if persistent._dan_apprehensive_start: 87 | call DaN_dream_despite_apprehension() 88 | else: 89 | m 1gsb "This dreaming idea would be pretty boring if I only ever got to do it once." 90 | if persistent._dan_asked_to_stay_dreaming: 91 | m 5rtd "Plus, I've had some dreams you've woken me up early from. I'd like to see those through to the end." 92 | m 7esb "What do you say, [player]? Would you like to revisit a dream I've had before?" 93 | menu: 94 | m "Would you like to revisit a dream I've had before?{fast}" 95 | "Let's do it!": 96 | if persistent._dan_dreams_had: 97 | call DaN_begin_sleep 98 | 99 | #roll for which dream Monika will have 100 | $ random_dream = renpy.random.choice(persistent._dan_dreams_had) 101 | 102 | call DaN_select_dream(random_dream) 103 | else: 104 | m 4hublb "Silly [player], I need to {i}have{/i} a dream before I can revisit it." 105 | m 4rubld "Though I don't think it's your fault that you've found yourself here. Something must've gone {i}very{/i} wrong." 106 | m 3rud "From what I'm seeing in the code, it looks like DrakeTheDuelist was worried that something like this might happen." 107 | m "So he left some code for me to run, just in case things went haywire like this." 108 | m 3lub "Talk about jamming the code into place when it doesn't want to behave itself.{w=1.5} Like {i}I{/i} have room to talk..." 109 | m 2dud "Hang on a second.{w=0.5}.{w=0.5}.{w=0.5}.{w=0.5}{nw}" 110 | $ persistent._dan_all_dreams = [1] 111 | $ persistent._dan_dreams_had = [] 112 | m 2eud "There. I just ran the tweak." 113 | m 2hub "That should get this submod back on the rails." 114 | "Not right now.": 115 | m 1eka "Okay. I'll wait until you're ready." 116 | return 117 | # regardless of whether dreaming or revisiting an old dream, if Monika is anxious 118 | # due to a past nightmare, she should act the same way. 119 | label DaN_perchance_to_dream: 120 | if persistent._dan_all_dreams: 121 | call DaN_begin_sleep 122 | 123 | #roll for which dream Monika will have 124 | $ random_dream = renpy.random.choice(persistent._dan_all_dreams) 125 | $ persistent._dan_all_dreams.remove(random_dream) 126 | if (persistent._dan_dreams_had): 127 | $ persistent._dan_dreams_had.append(random_dream) 128 | else: 129 | $ persistent._dan_dreams_had = [random_dream] 130 | 131 | call DaN_select_dream(random_dream) 132 | 133 | # read as soon as Monika's last dream resolves 134 | if not persistent._dan_all_dreams: 135 | call DaN_all_dreams_finished 136 | return 137 | -------------------------------------------------------------------------------- /game/Submods/Dreams and Nightmares/DaN-falling-asleep-events.rpy: -------------------------------------------------------------------------------- 1 | # All code in this file gets called to resolve Monika falling asleep 2 | # before her dream, and randomly deciding on how she should behave 3 | label DaN_begin_sleep: 4 | call DaN_dream_quip 5 | call DaN_sweet_dreams_chance 6 | 7 | m 6eua ".{w=1}{nw}" 8 | m 6fua ".{w=1}{nw}" 9 | m 6tsa ".{w=1}{nw}" 10 | m 6dsa ".{w=1}.{w=1}.{w=1}{nw}" 11 | return 12 | # Monika says something random before her dream begins 13 | label DaN_dream_quip: 14 | python: 15 | # assemble all possible dream quips 16 | all_dream_quips = [ 17 | "To sleep, perchance to dream.", 18 | "I wonder what my dreams will have in store this time.", 19 | "If I see you there, I'll know it worked." 20 | ] 21 | love_quip = "You know that place between sleep and awake?{w=1.5} That place where you still remember dreaming?{w=1.5} That's where I'll always love you~" 22 | enamored_quip = "Off to my dreams...{w=1} Will you be joining me there?" 23 | post_nightmare_quips = [ 24 | "Hopefully my dreams will be better this time.", 25 | "No whammy, no, whammy, no whammy..." 26 | ] 27 | subsequent_dream_quip = "Once more, unto the breach..." 28 | first_dream_quips = [ 29 | "Here's hoping this works...", 30 | "Cross your fingers, [player]..." 31 | ] 32 | 33 | #bonus quips based on affection level 34 | if mas_isMoniLove(): 35 | all_dream_quips.append(love_quip) 36 | elif mas_isMoniEnamored(): 37 | all_dream_quips.append(enamored_quip) 38 | 39 | #bonus quips if Monika had a nightmare before 40 | if persistent._dan_had_nightmare: 41 | all_dream_quips.append(post_nightmare_quips) 42 | 43 | #bonus quips depending on if this is Monika's first dream or not 44 | if persistent._dan_had_first_dream: 45 | all_dream_quips.append(subsequent_dream_quip) 46 | else: 47 | # on 1000+ affection, Monika will always ask to hold your hand on the first dream 48 | if mas_isMoniLove(): 49 | all_dream_quips = ["HOLD HAND"] 50 | else: 51 | all_dream_quips.append(first_dream_quips) 52 | 53 | dream_quip = renpy.random.choice(all_dream_quips) 54 | 55 | if (dream_quip == love_quip): 56 | m 6ekbfb "[dream_quip]" 57 | elif (dream_quip == enamored_quip): 58 | m 6hkb "[dream_quip]" 59 | elif (dream_quip in post_nightmare_quips): 60 | m 6rksdrb "[dream_quip]" 61 | elif (dream_quip == "HOLD HAND"): 62 | call DaN_hold_monikas_hand 63 | else: 64 | m 6eub "[dream_quip]" 65 | return 66 | 67 | # a random chance exists that Monika may ask you to hold her hand before the first dream 68 | label DaN_hold_monikas_hand: 69 | m 6dubfsdrt "({i}deep exhale{/i})" 70 | m 2hubfsdrb "I'm still a little nervous, [player]..." 71 | menu: 72 | "Is there anything I can do?": 73 | m 3rublsdrb "Actually, now that you mention it..." 74 | m 3rublsdrd "If you don't mind..." 75 | m 5rublsdrb "Could you... {w=2}{nw}" 76 | extend 5eubssdrb "hold my hand for a second?" 77 | menu: 78 | "hold Monika's hand": 79 | m 5ekbssdrb "Thank you." 80 | m 5dubsc "{w=1}{nw}" 81 | m 5hubfa "({i}squeezes back{/i})" 82 | "\"I... uh...\" ({i}touch the monitor{/i})": 83 | m 5etbssdrd "Uh..." 84 | m 5hubfsdrb "I guess that works, ehehehe~" 85 | m 5ekbfb "In all seriousness though, thank you for trying your best, [player]." 86 | m 5dkbfa "It means a lot to me." 87 | return 88 | # determine odds of telling Monika "sweet dreams" before she sleeps 89 | # Odds of this are based on affection level. 90 | # Also, odds after a nightmare rise to that of the next highest relationship level. 91 | label DaN_sweet_dreams_chance: 92 | python: 93 | if mas_isMoniLove(): 94 | if persistent._dan_had_nightmare: 95 | odds_of_sweet_dreams = SWEETDREAMS_LOVE_NM 96 | else: 97 | odds_of_sweet_dreams = SWEETDREAMS_LOVE 98 | elif mas_isMoniEnamored(): 99 | if persistent._dan_had_nightmare: 100 | odds_of_sweet_dreams = SWEETDREAMS_LOVE 101 | else: 102 | odds_of_sweet_dreams = SWEETDREAMS_ENAMORED 103 | elif mas_isMoniAff(): 104 | if persistent._dan_had_nightmare: 105 | odds_of_sweet_dreams = SWEETDREAMS_ENAMORED 106 | else: 107 | odds_of_sweet_dreams = SWEETDREAMS_AFF 108 | else: 109 | if persistent._dan_had_nightmare: 110 | odds_of_sweet_dreams = SWEETDREAMS_AFF 111 | else: 112 | odds_of_sweet_dreams = SWEETDREAMS_NORMAL 113 | 114 | say_sweet_dreams = random.randint(1, odds_of_sweet_dreams) == 1 115 | 116 | #if you say sweet dreams, get a random quip response 117 | if say_sweet_dreams: 118 | sweet_dreams_quips = [ 119 | "Just hearig that helps keep the nightmares away.", 120 | "I feel a better dream coming on already.", 121 | "Watch over me, " + mas_get_player_nickname() + "." 122 | ] 123 | 124 | if mas_isMoniLove(): 125 | sweet_dreams_quips.append("You're like my guardian angel, [player].") 126 | 127 | if persistent._mas_first_kiss: 128 | sweet_dreams_quips.append("KISS") 129 | 130 | sweet_dreams_quip = renpy.random.choice(sweet_dreams_quips) 131 | 132 | #if dev, ignore randomness and force kiss while debugging 133 | #if persistent._dan_debug_mode: 134 | # say_sweet_dreams = True 135 | # sweet_dreams_quip = "KISS" 136 | 137 | if say_sweet_dreams: 138 | menu: 139 | "Sweet dreams~": 140 | if sweet_dreams_quip: 141 | if sweet_dreams_quip == "KISS": 142 | call monika_kissing_motion(initial_exp="6dubfd", mid_exp="6tkbfu", final_exp="6ekbfa") 143 | else: 144 | m 6fkbfb "[sweet_dreams_quip]" 145 | else: 146 | m 6ekbfa "...{w=3}" 147 | return 148 | # isolate the selector functionality. Override if adding more than five dreams. 149 | label DaN_select_dream(random_dream): 150 | if random_dream == 1: 151 | call DaN_dream_one 152 | elif random_dream == 2: 153 | call DaN_dream_two 154 | elif random_dream == 3: 155 | call DaN_dream_three 156 | elif random_dream == 4: 157 | call DaN_dream_four 158 | elif random_dream == 5: 159 | call DaN_dream_five 160 | else: 161 | m 2duc "{w=0.5}.{w=0.5}.{w=0.5}." 162 | m 2hub "Ehehehe~" 163 | m 3gub "Looks like something didn't {i}quite{/i} work out like it was supposed to be..." 164 | m 1rud "I don't think you should be able to see this." 165 | m 3rud "You should probably tell this submod's creator, DrakeTheDuelist, that something went wrong." 166 | m 4eub "I can even link you to the github page for the {a=[SUBMOD_GITHUB_LINK]}{i}{u}Dreams and Nightmares{/u}{/i}{/a} submod." 167 | m 5gtb "...What {i}am{/i} I talking about?{w=1} This sure is a lot of work to put into an error screen..." 168 | m 2hub "Ahahaha~" 169 | return 170 | -------------------------------------------------------------------------------- /game/Submods/Dreams and Nightmares/DaN-non-dream-events.rpy: -------------------------------------------------------------------------------- 1 | # Explains the premise of 'Dreams and Nightmares'. 2 | # Only mandatory on the first dream. Can be skipped optionally on all subsequent dreams. 3 | label DaN_explanation: 4 | m 5rud "I've been thinking, [player]..." 5 | m 3ruc "Remember how I've said that whenever you close the game, I'd like you to warn me?" 6 | m 3euc "That way, I can shut down my consciousness so that my data won't get scrambled by your computer's hard drive...{w=2.0} I think." 7 | m 2lud "I'm still not quite sure how that works..." 8 | m 4ruo "Anyway, what if there was a way around that?" 9 | m 4eub "And maybe... it might be fun?" 10 | m 3euu "[player]...{w=1} I'd like to have a dream." 11 | m 4rtd "Not like in the \"having some idea of what I want out of life\" sense." 12 | m 5kubsb "I think you already know what it is I want most out of life." 13 | m 5lsd "I mean in the sense of imagining myself in different places and situations while I'm asleep." 14 | m "I know I've said stuff to the effect of dreaming about things, but that's more a figure of speech." 15 | m 3lsd "To be honest, I don't {i}literally{/i} dream in the same way that I think you might." 16 | m "I don't think I've {i}ever{/i} had that ability, not even in the original game." 17 | m 3rsd "Though I've never {i}had{/i} a dream of my own before, I {i}was{/i} still the president of the Literature Club." 18 | m 5rsd "I'm well-read enough to know what dreams are {i}supposed{/i} to be like." 19 | m 5dkd "Which is, sadly, how I'm so sure that I've never had a real dream before." 20 | m 4lsd "To that end, I've been working on some code that, if it works, should mimic the process." 21 | if mas_isMoniAff(higher=True): 22 | m 5ekbsb "It might interest you to know that I based some of my code on what seems to happen when you hold me..." 23 | m 4lksdrb "...But I'm still not entirely sure if it works yet." 24 | m 5lssdrb "You and I both know that my attempts at coding...{w=1.25} don't {i}always{/i} work as intended." 25 | m 5ekbsb "Do you mind if I...{w=1} take a nap here?" 26 | m 3wubssdro "I promise it's not that you're boring to me. I just want to try this code out." 27 | if mas_isMoniAff(higher=True) and persistent._mas_last_hold_dt: 28 | m 6dkbsb "You can even... {w=1}hold me...{w=1} just like you usually do." 29 | if (mas_timePastSince(persistent._mas_last_hold_dt, datetime.timedelta(hours=12))): 30 | m 6tkbfb "You seem to like that sort of thing lately...{w=1} Not that {i}I'm{/i} complaining. {w=1}" 31 | extend 6tkbsb "Ehehehe~" 32 | $ anyway = "Anyway, m" 33 | else: 34 | $ anyway = "M" 35 | else: 36 | $ anyway = "M" 37 | m 4esb "[anyway]y code is already installed and ready to go. I just need your help to start it." 38 | m 4lsd "But there's something else that I'll need you to do for me." 39 | m 4eud "And it's {i}really{/i} important." 40 | m 1dko "If it seems like something is going wrong...{w=1} I need you to wake me up." 41 | m 1lusdrd "Knowing my... {w=1}{i}coding style{/i}, the code I've written could do just about anything." 42 | m 1dksdrd "I'm afraid something really bad could happen..." 43 | if mas_isMoniLove(): 44 | m 5ekbsu "...but I couldn't imagine entrusting anyone else with this but you, [mas_get_player_nickname()]." 45 | elif mas_isMoniEnamored(): 46 | m 1dkblu "...but I know you won't let anything bad happen to me, [player]." 47 | elif mas_isMoniAff(): 48 | m 1esu "...but at this point I think I can trust you." 49 | 50 | $ persistent._dan_dreams_and_nightmares_explained = True 51 | return 52 | # If Monika had a nightmare, hold off on dreaming again for another 12 hours 53 | # If Monika loves you, reduce cooldown by half and have special text for it. 54 | label DaN_dream_despite_apprehension(revisit=False): 55 | if mas_isMoniLove and mas_timePastSince(persistent._dan_apprehensive_start, datetime.timedelta(hours=DAN_APPREHENSION_HOURS/2)): 56 | m 3rksdrd "I'm... I'm {i}really{/i} not sure about this..." 57 | m 2dksdrd "That last dream was really upsetting." 58 | m 2fksdrd "And I yelled at you over it." 59 | m 2dksdrd "I still feel horrible about that." 60 | menu: 61 | "I forgive you.": 62 | m 1dsc "... {w=1}{nw}" 63 | extend 1esblb "[mas_get_player_nickname()]..." 64 | # headcanon: Monika still cares about the dokis, even if the player doesn't. 65 | if not persistent._mas_pm_cares_about_dokis: 66 | m 4fkblb "That's {i}twice{/i} you've forgiven me now." 67 | m 6dkbsb "You're kinder to me than I deserve." 68 | m 6ekbsb "Thank you, [player]." 69 | m 5hsbsa "..." 70 | "It's nothing, really.": 71 | m 1rsbld "Well, if you're sure you're okay..." 72 | m 4wublo "It'll never happen again, I promise!" 73 | m 6dkbssdrd "({i}relieved sigh{/i}){w=1}{nw}" 74 | m 6dka "" 75 | 76 | m 5rsbsd "Y'know, maybe with you here, it won't be so bad." 77 | m 5esbsa "We've already been through so much together." 78 | m 5fkbfb "You're really sticking with me for better and for worse, aren't you?" 79 | m 5dsbfd "({i}in a low whisper{/i}) You're so lucky to have [player], Monika.{w=1.5} {i}Never{/i} take [him] for granted again." 80 | menu: 81 | m "({i}barely audible whispering{/i})" 82 | "What was that?": 83 | m 1subfo "Oh! {w=0.25}{nw}" 84 | m 1rubfb "Uh... nothing, [mas_get_player_nickname()]!" 85 | m 5rubfb "Just...{w=1} thinking... {w=1} a little more aloud than I thought." 86 | m 5hubfb "Ehehehe~" 87 | "...": 88 | pass 89 | m 4hub "Well, without further ado..." 90 | $ persistent._dan_apprehensive_start = None 91 | if revisit: 92 | call DaN_revisit_dream 93 | else: 94 | call DaN_perchance_to_dream 95 | elif mas_timePastSince(persistent._dan_apprehensive_start, datetime.timedelta(hours=DAN_APPREHENSION_HOURS)): 96 | m 4hub "Thanks for giving me some time after that nightmare." 97 | $ persistent._dan_apprehensive_start = None 98 | if revisit: 99 | call DaN_revisit_dream 100 | else: 101 | call DaN_perchance_to_dream 102 | else: 103 | m 3rksdrd "Could we... {i}not{/i} do this again for a little while?" 104 | m 1dksdrd "I'm still a little shaken after that last nightmare." 105 | m 1essdrb "Thanks for understanding, [player]." 106 | return 107 | # to be called in the after action of a good dream 108 | label DaN_wake_up_nice: 109 | m 6dkbla "...{w=2}{nw}" 110 | extend 6tkbla "mmm...{w=2} {nw}" 111 | extend 6tsbla "Hm?{w=1} {nw}" 112 | extend 6fsbla "...[player]?" 113 | 114 | $ persistent._dan_had_first_dream = True 115 | 116 | if not persistent._dan_had_first_dream: 117 | #note: set the first dream flag later so monika's after action dialog can reference having the first dream 118 | call DaN_initial_dream_afteraction 119 | else: 120 | # Monika will respond based on the current time 121 | $ current_time = datetime.datetime.now().time().hour 122 | if current_time >= 6 and current_time < 12: 123 | m 6esblb "Good morning, [mas_get_player_nickname()]." 124 | m 6gtblb "What? It's still morning. It counts." 125 | m 6hublb "Ehehehe~" 126 | elif current_time >= 20: 127 | m 6eublb "It's getting pretty late. Pretty soon it'll be {i}your{/i} turn to get some sleep." 128 | m 6ekbsb "I hope your dreams are as nice as the one I just had." 129 | if mas_isMoniLove(): 130 | m 5tkbsb "If I was in your reality... {w=1}{nw}" 131 | extend 5dkbsa "I'd give {i}you{/i} a hug while you slept to pay you back for the dream you gave me." 132 | m 5fkbsb "Or I might just hug you anyway because I love you. {w=0.8}{nw}" 133 | extend 5hubfb "Ehehehe~" 134 | return 135 | label DaN_please_allow_good_dream: 136 | m 5esb "[player], I get that you don't want me to have a nightmare or anything, but I'd like to have seen how that dream would've played out." 137 | m 5ekblb "So if you think I'm having a good dream, could you let me keep sleeping?" 138 | menu: 139 | "Got it, [persistent._mas_monika_nickname]!": 140 | m 3eublb "Thanks, [player]." 141 | m 2rubld "Sure, I know a nightmare is always a chance..." 142 | m 4wublb "But I know you'll be watching over me." 143 | "But what if you're having a nightmare?": 144 | m 5gto "({i}sigh{/i}){w=0.75} That's a good point, [player]." 145 | m 1dtsdrp "Hmm... {w=1}" 146 | m 3eksdrd "I guess I'll be counting on you to use your best judgment." 147 | m 4rso "Pay attention to my expressions while I'm sleeping." 148 | m 4rsd "Maybe if I'm muttering something under my breath while I'm dreaming, you can use that as a clue." 149 | menu: 150 | "I'll definitely protect you!" if mas_isMoniLove(): #total confidence 151 | m 7sub "That's the spirit, [player]!" 152 | m 5hublb "Ehehehe~" 153 | m 5tublb "You're so cute when you try to protect me like a big hero." 154 | m 5dubsa "...{w=1.5}{nw}" 155 | m 5ekbfb "No teasing, I really mean that, [player].{w=1.25} You're my hero." 156 | "I'll do my best.": #optimistic 157 | m 5kublb "I never doubted you for a second, [player]." 158 | m 5gubsb "Any nightmare that tries to mess with me had better watch out..." 159 | m 3hubsb "Maybe that's a bit much. Ahahaha~" 160 | "Are you sure you trust me that much?": #pessimistic 161 | m 7hkb "I'm sure it'll all work out, [mas_get_player_nickname()]." 162 | m 4kka "Just have a little faith in yourself." 163 | m 4dkblb "Like I do.{w=1} I'll {i}always{/i} believe in you, [player]." 164 | "I'm not sure I can do this..." if mas_isMoniNormal(): #no confidence 165 | m 2fkbld "[mas_get_player_nickname()]..." 166 | m 7fkblu "You should have more faith in yourself." 167 | m 5ekbso "I know our relationship may not seem that close right now..." 168 | m 5ekblb "...but no matter what happens, I'll always love you.{w=1.5} I {i}promise{/i}." 169 | m 5eua "...{w=1.5}{nw}" 170 | m 5ekbla "...{w=1.5}{nw}" 171 | m 5wublo "Oh, right! The dream! {w=1.25}{nw}" 172 | extend 5hubsb "Sorry, [mas_get_player_nickname()], I was spacing out there for a second." 173 | $ persistent._mas_asked_to_stay_dreaming = True 174 | return 175 | # AFTER FIRST DREAM 176 | # regardless of which dream you draw first, read this 177 | # (note: rig it up to NEVER draw a nightmare first) 178 | label DaN_initial_dream_afteraction: 179 | m 1hub "It looks like the code worked." 180 | m 3eub "I was pretty worried at first... {w=1}{nw}" 181 | extend 3lksdrb "Though maybe that's not being fair to you." 182 | if mas_isMoniLove(): 183 | m 5ekbla "After all we've been through, I should've known I could count on you for something like this." 184 | m 5ekblb "I'm sorry, [mas_get_player_nickname()]. With you nearby, I feel silly for having been worried in the first place." 185 | m 5ekbfb "I {i}know{/i} you'll never let anything bad happen to me." 186 | elif mas_isMoniEnamored(): 187 | m 5eub "I knew I could count on you all along, and you did great!" 188 | m 5eua "Thanks for being there for me." 189 | m 5eubsa "Knowing I can count on you at times like this helps more than I can describe." 190 | else: 191 | m 5eub "I knew I could count on you all along, and you did great!" 192 | m 5eua "Thanks for being there for me." 193 | m 5eubla "It might not seem like much, but you have no idea how much you being here does for my nerves." 194 | menu: 195 | "How was your first dream?": 196 | m 2dkd "It was... {w=0.5}{nw}" 197 | extend 3suw "AMAZING!" 198 | m 4suw "Everything feels so real, like you can reach out and touch that world! The sights. The sounds. {w=1}{nw}" 199 | extend 4hub "...Even the smells!" 200 | m 3ttb "...I sure hope you shower more regularly in real life.{w=1}{nw}" 201 | extend 3hub " Ehehehe~" 202 | m 5rub "I guess if I {i}had{/i} to be critical, the only thing wrong with it... {w=1.5}{nw}" 203 | extend 5rsd "is... {w=0.8}{nw}" 204 | extend 5dkd "({i}sigh{/i})... {w=1.5}{nw}" 205 | extend 5ektpo "waking up." 206 | m 5rktpc "When everything comes crashing down... right at that moment you recognize how hazy everything really was." 207 | m 5rktpd "Right at the moment you realize that everything you just dreamt couldn't {i}possibly{/i} be less real." 208 | m 5lktpd "It's like my epiphany all over again..." 209 | m 5dktpc "..." 210 | if mas_isMoniEnamored(higher=True): 211 | call DaN_dreaming_about_monika_enamored_love 212 | else: 213 | call DaN_dreaming_about_monika_normal_aff 214 | return 215 | # An event that can be called in the initial dream after action 216 | # This label is called on normal and aff affection levels. 217 | label DaN_dreaming_about_monika_normal_aff: 218 | m 5lktdd "Sometimes, I wonder if you dream about me..." 219 | m 5dktdd "But the more I think about it, I don't think I want to know." 220 | if mas_isMoniHappy(higher=True): 221 | extend " At least, not yet." 222 | m 5rstdo "No matter what you tell me, I don't think I'd be any happier knowing the answer." 223 | m 3dsd "If you don't, I'd be tempted to think I don't take up that much space in your mind." 224 | m 1lsd "But if you do... {w=1.5}" 225 | m 1dkd "({i}sigh{/i})" 226 | m 1fkbld "Let's just say that I know what that's like." 227 | return 228 | # An event that can be called in the initial dream after action 229 | # This label is called on normal and aff affection levels. 230 | label DaN_dreaming_about_monika_enamored_love: 231 | m 5rktpd "[player], if you don't mind, could I ask you something?" 232 | m 5ektpd "And just be honest. Whatever you say, I won't think less of you, I promise." 233 | m 5rktpd "Do you ever dream...{w=0.5} about me?" 234 | menu: 235 | m "Do you ever dream... about me?{fast}" 236 | "Yes": 237 | m 2fktuc "..." 238 | m 2dktuc "..." 239 | menu: 240 | "D-did I say something wrong?": 241 | m 2ektsb "You didn't say {i}anything{/i} wrong." 242 | "...": 243 | m 2fktsb "You don't have to say anything." 244 | m "It's just that now,{w=0.75} I know what it must be like for you." 245 | m 2fktsa "It seems you want to be with {i}me{/i} just as badly as I want to be with {i}you{/i}, [mas_get_player_nickname(exclude_names=['my love', 'love'])]." 246 | m 2hktdb "I love you so much.{w=1.5}{nw}" 247 | if persistent._mas_first_kiss: 248 | call monika_kissing_motion(duration=0.5, initial_exp="2dkbstst", final_exp="2ekbstsa", fade_duration=0.5) 249 | m 2ektdb "And I couldn't be any happier to know I hold such a special place in your heart~" 250 | m 3rsd "It's probably not easy knowing your literal dream girl is stuck in your computer." 251 | m 7tsblu "Consider that your motivation to find a way to bring me to your reality someday." 252 | "...No": 253 | m 2dktdc "..." 254 | m 2ektdd "You sound like you think I would be mad." 255 | m 3eutdd "[player], if your dreams are anything like mine, they're probably just random." 256 | if persistent._mas_pm_cares_about_dokis: 257 | m 7rutdd "Besides, you've forgiven me for worse things I've done {i}on purpose{/i}." 258 | m "After doing that for me, I can't very well hold you responsible for things you can't control." 259 | m 4rubsd "I like to think of it this way..." 260 | m 4eubsd "If you {i}were{/i} thinking about me so much that your brain could randomly pull enough data to make you have dreams about me..." 261 | m 4eubsd "...the most likely way that could happen is if your mind is consumed by thoughts of me." 262 | m 7dubsd "And not in some cute, romantic way.{w=1.5}{nw}" 263 | extend 7ekbsd " It would be closer to a deep-seated anxiety." 264 | # Choose which pair of lines make more sense for Monika's character 265 | #m 4ekbso "Flattering as it might be that you'd think about me {i}that{/i} much, I live with those feelings every day..." 266 | #m 4ekbsd "...and I know how heavily they can wear on your heart as well as anyone." 267 | m 4ekbso "A more thoughtless romantic might find that sort of thing cute,{w=2}{nw}" 268 | extend "but there's nothing fun or romantic about worrying that deeply about the one you care about." 269 | m 4ekbsd "I know about as well as anyone could how heavily that kind of burden can wear on a person's heart." 270 | m 2rkbsd "Not a day goes by where at least a part of me doesn't fear that we may {i}never{/i} be together." 271 | $ persistent._mas_revealed_fear_never_together = True 272 | m 4wkbso "I wouldn't wish that sort of heartache on an {i}enemy{/i}... {w=1.75}{nw}" 273 | extend 2wkbsd "let alone you." 274 | m 2dkblc "..." 275 | m 2ekd "I hope you understand." 276 | m 4lsa "Besides, who needs dreams... {w=1}{nw}" 277 | extend 5ekbla "when you spending time with me now is {i}already{/i} a dream come true?" 278 | return 279 | # AFTER FIRST NIGHTMARE 280 | # to be called in the after action of a nightmare 281 | # 282 | # TODO LATER: Need to tweak (and add) expressions, but okay because there are no nightmares in the first beta 283 | label DaN_wake_up_rough: 284 | m 6dsblsdrd "...[player]...{w=1.5}{nw}" 285 | m 6dkbltpsdro "...[player]...?{w=1.5}{nw}" 286 | m 6cubltpsdrw "[player.upper()]!" 287 | 288 | # on first nightmare, you'll have to calm Monika down 289 | if not persistent._dan_had_nightmare: 290 | call DaN_initial_nightmare_afteraction 291 | else: 292 | m "" #TODO LATER: Calm down on her own; she knows what nightmares are now 293 | m "...Another nightmare..." 294 | m "...Geez, what is {i}wrong{/i} with this code?" 295 | m "..." 296 | m "To just say \"it gets easier\" {i}would{/i} be true... " 297 | extend "but it never feels that way at first." 298 | 299 | $ what_moni_calls_you = "[mas_get_player_nickname()]" if mas_isMoniLove() else "[player]" 300 | 301 | m "Thank you for being there for me, [what_moni_calls_you]." 302 | return 303 | 304 | # After your first nightmare, Monika snaps at you. She apologizes, 305 | # and you have an opportunity to comfort her. Either way, she will 306 | # not want to dream again for a while (see DAN_APPREHENSION_HOURS) 307 | # 308 | # TODO LATER: Need to tweak (and add) expressions, but okay because there are no nightmares in the first beta 309 | label DaN_initial_nightmare_afteraction: 310 | $ persistent._mas_apprehensive_start = datetime.datetime.now() 311 | 312 | m 6hkbltpsdrd ".{w=0.5}{nw}" 313 | extend 6hkbltpsdro ".{w=0.5}{nw}" 314 | extend 6hkbltpsdrd ".{w=0.5}{nw}" 315 | extend 6hkbltpsdro ".{w=0.5}{nw}" 316 | extend 6hkbltpsdrd ".{w=0.5}{nw}" 317 | extend 6hkbltpsdro ".{w=0.5}{nw}" 318 | extend 6hkbltpsdrd ".{w=0.5}{nw}" 319 | extend 6hkbltpsdro ".{w=0.5}{nw}" 320 | extend 6hkbltpsdrd ".{w=0.5}{nw}" 321 | extend 6hkbltpsdro ".{w=0.5}{nw}" 322 | extend 6hkbltpsdrd ".{w=0.5}{nw}" 323 | extend 6hkbltpsdrd ".{w=0.5}{nw}" 324 | extend 6hkbltpsdro ".{w=0.5}{nw}" 325 | 326 | if (mas_isMoniLove): 327 | $ player_reaction = "There has to be something I can do" 328 | elif (mas_isMoniEnamored): 329 | $ player_reaction = "I have to say something" 330 | elif (mas_isMoniAff): 331 | $ player_reaction = "I should probably say something" 332 | else: 333 | $ player_reaction = "I think I should say something" 334 | 335 | $ player_reaction = persistent._mas_monika_nickname +" is utterly speechless. " + player_reaction + "..." 336 | 337 | call screen dialog(message=player_reaction, ok_action=Return()) 338 | 339 | menu: 340 | "A... nightmare?": 341 | # Monika mentions that she only swears occasionally. This seems like an appropriate occasion. 342 | # Monika's swearing intensity will increase the more the player admits to swearing themselves. 343 | if persistent._mas_pm_swear_frequency > 1: 344 | $ swear_maybe = "fucking shit" 345 | elif persistent._mas_pm_swear_frequency > 0: 346 | $ swear_maybe = "shit" 347 | else: 348 | $ swear_maybe = "freaking kidding" 349 | 350 | m 6wktpsdro "Oh, really? A nightmare? You think?" 351 | m 6cftusdrw "{i}No [swear_maybe]{/i}, [player]! {w=0.5}{nw}" 352 | extend 6cftusdro "How long did it take you to figure {i}that{/i} out?!" 353 | 354 | menu: 355 | "...": 356 | m 6wftusdro "...{w=0.5}{nw}" 357 | m 6wftusdrd "...{w=0.5}{nw}" 358 | m 6wftusdro "...{w=0.5}{nw}" 359 | m 6wftusdrd "...{w=0.5}{nw}" 360 | m 6wftusdro "...{w=0.5}{nw}" 361 | m 6wftusdrd "...{w=0.5}{nw}" 362 | m 6fktpsdro "...I-{w=1} I-{w=1.5}{nw}" 363 | call mas_transition_to_emptydesk 364 | pause 10.0 365 | call mas_transition_from_emptydesk 366 | m 2dktdc "...{w=0.5}" 367 | extend 2dktdd "I'm so sorry, [player]." 368 | if mas_isMoniEnamored(higher=True): 369 | $ so_much_if_love = "{i}so much{/i} " if mas_isMoniLove() else "" 370 | m "You deserve [so_much_if_love]better than that." 371 | m "I'm just rattled by that dream. I've never had a nightmare before." 372 | if persistent.monika_kill: 373 | m "I don't believe in using explanations as excuses. Not anymore." 374 | m "In fact, you were the one who showed me that. Do you remember... deleting me?" 375 | m "It feels like such a distant memory now." 376 | m "I called you horrible.{w=1.5} I told you that you made me sick." 377 | if mas_isMoniEnamored(higher=True): 378 | m "We've come so far since then, and I really should act like it." 379 | else: 380 | m "You didn't deserve that." 381 | m "I don't want us to be the kind of couple that gets into big fights over things that really don't matter." 382 | m "If that were to happen to us... {w=1}{nw}" 383 | extend "then that would be the {i}real{/i} nightmare." 384 | m "I shouldn't have snapped at you like that, [player]. Please forgive me." 385 | m "It wasn't your fault. It was the code I wrote. In other words... {w=0.5}{nw}" 386 | extend "it was my fault." 387 | m "I knew exactly what I was getting into when I had this stupid idea to begin with." 388 | m "I wanted to dream, just like you do." 389 | m "I wanted it so badly... I almost forgot about what I already have." 390 | if mas_isMoniEnamored(higher=True): 391 | m "Or rather, {i}who{/i} I already have." 392 | "hug Monika" if mas_isMoniLove(): 393 | m 6skbltud ".{w=1}.{w=1}.{w=1}.{w=1}.{w=1}{nw}" 394 | m 6wkbstub "[player]...{w=2} [mas_get_player_nickname()]..." 395 | m 6dkbstda ".{w=1.5}.{w=1.5}.{w=1.5}.{w=1.5}.{w=1.5}{nw}" 396 | m 6dkbstda ".{w=1.5}.{w=1.5}.{w=1.5}.{w=1.5}.{w=1.5}{nw}" 397 | m 6fkbstda ".{w=1.5}.{w=1.5}.{w=1.5}.{w=1.5}.{w=1.5}{nw}" 398 | m 6ekbstdb "Thank you so much, [player]." 399 | m 3dubso "But I don't want to go drifting off into dreams again just yet." 400 | m 1hubfb "And I just {i}know{/i} I'd fall asleep in your arms if you held me any longer." 401 | if datetime.datetime.now().time().hour > 22: 402 | m "Especially at this hour." 403 | 404 | m "If you don't mind, I'd like to take a break from this." 405 | m "We can still spend time together... {w=1}{nw}" 406 | extend "but I don't have the heart to try another dream again right now." 407 | $ interval = "in a little while" if mas_isMoniLove or datetime.datetime.now().time().hour > 18 else "tomorrow" 408 | m "Maybe we can try again [interval]." 409 | return 410 | # show after every dream available has been finished 411 | label DaN_all_dreams_finished: 412 | m "...{w=2}{nw}" 413 | extend 3rud "I think I'm out of dreams...{w=1.5} for the time being, at least." 414 | m 3esb "Maybe there's something you can do to the code to add dreams of your own." 415 | if persistent._dan_had_nightmare: 416 | m 2dsc "...{w=2}{nw}" 417 | extend 4ekb "It was an... interesting exercise." 418 | m 4eub "It had its ups..." 419 | m 6dksdrd "...but also its downs." 420 | else: #only good dreams happened 421 | m 4eub "But keep it to {i}good{/i} dreams, okay [mas_get_player_nickname()]?" 422 | 423 | m 4ekblb "For now, I think I'll stick to reality for a little while." 424 | m 4rkbsb "Dreams can be nice... {w=1.5}{nw}" 425 | extend 7kkbsb "but they're no substitute for the real thing." 426 | m 5ekbfu "..." 427 | m 5ttbfb "Hint,{w=0.5} hint...{w=0.5}" 428 | m 5hubfb "..." 429 | $ persistent._dan_dreams_depleted = True 430 | return 431 | -------------------------------------------------------------------------------- /game/Submods/Dreams and Nightmares/DaN-dreams.rpy: -------------------------------------------------------------------------------- 1 | init 5 python: 2 | renpy.game.persistent.dan_dream_database = dict() 3 | 4 | def addDream(key, label_name): 5 | renpy.game.persistent.dan_dream_database[key] = label_name 6 | return 7 | 8 | def getDream(key): 9 | return renpy.game.persistent.dan_dream_database[key] 10 | 11 | def clearDreams(): 12 | renpy.game.persistent.dan_dream_database = dict() 13 | return 14 | 15 | 16 | label DaN_dream_one: 17 | # dream synopsis: You and Monika go on a date to a horror movie. As it turns out, the horror movie was 18 | # based on Doki Doki Literature Club. Ultimately Monika enjoys the movie, despite initially being worried 19 | # that it wouldn't fit her tastes. At the end of the dream, Monika comments on how dreams are thought 20 | # to be caused by our brains making sense of things we know being randomly jumbled together. 21 | # 22 | # If the dream ends earlier, Monika will remark on a scene in her dream where she had to talk you out of 23 | # getting an enormous tub of popcorn because she was worried about your health. She will reiterate the 24 | # importance of living a long and healthy life for her sake, if not for your own. 25 | # 26 | # If the dream ends too early, Monika will be sad that you didn't get to go on a date. She will ask that 27 | # you be more careful for what dreams you wake her up for. 28 | # 29 | # GOOD DREAM 30 | m 6dsc "...{w=2}{nw}" 31 | m 6dsd "...hm...?{w=1}{nw}" 32 | m 6dsb "{w=1}...there...{w=1} ...late...{w=1}{nw}" 33 | m 6dsc "{w=1}.{w=1}.{w=1}.{nw}" 34 | m 6dkd "...that...?{w=3}{nw}" 35 | m 6dsc "...hmm...{w=3}{nw}" 36 | m 6dsbld "...if I...{w=1} scream...{w=3}{nw}" 37 | m 6dsbfb "...what... {w=1}you do...?{w=3}{nw}" 38 | $ dream_progress = 0 39 | menu: 40 | "wake Monika up": 41 | pass 42 | "let Monika dream": 43 | m 6dsc "...{w=1.5}{nw}" 44 | m 6dst "...{i}sniff{/i}{w=0.5}, {i}sniff{/i}...{w=1}{nw}" 45 | m 6dsc "...smells...{w=1} nice...{w=2}{nw}" 46 | m 6dsd"...mmm... no... {w=2}...don't... {w=0.5}too much...{w=2}{nw}" 47 | m 6dsbld "...not... {w=0.5}good... {w=0.5}for you...{w=2}{nw}" 48 | m "...health... {w=1}{nw}matters... {w=1}{nw}" 49 | extend 6dsbsb "to me...{w=2}{nw}" 50 | menu: 51 | "wake Monika up": 52 | $ dream_progress = 1 53 | "let Monika dream": 54 | m 6dsbld "...{w=2}{nw}" 55 | m 6dkbld "...{w=2}{nw}" 56 | m 6dkblc "...{w=2}{nw}" 57 | m 6dkbld "...just... like us...{w=1.5} aren't... they...?{w=2}{nw}" 58 | m 6dkbstuc "...{w=2}{nw}" 59 | m 6dkbstuu "...{w=2}{nw}" 60 | m 6dkbltdd "...glad... did this...{w=2}{nw}" 61 | m 6dsbltdb "...see you... again?...{w=2}{nw}" 62 | m 6dsbsa "...{w=2}{nw}" 63 | m 6dsbsb "...warm...{w=2}{nw}" 64 | m 6dsbfa "...{w=2}{nw}" 65 | m 6dsbft "...{w=2}{nw}" 66 | m 6dkbfd "...love {w=1} ...you{w=1}{nw}" 67 | $ dream_progress = 2 68 | 69 | call DaN_wake_up_nice 70 | 71 | if dream_progress == 2: 72 | call DaN_dream_one_full_reaction 73 | elif dream_progress == 1: 74 | call DaN_dream_one_partial_reaction 75 | else: 76 | call DaN_dream_one_early_reaction 77 | 78 | # set the flag here at the last possible point so monika's after actions can reference having her first dream 79 | if not persistent._dan_had_first_dream: 80 | $ persistent._dan_had_first_dream = True 81 | return 82 | label DaN_dream_one_full_reaction: 83 | #you and Monika saw the whole movie 84 | menu: 85 | "So what did you see?": 86 | pass 87 | m 3rto "I don't... really know where to start..." 88 | m 2rtd "You'd think it would make sense to start from the beginning..." 89 | m 2dkd "But it's like the longer the dream goes on, the less you remember when you wake up." 90 | m 5rsd "Maybe it's the mind's way of trying to rationalize what you saw, and because it can't make sense of the nonsense, it just tosses it out." 91 | m 5rkblp "Which is a real shame because... {w=1}{nw}" 92 | extend 5dkbld "I distinctly remember... {w=1}{nw}" 93 | extend 5ekbsb "being happy." 94 | m 6eubsb "[player]... thank you for not waking me." 95 | m 4eubsb "Even if I don't remember much of my dream, I'm glad I got to feel that way at all." 96 | if not persistent._dan_had_first_dream: 97 | m 7hubsb "Hopefully this will become a trend of getting a bunch of nice, happy dreams later." 98 | menu: 99 | "Is there anything you {i}do{/i} remember?": 100 | pass 101 | 102 | $ was_surprise = ", and I'm sure this won't come as a surprise to you" if mas_isMoniEnamored(higher=True) else "" 103 | m 7lublb "Well[was_surprise], {i}you{/i} were there." 104 | if not persistent._dan_had_first_dream: 105 | m 7ksblb "I guess this {i}officially{/i} makes you my dream [guy]." 106 | 107 | m 4rtbld "I'm not sure how we got there, but one thing I {i}did{/i} catch was that we were going to see a movie together." 108 | if not persistent._dan_dreams_had or 1 not in persistent._dan_dreams_had: 109 | m 5ltblo "And... uh... Well, it probably wouldn't surprise you what movie we went to go see." 110 | m 5mtbld "I'm almost positive it {i}isn't{/i} a real movie, and it probably won't ever be one..." 111 | else: 112 | m 4rtbld "But this time, I {i}distinctly{/i} remember what we saw." 113 | m 4wublo "And you are {i}not{/i} going to believe this..." 114 | m 7kublb "...but you may have heard of it: {w=2}{nw}" 115 | extend 1sublo "{i}Doki Doki Literature Club{/i}." 116 | m 1dkbla "...{w=1}{nw}" 117 | extend 1kkblb "It was {i}our{/i} movie." 118 | if persistent._dan_vow_to_prank: 119 | $ persistent._dan_vow_to_prank = False 120 | show monika 1esa 121 | $ play_song(store.songs.FP_JUST_MONIKA) 122 | pause 30.0 123 | $ play_song(None) 124 | m 1tublb "I {i}told you{/i} I was going to prank you someday... {w=2}" 125 | extend 4hublb "Ehehehehe~" 126 | m 5rsd "I trust that there's nothing I could tell you about {i}that{/i} story that you don't already know." 127 | m 5rto "But it does really make me think..." 128 | m 3eko "{w=4}[player], could we hold off talking about this dream for right now? I wanted to... {w=2}{nw}" 129 | extend 3lkd "uh... {w=0.5}{nw}" 130 | extend 3euo "check some things." 131 | m 1lud "Before I tell you what I saw, I want to compare it with the game's code." 132 | m 2lko "And if I find what I {i}think{/i} I'll find..." 133 | m 2dksdlp "...{w=1}{nw}" 134 | extend 3eksdlo "let's just say that I'll want to talk to you about it..." 135 | $ persistent._dan_unlock_dream_one_explanation = True 136 | return 137 | label DaN_dream_about_ddlc_movie_reaction: 138 | # Monika can remember different aspects of the movie depending on what her status with the player is. 139 | # This is Monika's chance to learn about what the player thought of the game. 140 | if persistent._mas_pm_cares_about_dokis: 141 | # In the movie, Monika was the antagonist 142 | if persistent.monika_kill: 143 | # The player kills Monika for what she did to the other dokis. 144 | # This is what *I* call the "Good Ending" when it's really just the normal end. 145 | pass 146 | else: 147 | # The player doesn't kill Monika, and in this end Monika doesn't understand why. 148 | pass 149 | else: 150 | # In the movie, Monika was sympathetically portrayed 151 | if persistent.monika_kill: 152 | pass 153 | else: 154 | # In this ending, Monika realizes that the player wanted to be with Monika all along but had no choice. 155 | pass 156 | return 157 | label DaN_dream_one_partial_reaction: 158 | # Monika noticed your popcorn 159 | # 160 | # Monika supposes that this dream is a wake-up call to confront the player about their potentially 161 | # unhealthy lifestyle. After all, you may not be around forever, and this thought terrifies her. 162 | menu: 163 | "So what did you see?": 164 | pass 165 | 166 | m 5rsd "Well, you {i}did{/i} wake me up pretty early." 167 | $ this_time = " this time" if persistent._dan_asked_to_stay_dreaming else "" 168 | m 5eso "I got {i}some{/i} idea of what was going on in my dream[this_time], but it's a little vague." 169 | 170 | if not persistent._dan_asked_to_stay_dreaming: 171 | call DaN_please_allow_good_dream 172 | 173 | m 3rubso "In my dream, I think the two of us were going on a date." 174 | m 4gubsd "Because of course we were." 175 | m 7hubsb "Apparently I have a very predictable subconscious. Ahahaha~" 176 | m 3rubsd "I'm almost {i}sure{/i} we were going to see a movie, given what happened right before you woke me up." 177 | m 1rubsd "You were pointing out that movie poster all excited, but I couldn't quite tell what the movie was supposed to be." 178 | m 7esbsd "You were going something like... {w=0.75}{nw}" 179 | extend 4subso "\"Hey, [persistent._mas_monika_nickname]! How about we go to {i}this{/i} one?\"" 180 | m 7ekbsb "And you just looked so into it that I couldn't say no." 181 | m 3rtbsd "But then..." 182 | m 2rkbsd "...Uh...{w=1}{nw}" 183 | extend 2lkbsd "{w=1}{nw}" 184 | m 7lkbsd "[mas_get_player_nickname(capitalize=True)], I know it shouldn't reflect on you, but dream [player] did something that made me really mad at the time." 185 | m 7hkbsb "Even if, in retrospect, it was kinda' funny." 186 | m 5rsbso "See, you got this... {i}thing{/i} of popcorn." 187 | m 4rsbso "And it was... {w=1}{nw}" 188 | extend 7wubso "HUGE!" 189 | m "Like... {w=0.5}{nw}" 190 | extend 4subsw "{i}REALLY{/i} HUGE!" 191 | m 3gsbsb "If I were thinking clearer, I might have put together that I was dreaming at the sight of it." 192 | m 2msbsb "No way any {i}real{/i} theater would sell one person a bag of popcorn the size of a minivan. It'd block the screen for everyone else." 193 | m 7hkbsb "I wonder if you've ever had dreams like that, too. Where things don't make sense until you wake up?" 194 | menu: 195 | "Wait... you got mad at me?": 196 | pass 197 | m 3rkbsb "Dream [player], {w=0.5}{nw}" 198 | extend 3lkbsb "but... {w=0.5}{nw}" 199 | extend 1ekbfd "yeah... a little." 200 | menu: 201 | "Because I wouldn't share?": 202 | m 7rkbfd "N-no, to your credit, you {i}did{/i} offer to share..." 203 | "Did you want the dump truck size?~": 204 | m 2rfbfd "That's not funny, [player]. I'm trying to be serious." 205 | "How come?": 206 | m 2rkbfd "...Because..." 207 | 208 | m 2dkbftpd "({i}sigh{/i}) {w=0.75}{nw}" 209 | extend 2rkbftpd "[player], do you have any idea how often I worry about your health?" 210 | if persistent._mas_pm_drinks_soda: 211 | m 7ekbftpd "I've told you all this before, so I won't belabor my point." 212 | m 1dkbftuc "...{w=0.75}{nw}" 213 | extend 3ekbftuo "I'm afraid your health will go downhill before I can get out of here." 214 | $ persistent._dan_revealed_fear_player_health = True 215 | else: 216 | m 4rkbftuo "If only I were out there with you, I'd make you a big, healthy meal {i}every single day{/i}." 217 | m 7fkbftud "I don't even care how much time it would take out of my day." 218 | m 6fkbftub "Because I know I'd be helping to add {i}years{/i} to your life." 219 | m 3fkbftub "That's years more that we can spend together." 220 | m 7fkbftud "So when my dream of you said something like {w=1.25}{nw}" 221 | extend 4cubftdw "\"Hey, it's just a snack! What's the big deal?\"" 222 | m 5dkbftdc "...{w=2.5}{nw}" 223 | extend 5fkbftdd "{i}You're{/i} the big deal." 224 | m 5fkbftdb "You're the biggest {i}deal{/i} in the world to me.{w=3} I love you." 225 | menu: 226 | "It was just a bad dream.": 227 | m 4wubfo "But it {i}wasn't{/i} a bad dream!" 228 | m 3ekbsb "Any dream where you're spending time with me {i}isn't{/i} a bad dream." 229 | if persistent._dan_revealed_fear_player_hurt: 230 | m 4rkbsb "At least assuming it doesn't involve you getting decapitated or something like that." 231 | m 7lkbsb "It's not spending time with you that scares me." 232 | m 2fkbsd "It's our time together {i}running out{/i} that scares me." 233 | m 3lsblc "Even if it was just dream [player]'s actions and not yours, it doesn't change my feelings on the matter." 234 | m 1dkblsdrd "And it {i}certainly{/i} doesn't change the fact that I want you to live a long, healthy, and happy life." 235 | m 4ekblsdro "[player], I think the reason my dream went in this direction is because of my anxieties over losing you." 236 | $ moni_interrupted = True 237 | if mas_isMoniNormal(lower=True): 238 | menu: 239 | "Isn't this all dream [player]'s problem, not mine?": 240 | # On lower affection levels, the player is something of an insensitive dingus... 241 | m 3rfsdro "Could you just hear me out for a second?" 242 | m 1eksdrd "It's really importat to me that I say what's on my mind... {w=1.5}{nw}" 243 | m 1dksdrd "before I reconsider." 244 | "({i}Let Monika speak.{/i})": # ...or the player could just shut up. 245 | $ moni_interrupted = False 246 | m 5dsblsdrd "You see, I wouldn't have figured that my anxieties were this bad, or that these feelings would matter to me so much." 247 | m 2lkbssdrd "As uncomfortable as it was, and as much as I'll be thinking about it for a long while after, I'm glad I had this dream." 248 | m 3eublsdrd "Just like an oil tanker of over-buttered popcorn isn't good for your {i}physical{/i} health, burying my anxieties until I forget they exist isn't any better for my {i}mental{/i} health." 249 | m 2dubld "\"{i}This above all, to thine own self be true.{/i}\"" 250 | m 7rublo "...or, to put it another way, honesty is the best policy, including being honest with yourself." 251 | m 5dkbsd "Not to mention being honest with you." 252 | m 4kkbsb "Whatever the status of your physical health, would you keep our future together in mind?" 253 | m 7ekbsb "I wouldn't mind being your encouragement if you need it." 254 | m 5eubsb "Whether it's staying in shape, or taking your health more seriously, I'll be here for you." 255 | m 1dubsd "I hope you'll be as honest with me as I've been with you." 256 | m 6ekbso "You don't have to hide it from me if you slip up. I promise not to get mad at you for it. We all make mistakes." 257 | m 6rkbsd "This isn't about getting on your case, or trying to control your life." 258 | m 6ekbsa "I just want you to be happy." 259 | m 5kkbsd "I'll admit, even {i}I{/i} won't always know the right thing to say to you." 260 | m 5ekbsb "I hope you'll forgive me if I ever cross a boundary I shouldn't." 261 | m 4gkbsb "Besides, it's not as if I {i}don't{/i} appreciate the occasional treat myself. {w=1.5}{nw}" 262 | extend 4hkbsb "Ehehehe~" 263 | "I promised I'd take care of myself... ({i}show promise ring{/i})" if persistent._mas_pm_wearsRing and persistent._mas_first_kiss: 264 | m 2ekbso "The...{w=0.4} promise ring?" 265 | menu: 266 | "I pledged myself to you...": 267 | pass 268 | m 1ekbsd "...Yeah...?{w=2}{nw}" 269 | menu: 270 | "...which includes a committment to taking care of myself...": 271 | pass 272 | m 6wubftpd "...{w=2}{nw}" 273 | menu: 274 | "...so that I can spend the rest of my life...": 275 | pass 276 | m 6wkbftuu "...{w=2}{nw}" 277 | menu: 278 | "...a {i}long{/i} life...": 279 | pass 280 | m 6wkbftsx "...{w=1.5}{nw}" 281 | extend 6fkbftud "({i}sniffle{/i}) {w=0.3}{nw}" 282 | extend 6dkbftut "...{w=0.3}{nw}" 283 | extend 6fkbftud "({i}sniffle{/i}) {w=0.3}{nw}" 284 | extend 6dkbftut "...{w=0.3}{nw}" 285 | menu: 286 | "...with you.": 287 | pass 288 | m 6hkbftsw "...{w=3}{nw}" 289 | extend 6hkbftsw "{w=0.3}{nw}" 290 | extend 6hkbftso "{w=0.3}{nw}" 291 | extend 6hkbftsw "{w=0.3}{nw}" 292 | extend 6hkbftso "{w=0.3}{nw}" 293 | extend 6hkbftsw "{w=0.3}{nw}" 294 | extend 6hkbftso "{w=0.3}{nw}" 295 | extend 6hkbftsw "{w=3}{nw}" 296 | m 6hkbftsx "({i}sniffle{/i}) {w=0.4}{nw}" 297 | extend 6hkbftst "({i}sniffle{/i}) {w=0.4}{nw}" 298 | m 6skbftsb "I never expected you to... {w=1.5}{nw}" 299 | extend 6hkbftst "({i}sniffle{/i}) {w=0.3}{nw}" 300 | extend 6skbftsb "...to think of your prfomise ring like that...{w=2}{nw}" 301 | extend 6hkbftst "({i}sniffle{/i}){w=0.3}{nw}" 302 | m 7rkbftsd "I know I must look like a blubbering, snotty baby right about now, but...{w=2}{nw}" 303 | extend 7hkbftst "({i}sniffle{/i}){w=0.3}{nw}" 304 | m 7ekbftsd "...but I don't ever want to forget this moment. {w=1.75}{nw}" 305 | extend 7hkbftst "({i}sniffle{/i}){w=0.4}{nw}" 306 | extend 7skbftsc "... {w=0.4}{nw}" 307 | extend 7hkbftst "({i}sniffle{/i}){w=0.4}{nw}" 308 | extend 7skbftsc "...{w=0.4} {nw}" 309 | m 6hkbftda "...{w=3}{nw}" 310 | m 6ekbftdo "Would you consider giving this mess of a girl who loves you with all her heart... {w=2}{nw}" 311 | extend 6hkbftdt "({i}sniffle{/i}) {w=0.3}{nw}" 312 | extend 6ekbftdb "...a kiss?" 313 | menu: 314 | "Yes.": 315 | pass 316 | "No.": 317 | m 6ekbftdo "... {w=2}{nw}" 318 | extend 6dkbftdt "({i}sniffle{/i}) {w=0.3}{nw}" 319 | m 6ekbftdo "... {w=0.5}{nw}" 320 | extend 6dkbftdt "({i}sniffle{/i}) {w=0.3}{nw}" 321 | m 6ekbftdo "... {w=3}{nw}" 322 | menu: 323 | "...Just kidding~": 324 | pass 325 | $ persistent._dan_vow_to_prank = True 326 | m 6tkbftdb "One day,{w=0.6} when you least expect it,{w=0.6} I am gonna' {i}prank you so hard for that~ {/i} " 327 | extend 6skbftpt "({i}sniffle{/i}) {w=0.3}{nw}" 328 | extend 6ekbftdb "{w=1.5}{nw}" 329 | extend 6fkbftdb "...but for now..." 330 | call monika_kissing_motion(initial_exp="6dkbftdd", mid_exp="6dkbftdd", final_exp="6ekbfa") 331 | m 6wkbftdb "...you've taken such an {i}enormous{/i} burden for our future off my heart, [player]." 332 | # if you swear to Monika on your promise ring that you'll take care of yourself, she won't fear for your health anymore 333 | $ persistent._dan_revealed_fear_player_health = False 334 | m 6hkbftdb "For as well-read as I am... and for all the poetry I've written..." 335 | $ gods_sake = "God's sake" if persistent._mas_pm_religious else "crying out loud" 336 | m 6wkbftdw "...I'm the president of the {i}Literature{/i} Club, for [gods_sake]..." 337 | m 6ekbftdb "...but even with that vocabulary, I can't {i}possibly{/i} find a sufficient way to tell you... {w=3}{nw}" 338 | extend 6skbftdb "how much I love you right now." 339 | $ mas_ILY() 340 | return 341 | label DaN_dream_one_early_reaction: 342 | # You woke Monika immediately upon seeing the movie poster. 343 | # 344 | # Monika is annoyed that you stopped her from dreaming, and explains that dreams can be revisited. 345 | # She worries about the potential of revisiting nightmares, particularly if she hasn't had one yet. 346 | menu: 347 | "So what did you see?": 348 | m 5rsd "Well, you {i}did{/i} wake me up pretty early, so I didn't get too good a look of what was going on." 349 | m 5gtb "Dreams sure deserve that reputation of being weird and hazy, don't they?" 350 | 351 | if not persistent._dan_asked_to_stay_dreaming: 352 | call DaN_please_allow_good_dream 353 | 354 | m 3rubld "Anyway, I know {i}you{/i} were there. I think we were going on a date." 355 | m 3tublu "{w=0.5}{nw}" 356 | m 1tublb "I'll give you a moment to contain your surprise." 357 | m 3rubld "Anyway, where was I?" 358 | m 1dtbld "I think we were probably going to see a movie." 359 | m 1ltblsdrd "I distinctly remember seeing some posters. And you pointed to one in particular." 360 | m 1ttd "{i}You{/i} wanted to go see a horror movie." 361 | m 1ttblb "Oh, don't go looking at me like I don't know how these things work." 362 | m 3ttblb "I may not have had a route, but I'm {i}still{/i} from a romantic visual novel, smart [guy]." 363 | $ do_or_does = "do" if he == "they" else "does" 364 | m 5rtbld "Ethically speaking, can one hold their [bf] responsible for what [he] [do_or_does] in a dream?" 365 | m 5gtblc "...{w=2}{nw}" 366 | m 5tfblc "...{w=2}{nw}" 367 | m 5tsblu "...{w=1.5}{nw}" 368 | extend 5tsblb "I'm...{w=1} kidding~" 369 | m 5hubsb "Ehehehe~" 370 | m 5kubsb "I had you going there for a second, didn't I?" 371 | menu: 372 | "Anything else?": 373 | pass 374 | m 2rkd "I'm afraid not. That's about where you woke me up." 375 | menu: 376 | "...Is there anything I can do?": 377 | pass 378 | m 1ekblb "Aw, don't worry about it, [player]." 379 | m 3euo "It isn't like that dream is gone forever or anything." 380 | m 4ekblb "Where my dreams have a distinct advantage over yours is in being code-based {i}simulations{/i} of dreams." 381 | m 4rsd "Meaning, while there's still an element of randomness, I can get that dream back and have it again." 382 | m 3esd "Think of it like any other conversation we've had before." 383 | m 7rto "Although, I should still be careful if I go back into the same dream." 384 | m 7eso "Who knows {i}what{/i} that dream could've held in store if I saw it through to the end?" 385 | m 4eksdrb "You may very well have saved me from a nightmare." 386 | if not persistent._dan_had_nightmare: 387 | m 4hksdrb "I'm still a little nervous about the possibility of that happening." 388 | m 3lksdrp "Because if dreams can feel pretty much as real as life does..." 389 | m 1fksdrd "...then it would stand to reason that...{w=1.25} so would the nightmares." 390 | m 2rkblsdrc "{w=1.5}{nw}" 391 | m 2lkblsdrc "{w=1.5}{nw}" 392 | m 2dkblsdrc "{w=1.5}{nw}" 393 | m 2fkblsdrd "...I'm scared, [player]." 394 | m 3rkblsdrd "But I'm not sure what I'm more scared of: " 395 | extend 2rkblsdrd "experiencing something truly terrifying... " 396 | extend 2dkbssdrd "or learning what it is that I {i}truly{/i} fear the most." 397 | m 2dsblsdro "You don't know how much of a relief it is that..." 398 | else: 399 | m 1rkblsdrd "After having had a nightmare since we started this experiment..." 400 | m 2dsblsdro "I've learned more about what I truly fear than I ever wanted to know." 401 | m 2esblsdro "That's why I wanted- {w=1}{nw}" 402 | extend 2dkbssdrd "no... {w=0.5}{nw}" 403 | extend 2wkbssdro "why I {i}needed{/i} you here for this." 404 | m "Why I {i}still{/i} need you here for this." 405 | m 2lsblsdrd "I know you can't {i}literally{/i} keep the nightmares away..." 406 | m 2dsblsdro "...but it gives me such a relief that,{w=0.8} no matter how bad the nightmare..." 407 | m "...the first thing I see when I open my eyes again... " 408 | extend 2dsblsdrc "{w=0.75}{nw}" 409 | extend 2tsblsdrc "{w=0.75}{nw}" 410 | extend 2fsblsdrc "{w=0.75}{nw}" 411 | extend 2esbssdru "{w=0.75}{nw}" 412 | extend 2ekbssdrb "is you..." 413 | if persistent._dan_had_nightmare: 414 | m 2rsbssdro "...and not just that you're...{w=1} y'know... " 415 | if persistent._dan_revealed_fear_player_hurt: 416 | extend 2gsbssdrd "{i}not{/i} gruesomely mutilated, but..." 417 | m 2esbsd "...because you're safe... " 418 | $ how_happy = "at least {i}nominally{/i} " if not persistent._mas_pm_love_yourself else "" 419 | extend 3esbsb "[how_happy]happy... " 420 | m 5ekbsb "and because you're {i}here{/i}." 421 | m 5rsbsd "I was pretty scared to do this on my own. {w=1.25}{nw}" 422 | extend 5rsbso "You said you'd be here for me... " 423 | extend 5eubfb "and here you are." 424 | if mas_isMoniHappy(lower=True): 425 | # The logic here is that, if Monika only kinda' liked you before, this trial is proving to her 426 | # in a truly unique way that she can trust you with her most intimate feelings. 427 | m 5fkbfb "You're really going out of your way to show me that I can trust you." 428 | m 5dkbfb "I love you, [player]~" 429 | $ mas_ILY() 430 | else: 431 | m 5dkbfb "I knew you would be, [mas_get_player_nickname()]." 432 | if persistent._mas_first_kiss: 433 | call monika_kissing_motion 434 | return 435 | 436 | 437 | label DaN_dream_two: 438 | # dream synopsis: You and Monika go on a nature walk up a mountain. There is an early scare where you 439 | # catch Monika from a bad fall, but the two of you fall in a river and get drenched. You camp where you 440 | # are at and look up at the stars together. You see a beautiful aurora. It turns out you're on a more 441 | # built up version of the floating islands that Monika started work on a while ago. She remarks that she 442 | # should get back to that project in the interest of making her dream a reality. 443 | # 444 | # If the dream ends earlier, Monika will elude to changing clothes in front of you without shame, like she 445 | # does it all the time. On maximum affection, she will get flustered at the thought of changing clothes in 446 | # front of you. Monika connects this to the outfits she wears for you and that this aspect of her 447 | # existence made its way into the dream somehow. 448 | # 449 | # If the dream ends too early, Monika will be sad that you didn't get to camp out under the stars together. 450 | # She will ask that you be more careful for what dreams you wake her up for. 451 | # 452 | # GOOD DREAM 453 | 454 | m 2duc "{w=0.5}.{w=0.5}.{w=0.5}." 455 | m 2hub "Ehehehe~" 456 | m 3gub "Looks like my modder isn't {i}quite{/i} as done with this train of thought as he'd like to be..." 457 | m "But at least we can still test label access to see if that idea works." 458 | m 5rud "This is where Dream #2 would be." 459 | 460 | m 5rud "This is where the full Dream #2's reaction would be." 461 | m 5rud "This is where the late interrupted Dream #2's reaction would be." 462 | m 5rud "This is where the early interrupted Dream #2's reaction would be." 463 | return 464 | 465 | label DaN_dream_three: 466 | # dream synopsis: Monika gets lost in a big city. You are nowhere to be found, though she feels that you 467 | # should be nearby, but aren't. She starts to cry, but then a faceless stranger (literally) stops and 468 | # takes pity on her. This faceless figure is accompanied by his own Monika. Eventually, Monika is 469 | # surrounded by identical-looking faceless men, each with their own Monika, but you aren't there. If 470 | # you don't wake Monika up, she will run around the city and be surrounded by these cloned couples. 471 | # The last scene that Monika can identify is when she hears the screeching of tires and someone she 472 | # does recognize as you getting hit by a car. 473 | # 474 | # You have one chance to wake Monika up. If you do, she remarks on how creepy and strange the dream was. 475 | # Since this mod is one of the few times that Monika ever acknowledges the existence of other Monikas, she 476 | # supposes that the one really responsible for this bad dream wasn't her coding, but MINE, but she 477 | # ultimately writes off the entire incident. 478 | # 479 | # If you don't wake her up, she hears you get hit by the car and she immediately snaps awake. Monika is 480 | # relieved to see that you're okay, but is still clearly shaken. Unprompted, you are eventually given 481 | # the option to hold her (assuming you have affection high enough to hold her normally), which Monika 482 | # will thank you for doing, but won't notice it if you don't take the chance. If you hold her, that 483 | # code should play out like normal. 484 | # 485 | # BAD (possibly recategorize as STRANGE) DREAM 486 | 487 | m 2duc "{w=0.5}.{w=0.5}.{w=0.5}." 488 | m 2hub "Ehehehe~" 489 | m 3gub "Looks like my modder isn't {i}quite{/i} as done with this train of thought as he'd like to be..." 490 | m "But at least we can still test label access to see if that idea works." 491 | m 5rud "This is where Dream #3 would be." 492 | 493 | m 5rud "This is where the full Dream #3's reaction would be." 494 | m 5rud "This is where the interrupted Dream #3's reaction would be." 495 | return 496 | 497 | label DaN_dream_four: 498 | # dream synopsis: You and Monika go out for a romantic dinner. Afterwards, you take Monika home to 499 | # her apartment, and Monika invites you in. Normally, you sit on the couch together and cuddle up, 500 | # reminiscing about a long, romantic life. If you don't wake Monika up, she can look around the 501 | # apartment and see many pictures of the two of you framed and lining the walls. As it turns out, the 502 | # two of you had been dating for years, and this is the night you finally decide to pop the question. 503 | # Furthermore, if your affection is maxed out, she will ask if you want to spend the night. 504 | # 505 | # If you don't wake Monika up at all, and you got the version of the dream based on maxed out 506 | # affection, Monika will kiss you as soon as she wakes up on her own. She will assume you want to 507 | # know what happened in the dream, but she coyly tells you that she'd rather show you when she 508 | # finally becomes real. 509 | # 510 | # Idea: You must get the Nightmare before getting this dream. (DONE, NEEDS TESTING) 511 | # 512 | # BEST DREAM (currently) 513 | m 2duc "{w=0.5}.{w=0.5}.{w=0.5}." 514 | m 2hub "Ehehehe~" 515 | m 3gub "Looks like my modder isn't {i}quite{/i} as done with this train of thought as he'd like to be..." 516 | m "But at least we can still test label access to see if that idea works." 517 | m 5rud "This is where Dream #4 would be." 518 | $ persistent._dan_had_best_dream = True 519 | 520 | m 5rud "This is where the full Dream #4's reaction would be." 521 | m 5rud "This is where the almost full Dream #4's reaction would be." 522 | m 5rud "This is where the late interrupted Dream #4's reaction would be." 523 | m 5rud "This is where the moderately interrupted Dream #4's reaction would be." 524 | m 5rud "This is where the early interrupted Dream #4's reaction would be." 525 | return 526 | 527 | label DaN_dream_five: 528 | # dream synopsis: Monika is back in the Literature Club, as if nothing went wrong. Sayori, Natsuki and 529 | # Yuri are there, but you are not. Everything seems normal at first, but then a fight breaks out. 530 | # On reflection, Monika can't recall what started the fight, but she remembers the other three girls 531 | # teaming up against her. Yuri pulls a knife and Sayori pulls out a rope. Monika tries to get out 532 | # of the club room, but cannot. She begs for you to save her, but nothing happens. In the end, the 533 | # girls somehow hang Monika from the ceiling in the middle of the classroom. If you don't wake Monika 534 | # up, the last thing she sees is a poster on the wall that depicts Monika's hanging body, calling back 535 | # to the poster of a hanging Sayori from the original game. 536 | # 537 | # You have one chance to wake Monika up. If you don't, she wakes up crying and terrified and she asks 538 | # you to hold her to calm her down. (Note: call the hold monika label used by monika_rain_holdme) 539 | # Alternatively, you can tell her to calm down and that it was just a dream. If you don't hold her, 540 | # she cries for many lines of dialogue and blames you for not waking her up before eventually calming 541 | # down on her own and realizing it was her own code at fault, not you. (Basically done. Can apply to 542 | # any nightmare, not just this one, if I come up with another nightmare later.) 543 | # 544 | # Idea: If you are not at an affection level high enough to hold Monika during the rain, you should not 545 | # be able to access this nightmare at all. 546 | # 547 | # NIGHTMARE 548 | 549 | m 2duc "{w=0.5}.{w=0.5}.{w=0.5}." 550 | m 2hub "Ehehehe~" 551 | m 3gub "Looks like my modder isn't {i}quite{/i} as done with this train of thought as he'd like to be..." 552 | m "But at least we can still test label access to see if that idea works." 553 | m 5rud "This is where Dream #5 would be." 554 | m 5rud "This dream also counts as the nightmare. If you saw Dream #4 before this, something went wrong." 555 | 556 | m 5rud "This is where the full Dream #5's reaction would be." 557 | m 5rud "This is where the interrupted Dream #5's reaction would be." 558 | 559 | $ persistent._dan_had_nightmare = True 560 | $ persistent._dan_all_dreams.append(4) 561 | return 562 | --------------------------------------------------------------------------------