diff --git a/Monika After Story/game/definitions.rpy b/Monika After Story/game/definitions.rpy index 915faf1003..b5390765b9 100644 --- a/Monika After Story/game/definitions.rpy +++ b/Monika After Story/game/definitions.rpy @@ -1,4 +1,5 @@ define persistent.demo = False + define config.developer = False #This is the flag for Developer tools # define persistent.steam = "steamapps" in config.basedir.lower() @@ -7441,6 +7442,9 @@ default persistent._mas_ddlc_reload_count = 0 define startup_check = False +# define temp zoom to default level in case of crash +define mas_temp_zoom_level = store.mas_sprites.default_zoom_level + define his = "his" define he = "he" define hes = "he's" diff --git a/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_back-0.png b/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_back-0.png new file mode 100644 index 0000000000..a691e10f6b Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_back-0.png differ diff --git a/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_back-5.png b/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_back-5.png new file mode 100644 index 0000000000..ae8de4b53e Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_back-5.png differ diff --git a/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_front-0.png b/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_front-0.png new file mode 100644 index 0000000000..513d0ab0cd Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_front-0.png differ diff --git a/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_front-5.png b/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_front-5.png new file mode 100644 index 0000000000..960f8d4d8a Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/a/acs-rin_bows_front-5.png differ diff --git a/Monika After Story/game/mod_assets/monika/a/acs-rin_ears-0.png b/Monika After Story/game/mod_assets/monika/a/acs-rin_ears-0.png new file mode 100644 index 0000000000..799c11b8ee Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/a/acs-rin_ears-0.png differ diff --git a/Monika After Story/game/mod_assets/monika/a/acs-rin_ears-5.png b/Monika After Story/game/mod_assets/monika/a/acs-rin_ears-5.png new file mode 100644 index 0000000000..1241ec98db Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/a/acs-rin_ears-5.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed-10.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed-10.png new file mode 100644 index 0000000000..59e7e3ed15 Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed-10.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed-5.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed-5.png new file mode 100644 index 0000000000..ed924a8a90 Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed-5.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed-n.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed-n.png deleted file mode 100644 index f35232ffca..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed-n.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed.png deleted file mode 100644 index ff017e186b..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/arms-crossed.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-down-n.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-down-n.png deleted file mode 100644 index 10f7308c7e..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/arms-down-n.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-down.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-down.png deleted file mode 100644 index 424cf9b3de..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/arms-down.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-leaning-def-left-def-10.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-leaning-def-left-def-10.png new file mode 100644 index 0000000000..4834e4746e Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-leaning-def-left-def-10.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-leaning-def-right-def-10.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-leaning-def-right-def-10.png new file mode 100644 index 0000000000..8b670dbb28 Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-leaning-def-right-def-10.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-leaning-def-right-def-5.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-leaning-def-right-def-5.png new file mode 100644 index 0000000000..c15ec8d51d Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-leaning-def-right-def-5.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-left-down-0.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-left-down-0.png new file mode 100644 index 0000000000..436c8f06fa Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-left-down-0.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-left-rest-10.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-left-rest-10.png new file mode 100644 index 0000000000..fac7fa9b5d Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-left-rest-10.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-pointright-n.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-pointright-n.png deleted file mode 100644 index 8ab766ab1e..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/arms-pointright-n.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-pointright.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-pointright.png deleted file mode 100644 index ac9f35dcad..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/arms-pointright.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-restleftpointright-n.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-restleftpointright-n.png deleted file mode 100644 index b999237859..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/arms-restleftpointright-n.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-restleftpointright.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-restleftpointright.png deleted file mode 100644 index b42b5d7ce3..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/arms-restleftpointright.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-right-down-0.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-right-down-0.png new file mode 100644 index 0000000000..30d1ebd9b6 Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-right-down-0.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-right-point-0.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-right-point-0.png new file mode 100644 index 0000000000..3e9495d61b Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-right-point-0.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-right-restpoint-10.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-right-restpoint-10.png new file mode 100644 index 0000000000..e21e099bdb Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-right-restpoint-10.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-steepling-10.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-steepling-10.png new file mode 100644 index 0000000000..9af7d404c4 Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/arms-steepling-10.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-steepling-n.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-steepling-n.png deleted file mode 100644 index 6faf88f8c1..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/arms-steepling-n.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/arms-steepling.png b/Monika After Story/game/mod_assets/monika/c/rin/arms-steepling.png deleted file mode 100644 index 8113c8c356..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/arms-steepling.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/body-def-0.png b/Monika After Story/game/mod_assets/monika/c/rin/body-def-0.png new file mode 100644 index 0000000000..92a2a64d01 Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/body-def-0.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/body-def-1.png b/Monika After Story/game/mod_assets/monika/c/rin/body-def-1.png new file mode 100644 index 0000000000..52edc799bb Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/body-def-1.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/body-leaning-def-0.png b/Monika After Story/game/mod_assets/monika/c/rin/body-leaning-def-0.png new file mode 100644 index 0000000000..2272d6f890 Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/body-leaning-def-0.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/body-leaning-def-1.png b/Monika After Story/game/mod_assets/monika/c/rin/body-leaning-def-1.png new file mode 100644 index 0000000000..49296913ed Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/c/rin/body-leaning-def-1.png differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/torso-custom-n.png b/Monika After Story/game/mod_assets/monika/c/rin/torso-custom-n.png deleted file mode 100644 index 1f4788b5bf..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/torso-custom-n.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/c/rin/torso-custom.png b/Monika After Story/game/mod_assets/monika/c/rin/torso-custom.png deleted file mode 100644 index 905f8f8773..0000000000 Binary files a/Monika After Story/game/mod_assets/monika/c/rin/torso-custom.png and /dev/null differ diff --git a/Monika After Story/game/mod_assets/monika/h/hair-braided-back.png b/Monika After Story/game/mod_assets/monika/h/hair-braided-back.png new file mode 100644 index 0000000000..71ee72c50e Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/h/hair-braided-back.png differ diff --git a/Monika After Story/game/mod_assets/monika/h/hair-braided-front.png b/Monika After Story/game/mod_assets/monika/h/hair-braided-front.png new file mode 100644 index 0000000000..f83ec2deab Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/h/hair-braided-front.png differ diff --git a/Monika After Story/game/mod_assets/monika/h/hair-leaning-def-braided-back.png b/Monika After Story/game/mod_assets/monika/h/hair-leaning-def-braided-back.png new file mode 100644 index 0000000000..500bb739f6 Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/h/hair-leaning-def-braided-back.png differ diff --git a/Monika After Story/game/mod_assets/monika/h/hair-leaning-def-braided-front.png b/Monika After Story/game/mod_assets/monika/h/hair-leaning-def-braided-front.png new file mode 100644 index 0000000000..049641c85f Binary files /dev/null and b/Monika After Story/game/mod_assets/monika/h/hair-leaning-def-braided-front.png differ diff --git a/Monika After Story/game/mod_assets/thumbs/clothes-rin.png b/Monika After Story/game/mod_assets/thumbs/clothes-rin.png index 8764ac6e6b..d09dede6e0 100644 Binary files a/Monika After Story/game/mod_assets/thumbs/clothes-rin.png and b/Monika After Story/game/mod_assets/thumbs/clothes-rin.png differ diff --git a/Monika After Story/game/mod_assets/thumbs/hair-braided.png b/Monika After Story/game/mod_assets/thumbs/hair-braided.png new file mode 100644 index 0000000000..acbb862927 Binary files /dev/null and b/Monika After Story/game/mod_assets/thumbs/hair-braided.png differ diff --git a/Monika After Story/game/script-holidays.rpy b/Monika After Story/game/script-holidays.rpy index a5b9b3e18a..9610798639 100644 --- a/Monika After Story/game/script-holidays.rpy +++ b/Monika After Story/game/script-holidays.rpy @@ -203,6 +203,12 @@ image mas_o31_deco = ConditionSwitch( "True", "mod_assets/location/spaceroom/o31/halloween_deco-n.png" ) +init python: + MAS_O31_COSTUME_CG_MAP = { + mas_clothes_marisa: "o31mcg", + mas_clothes_rin: "o31rcg" + } + #Functions init -10 python: import random @@ -253,6 +259,9 @@ init -10 python: store.queueEvent('mas_change_to_def') def mas_o31CapGainAff(amount): + """ + CapGainAffection function for o31. See mas_capGainAff for details + """ mas_capGainAff(amount, "_mas_o31_trick_or_treating_aff_gain", 15) @@ -333,8 +342,11 @@ init -10 python: # no items to select from if wearing_costume: - return monika_chr.clothes + #Check if the current costume is in the cg map, and if so, prep the cg + if monika_chr.clothes in MAS_O31_COSTUME_CG_MAP: + store.mas_o31_event.cg_decoded = store.mas_o31_event.decodeImage(MAS_O31_COSTUME_CG_MAP[monika_chr.clothes]) + return monika_chr.clothes return None elif len(selection_pool) < 2: @@ -350,11 +362,18 @@ init -10 python: if len(non_worn) > 0: # randomly select from non worn - return random.choice(non_worn) + random_outfit = random.choice(non_worn) - # otherwise randomly select from overall - return random.choice(selection_pool) + else: + # otherwise randomly select from overall + random_outfit = random.choice(selection_pool) + + #Setup the image decode + if random_outfit in MAS_O31_COSTUME_CG_MAP: + store.mas_o31_event.cg_decoded = store.mas_o31_event.decodeImage(MAS_O31_COSTUME_CG_MAP[random_outfit]) + #And return the outfit + return random_outfit def mas_o31SetCostumeWorn(clothes, year=None): """ @@ -383,6 +402,63 @@ init -10 python: persistent._mas_o31_costumes_worn[clothes_name] = year + def mas_o31Cleanup(): + """ + Cleanup function for o31 + """ + #NOTE: Since O31 is costumes, we always reset clothes + hair + if monika_chr.is_wearing_clothes_with_exprop("costume"): + monika_chr.change_clothes(mas_clothes_def, outfit_mode=True) + monika_chr.reset_hair() + + #Reset o31_mode flag + persistent._mas_o31_in_o31_mode = False + + #Unlock BG Sel if necessary + mas_checkBackgroundChangeDelegate() + + #Hide visuals + mas_o31HideVisuals() + + #rmall for safety + mas_rmallEVL("mas_o31_cleanup") + + #unlock hairdown greet if we don't have hairdown unlocked + hair = store.mas_selspr.get_sel_hair(mas_hair_down) + if hair is not None and not hair.unlocked: + mas_unlockEVL("greeting_hairdown", "GRE") + + #Lock the event clothes selector + mas_lockEVL("monika_event_clothes_select", "EVE") + +init -11 python in mas_o31_event: + import store + import datetime + + # setup the docking station for o31 + cg_station = store.MASDockingStation(store.mas_ics.o31_cg_folder) + + # cg available? + cg_decoded = False + + + def decodeImage(key): + """ + Attempts to decode a cg image + + IN: + key - o31 cg key to decode + + RETURNS True upon success, False otherwise + """ + return store.mas_dockstat.decodeImages(cg_station, store.mas_ics.o31_map, [key]) + + + def removeImages(): + """ + Removes decoded images at the end of their lifecycle + """ + store.mas_dockstat.removeImages(cg_station, store.mas_ics.o31_map) #START: O31 AUTOLOAD CHECK label mas_o31_autoload_check: @@ -390,6 +466,12 @@ label mas_o31_autoload_check: import random if mas_isO31() and mas_isMoniNormal(higher=True): + #Lock the background selector on o31 + #TODO: Replace this with generic room deco framework for event deco + store.mas_lockEVL("monika_change_background", "EVE") + #force to spaceroom + mas_changeBackground(mas_background_def) + #NOTE: We do not do O31 deco/amb on first sesh day if (not persistent._mas_o31_in_o31_mode and not mas_isFirstSeshDay()): #Setup for greet @@ -439,7 +521,8 @@ label mas_o31_autoload_check: else: selected_greeting = "greeting_o31_generic" - #Reset zoom + #Save and reset zoom + mas_temp_zoom_level = store.mas_sprites.zoom_level store.mas_sprites.reset_zoom() #Now that we're here, we're in O31 mode @@ -458,21 +541,7 @@ label mas_o31_autoload_check: #It's not O31 anymore or we hit dis. It's time to reset elif not mas_isO31() or mas_isMoniDis(lower=True): - #NOTE: Since O31 is costumes, we always reset clothes + hair - if monika_chr.is_wearing_clothes_with_exprop("costume"): - monika_chr.change_clothes(mas_clothes_def, outfit_mode=True) - monika_chr.reset_hair() - - #Reset o31_mode flag - persistent._mas_o31_in_o31_mode = False - - #unlock hairdown greet if we don't have hairdown unlocked - hair = store.mas_selspr.get_sel_hair(mas_hair_down) - if hair is not None and not hair.unlocked: - mas_unlockEVL("greeting_hairdown", "GRE") - - #Lock the event clothes selector - mas_lockEVL("monika_event_clothes_select", "EVE") + mas_o31Cleanup() #If we drop to upset during O31, we should keep decor until we hit dis elif persistent._mas_o31_in_o31_mode and mas_isMoniUpset(): @@ -515,6 +584,33 @@ transform mas_o31_cg_scroll: xanchor 0.0 xpos 0 yanchor 0.0 ypos 0.0 yoffset -1520 ease 20.0 yoffset 0.0 +### o31 samesesh cleanup +init 5 python: + addEvent( + Event( + persistent.event_database, + eventlabel="mas_o31_cleanup", + conditional="persistent._mas_o31_in_o31_mode", + start_date=datetime.datetime.combine(mas_o31 + datetime.timedelta(days=1), datetime.time(12)), + end_date=mas_o31 + datetime.timedelta(weeks=1), + action=EV_ACT_QUEUE, + rules={"no_unlock": None}, + years=[] + ) + ) + + +label mas_o31_cleanup: + m 1eua "One second [player], I'm just going to take the decorations down.{w=0.3}.{w=0.3}.{nw}" + call mas_transition_to_emptydesk + pause 4.0 + $ mas_o31Cleanup() + with dissolve + pause 1.0 + call mas_transition_from_emptydesk("monika 1hua") + m 3hua "All done~" + return + ### o31 greetings init 5 python: addEvent( @@ -532,15 +628,15 @@ label greeting_o31_marisa: $ store.mas_selspr.unlock_hair(mas_hair_downtiedstrand) ## decoded CG means that we start with monika offscreen - #if store.mas_o31_event.o31_cg_decoded: - # # ASSUMING: - # # vignette should be enabled. - # call spaceroom(hide_monika=True, scene_change=True) + if store.mas_o31_event.cg_decoded: + # ASSUMING: + # vignette should be enabled. + call spaceroom(hide_monika=True, scene_change=True) - #else: - # ASSUMING: - # vignette should be enabled - call spaceroom(dissolve_all=True, scene_change=True, force_exp='monika 1eua_static') + else: + # ASSUMING: + # vignette should be enabled + call spaceroom(dissolve_all=True, scene_change=True, force_exp='monika 1eua_static') m 1eua "Ah!" m 1hua "Seems like my spell worked." @@ -549,42 +645,41 @@ label greeting_o31_marisa: m 1hub "Ahaha!" # decoded CG means we display CG - #if store.mas_o31_event.o31_cg_decoded: - # $ cg_delay = datetime.timedelta(seconds=20) + if store.mas_o31_event.cg_decoded: + $ cg_delay = datetime.timedelta(seconds=20) - # # got cg - # m "I'm over here, [player]~" - # window hide + # got cg + m "I'm over here, [player]~" + window hide - # show mas_o31_marisa_cg zorder 20 at mas_o31_cg_scroll with dissolve - # $ start_time = datetime.datetime.now() + show mas_o31_marisa_cg zorder 20 at mas_o31_cg_scroll with dissolve + $ start_time = datetime.datetime.now() + while datetime.datetime.now() - start_time < cg_delay: + pause 1.0 - # while datetime.datetime.now() - start_time < cg_delay: - # pause 1.0 + hide emptydesk + show monika 1hua at i11 zorder MAS_MONIKA_Z - # hide emptydesk - # show monika 1hua at i11 zorder MAS_MONIKA_Z - # window auto - # m "Tadaa!~" + window auto + m "Tadaa!~" #Post scroll dialogue m 1hua "Well..." - m 1wub "What do you think?" - m 1wua "Suits me pretty well, right?" + m 1eub "What do you think?" + m 1tuu "Suits me pretty well, right?" m 1eua "It took me quite a while to make this costume, you know." m 3hksdlb "Getting the right measurements, making sure nothing was too tight or loose, that sort of stuff." - m 3eksdla "Especially the hat!" + m 3eksdla "...Especially the hat!" m 1dkc "The ribbon wouldn't stay still at all..." m 1rksdla "Luckily I got that sorted out." m 3hua "I'd say I did a good job myself." - m 1hub "Ehehe~" m 3eka "I'm wondering if you'll be able to see what's different today." - m "Besides my costume of course~" + m 3tub "Besides my costume of course~" m 1hua "But anyway..." - #if store.mas_o31_event.o31_cg_decoded: - # show monika 1eua - # hide mas_o31_marisa_cg with dissolve + if store.mas_o31_event.cg_decoded: + show monika 1eua + hide mas_o31_marisa_cg with dissolve m 3ekbsa "I'm really excited to spend Halloween with you." m 1hua "Let's have fun today!" @@ -603,7 +698,12 @@ init 5 python: ) label greeting_o31_rin: - $ title_cased_hes = hes.capitalize() + python: + title_cased_hes = hes.capitalize() + #TODO: Unlock this hairstyle once we clean it up such that it doesn't require bows + #Will need update script + #mas_selspr.unlock_hair(mas_hair_braided) + mas_sprites.zoom_out() # ASSUME vignette call spaceroom(hide_monika=True, scene_change=True) @@ -614,43 +714,42 @@ label greeting_o31_rin: window hide pause 3.0 - #if store.mas_o31_event.o31_cg_decoded: - # $ cg_delay = datetime.timedelta(seconds=20) + if store.mas_o31_event.cg_decoded: + $ cg_delay = datetime.timedelta(seconds=20) - # # got cg - # window auto - # m "Say, [player]..." - # window hide + # got cg + window auto + m "Say, [player]..." + window hide - # show mas_o31_rin_cg zorder 20 at mas_o31_cg_scroll with dissolve - # $ start_time = datetime.datetime.now() + show mas_o31_rin_cg zorder 20 at mas_o31_cg_scroll with dissolve + $ start_time = datetime.datetime.now() - # while datetime.datetime.now() - start_time < cg_delay: - # pause 1.0 + while datetime.datetime.now() - start_time < cg_delay: + pause 1.0 - # hide emptydesk - # window auto - # m "What do {i}nya{/i} think?" + hide emptydesk + window auto + m "What do {i}nya{/i} think?" - # scene black - # pause 2.0 - # call spaceroom(scene_change=True, dissolve_all=True, force_exp='monika 1hksdlb_static') - # m 1hksdlb "Ahaha, saying that out loud was more embarrassing than I thought..." + scene black + pause 1.0 + call spaceroom(scene_change=True, dissolve_all=True, force_exp='monika 1hksdlb_static') + m 1hksdlb "Ahaha, saying that out loud was more embarrassing than I thought..." - #else: - call mas_transition_from_emptydesk("monika 1eua") - m 1hub "Hi, [player]!" - m 3hub "Do you like my costume?" + else: + call mas_transition_from_emptydesk("monika 1eua") + m 1hub "Hi, [player]!" + m 3hub "Do you like my costume?" # regular dialogue m 3etc "Honestly, I don't even know who this is supposed to be." m 3etd "I just found it in the closet with a note attached that had the word 'Rin', a drawing of a girl pushing a wheelbarrow, and some blue floaty thingies." m 1euc "Along with instructions on how to style your hair to go along with this outfit." - m "Judging by these cat ears, I'm guessing this character is a catgirl." - m 1dtc "But why would she push a wheelbarrow around?" - pause 1.0 - m 1hksdlb "Anyway, it was a pain getting my hair done." - m 1eub "So I hope you like the costume!" + m 3rtc "Judging by these cat ears, I'm guessing this character is a catgirl." + m 1dtc "...But why would she push a wheelbarrow around?" + m 1hksdlb "Anyway, it was a pain getting my hair done...{w=0.2}{nw}" + extend 1eub "so I hope you like the costume!" call greeting_o31_cleanup return @@ -770,6 +869,10 @@ label greeting_o31_generic: #Cleanup for o31 greets label greeting_o31_cleanup: + window hide + call monika_zoom_transition(mas_temp_zoom_level,1.0) + window auto + python: # 1 - music hotkeys should be enabled store.mas_hotkeys.music_enabled = True @@ -1071,6 +1174,7 @@ label mas_o31_ret_home_cleanup(time_out=None, ret_tt_long=False): #Hide vis $ mas_o31HideVisuals() + $ mas_rmallEVL("mas_o31_cleanup") m 3hua "There we go!" return diff --git a/Monika After Story/game/splash.rpy b/Monika After Story/game/splash.rpy index 17f7eca827..ea9fbf765d 100644 --- a/Monika After Story/game/splash.rpy +++ b/Monika After Story/game/splash.rpy @@ -356,6 +356,9 @@ label quit: # remove special images store.mas_island_event.removeImages() + #remove o31 cgs + store.mas_o31_event.removeImages() + # delayed action stuff mas_runDelayedActions(MAS_FC_END) store.mas_delact.saveDelayedActionMap() diff --git a/Monika After Story/game/sprite-chart.rpy b/Monika After Story/game/sprite-chart.rpy index bfe40ba783..2feb344d66 100644 --- a/Monika After Story/game/sprite-chart.rpy +++ b/Monika After Story/game/sprite-chart.rpy @@ -291,7 +291,7 @@ init -100 python in mas_sprites: EXP_H_EXCLCP = "excluded-clothes-props" # v: list of strings - # marks that a hair style requires clothes with none of hte value'd props + # marks that a hair style requires clothes with none of the value'd props # to be worn EXP_H_TS = "tiedstrand" @@ -302,6 +302,10 @@ init -100 python in mas_sprites: # v: ignored # marks that a hair style has no tails. By default we assume ponytail. + EXP_H_TB = "twinbraid" + #v: ignored + #marks the hair as a twinbraid hairstyle + # ---- CLOTHES ---- EXP_C_BRS = "bare-right-shoulder" diff --git a/Monika After Story/game/zz_backgrounds.rpy b/Monika After Story/game/zz_backgrounds.rpy index 1dacce5550..cfd8911f19 100644 --- a/Monika After Story/game/zz_backgrounds.rpy +++ b/Monika After Story/game/zz_backgrounds.rpy @@ -2378,7 +2378,7 @@ init -10 python: self, store.mas_utils.sys.exc_info() ) - + # reset the manager to defualt indexes. Next time progress # is called will hopefully update without error self._flt_man.reset_indexes() @@ -2397,16 +2397,16 @@ init -10 python: return new_flt # if we had an issue with filter progression OR if we didn't get - # a filter back, we'll return a fallback of the first filter + # a filter back, we'll return a fallback of the first filter # available in the filter manager. If that doesn't work, - # then its forever daytime (FLT_DAY) + # then its forever daytime (FLT_DAY) flts = self._flt_man.filters() if len(flts) > 0: new_flt = flts[0] if new_flt is not None: return new_flt - + return store.mas_sprites.FLT_DAY # should exist for every sprite def update(self, curr_time=None): @@ -2614,7 +2614,7 @@ init -20 python in mas_background: # could not log, just abort here return - # otherwise log output + # otherwise log output bg_log.raw_write = True # NOTE: version should already be written out if this is runtime diff --git a/Monika After Story/game/zz_spriteobjects.rpy b/Monika After Story/game/zz_spriteobjects.rpy index f07ef1709d..14174fd76f 100644 --- a/Monika After Story/game/zz_spriteobjects.rpy +++ b/Monika After Story/game/zz_spriteobjects.rpy @@ -250,35 +250,30 @@ init -2 python in mas_sprites: """ pass - def _hair_def_exit(_moni_chr, **kwargs): """ Exit programming point for ponytail """ pass - def _hair_down_entry(_moni_chr, **kwargs): """ Entry programming point for hair down """ pass - def _hair_down_exit(_moni_chr, **kwargs): """ Exit programming point for hair down """ pass - def _hair_bun_entry(_moni_chr, **kwargs): """ Entry programming point for hair bun """ pass - def _hair_orcaramelo_bunbraid_exit(_moni_chr, **kwargs): """ Exit prog point for bunbraid @@ -286,6 +281,21 @@ init -2 python in mas_sprites: # always take off the headband _acs_remove_if_found(_moni_chr, "orcaramelo_sakuya_izayoi_headband") + def _hair_braided_entry(_moni_chr, **kwargs): + """ + Entry prog point for braided hair + """ + _moni_chr.wear_acs(store.mas_acs_rin_bows_back) + _moni_chr.wear_acs(store.mas_acs_rin_bows_front) + + def _hair_braided_exit(_moni_chr, **kwargs): + """ + Exit prog point for braided hair + """ + _moni_chr.remove_acs(store.mas_acs_rin_bows_front) + _moni_chr.remove_acs(store.mas_acs_rin_bows_back) + #Always remove rin ears + _moni_chr.remove_acs(store.mas_acs_rin_ears) ######### CLOTHES [SPR020] ########### # available kwargs: @@ -312,105 +322,18 @@ init -2 python in mas_sprites: """ Entry programming point for rin clothes """ - # TODO: handle other promise ring types - temp_storage["clothes.rin"] = store.mas_acs_promisering.pose_map - store.mas_acs_promisering.pose_map = store.MASPoseMap( - p1=None, - p2=None, - p3="3", - p4=None, - p5=None, - p6=None - ) - wearing_promise_ring = _moni_chr.is_wearing_acs( - store.mas_acs_promisering - ) - - # hide hair down select -# store.mas_lockEVL("monika_hair_select", "EVE") - - # hide hairdown greeting -# store.mas_lockEVL("greeting_hairdown", "GRE") - - #### ribbon stuff - # wearing rin clothes means we wear custom blank ribbon if we are - # wearing a ribbon - _acs_ribbon_save_and_remove(_moni_chr) - _acs_ribbon_like_save_and_remove(_moni_chr) -# prev_ribbon = _moni_chr.get_acs_of_type("ribbon") -# if ( -# prev_ribbon is not None -# and prev_ribbon != store.mas_acs_ribbon_blank -# ): -# temp_storage["hair.ribbon"] = prev_ribbon - #_moni_chr.wear_acs(store.mas_acs_ribbon_blank) -# _moni_chr.remove_acs(prev_ribbon) - - # lock hair so we dont get ribbon issues - _moni_chr.lock_hair = True - - # lock ribbon select -# store.mas_lockEVL("monika_ribbon_select", "EVE") - - #### end ribbon stuff - - #### hair acs - _acs_save_and_remove_exprop( - _moni_chr, - "left-hair-strand-eye-level", - "acs.left-hair-strand-eye-level", - True - ) - - #### end acs stuff - - # remove ear rose - _moni_chr.remove_acs(store.mas_acs_ear_rose) - - # lock selectors - _clothes_baked_entry(_moni_chr) + outfit_mode = kwargs.get("outfit_mode") - # re-add promise wring if it was worn - if wearing_promise_ring: - _moni_chr.wear_acs(store.mas_acs_promisering) + if outfit_mode: + _moni_chr.change_hair(store.mas_hair_braided) + _moni_chr.wear_acs(store.mas_acs_rin_ears) def _clothes_rin_exit(_moni_chr, **kwargs): """ Exit programming point for rin clothes """ - rin_map = temp_storage.get("clothes.rin", None) - if rin_map is not None: - store.mas_acs_promisering.pose_map = rin_map - - # unlock hair down greeting if not unlocked -# if not store.mas_SELisUnlocked(mas_hair_down, 1): -# store.mase_unlockEVL("greeting_hairdown", "GRE") - - # wear ribbon if in tempstorage - _acs_wear_if_in_tempstorage_s(_moni_chr, "hair.ribbon") - - # NOTE: disregard below - # wear previous ribbon if we are wearing blank ribbon - # NOTE: we are gauanteed to be wearing blank ribbon when wearing - # these clothes. Regardless, we should always restore to what we - # have previously saved. -# _acs_wear_if_wearing_type( -# _moni_chr, -# "ribbon", -# temp_storage.get("hair.ribbon", store.mas_acs_ribbon_def) -# ) - - # unlock hair - _moni_chr.lock_hair = False - - # wear hairclips we were previously wearing (in session only) - # NOTE: we assume this list only contains hairclips. This is NOT true. - # TODO: add additional topic unlocks as needed. - _acs_wear_if_in_tempstorage( - _moni_chr, - "acs.left-hair-strand-eye-level" - ) + _moni_chr.remove_acs(store.mas_acs_rin_ears) def _clothes_marisa_entry(_moni_chr, **kwargs): @@ -834,6 +757,34 @@ init -1 python: ] ) + ### BRAIDED + ## braided + # Hair is braided on the left/right. Auto adds bows + # Thanks Briar/SS + mas_hair_braided = MASHair( + "braided", + "braided", + MASPoseMap( + default=True, + use_reg_for_l=True + ), + ex_props={ + store.mas_sprites.EXP_H_TB: True + }, + entry_pp=store.mas_sprites._hair_braided_entry, + exit_pp=store.mas_sprites._hair_braided_exit + ) + store.mas_sprites.init_hair(mas_hair_braided) + store.mas_selspr.init_selectable_hair( + mas_hair_braided, + "Braided", + "braided", + "hair", + select_dlg=[ + "Looks cute, don't you think?" + ] + ) + ### CUSTOM ## custom # Not a real hair object. If an outfit uses this, it's assumed that the @@ -1029,50 +980,36 @@ init -1 python: ## rin # Neko costume based on Rin # thanks SovietSpartan - # TODO: Add costume exprop + value once this is fixed - # NOTE: all baked outfits are disabled completely. -# mas_clothes_rin = MASClothes( -# "rin", -# "rin", -# MASPoseMap( -# mpm_type=MASPoseMap.MPM_TYPE_FB, -# default="steepling", -# use_reg_for_l=True, -# p1="steepling", -# p2="crossed", -# p3="restleftpointright", -# p4="pointright", -# p5="steepling", -# p6="down", -# p7="restleftpointright" -# ), -# fallback=True, -# hair_map={ -# "all": "custom" -# }, -# stay_on_start=True, -# entry_pp=store.mas_sprites._clothes_rin_entry, -# exit_pp=store.mas_sprites._clothes_rin_exit, -# ex_props={ -# "forced hair": True, -# "baked outfit": True, -# } -# ) -# store.mas_sprites.init_clothes(mas_clothes_rin) -# store.mas_selspr.init_selectable_clothes( -# mas_clothes_rin, -# "Neko Costume", -# "rin", -# "clothes", -# visible_when_locked=False, -# hover_dlg=[ -# "~nya?", -# "n-nya..." -# ], -# select_dlg=[ -# "Nya!" -# ] -# ) + mas_clothes_rin = MASClothes( + "rin", + "rin", + MASPoseMap( + default=True, + use_reg_for_l=True + ), + stay_on_start=True, + entry_pp=store.mas_sprites._clothes_rin_entry, + exit_pp=store.mas_sprites._clothes_rin_exit, + ex_props={ + store.mas_sprites.EXP_C_COST: "o31", + store.mas_sprites.EXP_C_COSP: True, + } + ) + store.mas_sprites.init_clothes(mas_clothes_rin) + store.mas_selspr.init_selectable_clothes( + mas_clothes_rin, + "Neko Costume", + "rin", + "clothes", + visible_when_locked=False, + hover_dlg=[ + "~nya?", + "n-nya..." + ], + select_dlg=[ + "Nya!" + ] + ) ### SANTA MONIKA ## santa @@ -1481,6 +1418,7 @@ init -1 python: # muxtype handled by defaults ex_props={ store.mas_sprites.EXP_A_RQHP: store.mas_sprites.EXP_H_NT, + store.mas_sprites.EXP_A_EXCLHP: store.mas_sprites.EXP_H_TB }, rec_layer=MASMonika.AFH_ACS ) @@ -1498,6 +1436,60 @@ init -1 python: ] ) + ###Rin bows front + ##rin_bows_front + #Hair acs for rin's braided hairstyle (frontine layer) + #Thanks Briar/SS + mas_acs_rin_bows_front = MASAccessory( + "rin_bows_front", + "rin_bows_front", + MASPoseMap( + default="0", + l_default="5" + ), + stay_on_start=True, + acs_type="ribbon-front", + mux_type=["ribbon-front"], + rec_layer=MASMonika.AFH_ACS, + priority=20 + ) + store.mas_sprites.init_acs(mas_acs_rin_bows_front) + + ###Rin bows back + ##rin_bows_back + #Hair acs for rin's braided hairstyle (back layer) + #Thanks Briar/SS + mas_acs_rin_bows_back = MASAccessory( + "rin_bows_back", + "rin_bows_back", + MASPoseMap( + default="0", + l_default="5" + ), + stay_on_start=True, + acs_type="ribbon-back", + mux_type=["ribbon"], + rec_layer=MASMonika.BBH_ACS + ) + store.mas_sprites.init_acs(mas_acs_rin_bows_back) + + ###Rin ears + ##rin_ears + #Ears to wear in rin cosplay + #Thanks Spikeran1 + mas_acs_rin_ears = MASAccessory( + "rin_ears", + "rin_ears", + MASPoseMap( + default="0", + l_default="5" + ), + stay_on_start=True, + acs_type="headband", + rec_layer=MASMonika.AFH_ACS, + priority=5 + ) + store.mas_sprites.init_acs(mas_acs_rin_ears) ### Holly Hairclip ## holly_hairclip diff --git a/Monika After Story/game/zz_weather.rpy b/Monika After Story/game/zz_weather.rpy index ca5ed66620..8384ebf858 100644 --- a/Monika After Story/game/zz_weather.rpy +++ b/Monika After Story/game/zz_weather.rpy @@ -378,7 +378,6 @@ init -20 python in mas_weather: # dont need to change anything if we are switching from thunder if _old != store.mas_weather_thunder: - # set global flag store.mas_is_raining = True @@ -391,6 +390,8 @@ init -20 python in mas_weather: if_changed=True ) + if store.persistent._mas_o31_in_o31_mode: + store.mas_globals.show_vignette = True def _weather_rain_exit(_new): """ @@ -405,6 +406,8 @@ init -20 python in mas_weather: # stop rain sound renpy.music.stop(channel="background", fadeout=1.0) + if store.persistent._mas_o31_in_o31_mode: + store.mas_globals.show_vignette = False def _weather_snow_entry(_old): """ @@ -461,13 +464,15 @@ init -20 python in mas_weather: """ Overcast entry programming point """ - pass + if store.persistent._mas_o31_in_o31_mode: + store.mas_globals.show_vignette = True def _weather_overcast_exit(_new): """ Overcast exit programming point """ - pass + if store.persistent._mas_o31_in_o31_mode: + store.mas_globals.show_vignette = False init -10 python: