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
This commit is contained in:
LoafyLemon 2023-06-28 19:03:29 +01:00
parent 2f74221abb
commit dd128db58c
6 changed files with 58 additions and 44 deletions

View File

@ -132,7 +132,7 @@ label end_hg_pr_blowjob:
$ hermione.set_cum(None) $ hermione.set_cum(None)
# Increase Points # Increase Points
if _events_filtered_completed_all: if not _events_filtered_completed_all:
$ states.her.public_level += 1 $ states.her.public_level += 1
jump end_hermione_event jump end_hermione_event

View File

@ -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) 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 = [ define hermione_favors = [
"her_eventqueue_talk_to_me", ("her_eventqueue_talk_to_me", "Talk to me!"),
"her_eventqueue_admire_panties", ("her_eventqueue_admire_breasts", "Show me your tits!"),
"her_eventqueue_admire_breasts", ("her_eventqueue_admire_panties", "Show me your panties!"),
"her_eventqueue_grope", ("her_eventqueue_grope", "Grope her!"),
"her_eventqueue_strip_for_me", ("her_eventqueue_strip_for_me", "Strip for me!"),
"her_eventqueue_handjob", ("her_eventqueue_handjob", "Give me a handy!"),
"her_eventqueue_titjob", ("her_eventqueue_titjob", "Give me a tittyjob!"),
"her_eventqueue_blowjob", ("her_eventqueue_blowjob", "Suck it!"),
"her_eventqueue_sex", ("her_eventqueue_sex", "Let's have sex!"),
] ]

View File

@ -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"]) 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 = [ define hermione_requests = [
"her_eventqueue_flirt_students", ("her_eventqueue_flirt_students", "Flirt with students!"),
"her_eventqueue_flirt_teachers", ("her_eventqueue_flirt_teachers", "Flirt with teachers!"),
"her_eventqueue_grope_public", ("her_eventqueue_grope_public", "Let them grope you!"),
"her_eventqueue_flash_public", ("her_eventqueue_flash_public", "Flash your tits!"),
"her_eventqueue_kiss_public", ("her_eventqueue_kiss_public", "Kiss a girl!"),
"her_eventqueue_handjob_public", ("her_eventqueue_handjob_public", "Give a handjob!"),
"her_eventqueue_blowjob_public", ("her_eventqueue_blowjob_public", "Give a blowjob!"),
"her_eventqueue_sex_public" ("her_eventqueue_sex_public", "Have sex!")
] ]

View File

@ -151,7 +151,7 @@ label hermione_favor_menu:
if not is_in_lead(gryffindor): if not is_in_lead(gryffindor):
label silver_requests_root: label .skip_points_check:
if her_level_up != None: if her_level_up != None:
call tutorial("milestones") call tutorial("milestones")
@ -165,13 +165,15 @@ label hermione_favor_menu:
call tutorial("hearts") call tutorial("hearts")
$ result = show_events_menu(hermione_favors) $ result = show_events_menu(hermione_favors)
if result:
$ result.start() $ result.start()
jump hermione_favor_menu jump hermione_favor_menu
"-Public requests-" (icon="interface/icons/small/star_yellow.webp", style="disabled") if not game.daytime: "-Public requests-" (icon="interface/icons/small/star_yellow.webp", style="disabled") if not game.daytime:
nar "Public requests are available during the day only." 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: "-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: 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" $ states.her.ev.yule_ball.variant = "public"
"No, go back.": "No, go back.":
$ renpy.music.set_volume(1.0, 1.0) $ renpy.music.set_volume(1.0, 1.0)
jump silver_requests_root jump .skip_points_check
$ result = show_events_menu(hermione_requests) $ result = show_events_menu(hermione_requests)
if result:
$ result.start() $ result.start()
jump hermione_favor_menu jump hermione_favor_menu
"-Public Shaming-" (icon="interface/icons/small/star_pink.webp", style="disabled") if not game.daytime: "-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." 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: "-Public Shaming-" (icon="interface/icons/small/star_pink.webp")if game.daytime:
label not_now_ps: label not_now_ps:
@ -210,7 +214,7 @@ label hermione_favor_menu:
result = renpy.display_menu(menu_choices) result = renpy.display_menu(menu_choices)
if result == "nvm": if result == "nvm":
jump silver_requests_root jump .skip_points_check
elif result == "vague": elif result == "vague":
call favor_not_ready call favor_not_ready
jump not_now_ps 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 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 if you really need it, I may as well..." ("smile", "happy", "base", "mid")
her "But I'll do it anyway..." ("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: elif states.her.level >=20 and states.her.favors_convinced_stage == 2:
random: random:
her "But an even bigger lead wouldn't hurt, I suppose..." ("base", "happy", "base", "mid") 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 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") 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: elif states.her.level >=18 and states.her.favors_convinced_stage == 2:
random: random:
her "Although, considering what you said before... I'll do it anyway." ("soft", "wink", "base", "mid") 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, 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") 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: 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") 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") 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") her "Yes... Just like that." ("base", "closed", "base", "mid")
gen "That's my girl!" ("grin", xpos="far_left", ypos="head") gen "That's my girl!" ("grin", xpos="far_left", ypos="head")
$ states.her.favors_convinced_stage = 2 $ 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") 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 "You really know how to talk me through, [name_genie_hermione]." ("soft", "narrow", "worried", "down")
her "Okay I agree." ("open", "narrow", "base", "down") her "Okay I agree." ("open", "narrow", "base", "down")
$ states.her.favors_convinced_stage = 2 $ 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: 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 guess you're right..." ("open", "happy", "base", "mid_soft")
her "I'll do it... But just this once okay?" ("grin", "happyCl", "base", "mid") her "I'll do it... But just this once okay?" ("grin", "happyCl", "base", "mid")
$ states.her.favors_convinced_stage = 1 $ states.her.favors_convinced_stage = 1
jump silver_requests_root jump .skip_points_check
else: else:
her "I could..." ("soft", "narrow", "base", "mid_soft") her "I could..." ("soft", "narrow", "base", "mid_soft")
her "But I don't want to." ("normal", "closed", "base", "mid") her "But I don't want to." ("normal", "closed", "base", "mid")

View File

@ -311,34 +311,44 @@ init -1 python:
total_applicable = len(filtered_queue) total_applicable = len(filtered_queue)
total_events = len(queue.queue) total_events = len(queue.queue)
completed = 0 completed = 0
hints = [] icons = []
path = "interface/icons/small/"
for ev in filtered_queue: for ev in filtered_queue:
if ev.completed: if ev.completed:
hints.append("v") icons.append("interface/icons/small/heart_red.webp")
completed += 1 completed += 1
elif ev.completed_failed: elif ev.completed_failed:
hints.append("x") icons.append("interface/icons/small/heart_black.webp")
completed += 1 completed += 1
else: 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: return (hints, icons)
s += f"/{total_events}"
return s
l = [] l = []
for queue in queues: for queue, title in queues:
if isinstance(queue, str): if isinstance(queue, str):
queue = getattr(store, queue) 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) return renpy.display_menu(l, **kwargs)

View File

@ -8,7 +8,7 @@ init python in gui:
import store import store
from store import settings from store import settings
init(1080, 600) init(1280, 720)
def is_dark(): def is_dark():
theme = settings.get("theme") theme = settings.get("theme")