From dd128db58c7e32709b36c65d2c31e1aebb051775 Mon Sep 17 00:00:00 2001 From: LoafyLemon Date: Wed, 28 Jun 2023 19:03:29 +0100 Subject: [PATCH] Menus and bug fixes * Reimplemented named menu options and a back/cancel button support * Reimplemented icon harts * Fixed flag check in blowjob public request * Fixed a potential resolution glitch in gui initialisation * Fixed a potential label parsing bug in Hermione's summon menu --- .../events/requests/give_a_blowjob.rpy | 2 +- game/scripts/characters/hermione/favors.rpy | 18 +++++----- game/scripts/characters/hermione/requests.rpy | 16 ++++----- game/scripts/characters/hermione/summon.rpy | 30 +++++++++------- game/scripts/events/queue.rpy | 34 ++++++++++++------- game/scripts/gui/_gui_.rpy | 2 +- 6 files changed, 58 insertions(+), 44 deletions(-) diff --git a/game/scripts/characters/hermione/events/requests/give_a_blowjob.rpy b/game/scripts/characters/hermione/events/requests/give_a_blowjob.rpy index 0b0b2fbe..b5b1c77b 100644 --- a/game/scripts/characters/hermione/events/requests/give_a_blowjob.rpy +++ b/game/scripts/characters/hermione/events/requests/give_a_blowjob.rpy @@ -132,7 +132,7 @@ label end_hg_pr_blowjob: $ hermione.set_cum(None) # Increase Points - if _events_filtered_completed_all: + if not _events_filtered_completed_all: $ states.her.public_level += 1 jump end_hermione_event diff --git a/game/scripts/characters/hermione/favors.rpy b/game/scripts/characters/hermione/favors.rpy index bd2ba539..3739b068 100644 --- a/game/scripts/characters/hermione/favors.rpy +++ b/game/scripts/characters/hermione/favors.rpy @@ -87,13 +87,13 @@ default her_ev_anal_t6_e2 = Event(id="anal_t6_e2", label="hg_anal_sex_2_intro", default her_ev_anal_t6_e3 = Event(id="anal_t6_e3", label="hg_anal_sex_3", priority=7, req="states.her.tier >= 6", queue="her_eventqueue_anal", autoenqueue=True, autodequeue=False) define hermione_favors = [ - "her_eventqueue_talk_to_me", - "her_eventqueue_admire_panties", - "her_eventqueue_admire_breasts", - "her_eventqueue_grope", - "her_eventqueue_strip_for_me", - "her_eventqueue_handjob", - "her_eventqueue_titjob", - "her_eventqueue_blowjob", - "her_eventqueue_sex", + ("her_eventqueue_talk_to_me", "Talk to me!"), + ("her_eventqueue_admire_breasts", "Show me your tits!"), + ("her_eventqueue_admire_panties", "Show me your panties!"), + ("her_eventqueue_grope", "Grope her!"), + ("her_eventqueue_strip_for_me", "Strip for me!"), + ("her_eventqueue_handjob", "Give me a handy!"), + ("her_eventqueue_titjob", "Give me a tittyjob!"), + ("her_eventqueue_blowjob", "Suck it!"), + ("her_eventqueue_sex", "Let's have sex!"), ] diff --git a/game/scripts/characters/hermione/requests.rpy b/game/scripts/characters/hermione/requests.rpy index 2319c9fd..cd0bbcf7 100644 --- a/game/scripts/characters/hermione/requests.rpy +++ b/game/scripts/characters/hermione/requests.rpy @@ -148,12 +148,12 @@ default her_ev_sex_public_t6_e2_hub = Event(id="sex_public_t6_e2_hub", label="hg default her_ev_sex_public_t6_e3_hub = Event(id="sex_public_t6_e3_hub", label="hg_pr_sex", req="states.her.tier >= 6", autoenqueue=True, autodequeue=False, queue="her_eventqueue_sex_public", subevents=["her_ev_sex_public_t6_e4"]) define hermione_requests = [ - "her_eventqueue_flirt_students", - "her_eventqueue_flirt_teachers", - "her_eventqueue_grope_public", - "her_eventqueue_flash_public", - "her_eventqueue_kiss_public", - "her_eventqueue_handjob_public", - "her_eventqueue_blowjob_public", - "her_eventqueue_sex_public" + ("her_eventqueue_flirt_students", "Flirt with students!"), + ("her_eventqueue_flirt_teachers", "Flirt with teachers!"), + ("her_eventqueue_grope_public", "Let them grope you!"), + ("her_eventqueue_flash_public", "Flash your tits!"), + ("her_eventqueue_kiss_public", "Kiss a girl!"), + ("her_eventqueue_handjob_public", "Give a handjob!"), + ("her_eventqueue_blowjob_public", "Give a blowjob!"), + ("her_eventqueue_sex_public", "Have sex!") ] \ No newline at end of file diff --git a/game/scripts/characters/hermione/summon.rpy b/game/scripts/characters/hermione/summon.rpy index 0d24d608..0ea78f50 100644 --- a/game/scripts/characters/hermione/summon.rpy +++ b/game/scripts/characters/hermione/summon.rpy @@ -151,7 +151,7 @@ label hermione_favor_menu: if not is_in_lead(gryffindor): - label silver_requests_root: + label .skip_points_check: if her_level_up != None: call tutorial("milestones") @@ -165,13 +165,15 @@ label hermione_favor_menu: call tutorial("hearts") $ result = show_events_menu(hermione_favors) - $ result.start() + + if result: + $ result.start() jump hermione_favor_menu "-Public requests-" (icon="interface/icons/small/star_yellow.webp", style="disabled") if not game.daytime: nar "Public requests are available during the day only." - jump silver_requests_root + jump .skip_points_check "-Public requests-" (icon="interface/icons/small/star_yellow.webp") if game.daytime: if states.her.public_level >= 16 and not "public" in states.her.ev.yule_ball.variant: @@ -186,16 +188,18 @@ label hermione_favor_menu: $ states.her.ev.yule_ball.variant = "public" "No, go back.": $ renpy.music.set_volume(1.0, 1.0) - jump silver_requests_root + jump .skip_points_check $ result = show_events_menu(hermione_requests) - $ result.start() + + if result: + $ result.start() jump hermione_favor_menu "-Public Shaming-" (icon="interface/icons/small/star_pink.webp", style="disabled") if not game.daytime: nar "Public Shaming events are available during the day only." - jump silver_requests_root + jump .skip_points_check "-Public Shaming-" (icon="interface/icons/small/star_pink.webp")if game.daytime: label not_now_ps: @@ -210,7 +214,7 @@ label hermione_favor_menu: result = renpy.display_menu(menu_choices) if result == "nvm": - jump silver_requests_root + jump .skip_points_check elif result == "vague": call favor_not_ready jump not_now_ps @@ -227,19 +231,19 @@ label hermione_favor_menu: her "But I'll do anything for you, [name_genie_hermione]..." ("smile", "happy", "base", "mid") her "But if you really need it, I may as well..." ("smile", "happy", "base", "mid") her "But I'll do it anyway..." ("smile", "happy", "base", "mid") - jump silver_requests_root + jump .skip_points_check elif states.her.level >=20 and states.her.favors_convinced_stage == 2: random: her "But an even bigger lead wouldn't hurt, I suppose..." ("base", "happy", "base", "mid") her "But since you've been helping me earn points for my house, I'll do it anyway..." ("base", "happy", "base", "mid") her "But since I'm already here, I might as well do it..." ("base", "happy", "base", "mid") - jump silver_requests_root + jump .skip_points_check elif states.her.level >=18 and states.her.favors_convinced_stage == 2: random: her "Although, considering what you said before... I'll do it anyway." ("soft", "wink", "base", "mid") her "Although, I suppose another house may catch up... Okay, I'll do it." ("soft", "wink", "base", "mid") her "Although, an ever bigger lead would really show the Slytherins which house is the best." ("base", "wink", "base", "mid") - jump silver_requests_root + jump .skip_points_check elif states.her.level >=16: her "I have told you before, [name_genie_hermione], it was just a one time thing..." ("open", "happy", "base", "mid") gen "What about tomorrow though?" ("base", xpos="far_left", ypos="head") @@ -263,7 +267,7 @@ label hermione_favor_menu: her "Yes... Just like that." ("base", "closed", "base", "mid") gen "That's my girl!" ("grin", xpos="far_left", ypos="head") $ states.her.favors_convinced_stage = 2 - jump silver_requests_root + jump .skip_points_check gen "If you do it, you could secure the win for your house you know..." ("base", xpos="far_left", ypos="head") @@ -271,12 +275,12 @@ label hermione_favor_menu: her "You really know how to talk me through, [name_genie_hermione]." ("soft", "narrow", "worried", "down") her "Okay I agree." ("open", "narrow", "base", "down") $ states.her.favors_convinced_stage = 2 - jump silver_requests_root + jump .skip_points_check elif states.her.level >=16 and not states.her.favors_convinced_stage == 1: her "I guess you're right..." ("open", "happy", "base", "mid_soft") her "I'll do it... But just this once okay?" ("grin", "happyCl", "base", "mid") $ states.her.favors_convinced_stage = 1 - jump silver_requests_root + jump .skip_points_check else: her "I could..." ("soft", "narrow", "base", "mid_soft") her "But I don't want to." ("normal", "closed", "base", "mid") diff --git a/game/scripts/events/queue.rpy b/game/scripts/events/queue.rpy index a87ba3ce..f00da8eb 100644 --- a/game/scripts/events/queue.rpy +++ b/game/scripts/events/queue.rpy @@ -311,34 +311,44 @@ init -1 python: total_applicable = len(filtered_queue) total_events = len(queue.queue) completed = 0 - hints = [] + icons = [] + + path = "interface/icons/small/" for ev in filtered_queue: if ev.completed: - hints.append("v") + icons.append("interface/icons/small/heart_red.webp") completed += 1 elif ev.completed_failed: - hints.append("x") + icons.append("interface/icons/small/heart_black.webp") completed += 1 else: - hints.append("o") + icons.append("interface/icons/small/heart_empty.webp") - s = "(" + "".join(hints) + f") {completed}/{total_applicable}" + hints = f" {completed}/{total_applicable}/{total_events}" - if config.developer: - s += f"/{total_events}" - - return s + return (hints, icons) l = [] - for queue in queues: + for queue, title in queues: if isinstance(queue, str): queue = getattr(store, queue) - title = f"-{queue.id}- {menu_hints(queue, filter)}" + hints, icons = menu_hints(queue, filter) - l.append( (title, queue) ) + _kwargs = {"progress": icons} + title = f"-{title}-" + + if config.developer: + title += hints + + location = renpy.game.context().current + choice = ui.ChoiceReturn(title, queue, location, kwargs=_kwargs) + + l.append( (title, choice) ) + + l.append( ("-Never mind-", False) ) return renpy.display_menu(l, **kwargs) diff --git a/game/scripts/gui/_gui_.rpy b/game/scripts/gui/_gui_.rpy index 2ce161e8..5408841e 100644 --- a/game/scripts/gui/_gui_.rpy +++ b/game/scripts/gui/_gui_.rpy @@ -8,7 +8,7 @@ init python in gui: import store from store import settings - init(1080, 600) + init(1280, 720) def is_dark(): theme = settings.get("theme")